In perl.git, the branch smoke-me/yves-hv_h_split has been created
<http://perl5.git.perl.org/perl.git/commitdiff/e2183dd1583911a709201025e7d0020fde8b1862?hp=0000000000000000000000000000000000000000>
at e2183dd1583911a709201025e7d0020fde8b1862 (commit)
- Log -----------------------------------------------------------------
commit e2183dd1583911a709201025e7d0020fde8b1862
Author: Yves Orton <[email protected]>
Date: Tue Feb 19 13:25:53 2013 +0100
semi-Randomize hash insertion order
M hv.c
commit b33589ebd581733d90cb08d27eab2cf13f44a0d9
Author: Yves Orton <[email protected]>
Date: Tue Feb 19 12:14:44 2013 +0100
Ensure that Module::Pluggable returns plugins in a predictable order
As of 5.18 hash traversal order will vary per-hash, and indeed more
frequently. The likelihood this results in one of the tests in M::P
failing becomes very high.
In general the test expectations were fragile, but probably almost
never failed. With hash traversal randomization they will fail
regularly.
Note the use a temporary array in part of this patch is because
sort in scalar context is undefined.
M cpan/Module-Pluggable/lib/Module/Pluggable.pm
M cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm
M cpan/Module-Pluggable/t/19can_ok_clobber.t
commit b23fbb6034fcc892c44527b955be9c682131de88
Author: Yves Orton <[email protected]>
Date: Tue Feb 19 12:12:34 2013 +0100
Fix code which modifies a hash while each()ing over it
It has never been correct to modify a hash during traversal by each().
In older perls this was unlikely to break the tests. In newer perls
it is relatively likely, and in 5.18 it will be almost certain.
This includes a version bump. Needs to be merged upstream.
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
M cpan/ExtUtils-MakeMaker/t/basic.t
commit 728e03041b31deae2692138beb96fd7ca6f6519f
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 16:13:08 2013 +0100
reset HvRAND() every hsplit, and properly rotate the bucket_rand. :-)
M hv.c
commit 66c5e7c96ab95ab7fba6b5eeb1f7175bd8138b05
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 10:18:48 2013 +0100
randomize bucket split insertion in hsplit()
M hv.c
commit a4c171affab792d1ea2c4b05cc4a305c42a43f17
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 09:36:35 2013 +0100
turn the ptr_hash inline code into a true sub
Borrowed from autobox, which is released under the same terms as Perl.
M embed.fnc
M embed.h
M hv.c
M proto.h
commit c2669ab8fb2498011780806aa2073f809a3d61ab
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 08:11:18 2013 +0100
Enable hash traversal order randomization
This patch causes Perl to use a random order per hash when traversing
hashes via keys(), values() and each().
The random order is determined by add a new property xhv_rand to struct
xpvhv. This property
is calculated on per traverse of the hash by using a pointer/integer hash
function on the
address of the bucket array, and then XORing it with the bucket index
counter during traverse.
This causes each hash to have a different order for traversing the buckets.
The purpose of this change is to make hash seed discovery attacks harder.
An attacker loses
a lot of information when the keys are "randomized".
M hv.c
M hv.h
M t/op/smartkve.t
commit 9e7b62a91521411e68934310e57f7737119c45ef
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 07:56:25 2013 +0100
Fix test fails due to hash traversal randomization
One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
M cpan/Pod-Simple/t/closeys.t
commit 3de8f6566a419504551f35063c2bfeb560ac019b
Author: Yves Orton <[email protected]>
Date: Mon Feb 18 06:37:29 2013 +0100
Fix tests that fail due to hash traversal randomization
One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
M cpan/JSON-PP/t/019_incr.t
commit d6998a16edfcd657911312b7a2b5ec7ca27cab42
Author: Yves Orton <[email protected]>
Date: Sun Feb 17 16:39:23 2013 +0100
Fix failing porting tests by bumping version number and tweaking pod
M ext/Hash-Util/lib/Hash/Util.pm
commit f06d65f6bfe67affa8060b7efaecb108f57ceed8
Author: Yves Orton <[email protected]>
Date: Tue Feb 12 05:06:48 2013 +0100
default to PERL_FUNC_ONE_AT_A_TIME_HARD for all builds
For testing, but maybe for ever
M hv_func.h
commit dde6507f6c663a80982cda4191aad37b94f9f34c
Author: Yves Orton <[email protected]>
Date: Mon Feb 11 19:33:00 2013 +0100
Remove XXHash (for now)
For some reason I could never get it working anyway, due to strange
segfaults that I did not have the time to track down.
M hv_func.h
commit fdd341f739b6a3d1cdf0a0c31022ee929ece8982
Author: Yves Orton <[email protected]>
Date: Mon Jan 21 17:11:31 2013 +0100
random tweaks
M hv_func.h
commit c2f11f23a02254081892f6faf5d06c427e6bd733
Author: Yves Orton <[email protected]>
Date: Wed Dec 12 00:13:53 2012 +0100
fixup wording
M ext/Hash-Util/lib/Hash/Util.pm
commit 79d83e2632143c5c2e79ee5eb0bb600d66721b47
Author: Yves Orton <[email protected]>
Date: Tue Dec 11 23:46:37 2012 +0100
add a "hash quality score" to Hash::Util::bucket_stats()
M ext/Hash-Util/lib/Hash/Util.pm
commit 249ee3a00dcef203712cfec5a4e1ea8ddf672068
Author: Yves Orton <[email protected]>
Date: Tue Dec 11 08:50:58 2012 +0100
Attempt to eliminate a signed mistmatch in comparison warning
as far as I can tell 'i' can only be positive here.
M hv_func.h
commit d8012ff49000b391b64b3862ce174177a126e345
Author: Yves Orton <[email protected]>
Date: Mon Dec 10 09:43:59 2012 +0100
include missing headers so XS modules rebuild when they change
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
commit c0d8f8055aa52e9f6479de38224142d5590f23ec
Author: Yves Orton <[email protected]>
Date: Mon Dec 10 08:36:43 2012 +0100
add a hardened one-at-a-time hash variant
Mix in additional randomness into the final value.
M hv_func.h
commit 7670e2c61be23e7e1d77d77c45115686919c61cc
Author: Yves Orton <[email protected]>
Date: Mon Dec 10 00:40:43 2012 +0100
add xxhash
M hv_func.h
commit e5f2e94c1f8f32213a70eec1f7a8505d964b6384
Author: Yves Orton <[email protected]>
Date: Sun Dec 9 17:01:46 2012 +0100
Split out hash functions into new file and turn into inline static functions
This includes various tweaks related to building SipHash.
M Cross/Makefile-cross-SH
M MANIFEST
M Makefile.SH
M Makefile.micro
M NetWare/Makefile
M configpm
M hv.h
A hv_func.h
M win32/Makefile
M win32/Makefile.ce
commit 6683561a15179efdef2cc846cee4ef0a2c4b0e01
Author: Yves Orton <[email protected]>
Date: Sat Dec 8 16:26:01 2012 +0100
remove toy code
M hv.h
commit 74a3a5584e5154343168ce4f4dda5cc6837bd491
Author: Yves Orton <[email protected]>
Date: Sat Dec 8 16:24:06 2012 +0100
remove unused define
M hv.h
-----------------------------------------------------------------------
--
Perl5 Master Repository