From: Jens Berlips Date: 2012-02-15T18:31:40+09:00 Subject: [ruby-core:42655] [ruby-trunk - Bug #6008] {a: 1}.hash not consistent over VM restarts Issue #6008 has been updated by Jens Berlips. Alright. Make sense. ---------------------------------------- Bug #6008: {a: 1}.hash not consistent over VM restarts https://bugs.ruby-lang.org/issues/6008 Author: Jens Berlips Status: Rejected 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/