[Perl/perl5] 75acd1: Make newSV_type an inline function
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
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
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
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]
Branch: refs/tags/v5.34.1-RC2 Home: https://github.com/Perl/perl5
[Perl/perl5] 10e546: 5.34.1-RC2 today
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
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
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
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
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
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 ...
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...
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...
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