In perl.git, the branch nicholas/hv_h_split has been created

<http://perl5.git.perl.org/perl.git/commitdiff/30028c3753f53c83a8acb2988d1d96835409dbdd?hp=0000000000000000000000000000000000000000>

        at  30028c3753f53c83a8acb2988d1d96835409dbdd (commit)

- Log -----------------------------------------------------------------
commit 30028c3753f53c83a8acb2988d1d96835409dbdd
Author: Nicholas Clark <[email protected]>
Date:   Thu Feb 21 10:25:37 2013 +0100

    Move xhv_rand from the main HV structure to struct hv_aux.
    
    Unconditionally initialise xhv_rand when the aux structure is created, and
    unconditionally reset it when the aux structure is copied as part of hash
    expansion.
    
    This avoids increasing the size of every hash in order to store state only
    related to iteration.

M       hv.c
M       hv.h

commit dc6a8a5bf5752f208c04eb06b450c404230dae07
Author: Nicholas Clark <[email protected]>
Date:   Wed Feb 20 20:39:31 2013 +0100

    Use the addresses of the hash and the chain head to permute hash insertion.
    
    Use these instead of HvRAND(), so that HvRAND() and its associated storage
    are not required until hash iteration time.

M       hv.c

commit 525207d7d5489a400b4018af91aa0cb85399b5b8
Author: Nicholas Clark <[email protected]>
Date:   Wed Feb 20 20:38:47 2013 +0100

    XXX Update EU::MM patch to make BSD makes happy. Again, this should be 
merged.

M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm

commit 534dc521ec23f972804c3b14d8176fd22bde7463
Author: Nicholas Clark <[email protected]>
Date:   Wed Feb 20 17:00:20 2013 +0100

    XXX Update comment - this really should be merged into the appropriate 
commit

M       hv.c

commit 12443749595e38089abf4023b612ad0b161cfce8
Author: Yves Orton <[email protected]>
Date:   Wed Feb 20 07:33:49 2013 +0100

    Do not hard code the list of perl header files - discover them from disk 
instead
    
    Includes a version bump to all the EU::MM files (to prevent any possible
    $VERSION consistency checks from failing like they would on *nix)
    
    This patch will be submitted to the EU::MM project in a modified form
    and once merged there should replace these changes

M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
M       cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm

commit 5a3ed4551132f537a9b52cf3c6b0289954b47a09
Author: Yves Orton <[email protected]>
Date:   Tue Feb 19 13:25:53 2013 +0100

    semi-Randomize hash insertion order

M       hv.c

commit cd8ea4c931e56af6a11e0b3c8b56e90ef12971e1
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 84a682fcfdd13fbad38286520d44aecf2401d4f6
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 f2f4bb75287eac697c95d8c3d9b5102e6f487d1b
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 7dc0643f00c0ea60c44f46a62f8fb50cba93d9e5
Author: Yves Orton <[email protected]>
Date:   Mon Feb 18 10:18:48 2013 +0100

    randomize bucket split insertion in hsplit()

M       hv.c

commit 665161637de010a41c844ee87c0234f15c8ba70f
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 33b216f977ce304c628d9a6dea17e920b53304be
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 b637573230f68d9a73a7c43767d5560f28084a10
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 3696db0e50a0ef1f9da47d709c7da6055318d7ae
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 80776f6b4abcb63295f6d3fe95e7e86c0d93bf4e
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 e26e548c4ae75c6a58ae2846ac6ee9d20116d593
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 babd5ad72c62d0f53be92d0405bbba1e68b99e2d
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 1db2fe73cb9940737dd7613a06f20ce0b56061db
Author: Yves Orton <[email protected]>
Date:   Mon Jan 21 17:11:31 2013 +0100

    random tweaks

M       hv_func.h

commit 2d013258101fc0e7464c70ea921e83a5a4a2fa37
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 84f0f6422b26dbd0ee88bbe9d8f3696dd63380ea
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 0094c9e2e7c30b9248085625ade8b529a8d5c06b
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 09d09deb98d4152255a52632447d60a12becf9fa
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 2ae38f851519dd1b092d70b67691b8b82705ed2d
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 216cb225110fc9adc2f54e18b2df7f9623290e21
Author: Yves Orton <[email protected]>
Date:   Mon Dec 10 00:40:43 2012 +0100

    add xxhash

M       hv_func.h

commit 16c83c7455ecac292dfb0b9b5f6de36449ade795
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 23ac4b7526e9646cd73e2fc32917b65525be9bd0
Author: Yves Orton <[email protected]>
Date:   Sat Dec 8 16:26:01 2012 +0100

    remove toy code

M       hv.h

commit 4955626a17a7b8bc8470b1b70ee6755cbdeb63b5
Author: Yves Orton <[email protected]>
Date:   Sat Dec 8 16:24:06 2012 +0100

    remove unused define

M       hv.h

commit b9cf7e8932843f09df57a0cbaeececc637d8f34c
Author: Nicholas Clark <[email protected]>
Date:   Wed Feb 20 21:38:33 2013 +0100

    Abolish STRANGE_MALLOC. Now all malloc()s are considered strange :-)
    
    STRANGE_MALLOC was added in 5.002 beta 1 (4633a7c4bad06b47) as part of an
    work around for typical mallocs, which had a bad interaction with perl's
    allocation needs. Specifically, repeatedly extending an array and then
    creating SV heads (such as when reading lines of a file into an array)
    could end up with each reallocation for the array being unable to extend in
    place, needing a fresh chunk of memory, and the released memory not being
    suitable for use as more SV heads, so sitting unused. The solution was for
    perl to recycle the old array body as SV heads, instead of returning it to
    the system, passing the memory from the the AV code to the SV code using
    offer_nice_chunk(), PL_nice_chunk and PL_nice_chunk_size.
    
    STRANGE_MALLOC was actually a signal that the malloc() didn't need
    protecting from itself, and to disable the work around.
    
    offer_nice_chunk(), PL_nice_chunk and PL_nice_chunk_size were removed by
    commit 9a87bd09eea1d037 in Nov 2010, without any ill effects, hence the
    code used when STRANGE_MALLOC was *not* defined is essentially doing extra
    work for no benefits.
    
    From the lack of problems reported, one can assume that in the intervening
    15 years malloc technology has got significantly improved, and it is 
probably
    better to be honest with it, rather than trying to second guess it.
    
    Hence remove all the non-STRANGE_MALLOC code, and leave everyone using the
    much simpler code. See also
    http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00495.html
    http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00126.html

M       av.c
M       hv.c
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to