Issue #6008 has been reported by Jens Berlips.
----------------------------------------
Bug #6008: {a: 1}.hash not consistent over VM restarts
https://bugs.ruby-lang.org/issues/6008
Author: Jens Berlips
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.0.0]
$ ruby -e 'puts ({a: 1}.hash)'
-2419336229553239378
$ ruby -e 'puts ({a: 1}.hash)'
-4506930541181251952
$ ruby -e 'puts ({a: 1}.hash)'
2108665473238231010
$ ruby -e 'puts ({a: 1}.hash)'
-3675793335936991568
But if you go to rvm 1.8.7
ruby -e 'puts ({:a => 1}.hash)'
425023
ruby -e 'puts ({:a => 1}.hash)'
425023
ruby -e 'puts ({:a => 1}.hash)'
425023
The documentation read:
> Generates a Fixnum hash value for this object. This function must have the property that a.eql?(b) implies a.hash == b.hash. The hash value is used by class Hash. Any hash value that exceeds the capacity of a Fixnum will be truncated before > being used.
Which implies that you should get the behaviour in 1.8.7.
Regards,
Jens
--
http://bugs.ruby-lang.org/