[Perl/perl5] 75acd1: Make newSV_type an inline function

2022-03-06 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 75acd14e43f2ffb698fc7032498f31095b56adb5
  
https://github.com/Perl/perl5/commit/75acd14e43f2ffb698fc7032498f31095b56adb5
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M MANIFEST
M embed.fnc
M embed.h
M perl.h
M proto.h
M sv.c
M sv.h
A sv_inline.h

  Log Message:
  ---
  Make newSV_type an inline function

When a new SV is created and upgraded to a type known at compile time,
uprooting a SV head and then using the general-purpose upgrade function
(sv_upgrade) is clunky. Specifically, while uprooting a SV head is
lightweight (assuming there are unused SVs), sv_upgrade is too big to be
inlined, contains many branches that can logically be resolved at compile
time for known start & end types, and the lookup of the correct
body_details struct may add CPU cycles.

This commit tries to address that by making newSV_type an inline function
and including only the parts of sv_upgrade needed to upgrade a SVt_NULL.
When the destination type is known at compile time, a decent compiler will
inline a call to newSV_type and use the type information to throw away all
the irrelevant parts of the sv_upgrade logic.

Because of the spread of type definitions across header files, it did not
seem possible to make the necessary changed inside sv.h, and so a new
header file (sv_inline.h) was created. For the inlined function to work
outside of sv.c, many definitions from that file were moved to sv_inline.h.

Finally, in order to also benefit from this change, existing code in sv.c
that does things like this:
SV* sv;
new_SV(sv);
sv_upgrade(sv, SVt_PV)
has been modified to read something like:
SV* sv = newSV_type(SVt_PV);


  Commit: 8fcb24256a3027cbca7c100825eb3805586fe1e5
  
https://github.com/Perl/perl5/commit/8fcb24256a3027cbca7c100825eb3805586fe1e5
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M av.c
M dump.c
M gv.c
M hv.c
M inline.h
M op.c
M pad.c
M pp.c
M pp_ctl.c
M pp_hot.c
M regexec.c
M scope.c
M sv.c
M toke.c

  Log Message:
  ---
  Inlined newSV_type(SVt_NULL) leaner than non-inlined newSV(0)

When a function outside of sv.c creates a SV via newSV(0):
 * There is a call to Perl_newSV
 * A SV head is uprooted and its flags set
 * A runtime check is made to effectively see if 0 > 0
 * The new SV* is returned

Replacing newSV(0) with newSV_type(SVt_NULL) should be more efficient,
because (assuming there are SV heads to uproot), the only step is:
 * A SV head is uprooted and its flags set


  Commit: 7ea8b04b5a0e6952b7ffd5a8fd96468b72da6bea
  
https://github.com/Perl/perl5/commit/7ea8b04b5a0e6952b7ffd5a8fd96468b72da6bea
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M av.c
M doop.c
M embed.fnc
M embed.h
M gv.c
M hv.c
M mg.c
M mro_core.c
M pad.c
M pp.c
M pp_ctl.c
M pp_hot.c
M proto.h
M regcomp.c
M sv_inline.h
M universal.c

  Log Message:
  ---
  Perl_newSV_type_mortal - new inline function introduced and used

There's no efficient way to create a mortal SV of any type other than
SVt_NULL (via sv_newmortal). The options are either to do:

* SV* sv = sv_newmortal; sv_upgrade(sv, SVt_SOMETYPE);
  but sv_upgrade is needlessly inefficient on new SVs.

