On 13/02/2009, Yukihiro Matsumoto <matz / ruby-lang.org> wrote:
> Hi,
>
>  In message "Re: If you are unhappy with the direction of Ruby 1.8.7+, respond"
>     on Fri, 13 Feb 2009 02:10:41 +0900, Stefan Lang <perfectly.normal.hacker / gmail.com> writes:
>
>  |What do you mean with "Hash ordering"?
>  |An order for Hash instances? Hash doesn't define a <=> method.
>  |Or iteration order of Hash elements? That wasn't defined
>  |in 1.8.6 (I don't know if it is in 1.8.7).
>
>  I think he relied on the version/implementation specific behavior, so
>  1.8.7 HELPED to find a bug in HIS code, unless I am wrong in any ways.
>  Any other example of 1.8.7 incompatibility?
>
>  I am not happy with FUD-like attitude against 1.8.7.  From my point of
>  view, 1.8.7 is a good release with unfortunate beginning.  There are
>  slight incompatibility, but every past releases also had some sort of
>  incompatibilities as well.  I'd like to use 1.8.7 to write new 1.8
>  code.

I'm sorry if I personally added to this kind of view. Unlike earlier
releases I had some minor problem with code not running after upgrade
to 1.8.7, and it seemed many other people have similar experience.
While acceptable for your own code it is not good for code you
distribute to somebody else.

Back then nobody stepped up and said that if code working on 1.8.6
broke it is a bug so I just left it at that - the compatibility seemed
to be not so great. I have not experienced the same with earlier
versions. There was some issue in the past when a bug in the
interpreter was fixed and it broke a C extension that relied on the
bug and was widely used but it was a single, well understood issue.

The real indisputable failing of 1.8.7 is the introduction of many new
convenience methods into the core classes. If these were separated
into an extension (perhaps one which could be built for 1.8.6 as well)
which was not automatically loaded it would be fine and useful to have
them. As things are now the new methods are often convenient and
somebody coding on 1.8.7 would likely use the new methods making the
code unusable on 1.8.6 and earlier. Been there, done that - as many
people did.

Thanks

Michal