This is a live mirror of the Perl 5 development currently hosted at
5 years agoperldelta: Note that utf8_hop_safe is for XS code
Karl Williamson [Sun, 21 May 2017 03:31:57 +0000 (21:31 -0600)]
perldelta: Note that utf8_hop_safe is for XS code

I actually don't think this should be here.  I think it should be in
Internal Changes.  Note that there were a bunch more functions added
for XS code, and these are there.  Perhaps there should be some separate
sections there, with one for enhancements.

5 years agoperldelta: remove the @INC blurb I added
Ævar Arnfjörð Bjarmason [Sat, 20 May 2017 13:53:04 +0000 (13:53 +0000)]
perldelta: remove the @INC blurb I added

Remove the @INC blurb I added in commit 90ed3b64f9 ("perldelta:
clarify what '.' and @INC is about", 2017-05-16).

I wrote this independently before seeing the RT bug that had a much
more complete overview, which I applied in commit 89853d76c8 ("Add
more extensive information about @INC changes into
perldelta (RT#131304)", 2017-05-17).

As a result we now have this section, and then right below it another
section authored by Dominic Hargreaves.

This needs to be resolved before release. As noted in 89853d76c8 some
things could arguably be salvaged from my section as it's more brief,
but I can't think of a good way to rewrite this, so just remove it.

5 years agoMore perldelta tweaks.
Craig A. Berry [Sat, 20 May 2017 02:52:51 +0000 (21:52 -0500)]
More perldelta tweaks.

Streamline or omit some of the VMS changes.  No need to mention
minor test refactorings or other tiny bits of work product that
don't represent notable user-visible changes from 5.24.  And fix
one comma splice in the OS X section.

5 years agoperldelta: Note that part of perlre was rewritten
Karl Williamson [Fri, 19 May 2017 20:08:51 +0000 (14:08 -0600)]
perldelta: Note that part of perlre was rewritten

5 years agoperldelta: Fix wording about literal "{"
Karl Williamson [Fri, 19 May 2017 20:07:36 +0000 (14:07 -0600)]
perldelta: Fix wording about literal "{"

This clarifies the wording and corrects the various messages raised
about it.

5 years agoperldelta: Nits
Karl Williamson [Fri, 19 May 2017 20:04:56 +0000 (14:04 -0600)]
perldelta: Nits

This adds missing words, links, space, and format controls

5 years agoperldelta: Make version numbers more consistent
Karl Williamson [Fri, 19 May 2017 19:58:53 +0000 (13:58 -0600)]
perldelta: Make version numbers more consistent

This removes unnecessary .0 from version numbers, and removes the intial
'v' for those following the word 'Perl'

5 years agoperldelta: tweaks to obituaries
Aaron Crane [Fri, 19 May 2017 14:07:38 +0000 (15:07 +0100)]
perldelta: tweaks to obituaries

5 years agoperldelta: Use two spaces after sentences.
Karl Williamson [Fri, 19 May 2017 03:25:28 +0000 (21:25 -0600)]
perldelta: Use two spaces after sentences.

5 years agoperldelta: Various nits.
Karl Williamson [Fri, 19 May 2017 03:17:43 +0000 (21:17 -0600)]
perldelta: Various nits.

Treat e.g. and i.e. Uniformly;
add some missing words;
spelling, commas, dashes.

5 years agoperldelta: don't dollar-quote an env variable like $ENV, should be ENV
Ævar Arnfjörð Bjarmason [Thu, 18 May 2017 08:02:35 +0000 (08:02 +0000)]
perldelta: don't dollar-quote an env variable like $ENV, should be ENV

The way it was before made it appear that perhaps we meant a Perl

5 years agoperldelta: This file is for 5.26, not 5.24
Karl Williamson [Thu, 18 May 2017 05:10:08 +0000 (23:10 -0600)]
perldelta: This file is for 5.26, not 5.24

5 years agoperldelta: Rmv entry that applies just to a devel release
Karl Williamson [Thu, 18 May 2017 05:09:01 +0000 (23:09 -0600)]
perldelta: Rmv entry that applies just to a devel release

This is not applicable to someone upgrading from any prior stable

5 years agoperldelta: Don't mention development release numbers
Karl Williamson [Thu, 18 May 2017 05:07:10 +0000 (23:07 -0600)]
perldelta: Don't mention development release numbers

We have agreed in previous years that this is distracting detail to
someone reading the stable release notes.

There is still one left, but I ran out of time tonight to figure out
what to say.

5 years agoperldelta: Add unescaped "{" to Notice
Karl Williamson [Thu, 18 May 2017 05:05:32 +0000 (23:05 -0600)]
perldelta: Add unescaped "{" to Notice

On irc, we agreed that this is important enough to be highighted there.

5 years agoperldelta: Move some alleged 'enhancements' to 'incompatible changes'
Karl Williamson [Thu, 18 May 2017 05:02:33 +0000 (23:02 -0600)]
perldelta: Move some alleged 'enhancements' to 'incompatible changes'

I reordered the latter section so the most important things in my view
were earlier in it.

I also extensively reworded the unescaped { section to hopefully better
explain it.

I think the enhancements section should be reordered by importance.  For
example I don't think /xx is the most important enhancement in 5.26.
But I'll let others decide.

5 years agoperldelta: Improve wording about Unicode scx property
Karl Williamson [Thu, 18 May 2017 05:00:47 +0000 (23:00 -0600)]
perldelta: Improve wording about Unicode scx property

5 years agoperldelta: Move section adjacent to similar one
Karl Williamson [Thu, 18 May 2017 04:51:46 +0000 (22:51 -0600)]
perldelta: Move section adjacent to similar one

These two sections about @INC and dot need to be combined into one,
and should be in Security.

I'll let someone else take a stab at that.

5 years agoperldelta: Remove duplicate entry
Karl Williamson [Thu, 18 May 2017 04:47:40 +0000 (22:47 -0600)]
perldelta: Remove duplicate entry

5 years agoFix another perldelta link
Sawyer X [Wed, 17 May 2017 19:15:54 +0000 (21:15 +0200)]
Fix another perldelta link

5 years agoFix perldelta link
Sawyer X [Wed, 17 May 2017 19:15:45 +0000 (21:15 +0200)]
Fix perldelta link

5 years agoRemove documentation of 5.25.4 fix in 5.26.0 delta
Sawyer X [Wed, 17 May 2017 19:09:18 +0000 (21:09 +0200)]
Remove documentation of 5.25.4 fix in 5.26.0 delta

5 years agoFix git conflict indicator
Sawyer X [Wed, 17 May 2017 19:09:07 +0000 (21:09 +0200)]
Fix git conflict indicator

5 years agoExtra commas
Sawyer X [Sun, 14 May 2017 09:39:43 +0000 (11:39 +0200)]
Extra commas

5 years agoAdd more extensive information about @INC changes into perldelta (RT#131304)
Dominic Hargreaves [Wed, 17 May 2017 14:17:42 +0000 (15:17 +0100)]
Add more extensive information about @INC changes into perldelta (RT#131304)

This mainly takes existing text written by Dave Mitchell, Kent Fredric,
Sawyer X and James E Keenan.

[Ævar: I applied this from RT #131304. It had conflicts which I
resolved to the best of my ability.

The submitted patch removed the "'.' and @INC" section which I rewrote
in 90ed3b64f9 ("perldelta: clarify what '.' and @INC is about",
2017-05-16). I resolved the conflict to keep it.

Maybe this was the wrong move. We're now mentioning the removal of "."
in 3 prominent places, at the top in "Notice", "Core Enhancements",
and "Security".

Maybe the best move here is to remove the section I wrote, although as
noted in my commit I think one redeeming factor it if is the plain
language describing the change (i.e. not assuming knowledge of
variables like @INC right off the bat), but obviously I'm biased

5 years agoperldelta: Fix broken link
Karl Williamson [Wed, 17 May 2017 15:53:34 +0000 (09:53 -0600)]
perldelta: Fix broken link

5 years agoperldelta: clarify what '.' and @INC is about
Ævar Arnfjörð Bjarmason [Tue, 16 May 2017 18:30:10 +0000 (18:30 +0000)]
perldelta: clarify what '.' and @INC is about

The existing section we had here was totally misleading. I couldn't
understand "now provides a way to build" and "if you want it turn X
on" differently than meaning that '.' was still in @INC by default and
you had to compile perl with some optional switch to turn it on.

It turns out[1] that the exact opposite of that is the case. This is
on by default. Rewrite the entire section to make that clear to the

While I'm at it dumb it down a bit to be understandable to someone
who's just upgrading Perl. Not everyone knows what @INC is offhand,
but describing how we now load libraries is understandable to

Then cover PERL_USE_UNSAFE_INC=1 and how it's set by various toolchain
modules now, and finally avoid talking about both
DEFAULT_INC_EXCLUDES_DOT and -Ddefault_inc_excludes_dot in the context
of a build option, just consistently mention only

We could go into much more detail here. See the "[RFC] We need prose
for perl526delta about "." in @INC removal" thread[2]. I think
including something like that probably makes sense later in the
document, but this should suffice for an intro section, and I'll let
others who proposed more detailed updates send their own patches for
further clarifying this feature.

1. "Re: Perl 5.26.0-RC1 is now
   available!" (<>"
2. <>

5 years agoperldelta: clarify how undeffing HV/AV is faster now
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 22:14:50 +0000 (22:14 +0000)]
perldelta: clarify how undeffing HV/AV is faster now

There were better notes in the change that introduced this[1]. Copy
the performance numbers from there, and say "arrays and
hashes". instead of "AV and HV". Better to use the more familiar names
than the internal struct names which are mostly only familiar to core

1. be98855787 ("speed up AV and HV clearing/undeffing", 2016-10-26)

5 years agoperldelta: clarify what these new capture variables are for
Yves Orton [Sat, 13 May 2017 22:00:15 +0000 (22:00 +0000)]
perldelta: clarify what these new capture variables are for

[Ævar: I originally had a worse patch for this, but Yves had a better
one to fixup into mine. See "Re: Perl 5.26.0-RC1 is now available!"[1]
on list for context.].

1. <>

5 years agoperldelta: move the note about utf8_hop() to the bottom
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 21:56:19 +0000 (21:56 +0000)]
perldelta: move the note about utf8_hop() to the bottom

A note about a relatively obscure internal API function really doesn't
belong so high up in the "Core Enhancements", before core visible user

Move this to the bottom, all of the other things in this section are
things normal Perl programmers might actually use/encounter/care
about, whereas this change is only relevant for some XS maintainers.

5 years agoperldelta: remove "maybe this won't be in 5.26" note about PERL_USE_UNSAFE_INC
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 21:46:43 +0000 (21:46 +0000)]
perldelta: remove "maybe this won't be in 5.26" note about PERL_USE_UNSAFE_INC

This was originally added in commit 8bbdbfcb89 ("Perldelta updates in
prep for tomorrows release", 2016-11-19), we're now at RC1 so it's
pretty clear that this will be in the release.

5 years agoperldelta: mention when lexical_subs were introduced
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 22:06:44 +0000 (22:06 +0000)]
perldelta: mention when lexical_subs were introduced

Doesn't take up much space, and makes you aware that if you e.g. are
using 5.18 already you can now use this in all your code without fear.

5 years agoperldelta: 'for slightly more detail' -> 'for more details'
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 22:01:51 +0000 (22:01 +0000)]
perldelta: 'for slightly more detail' -> 'for more details'

There's no need to inject "slightly" there, that documentation section
looks pretty complete to me.

5 years agoperldelta: grammar fix: "[process] do not function well" -> "does not ..."
Ævar Arnfjörð Bjarmason [Sat, 13 May 2017 21:41:54 +0000 (21:41 +0000)]
perldelta: grammar fix: "[process] do not function well" -> "does not ..."

5 years agofixed couple of compilation failures with g++ (JHI)
H.Merijn Brand [Wed, 17 May 2017 13:44:46 +0000 (15:44 +0200)]
fixed couple of compilation failures with g++ (JHI)

5 years agoRestore _test make target
H.Merijn Brand [Sat, 13 May 2017 16:11:53 +0000 (18:11 +0200)]
Restore _test make target

5 years agoFix META.json
Sawyer X [Thu, 11 May 2017 22:26:54 +0000 (00:26 +0200)]
Fix META.json

5 years agoAdd epigraph
Sawyer X [Thu, 11 May 2017 21:51:38 +0000 (23:51 +0200)]
Add epigraph

5 years agoMerge branch 'release/5.26.0-RC1' into blead
Sawyer X [Thu, 11 May 2017 17:22:49 +0000 (19:22 +0200)]
Merge branch 'release/5.26.0-RC1' into blead

5 years agodisarm RCnnn bump
Sawyer X [Thu, 11 May 2017 17:07:23 +0000 (19:07 +0200)]
disarm RCnnn bump

5 years agoRegenerate last-second acknowledgements v5.26.0-RC1
Sawyer X [Thu, 11 May 2017 15:20:16 +0000 (17:20 +0200)]
Regenerate last-second acknowledgements

5 years agoAdd missing commas to perlfunc
David H. Gutteridge [Thu, 11 May 2017 15:01:52 +0000 (09:01 -0600)]
Add missing commas to perlfunc

5 years agoperldeprecation: Add imminent XS deprecations
Karl Williamson [Wed, 10 May 2017 04:28:15 +0000 (22:28 -0600)]
perldeprecation: Add imminent XS deprecations

The deprecated XS functions that have been scheduled to be removed did
not make it into this pod.

5 years agoAdd missing commas to perlfunc
David H. Gutteridge [Thu, 11 May 2017 15:01:52 +0000 (09:01 -0600)]
Add missing commas to perlfunc

5 years agoperldeprecation: Add imminent XS deprecations
Karl Williamson [Wed, 10 May 2017 04:28:15 +0000 (22:28 -0600)]
perldeprecation: Add imminent XS deprecations

The deprecated XS functions that have been scheduled to be removed did
not make it into this pod.

5 years agoUpdate META files
Sawyer X [Thu, 11 May 2017 13:03:58 +0000 (15:03 +0200)]
Update META files

5 years agobump version to RCnnn
Sawyer X [Thu, 11 May 2017 13:03:12 +0000 (15:03 +0200)]
bump version to RCnnn

5 years agoadd new release to perlhist
Sawyer X [Thu, 11 May 2017 13:00:42 +0000 (15:00 +0200)]
add new release to perlhist

5 years agoFix link
Sawyer X [Thu, 11 May 2017 12:52:31 +0000 (14:52 +0200)]
Fix link

5 years agoPod fixes
Sawyer X [Thu, 11 May 2017 12:36:27 +0000 (14:36 +0200)]
Pod fixes

5 years agoFinalize perldelta with acknowledgements and updated modules
Sawyer X [Thu, 11 May 2017 12:33:54 +0000 (14:33 +0200)]
Finalize perldelta with acknowledgements and updated modules

5 years agoavoid a memory wrap in sv_vcatpvfn_flags()
David Mitchell [Mon, 8 May 2017 20:06:38 +0000 (21:06 +0100)]
avoid a memory wrap in sv_vcatpvfn_flags()

RT #131260

When calculating the new size of PL_efloatbuf, avoid wrapping 'need'.

5 years agoreorder
Sawyer X [Thu, 11 May 2017 11:28:59 +0000 (13:28 +0200)]

5 years agoCorrect links
Sawyer X [Thu, 11 May 2017 11:28:51 +0000 (13:28 +0200)]
Correct links

5 years agoSorted with cool trickery help by arc
Sawyer X [Thu, 11 May 2017 11:01:16 +0000 (13:01 +0200)]
Sorted with cool trickery help by arc

5 years agoManually replace 52513 with 5260 perldelta filename
Sawyer X [Thu, 11 May 2017 10:59:11 +0000 (12:59 +0200)]
Manually replace 52513 with 5260 perldelta filename

5 years agoFor now it's just perldelta.pod
Sawyer X [Thu, 11 May 2017 10:40:10 +0000 (12:40 +0200)]
For now it's just perldelta.pod

5 years agoCleanups
Sawyer X [Thu, 11 May 2017 10:35:57 +0000 (12:35 +0200)]

5 years agoReorder section
Sawyer X [Wed, 10 May 2017 22:06:13 +0000 (00:06 +0200)]
Reorder section

5 years agoMerge perl52512delta.pod
Sawyer X [Wed, 10 May 2017 21:55:27 +0000 (23:55 +0200)]
Merge perl52512delta.pod

5 years agoMerge perl52511delta.pod
Sawyer X [Wed, 10 May 2017 21:54:26 +0000 (23:54 +0200)]
Merge perl52511delta.pod

5 years agoMerge perl52510delta.pod
Sawyer X [Wed, 10 May 2017 14:01:08 +0000 (16:01 +0200)]
Merge perl52510delta.pod

5 years agoMerge perl5259delta.pod
Sawyer X [Wed, 10 May 2017 13:58:40 +0000 (15:58 +0200)]
Merge perl5259delta.pod

5 years agoMerge perl5258delta.pod
Sawyer X [Wed, 10 May 2017 13:48:23 +0000 (15:48 +0200)]
Merge perl5258delta.pod

5 years agoMerge perl5257delta.pod
Sawyer X [Wed, 10 May 2017 12:59:33 +0000 (14:59 +0200)]
Merge perl5257delta.pod

5 years agoMerge perl5256delta.pod
Sawyer X [Wed, 10 May 2017 12:20:38 +0000 (14:20 +0200)]
Merge perl5256delta.pod

5 years agoMerge perl5255delta.pod
Sawyer X [Wed, 10 May 2017 12:16:17 +0000 (14:16 +0200)]
Merge perl5255delta.pod

5 years agoMerge perl5254delta.pod
Sawyer X [Wed, 10 May 2017 12:13:10 +0000 (14:13 +0200)]
Merge perl5254delta.pod

5 years agoMerge perl5253delta.pod
Sawyer X [Wed, 10 May 2017 12:09:30 +0000 (14:09 +0200)]
Merge perl5253delta.pod

5 years agoMerge perl5252delta.pod
Sawyer X [Wed, 10 May 2017 11:58:55 +0000 (13:58 +0200)]
Merge perl5252delta.pod

5 years agoMerge perl5251delta.pod
Sawyer X [Wed, 10 May 2017 11:52:57 +0000 (13:52 +0200)]
Merge perl5251delta.pod

5 years agoCreating perl5260delta.pod from perl5250delta.pod
Sawyer X [Wed, 10 May 2017 11:48:22 +0000 (13:48 +0200)]
Creating perl5260delta.pod from perl5250delta.pod

5 years agoavoid a memory wrap in sv_vcatpvfn_flags()
David Mitchell [Mon, 8 May 2017 20:06:38 +0000 (21:06 +0100)]
avoid a memory wrap in sv_vcatpvfn_flags()

RT #131260

When calculating the new size of PL_efloatbuf, avoid wrapping 'need'.

5 years agoRevert RT #131190 patches.
Yves Orton [Fri, 28 Apr 2017 07:19:22 +0000 (09:19 +0200)]
Revert RT #131190 patches.

This reverts commit ca7eb79a236b41b7722c6800527f95cd76843eed,
         and commit 85fde2b7c3f5631fd982f5db735b84dc9224bec0.

5 years agoFix a typo in Kip Hampton's obituary
Dave Rolsky [Wed, 26 Apr 2017 22:03:13 +0000 (17:03 -0500)]
Fix a typo in Kip Hampton's obituary

5 years agoRevert "use a specific define for 64 bit hashing"
Yves Orton [Sun, 23 Apr 2017 09:59:34 +0000 (11:59 +0200)]
Revert "use a specific define for 64 bit hashing"

This reverts commit a4283faf7092ec370914ee3e4e7afeddd0115689.

Accidental push. Sorry.

5 years agoRevert "Tweak our hash bucket splitting rules"
Yves Orton [Sun, 23 Apr 2017 09:58:24 +0000 (11:58 +0200)]
Revert "Tweak our hash bucket splitting rules"

This reverts commit 05f97de032fe95cabe8c9f6d6c0a5897b1616194.

Accidentally pushed while waiting for blead-unfreeze.

5 years agomake fix for #131190 EBCDIC safe
Yves Orton [Sun, 23 Apr 2017 09:53:00 +0000 (11:53 +0200)]
make fix for #131190 EBCDIC safe

5 years agoRevert "Add new hashing and "hash with state" infrastructure"
Yves Orton [Sun, 23 Apr 2017 09:47:13 +0000 (11:47 +0200)]
Revert "Add new hashing and "hash with state" infrastructure"

This reverts commit a3bf60fbb1f05cd2c69d4ff0a2ef99537afdaba7.

Accidentally pushed work pending unfreeze.

5 years agoRevert "Move utility macros to their own file"
Yves Orton [Sun, 23 Apr 2017 09:47:10 +0000 (11:47 +0200)]
Revert "Move utility macros to their own file"

This reverts commit 259e968485f855f70472c8be9267efceca42b0fb.

Accidentally pushed work pending unfreeze.

5 years agoRevert "get rid of USE_HASH_SEED_EXPLICIT"
Yves Orton [Sun, 23 Apr 2017 09:47:04 +0000 (11:47 +0200)]
Revert "get rid of USE_HASH_SEED_EXPLICIT"

This reverts commit dd1b95f812312c85390f487887cdd55282fcd6ce.

Accidentally pushed work pending unfreeze.

5 years agoRevert "improve and update hash algorithm configuration docs in INSTALL"
Yves Orton [Sun, 23 Apr 2017 09:46:52 +0000 (11:46 +0200)]
Revert "improve and update hash algorithm configuration docs in INSTALL"

This reverts commit e7e07d980872d020fd93a43cda96f72c8013af20.

Accidentally pushed work pending unfreeze.

5 years agoRevert "remove dead comment"
Yves Orton [Sun, 23 Apr 2017 09:46:32 +0000 (11:46 +0200)]
Revert "remove dead comment"

This reverts commit c25b844905729021ec43dcc6c244d99330d7260a.

Accidentally pushed work pending un-freeze.

5 years agoFix #131190 - UTF8 code improperly casting negative integer to U8 in comparison
Yves Orton [Sun, 23 Apr 2017 09:44:10 +0000 (11:44 +0200)]
Fix #131190 - UTF8 code improperly casting negative integer to U8 in comparison

5 years agoremove dead comment
Yves Orton [Thu, 23 Mar 2017 12:38:37 +0000 (13:38 +0100)]
remove dead comment

5 years agoimprove and update hash algorithm configuration docs in INSTALL
Yves Orton [Thu, 23 Mar 2017 10:57:36 +0000 (11:57 +0100)]
improve and update hash algorithm configuration docs in INSTALL

Updated to reflect new hash functions, along with some wordsmithing
tweaks to make things read more smoothly (hopefully).

5 years agoget rid of USE_HASH_SEED_EXPLICIT
Yves Orton [Thu, 23 Mar 2017 10:54:43 +0000 (11:54 +0100)]

I think this has been outright broken for a long time, and it
doesnt make any sense to since mandatory randomization anyway,
so simply remove it.

5 years agoMove utility macros to their own file
Yves Orton [Thu, 23 Mar 2017 10:06:13 +0000 (11:06 +0100)]
Move utility macros to their own file

so that hv_func is left with only logic relating to selecting
and configuring the hash function we use, not the macros our
hash functions use.

5 years agoAdd new hashing and "hash with state" infrastructure
Yves Orton [Wed, 22 Mar 2017 15:40:28 +0000 (16:40 +0100)]
Add new hashing and "hash with state" infrastructure

This adds support for three new hash functions: StadtX, Zaphod32 and SBOX,
and reworks some of our hash internals infrastructure to do so.

SBOX is special in that it is designed to be used in conjuction with any
other hash function for hashing short strings very efficiently and very
securely. It features compile time options on how much memory and startup
time are traded off to control the length of keys that SBOX hashes.

This also adds support for caching the hash values of single byte characters
which can be used in conjuction with any other hash, including SBOX, although
SBOX itself is as fast as the lookup cache, so typically you wouldnt use both
at the same time.

This also *removes* support for Jenkins One-At-A-Time. It has served us
well, but it's day is done.

This patch adds three new files: zaphod32_hash.h, stadtx_hash.h,

5 years agoTweak our hash bucket splitting rules
Yves Orton [Wed, 22 Mar 2017 14:59:31 +0000 (15:59 +0100)]
Tweak our hash bucket splitting rules

Prior to this patch we resized hashes when after inserting a key
the load factor of the hash reached 1 (load factor= keys / buckets).

This patch makes two subtle changes to this logic:

1. We split only after inserting a key into an utilized bucket,
2. and the maximum load factor exceeds 0.667

The intent and effect of this change is to increase our hash tables
efficiency. Reducing the maximum load factor 0.667 means that we should
have much less keys in collision overall, at the cost of some unutilized
space (2/3rds was chosen as it is easier to calculate than 0.7). On the
other hand, only splitting after a collision means in theory that we execute
the "final split" less often. Additionally, insertin a key into an unused
bucket increases the efficiency of the hash, without changing the worst
case.[1] In other words without increasing collisions we use the space
in our hashes more efficiently.

A side effect of this hash is that the size of a hash is more sensitive
to key insert order. A set of keys with some collisions might be one
size if those collisions were encountered early, or another if they were
encountered later. Assuming random distribution of hash values about
50% of hashes should be smaller than they would be without this rule.

The two changes complement each other, as changing the maximum load
factor decreases the chance of a collision, but changing to only split
after a collision means that we won't waste as much of that space we

[1] Since I personally didnt find this obvious at first here is my

The old behavior was that we doubled the number of buckets when the
number of keys in the hash matched that of buckets. So on inserting
the Kth key into a K bucket hash, we would double the number of
buckets.  Thus the worse case prior to this patch was a hash
containing K-1 keys which all hash into a single  bucket, and the post
split worst case behavior would be having K items in a single bucket
of a hash with 2*K buckets total.

The new behavior says that we double the size of the hash once inserting
an item into an occupied bucket and after doing so we exceeed the maximum
load factor (leave aside the change in maximum load factor in this patch).
If we insert into an occupied bucket (including the worse case bucket) then
we trigger a key split, and we have exactly the same cases as before.
If we insert into an empty bucket then we now have a worst case of K-1 items
in one bucket, and 1 item in another, in a hash with K buckets, thus the
worst case has not changed.

5 years agouse a specific define for 64 bit hashing
Yves Orton [Wed, 15 Mar 2017 14:03:42 +0000 (15:03 +0100)]
use a specific define for 64 bit hashing

5 years agoLink to epigraph
Sawyer X [Fri, 21 Apr 2017 10:35:54 +0000 (12:35 +0200)]
Link to epigraph

5 years agoMerge branch 'blead' of ssh:// into blead
Sawyer X [Thu, 20 Apr 2017 22:49:39 +0000 (00:49 +0200)]
Merge branch 'blead' of ssh:// into blead

5 years agoBump version: 5.25.12 -> 5.26.0
Sawyer X [Thu, 20 Apr 2017 22:48:59 +0000 (00:48 +0200)]
Bump version: 5.25.12 -> 5.26.0

5 years agoBump Module::CoreList version
Sawyer X [Thu, 20 Apr 2017 22:48:48 +0000 (00:48 +0200)]
Bump Module::CoreList version

5 years agoCorelist Morelist
Chris 'BinGOs' Williams [Thu, 20 Apr 2017 22:21:28 +0000 (23:21 +0100)]
Corelist Morelist

5 years agoFix empty link problem
Sawyer X [Thu, 20 Apr 2017 21:16:05 +0000 (23:16 +0200)]
Fix empty link problem

5 years agoTick off
Sawyer X [Thu, 20 Apr 2017 21:00:03 +0000 (23:00 +0200)]
Tick off

5 years agoAdd epigraph, minus the link
Sawyer X [Thu, 20 Apr 2017 20:59:26 +0000 (22:59 +0200)]
Add epigraph, minus the link

5 years agoMerge branch 'release-5.25.12' into blead
Sawyer X [Thu, 20 Apr 2017 19:56:51 +0000 (21:56 +0200)]
Merge branch 'release-5.25.12' into blead