* SV* sv = sv_2mortal(newSV_type(SVt_SOMETYPE)
  but this will perform runtime checks to see if (sv) and if (SvIMMORTAL(sv),
  and for a new SV we know that those answers will always be yes and no.

This commit adds a new inline function which is basically a mortalizing
wrapper around the now-inlined newSV_type.


Compare: https://github.com/Perl/perl5/compare/4f1687891150...7ea8b04b5a0e


[Perl/perl5] 4f1687: reg_mesg.t: Wasn't testing what it purported to be

2022-03-06 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 4f1687891150ddeda14ad7b0716032145bc69801
  
https://github.com/Perl/perl5/commit/4f1687891150ddeda14ad7b0716032145bc69801
  Author: Karl Williamson 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M t/re/reg_mesg.t

  Log Message:
  ---
  reg_mesg.t: Wasn't testing what it purported to be

The experimental regex sets warnings messages being output were getting
in the way, and causing tests to pass for the wrong reasons.




[Perl/perl5] 45e080: Porting/epigraphs - Add epigraph for 5.34.1-RC2

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/heads/maint-5.34
  Home:   https://github.com/Perl/perl5
  Commit: 45e08052f95c56922dcf15cfacea7f60321688b2
  
https://github.com/Perl/perl5/commit/45e08052f95c56922dcf15cfacea7f60321688b2
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M Porting/epigraphs.pod

  Log Message:
  ---
  Porting/epigraphs - Add epigraph for 5.34.1-RC2

(cherry picked from commit eabfb4c695fff3ad62c2ac63f7f497b849a5e987)




[Perl/perl5] eabfb4: Porting/epigraphs - Add epigraph for 5.34.1-RC2

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: eabfb4c695fff3ad62c2ac63f7f497b849a5e987
  
https://github.com/Perl/perl5/commit/eabfb4c695fff3ad62c2ac63f7f497b849a5e987
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M Porting/epigraphs.pod

  Log Message:
  ---
  Porting/epigraphs - Add epigraph for 5.34.1-RC2




[Perl/perl5]

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/tags/v5.34.1-RC2
  Home:   https://github.com/Perl/perl5


[Perl/perl5] 10e546: 5.34.1-RC2 today

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/heads/maint-5.34
  Home:   https://github.com/Perl/perl5
  Commit: 10e54609d8cf2638750bb2e01bf304b3d5bd7ce3
  
https://github.com/Perl/perl5/commit/10e54609d8cf2638750bb2e01bf304b3d5bd7ce3
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perlhist.pod

  Log Message:
  ---
  5.34.1-RC2 today

(cherry picked from commit db4317757610c289964b1ba3938abd09df1d820f)


  Commit: bb7b4e3301d8399bae99044b07d866bf885c0b32
  
https://github.com/Perl/perl5/commit/bb7b4e3301d8399bae99044b07d866bf885c0b32
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M dist/Module-CoreList/lib/Module/CoreList.pm
M dist/Module-CoreList/lib/Module/CoreList/Utils.pm

  Log Message:
  ---
  Update Module::CoreList

(Porting\corelist.pl)


  Commit: 3f425f42494a6b398bbad22151e81a6f225f8d5e
  
https://github.com/Perl/perl5/commit/3f425f42494a6b398bbad22151e81a6f225f8d5e
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Update perldelta modules

(Porting\corelist-perldelta.pl)


  Commit: e0f0c031c54e14cc26b72d22c39e4dc8505b4032
  
https://github.com/Perl/perl5/commit/e0f0c031c54e14cc26b72d22c39e4dc8505b4032
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Finalize perldelta


  Commit: 23fa289c91349497f7c149ace76da18516ca92be
  
https://github.com/Perl/perl5/commit/23fa289c91349497f7c149ace76da18516ca92be
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M META.json
M patchlevel.h

  Log Message:
  ---
  Bump to RC2 and update META.json


  Commit: bb1dee52397a633100a24cffad0e6ac65083f797
  
https://github.com/Perl/perl5/commit/bb1dee52397a633100a24cffad0e6ac65083f797
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M META.json
M patchlevel.h

  Log Message:
  ---
  Disarm patchlevel.h and regen META.json


Compare: https://github.com/Perl/perl5/compare/96fcd8bed7d5...bb1dee52397a


[Perl/perl5] f6713b: Remove cherry picked commit

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/heads/maint-votes
  Home:   https://github.com/Perl/perl5
  Commit: f6713b81c18bb5753677f3b10d0a9cd78254ff58
  
https://github.com/Perl/perl5/commit/f6713b81c18bb5753677f3b10d0a9cd78254ff58
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M votes-5.34.xml

  Log Message:
  ---
  Remove cherry picked commit




[Perl/perl5] 96fcd8: hv.c: ALWAYS perform in_collision check

2022-03-06 Thread Yves Orton via perl5-changes
  Branch: refs/heads/maint-5.34
  Home:   https://github.com/Perl/perl5
  Commit: 96fcd8bed7d5ff5132bf47ab9d76c2ba5cda082a
  
https://github.com/Perl/perl5/commit/96fcd8bed7d5ff5132bf47ab9d76c2ba5cda082a
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M hv.c

  Log Message:
  ---
  hv.c: ALWAYS perform in_collision check

This is a critical patch. Any perl built with the previous code
without PERL_HASH_RANDOMIZE_KEYS would never perform a key split!

(cherry picked from commit a977878db2027d6364aa362df635af0ad90f1b98)




[Perl/perl5] db4317: 5.34.1-RC2 today

2022-03-06 Thread Steve Hay via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: db4317757610c289964b1ba3938abd09df1d820f
  
https://github.com/Perl/perl5/commit/db4317757610c289964b1ba3938abd09df1d820f
  Author: Steve Hay 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perlhist.pod

  Log Message:
  ---
  5.34.1-RC2 today




[Perl/perl5] 890e58: INSTALL - fixup broken pod in old INSTALL docs

2022-03-06 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/improve_test_and_debug_hash_randomization
  Home:   https://github.com/Perl/perl5
  Commit: 890e58d487acd2b666ceaaae31aad292de7ced17
  
https://github.com/Perl/perl5/commit/890e58d487acd2b666ceaaae31aad292de7ced17
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M INSTALL

  Log Message:
  ---
  INSTALL - fixup broken pod in old INSTALL docs




[Perl/perl5] dfeee7: khw votes for hash collision check

2022-03-06 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/maint-votes
  Home:   https://github.com/Perl/perl5
  Commit: dfeee73b02721db5a415f4b6e2ca48ae8d90bac8
  
https://github.com/Perl/perl5/commit/dfeee73b02721db5a415f4b6e2ca48ae8d90bac8
  Author: Karl Williamson 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M votes-5.34.xml

  Log Message:
  ---
  khw votes for hash collision check




[Perl/perl5] 99ec38: hv.c - rework PL_hash_rand_bits update logic, add ...

2022-03-06 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/improve_test_and_debug_hash_randomization
  Home:   https://github.com/Perl/perl5
  Commit: 99ec38b7105e5a5effc37a9acc9ae9d19781859a
  
https://github.com/Perl/perl5/commit/99ec38b7105e5a5effc37a9acc9ae9d19781859a
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M MANIFEST
M embed.fnc
M embed.h
M hv.c
M perl.c
M perl.h
M pod/perlrun.pod
M proto.h
A t/run/runenv_hashseed.t
M util.c

  Log Message:
  ---
  hv.c - rework PL_hash_rand_bits update logic, add tests, -Dh debug mode

This moves all run time mutations of PL_hash_rand_bits into a set of
macros which allow us to debug what is happening.

It adds support for -Dh under DEBUGGING to allow introspection of the
the state of PL_hash_rand_bits and source and cause of changes to it.
With -Dhv you can also get an idea of the keys which are triggering
these mutations as well. -Dh has also been changed to imply
PERL_HASH_SEED_DEBUG as a convenience.

This goes alongside a new test, based on one from Nicholas R (atoomic)
to test that the various PERL_PERTURB_KEYS options behave as expected
and that 1 bit mutations of the seed actually do affect the key order
and hashing of our strings. The test is run many times to ensure that
it passes under many different randomly generated hash seeds. Parts of
this test would fail without the preceding commit to this one adjusting
how SBOX32 is initialized.




[Perl/perl5] 050262: pod/perldata.pod - document demarcated var form (c...

2022-03-06 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/document_demarcated_variable_form_better
  Home:   https://github.com/Perl/perl5
  Commit: 05026280212b07e1642d0004a858172654f65c4a
  
https://github.com/Perl/perl5/commit/05026280212b07e1642d0004a858172654f65c4a
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perldata.pod

  Log Message:
  ---
  pod/perldata.pod - document demarcated var form (curly braces) better

Perl supports using curly braces to demarcated variable lookups, both
in normal code but especially for interpolation. Some variables, such
as a multi-character caret variables must use this form at all times,
and must use this form to achieve interpolation of a variable subscript.

Prior to this patch we only documented the simple form of these cases,
eg, "${who}'s this then", but we did not document the complete set of
support nor the required cases very well. This fixes that.

See GH Issue #19497 and GH Issue #18800 for examples of people being
confused by this notation.


  Commit: 68b3fa89f907f9361e1ed45cc972ec91e71c78aa
  
https://github.com/Perl/perl5/commit/68b3fa89f907f9361e1ed45cc972ec91e71c78aa
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perlre.pod

  Log Message:
  ---
  pod/perlre.pod - document @{^CAPTURE} magic variable

This variable is documented in perlvar but we really should also mention
it in perlre since its reason for existance is to provide array access
to the capture variables in a pattern.


  Commit: 9220bf1185f92e1a33f552ebbb33e88f1126db35
  
https://github.com/Perl/perl5/commit/9220bf1185f92e1a33f552ebbb33e88f1126db35
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M pod/perlvar.pod

  Log Message:
  ---
  perlvar.pod - add more info about demarcated variable form


Compare: https://github.com/Perl/perl5/compare/05026280212b%5E...9220bf1185f9


[Perl/perl5] bcd133: test.pl - allow more than 676 tempfiles() in one p...

2022-03-06 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/improve_test_and_debug_hash_randomization
  Home:   https://github.com/Perl/perl5
  Commit: bcd133b08d3c52cd016a9192a2014db912aea871
  
https://github.com/Perl/perl5/commit/bcd133b08d3c52cd016a9192a2014db912aea871
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M t/test.pl

  Log Message:
  ---
  test.pl - allow more than 676 tempfiles() in one process

This reworks testfile() to allow more than 26**2 (676) calls to
tempfile() in the course of a single test process.

In order to keep the filenames short (which I believe is an objective of
this code) I switched the presentation of the pid to using base 26 as
well. Also added comments and a nicer error message if you reach the new
max of 26**3 (17576)


  Commit: dc5c1153eec9b9e4078c181aca524920bc341a87
  
https://github.com/Perl/perl5/commit/dc5c1153eec9b9e4078c181aca524920bc341a87
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M t/run/runenv.t
M t/test.pl

  Log Message:
  ---
  test.pl - move runperl_and_capture() to test.pl and clean it up

This moves runperl_and_capture() out of t/run/runenv.t, enhances it a
bit with some additional debugging features, and cleans it up to use
waitpid instead of wait, and a few other minor tweaks. Also adds some
comments to some of the cryptic code it contained. This is in
preparation for using it in another script.


  Commit: 846a4a47116ea64415e8fc69a41c1de092d3e0e7
  
https://github.com/Perl/perl5/commit/846a4a47116ea64415e8fc69a41c1de092d3e0e7
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M hv_func.h
M sbox32_hash.h

  Log Message:
  ---
  hv_func.h - switch sbox32 initializer to use the 128 bit seed

The 96 bit seed initializer was not mixing the seed bits very well and a
a 1 bit change to the seed used for the sbox initialization was not
propagating throughout the full SBOX buffer. The 128 bit variant is more
robust, and this patch makes it even more so by churning it longer, and
mixing in the seed twice.

This change also removes the old 96 bit variant and code that uses it
as I don't think it should be used anymore at all.


  Commit: e658b1dcbd061ac5cfe251a2fe95bcd68e54573b
  
https://github.com/Perl/perl5/commit/e658b1dcbd061ac5cfe251a2fe95bcd68e54573b
  Author: Yves Orton 
  Date:   2022-03-06 (Sun, 06 Mar 2022)

  Changed paths:
M MANIFEST
M embed.fnc
M embed.h
M hv.c
M perl.c
M perl.h
M pod/perlrun.pod
M proto.h
A t/run/runenv_hashseed.t
M util.c

  Log Message:
  ---
  hv.c - rework PL_hash_rand_bits update logic, add tests, -Dh debug mode

This moves all run time mutations of PL_hash_rand_bits into a set of
macros which allow us to debug what is happening.

It adds support for -Dh under DEBUGGING to allow introspection of the
the state of PL_hash_rand_bits and source and cause of changes to it.
With -Dhv you can also get an idea of the keys which are triggering
these mutations as well. -Dh has also been changed to imply
PERL_HASH_SEED_DEBUG as a convenience.

This goes alongside a new test, based on one from Nicholas R (atoomic)
to test that the various PERL_PERTURB_KEYS options behave as expected
and that 1 bit mutations of the seed actually do affect the key order
and hashing of our strings. The test is run many times to ensure that
it passes under many different randomly generated hash seeds. Parts of
this test would fail without the preceding commit to this one adjusting
how SBOX32 is initialized.


Compare: https://github.com/Perl/perl5/compare/bcd133b08d3c%5E...e658b1dcbd06