summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* pp_ctl.c - in try_run_unitcheck() guard against leaking PL_restartopYves Orton2022-10-242-5/+41
| | | | | | | | | If we die while executing a UNITCHECK inside of an eval we shouldn't leave PL_restartop set, as we will execute PL_op->op_next anyway. See the previous commit for more details in the context yy_parse(). Thanks to Bram for coming up with a test case that demonstrated the problem.
* pp_ctl.c - in try_yyparse do not leak PL_restartop from compile that diesYves Orton2022-10-243-10/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix GH Issue #20396, try_yyparse() breaks Attribute::Handlers. Reduced test case is: perl -e'CHECK { eval "]" }' which should not assert or segfault. In c304acb49 we made it so that when doeval_compile() is executed and it calls yyparse() inside of an eval any exceptions that occur during the parse process are trapped by try_yyparse() so that exection would return to doeval_compile(). This was done so that post eval compilation cleanup logic could be handled similarly regardless of whether Perl_croak() was called or not. However the logic to setup PL_restartop was not adjusted accordingly. The opcode that calls doeval_compile() setups an eval context data before it calls doeval_compile(). This data includes the "retop" which is used to return control to after the eval should it die and is set to the be the evaling opcodes op_next. When Perl_die_unwind() is called it sets PL_restartop to be the "retop" of the of the current eval frame, and then does a longjmp, on the assumption it will end up inside of a "run loop enabled jump enviornment", where it restarts the run loop based on the value of PL_restartop, zeroing it aftewards. After c304acb49 however, a die inside of try_yyparse the die_unwind returns control back to the try_yyparse, which ignores PL_restartop, and leaves it set. Code then goes through the "compilation failed" branch and execution returns to PL_restartop /anyway/, as PL_op hasn't changed and pp_entereval returns control to PL_op->op_next, which is what we pushed into the eval context anyway for the PL_restartop. The end result of this however is that PL_restartop remains set when we enter perl_run() for the first time. perl_run() is a "run loop enabled jump enviornment" which uses run_body() to do its business, such that when PL_restartop is NULL it executes the just compiled body of the program, and when PL_restartop is not null it assumes it must be in the eval handler from an eval from the main body and it should recontinue. The leaked PL_restartop is thus executed instead of the main program body and things go horribly wrong. This patch changes it so that when try_yyparse traps an exception we restore PL_restartop back to its old value. Same for its partner PL_restartjmpenv. This is fine as they have been set to the values from the beginning of the eval frame which we are part of, which is now over.
* Attribute-Handlers: rework eval codeYves Orton2022-10-241-7/+25
| | | | | | | This makes the logic a bit simpler, and makes it easier to debug as well. Reducing the amount of code that needs to be inside the eval makes it easier to debug what is going on, especially from an internals point of view (eg with -Dl enabled).
* scope.c - sanity check a var before we use itYves Orton2022-10-241-0/+1
|
* perl.c - add debug output to show when the run_body() continues after eval failYves Orton2022-10-241-0/+8
| | | | This can be helpful debugging issues related to phaser blocks and eval.
* Update Module::CoreList for 5.37.6Yves Orton2022-10-243-0/+42
| | | | | | | | | | | | | In 4ab96809c99e944e70c21779641e4b1c9a00df41 the perl version data was bumped, without doing any Module-CoreList changes and now related tests are failing. Release managers guide said to do: ./perl -Ilib Porting/corelist.pl cpan to update the corelist data, which is this commit. Not sure if this is 100% the right thing to do, but it makes the test fails stop for now. Someone who knows this better can do any mop-up.
* update B::Op_private version to match perl versionTony Cook2022-10-241-1/+1
| | | | detected by make test_porting and fixed by make regen
* only negative cache a method lookup if we look at UNIVERSALTony Cook2022-10-242-2/+28
|
* several improvements to the dist-modules CI target and fixes to the problems ↵Tony Cook2022-10-2420-45/+331
|\ | | | | | | they found
| * Time::HiRes: Changes updatesTony Cook2022-10-241-0/+7
| |
| * bump version ExtUtils::CBuilderTony Cook2022-10-2415-14/+28
| | | | | | | | and update Changes
| * ExtUtils::CBuilder: make sure the compiler finds the CORE include files for ↵Tony Cook2022-10-241-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the system perl on darwin The system compiler on sufficienctly recent darwin doesn't appear to find header files installed with the system perl if the CORE include directory is specified with -I, even if we've checked that directory contains EXTERN.h. EU::MM adopted a change from Apple's patches, and this change adapts that change for ExtUtils::CBuilder. This problem prevented ExtUtils::ParseXS tests from completing successfully, failing to find EXTERN.h.
| * Time::HiRes: make sure PERL_DARWIN is defined on darwinTony Cook2022-10-241-0/+5
| | | | | | | | | | | | | | The darwin hints file ensures this is set, but Apple appears to have removed it for the system perl. This prevented the emulation code for darwin from being compiled.
| * Time::Hires: fix probing on the darwin system perlTony Cook2022-10-242-3/+12
| | | | | | | | | | | | | | | | The system compiler on recent-ish darwin doesn't appear to find the system perl headers when the CORE directory is supplied with -I, they need the directory to be specified by -iwithsysroot. Logic adapted from ExtUtils::MakeMaker.
| * CI/dist-modules: define PERL_SRAND_OVERRIDE_NEXT_PARENT for CPAN useTony Cook2022-10-241-0/+5
| | | | | | | | | | | | | | | | bf2a3dae added usage of PERL_SRAND_OVERRIDE_NEXT_PARENT(), but this isn't defined for older perls. Since this macro doesn't have much general use outside of threads, just define it in the "bundled" threads.h.
| * CI/dist-modules: document supplying dist names on the command-lineTony Cook2022-10-241-1/+13
| |
| * CI/dist-modules: accept modules to test on the command-lineTony Cook2022-10-241-4/+12
| | | | | | | | | | This currently does not ensure that dependencies are installed, but does allow for simpler testing locally.
| * CI/dist-modules: use the module name not the dist name for NAMETony Cook2022-10-241-1/+2
| | | | | | | | | | | | in the generated Makefile.PL. This broke threads-shared, as the .so was in auto/threads-shared/shared.so instead of auto/threads/shared/shared.so
| * CI/dist-modules: threads-shared bundles shared.h on CPANTony Cook2022-10-241-0/+19
| | | | | | | | | | | | | | Provides some extra definitions not included in threads.h. As with threads.h it may be possible to eliminate this with the up to date ppport.h.
| * CI/dist-modules: wrap system to log what we're executing and better report ↵Tony Cook2022-10-241-7/+21
| | | | | | | | | | | | | | | | | | errors In some cases it wasn't obvious why some code was failing (in particular the DEFINE=-DHAS_PPPORT_H wasn't being added for threads-shared), so report what we're doing, and more information on why it failed if it does (which @bram-perl originally asked for.)
| * CI/dist-modules: add threads.h for threads/threads-sharedTony Cook2022-10-241-21/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | threads and threads-shared both bundle this on CPAN. It provides empty definitions for a few macros that may not have been defined in ppport.h. For now this includes the version from CPAN, but we may be able to optimize it to a smaller version given that ppport.h has been updated. Since we now have two files, rather than including them as (fairly large for t/test.pl) here-docs, move the content to __DATA__. I've retained the individual functions that forward onto _write_from_data() to provide a place to document why those files are needed.
| * CI/dist-modules: make sure threads, threads::shared use ppport.hTony Cook2022-10-241-1/+12
| | | | | | | | | | | | | | | | | | It turns out the Makefile.PL for both these distributions define the HAS_PPPORT_H symbol so they both only include ppport.h when built from CPAN. We need them to include ppport.h for our testing, so define it here too.
| * CI/dist-modules: add job to test dist/ modules on macos system perlTony Cook2022-10-241-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | This tests two things for us: - it tests on a "strange" platform, where things aren't exactly POSIX, but similar enough for some purposes. This allows testing for https://github.com/Perl/perl5/issues/20362 - the MacOS system perl is threaded, which is a flaw with the existing dist-modules tests. This found a few problems which are fixed in the following commits.
| * CI/dist-modules: add option to install separate to site_perlTony Cook2022-10-241-1/+18
| | | | | | | | | | This allows this to be tested with your system perl, or any perl where you don't want the dist/ modules to be installed.
| * CI/dist-modules: add a help option to test-dist-modules.plTony Cook2022-10-241-1/+13
| |
| * CI/dist-modules: make continuing controllable on the command-lineTony Cook2022-10-242-8/+13
| |
| * CI/dist-modules: Continue on errorBram2022-10-241-8/+42
| | | | | | | | | | | | | | | | | | When a dist fails then continue with the next one instead of aborting. A failure is reported when it happens and it is also repeated at the end of the run. The only exception to this is: Devel-PPPort: if that fails then it aborts the run and no other dists are tested.
| * CI/dist-modules: (Ab)use runner debug for verboseBram2022-10-241-1/+1
| | | | | | | | | | | | | | When restarting an Action on GitHub there is an extra checkbox to enable 'debug logging'. This sets the 'RUNNER_DEBUG' environment variable. (Ab)use that environment var as default value for the verbose flag of `make test`.
| * CI/dist-modules: Group output per distBram2022-10-241-0/+7
| | | | | | | | | | | | | | | | | | GitHub has support for grouping so use it in the dist-modules job. Unfortunately there is no support for sub-groups (i.e. to group the output of `perl Makefile.PL`, `make test` and `make install`) so one group per dist has to be good enough. (Also enable autoflush, it might not be needed but enabling it can't hurt.)
| * CI/dist-modules: Use `actions/checkout@v2`Bram2022-10-241-1/+1
| | | | | | | | | | | | | | | | | | | | The test/checkout does work with `actions/checkout@v2` so use it instead of 'checkout@v1'. (v2 is faster because it does a shallow clone and doesn't fetch the tags.) (My *assumption* on why `checkout@v1` was used: `checkout@v2` does not work when a 32-bit container is used on a 64-bit host. In these tests it uses a 64-bit container and that does work.)
* | Bump the perl version in various places for 5.37.6Todd Rinaldo2022-10-2418-122/+122
| |
* | sv.c - add BODYLESS_NV fast code to sv_setXv functionsRichard Leach2022-10-221-4/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For "BODYLESS" IVs and NVs, type up/downgrades can be easily done without having to call sv_upgrade. (Which will also not convert a BODYLESS NV back down to an IV, even when it is harmless to do so.) This commit adds "BODYLESS" handling to sv_setiv and sv_setnv, which previously lacked it, and "BODYLESS_NV" handling to sv_setsv_flags, which previously only special-cased "BODYLESS_IV"s. The BODYLESS_IV code in sv_setsv_flags previously did not preserve flags such as SVs_TEMP or SVs_PADTMP, which seemed like a potential latent bug. (The new BODYLESS_NV code *has* to preserve SVs_TEMP in order for all tests in t/lib/warnings to continue to pass.) Rather than clearing all flags, this commit instead does a SvOK_off(dsv) for both BODYLESS_IV and BODYLESS_NV cases.
* | AELEMFASTLEX_STORE - support negative keys, skip unnecessary checkRichard Leach2022-10-223-15/+14
| | | | | | | | | | | | | | | | This commit: * Adds support for negative keys, as per the original AELEMFAST_LEX * Changes an if() check for a "useless assignment to a temporary" into an assert, since this condition should never be true when the LHS is the result of an array fetch.
* | Merge branch 'readme-symlink' into bleadRicardo Signes2022-10-212-149/+15
|\ \
| * | README: eliminate unneeded code blocksRicardo Signes2022-10-211-8/+5
| | |
| * | README: make the GitHub readme Markdown just use the root READMERicardo Signes2022-10-212-145/+14
|/ /
* | New perldelta for 5.37.6Todd Rinaldo2022-10-2010-101/+550
| |
* | Tick release schedule for 5.37.5Todd Rinaldo2022-10-201-1/+1
| |
* | Provide 5.37.5 Epigraph.Todd Rinaldo2022-10-201-1/+8
| | | | | | | | Remove unmatched quotes in last month's
* | add perlhist entry for 5.37.5v5.37.5Todd Rinaldo2022-10-201-0/+1
| |
* | Update perldelta for 5.37.5 release.Todd Rinaldo2022-10-201-303/+52
| | | | | | | | | | | | | | - New modules. - Provide thanks. - Removed empty sections. - VMS configure changes.
* | Update Module::CoreList for 5.37.5Todd Rinaldo2022-10-202-4/+24
| |
* | Add some perldelta entries for 5.37.5Karl Williamson2022-10-201-3/+41
|/
* Future proof archname on VMSCraig A. Berry2022-10-191-8/+6
| | | | | | OpenVMS x86_64 is out and should be getting a native (not cross) C compiler Real Soon Now. So prepare for that and try to get the archname in a fashion that will work for any future architectures.
* Update Memoize to CPAN version 1.14Todd Rinaldo2022-10-1938-1325/+671
| | | | | | | | | | | | | | | | | | | | | [DELTA] 1.14 Sun 16 Oct 2022 * No recursion depth warning from the Memoize wrapper function. This was a backcompat breakage in 1.09 1.13 Tue 30 Aug 2022 * No functional changes * Further test fixes 1.12 Mon 29 Aug 2022 * No functional changes * Test fixes 1.11 Sun 28 Aug 2022 * Large test suite refactor * Additional tests * Updated packaging and package metadata
* Update Net-Ping to CPAN version 2.75Todd Rinaldo2022-10-1910-60/+61
| | | | | | | | | | | | | | [DELTA] 2.75 2022-09-01 12:44:03 rurban Minor - Modernized the synopsis (https://github.com/rurban/Net-Ping/pull/31) - Fixed a link in a comment (https://github.com/rurban/Net-Ping/pull/25) META Changes - Remove some TEST_REQUIRES (https://github.com/rurban/Net-Ping/pull/23) Test fixes - Support NO_NETWORK_TESTING=1 (https://github.com/rurban/Net-Ping/pull/24) - Fix non-routable addresses for negative tests (https://github.com/rurban/Net-Ping/pull/24)
* Correct local version of Config::Perl::V to 0.34 in Porting/Maintainers.plTodd Rinaldo2022-10-191-1/+1
|
* Correct local version of ExtUtils::PL2Bat to 0.005 in Porting/Maintainers.plTodd Rinaldo2022-10-191-1/+1
|
* Correct local version of Locale::Maketext to 1.32 in Porting/Maintainers.plTodd Rinaldo2022-10-191-1/+1
|
* Remove ancient and broken GCC for VMS supportCraig A. Berry2022-10-184-264/+16
| | | | | | | | | | | | | There has not been a viable GCC for VMS in a couple of decades and the hacks and workarounds that were necessary then are unlikely to be helpful for any future work. Reportedly significant portions of the GCC toolchain were available in GNAT Ada, but there was never an independent release of the C compiler and that support has now been removed as well. Cleaning this up should make it easier to add alternate compiler support in the future, such as for the clang port in progress at VSI.