Hash randomization broke a lot of CPAN modules that were relying on hash order (usually relying on it in the test suite). These were mostly caught during 5.17.x series, so if you've got recent versions of those modules, you'll be OK.
Amongst the affected distributions were DBI, libwww-perl, Catalyst-Runtime, DBIx-Class, Gtk2, Data-Visitor, PDF-API2, RDF-Trine, Template-Toolkit and Dancer (via MIME-Types). Many of these are major distributions that a lot of other distributions depend on.
package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
| [reply] |
While it is true that much of the fallout of this change related to tests making unwarranted assumptions about hash order, but at least a few real*bugs were found too.
For instance the changes which added the variable and subscript names to uninitialized warnings in an earlier Perl would fail if the key involved was in the last bucket of the hashes bucket array. Prior to hash randomization the tests for this feature would not test this case. With hash randomization they would regularly fail. The bug was fixed, and you now have better uninitialized warnings in 5.18.
IIRC, DBI and CGI were the same story. Real bugs were found and fixed because of hash order randomization. So lets keep a sense of proportion here. Hash randomization makes it easy to identify a class of bugs that is extremely difficult to find any other way.
| [reply] |
Thanks to you two for the clarification! =)
Cheers Rolf
( addicted to the Perl Programming Language)
| [reply] |