On Fri, Feb 13, 2009 at 12:15 AM, Nobuyoshi Nakada <nobu / ruby-lang.org>wrote:

> Hi,
>
> At Fri, 13 Feb 2009 09:16:39 +0900,
> James Coglan wrote in [ruby-talk:327995]:
> > I realise that there is no explicit iteration order specified for hashes
> in
> > 1.8. All I know is that this patch fixed by 1.8.7 bugs:
> >
> >
> http://github.com/jcoglan/packr/commit/9ece59428bbd1bfd497b45a2ae4de2d163a24849
> >
> > Basically involves inserting keys in an explicit order rather than using
> > hash literals. This project uses a bunch of custom collection classes but
> > they're basically wrappers for arrays and hashes that merge array and
> hash
> > functionality into a single class. The constructors would iterate over
> the
> > hashes provided and insert values, and this insertion order changed in
> > 1.8.7.
>
> Hash in 1.8 doesn't define any kind of "order".  It's
> definitely a bug in your code as you use the word "order".
>
>
Yes, and this particular kind of change, making something which was
previously undefined now be defined, seems to be a benign change, since the
defined behavior is within the 'definition' of the previous behavior.

It's the changing of defined behavior while implying compatibility which
causes problems, particulary when the change is significant enough, or there
are enough such changes.  And when this threshold is crossed is, admittedly,
subjective.
-- 
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale