This is a live mirror of the Perl 5 development currently hosted at
6 hours agoskip checking categorization of libperl symbols for LTO builds blead
Tony Cook [Tue, 22 Nov 2022 22:04:07 +0000 (09:04 +1100)]
skip checking categorization of libperl symbols for LTO builds

For LTO builds with gcc and clang the PL_no_mem symbol as listed by
nm is flagged as "D" (writable data) and "T" (text, aka code)

Looking at the final generated executable PL_no_mem does end up in
the .rodata (read only data) section, so it might be worth adding a
separate test for that.

Fixes #20518

33 hours agolocale.c: Fix compilation error on some platforms
Karl Williamson [Sat, 26 Nov 2022 23:59:08 +0000 (16:59 -0700)]
locale.c: Fix compilation error on some platforms

Commit 73d66f354cd4df0324b11e46af48f66bd5c1dd15 introduced a compilation
error into some platforms lacking nl_langinfo(3)  (generally Windows,
but their compiler is more lenient in this regard.

Simply add a 'const' to the declaration to fix it.

41 hours agoRecognise `//=` and `||=` syntax in signature parameter defaults
Paul "LeoNerd" Evans [Sat, 19 Nov 2022 11:48:19 +0000 (11:48 +0000)]
Recognise `//=` and `||=` syntax in signature parameter defaults

These create parameters where the default expression is assigned
whenever the caller did not pass a defined (or true) value. I.e. both if
it is missing, or is present but undef (or false).

3 days agoRemove obsolete workaround for VAX errno macros
Craig A. Berry [Thu, 24 Nov 2022 17:23:44 +0000 (11:23 -0600)]
Remove obsolete workaround for VAX errno macros

We won't be missing these from errno.h for any CRTL in this century
and it was always not quite right (but harmlessly redundant) to
use the workaround for non-Alpha since if we didn't need it for
Alpha then we also didn't need it for any post-Alpha architecture.

4 days agoutil.c - clarify unusual use of rcpv_new()
Yves Orton [Tue, 22 Nov 2022 14:56:31 +0000 (15:56 +0100)]
util.c - clarify unusual use of rcpv_new()

4 days agoop.c - add support for empty RCPV strings.
Yves Orton [Tue, 22 Nov 2022 14:41:14 +0000 (15:41 +0100)]
op.c - add support for empty RCPV strings.

Currently we have no need for an empty shared string, but there is no
reason it should not be possible. This patch reworks the internals so it
is possible to create one without triggering asserts. Currently we don't
use this, but it seems reasonable that someone might want it in the
future. Under DEBUGGING we will still assert if someone tries to create
an empty RCPV unless the flag specifies it should be allowed.

At the same time the docs for rcpv_new() have been cleaned up a bit to
be more correct and reflect what actually happens inside.

This changes things so that the len member of the RCPV structure is
always non-zero in a well formed structure by accounting for the null
we add to the end explicitly. The RCPV_LEN() macro continues to return
the old value (not including the null).

4 days agopp_ctl.c - don't let the current cop_file end up empty in @INC hooks
Yves Orton [Tue, 22 Nov 2022 14:39:51 +0000 (15:39 +0100)]
pp_ctl.c - don't let the current cop_file end up empty in @INC hooks

5 days agot/op/readline.t: skip error handling checks on solaris with PERLIO=stdio
Tony Cook [Mon, 21 Nov 2022 03:15:48 +0000 (14:15 +1100)]
t/op/readline.t: skip error handling checks on solaris with PERLIO=stdio

In this test, readline() calls down into PerlIOStdio_read(), which
uses fgetc() for a single character read, which fails as expected.

But fgetc() doesn't set the error flag on the stream, so the error
flag test and the close() test fail.

So skip the tests.

5 days agoperldelta for 12c7085de6f5
Tony Cook [Tue, 22 Nov 2022 23:38:52 +0000 (10:38 +1100)]
perldelta for 12c7085de6f5

5 days agoFix XS modules (e.g., Function::Parameters) that create anonsubs.
Felipe Gasper [Mon, 21 Nov 2022 15:26:52 +0000 (10:26 -0500)]
Fix XS modules (e.g., Function::Parameters) that create anonsubs.

Issue #20384: Commit 20d507b5869b116c3b1f8aeea48fbfbf68dfce60 broke
CPAN’s Function::Parameters. This updates that logic to (hopefully)
differentiate OP_ANONCODE from an XS module versus from Perl.

6 days agoext/XS-APItest/ Bump $VERSION
James E Keenan [Mon, 21 Nov 2022 22:35:51 +0000 (22:35 +0000)]
ext/XS-APItest/ Bump $VERSION

Oversight in b17e77fbd8

6 days agoPERL_STRLEN_NEW_MIN - increase to multiple of pointer sizes
Richard Leach [Sat, 19 Nov 2022 22:57:15 +0000 (22:57 +0000)]
PERL_STRLEN_NEW_MIN - increase to multiple of pointer sizes

Major malloc implementations, including the popular dlmalloc
derivatives all return chunks of memory that are a multiple of
the platform's pointer size. Perl's traditional default string
allocation of 10 bytes will almost certainly result in a larger
allocation than requested. Consequently, the interpreter may try
to Renew() an allocation to increase the PV buffer size when it
does not actually need to do so.

This commit increases the default string size to the nearest
pointer multiple. (12 bytes for 32-bit pointers, 16 bytes for
64-bit pointers). This is almost certainly unnecessarily small
for 64-bit platforms, since most common malloc implementations
seem to return 3*pointer size (i.e. 24 bytes) as the smallest
allocation. However, 16 bytes was chosen to prevent an increase
in memory usage in memory-constrained platforms which might have
a smaller minimum memory allocation.

6 days agoExtract minimum PV buffer/AV element size to common definitions
Richard Leach [Tue, 8 Nov 2022 23:40:06 +0000 (23:40 +0000)]
Extract minimum PV buffer/AV element size to common definitions

In a nutshell, for a long time the minimum PV length (hardcoded
in Perl_sv_grow) has been 10 bytes and the minimum AV array size
(hardcoded in av_extend_guts) has been 4 elements.

These numbers have been used elsewhere for consistency (e.g.
Perl_sv_grow_fresh) in the past couple of development cycles.
Having a standard definition, rather than hardcoding in multiple
places, is more maintainable. This commit therefore introduces
into perl.h:


(Note: Subsequent commit(s) will actually change the values.)

7 days agotest SvPVbyte*() and SvPVutf8*() variants set len
Tony Cook [Tue, 15 Nov 2022 00:00:47 +0000 (11:00 +1100)]
test SvPVbyte*() and SvPVutf8*() variants set len

These macros have limited use in core:

- only Socket uses SvPVbyte_nomg()
- nothing uses SvPVutf8_nomg()

Update the existing tests to ensure len is set properly.

Related to #20507

7 days agoPrepare Module::Corelist for 5.37.7
Max Maischein [Sun, 20 Nov 2022 13:05:16 +0000 (14:05 +0100)]
Prepare Module::Corelist for 5.37.7

7 days agoBump the perl version in various places for 5.37.6
Max Maischein [Sun, 20 Nov 2022 12:40:58 +0000 (13:40 +0100)]
Bump the perl version in various places for 5.37.6

7 days agoadd epigraph for 5.37.6
Max Maischein [Sun, 20 Nov 2022 12:35:27 +0000 (13:35 +0100)]
add epigraph for 5.37.6

7 days agoNew perldelta for 5.37.7
Max Maischein [Sun, 20 Nov 2022 12:32:53 +0000 (13:32 +0100)]
New perldelta for 5.37.7

7 days agoUpdate release schedule for 5.37.6
Max Maischein [Sun, 20 Nov 2022 12:26:42 +0000 (13:26 +0100)]
Update release schedule for 5.37.6

7 days agoParseXS - Disable alias value collision warnings by default
Yves Orton [Wed, 16 Nov 2022 10:14:55 +0000 (11:14 +0100)]
ParseXS - Disable alias value collision warnings by default

We always had a bug with the value 0, when fixing it, we discovered a lot
of people were doing duplicate aliases with 0. This patch disables the warnings
except when in a special author mode, as it makes no sense to show these warnings
to end users. It would seem most times creating such aliases is not an issue and
is entirely deliberate. So showing such warnings only to module authors and only
on request also makes sense.

7 days agoAdd new release to perlhist v5.37.6
Max Maischein [Sun, 20 Nov 2022 10:30:49 +0000 (11:30 +0100)]
Add new release to perlhist

7 days agoupdate perldelta for 5.37.6
Max Maischein [Sun, 20 Nov 2022 10:12:34 +0000 (11:12 +0100)]
update perldelta for 5.37.6

7 days agoUpdate Module::CoreList for 5.37.6
Max Maischein [Sun, 20 Nov 2022 09:36:10 +0000 (10:36 +0100)]
Update Module::CoreList for 5.37.6

8 days agolocale.c: Don't Safefree temps
Karl Williamson [Sun, 20 Nov 2022 04:01:22 +0000 (21:01 -0700)]
locale.c: Don't Safefree temps

Commit 22392ba2f8a changed the querylocale_foo macros to return a
mortalized copy instead of having to free things explicitly.  This was
done because the various code paths are complicated, and I was noticing
various leaks that would require a bunch of #ifdef's to fix.

That commit meant that all the existing free's of the results needed to
be removed.  This one was overlooked at the time.  Reported in
<>, not in github

9 days agoDevel::PPPort/module3: eliminate the always true warning for the return
Tony Cook [Thu, 17 Nov 2022 22:49:55 +0000 (09:49 +1100)]
Devel::PPPort/module3: eliminate the always true warning for the return

In this case we're testing that the result is always true, and it
happens the compiler realizes that the return value is always true,
even in isolation.

Returning the variable that we've already set to point to
PL_bufptr eliminates the warning.

The compiler is still smart enough to eliminate the comparison
on optimized builds.  Some linter may still complain about it.

9 days agoGvNAME() always returns a true value
Tony Cook [Thu, 17 Nov 2022 03:42:36 +0000 (14:42 +1100)]
GvNAME() always returns a true value

gcc 12 was complaining that GvNAME() always returns a true value,
and that's also true.

Omit such uses in conditions.

9 days agochange HvENAME_HEK() to HvENAME_HEK_NN() where NULLs would crash anyway
Tony Cook [Thu, 17 Nov 2022 03:41:35 +0000 (14:41 +1100)]
change HvENAME_HEK() to HvENAME_HEK_NN() where NULLs would crash anyway

gcc 12 was producing a confusing message complaining that
references to with hek_key[] were beyond the end of the array,
even though a properly HEK has bytes beyond the first we declare.

From experimentation I theorize the confusing message was produced
because HvENAME_HEK() can return a NULL pointer, and the array
pointed to by any NULL pointer is zero length, producing the
array bounds warning we were seeing.

Fixed by changing each hv_(fetch|delete)hek() call to use the
HvENAME_HEK_NN() macro variant, which doesn't include an explicit
NULL return value.

mro_method_changed_in() was a bit special, it evaluated the
hv_fetchhek() before the check for an anonymous stash, so I reordered
the code to take advantage of C99, checking the assertions before we
dereference the stash pointer, checking we have a name before trying
to look it up.

9 days agoonly fully calculate the stash (effective) name where needed
Tony Cook [Thu, 17 Nov 2022 03:30:39 +0000 (14:30 +1100)]
only fully calculate the stash (effective) name where needed

gcc 12 was complaining that evaluating (somehekptr)->hek_key
was always true in many places where HvNAME() or HvENAME() was
being called in boolean context.

Add new macros to check whether the names should be available and
use those instead.

9 days agoclarify that every tag is required to be annotated
Andreas Koenig [Tue, 15 Nov 2022 04:57:13 +0000 (05:57 +0100)]
clarify that every tag is required to be annotated
- while the instructions were already clear at this point, accidents with lightweight (unannotated) tags have happened

9 days agorelax the assertion in SSPTR() and SSPTRt()
Tony Cook [Mon, 14 Nov 2022 03:00:38 +0000 (14:00 +1100)]
relax the assertion in SSPTR() and SSPTRt()

I added assertions in SSPTR() and SSPTRt() to try to ensure the new
SSize_t result from SSNEW*() wouldn't be truncated, but this
was too strict, requiring that the size matched exactly.

Relax this to allow the input offset to be the same or larger than

Fixes #20504.

9 days agoSkip one test under miniperl
James E Keenan [Fri, 18 Nov 2022 14:39:10 +0000 (14:39 +0000)]
Skip one test under miniperl

threads module not yet available.

For: #

9 days agodist/Tie-File/t/29a_upcopy.t: double timeout to 10
David Mitchell [Fri, 18 Nov 2022 10:07:24 +0000 (10:07 +0000)]
dist/Tie-File/t/29a_upcopy.t: double timeout to 10

Some of these tests (which involve moving blocks of data around in a
file) are occasionally randomly timing out on some slow smokers.
Double the timeout from 5s to 10s and see if the problem goes away.

9 days agodist/Tie-File/t/29a_upcopy.t add test descriptions
David Mitchell [Fri, 18 Nov 2022 10:05:32 +0000 (10:05 +0000)]
dist/Tie-File/t/29a_upcopy.t add test descriptions

10 days agoGetopt::Long: synch with CPAN version 2.54
Johan Vromans [Fri, 18 Nov 2022 00:02:18 +0000 (00:02 +0000)]
Getopt::Long: synch with CPAN version 2.54

From Changes:

* Fix compatibility with Perl 5.8.

11 days agoGetopt::Long: sync with CPAN version 2.53
Johan Vromans [Thu, 17 Nov 2022 00:19:16 +0000 (00:19 +0000)]
Getopt::Long: sync with CPAN version 2.53

From Changes:

* Improve parsing of float numbers.

* Fix Version/HelpMessage -message argument.

* Added 'starter' method to the callback object. This method returns the
  starter (e.g. '--' or '-') of the option as used by the user.

* Fix problem with Pod::Usage argument in examples/

* Enhanced option:default spec to octal, hex and binary.

11 days agoFix & test useless-anonymous-subroutine warnings.
Felipe Gasper [Wed, 9 Nov 2022 18:58:12 +0000 (13:58 -0500)]
Fix & test useless-anonymous-subroutine warnings.

Issue #20384: This fixes a breakage from
35458d36d3c9fcf47064e4379e15276057b0bca5 that Devel::WatchVars’s test suite
caught. A test is added to Perl’s own test suite to prevent regressions.

11 days agoFail attempts to pass anonsub to \$ prototype.
Felipe Gasper [Mon, 31 Oct 2022 20:34:11 +0000 (16:34 -0400)]
Fail attempts to pass anonsub to \$ prototype.

Issue #20384

12 days agoParseXS - version bump to 3.48 and test perlxs.pod has the right version
Yves Orton [Tue, 8 Nov 2022 16:44:11 +0000 (17:44 +0100)]
ParseXS - version bump to 3.48 and test perlxs.pod has the right version

The version in the pod has been long wrong. We are on 3.48 now, it was 3.13_01.

12 days agoParseXS - make testing easier
Yves Orton [Mon, 14 Nov 2022 17:46:11 +0000 (18:46 +0100)]
ParseXS - make testing easier

Use warn instead of print STDERR, and provide a way to make
errors trigger a die instead of an exit(1).

Currently the module code is written as though the only way
it will be used is via the xsubpp script, so the library does
annoying things like calling exit() instead of die() to signal
an exception. It also uses print STDERR instead of warn,
which means the test code can't just use a $SIG{__WARN__} hook
to see its warnings, and instead has to include PrimitiveCapture
in the t directory. These two things combine annoyingly in our
test code such that when you break the module you can see tests
exiting early, but with no useful diagnostics as to why.

This patch reworks this to use "warn" instead of print STDERR,
and to provide a way to enable the use of "die" instead of exit.
Thus making debugging failing tests far easier.

12 days agoParseXS - add support for elifdef and elifndef
Yves Orton [Mon, 14 Nov 2022 10:16:40 +0000 (11:16 +0100)]
ParseXS - add support for elifdef and elifndef

The upcoming C++23 and C23 standards add #elifdef, #elifndef.

12 days agoParseXS - allow symbolic alias of default function
Yves Orton [Tue, 8 Nov 2022 17:31:01 +0000 (18:31 +0100)]
ParseXS - allow symbolic alias of default function

Also normalize warnings. It used to be if you created an alias
of the root function (0) no warning would be produced. Now
we will produce a warning, but we also allow symbolic references
to defuse the warning.

12 days agoParseXS - better support for duplicate ALIASes
Yves Orton [Tue, 8 Nov 2022 16:40:09 +0000 (17:40 +0100)]
ParseXS - better support for duplicate ALIASes

Sometimes you *want* to create multiple names for the same
functionality, but doing so with the ALIAS functionality requires
awkward workarounds. This adds a new "symbolic alias" that does
not warn on dupes as creating a dupe is its whole point. For a
symbolic alias the value is the name of an existing alias.

This also cleans up some of the warnings related to aliases so
we distinguish between when a duplicate is truly ignored or
where it overrides a previous value. And deal with a few other
edge cases properly.

12 days agoParseXS - handle #else and #endif without blank line prefixes
Yves Orton [Tue, 8 Nov 2022 14:06:17 +0000 (15:06 +0100)]
ParseXS - handle #else and #endif without blank line prefixes

This patch makes it possible to omit some of the whitespace around
preprocessor directives. It teaches fetch_para() to understand
that a #else or #endif directive that does not end a #if that
was seen in the current "paragraph" should not be parsed as part
of that paragraph. This means that a conditional block that defines
the same sub under different define conditions need not have extra
whitespace after each sub definition.

12 days agoParseXS - sort things that might produce output
Yves Orton [Tue, 8 Nov 2022 13:58:04 +0000 (14:58 +0100)]
ParseXS - sort things that might produce output

Make sure our output is deterministic.

13 days agoconfigure.gnu forwards extra arguments to Configure
Tony Cook [Mon, 14 Nov 2022 00:20:15 +0000 (11:20 +1100)]
configure.gnu forwards extra arguments to Configure

except when it doesn't (the -- arguments)

This came up during discussion of #20502, but is not a fix for it.

13 days agoWhitespace alignment fix in regen/
Paul "LeoNerd" Evans [Mon, 14 Nov 2022 15:04:14 +0000 (15:04 +0000)]
Whitespace alignment fix in regen/

13 days agoUpdate AUTHORS and .mailmap with my (Mattia Barbon) current address
Mattia Barbon [Mon, 14 Nov 2022 09:13:21 +0000 (10:13 +0100)]
Update AUTHORS and .mailmap with my (Mattia Barbon) current address

13 days agoSvPVutf8_nomg - assign string length to the len parameter
Mattia Barbon [Sun, 13 Nov 2022 22:33:50 +0000 (23:33 +0100)]
SvPVutf8_nomg - assign string length to the len parameter

This is consistent with other SvPV* variants that take a len parameter.

13 days agoutf8::upgrade: Don't coerce undef arg
Karl Williamson [Fri, 28 Oct 2022 14:48:37 +0000 (08:48 -0600)]
utf8::upgrade: Don't coerce undef arg

This fixes GH #20419

2 weeks agoFigure out I32df, U32uf, etc. in Configure rather than in perl.h
TAKAI Kousuke [Tue, 18 Oct 2022 13:46:11 +0000 (22:46 +0900)]
Figure out I32df, U32uf, etc. in Configure rather than in perl.h

These macros were defined in perl.h using preprocessor conditionals,
but determining wheter I32 is "int" or "long" is pretty hard with
preprocessor, when INTSIZE == LONGSIZE.  The Configure script
should know exact underlying type of I32, so it should be able to
determine whether %d or %ld shall be used to format I32 value
more robustly.

Various pre-configured files, such as uconfig.h, are updated to
align with this.

2 weeks agoPerl doesn't appear to be included in the ibb any more
Tony Cook [Mon, 14 Nov 2022 00:02:06 +0000 (11:02 +1100)]
Perl doesn't appear to be included in the ibb any more

The "ibb-perl" link prompts for a login, though other links like
"" load without a login.

Perl also isn't listed under the ibb project itself at

2 weeks agoTie-File: report test timeouts to STDERR
David Mitchell [Sat, 12 Nov 2022 09:16:04 +0000 (09:16 +0000)]
Tie-File: report test timeouts to STDERR

Currently some tests have a 5 second timeout. If this is exceeded,
the test number is output as "not ok", along with "# Timeout" to
STDOUT. Change the latter to output to STDERR along with the test
filename and test number, for easer debugging of smoke logs.

(Really these test files need upgrading to use Test::* but that's a job
for another day and another person....)

2 weeks agoskip testing .github/ if doesn't appear to be a README
Tony Cook [Fri, 11 Nov 2022 04:53:12 +0000 (15:53 +1100)]
skip testing .github/ if doesn't appear to be a README

git on windows at least of 2.37.1 does not checkout symbolic links
as symbolic links, leaving them as files containing the filename
linked to.

This meant this test against .github/ failed, since it only
contained "../README": nothing that appears to be a copyright message

I considered testing that .github/ was a symbolic link
but 8975221916 suggests that it may eventually become more distinct
from the root README file, so instead check its size.

2 weeks agoregcomp.c - add a PARNO() macro to wrap the ARG() macro
Yves Orton [Fri, 4 Nov 2022 17:18:49 +0000 (18:18 +0100)]
regcomp.c - add a PARNO() macro to wrap the ARG() macro

We used the ARG() macro to access the parno data for the OPEN
and CLOSE regops. This made it difficult to find what needed to
change when the type and size or location of this data in the
node was modified. Replacing this access with a specific macro
makes the code more legible and future proof.

This was actually backported from finding everything that broke
by changing the regnode type for OPEN and CLOSE to 2L and moving
the paren parameter to the 2L slot. We might do something like this
in the future and separating the PARNO() macros from their
implementation will make it easier.

2 weeks agoregcomp.c - correct comment
Yves Orton [Fri, 4 Nov 2022 17:27:23 +0000 (18:27 +0100)]
regcomp.c - correct comment

2 weeks agoDevel-PPPort: bump version
Graham Knop [Fri, 4 Nov 2022 04:45:07 +0000 (05:45 +0100)]
Devel-PPPort: bump version

2 weeks agoDevel-PPPort: fix STMT_START and STMT_END to not warn on clang
Graham Knop [Fri, 4 Nov 2022 04:33:30 +0000 (05:33 +0100)]
Devel-PPPort: fix STMT_START and STMT_END to not warn on clang

Since 7169efc77525df70484a824bff4ceebd1fafc760, perl's core STMT_START
and STMT_END macros no longer try to use brace groups, due to the
warnings they can generate and their very limited usefulness.

That commit also changed Devel::PPPort to remove the use of brace groups
in STMT_START/STMT_END. That led to errors in older perls, so it was
partly reverted in e08ee3cb66f362c4901846a46014cfdfcd60326c. Since then,
various other macros have been improved to properly work with brace
groups enabled or disabled.

We can now remove the brace group using variant of STMT_START/STMT_END,
which will silence the warnings from clang.

2 weeks agoDevel-PPPort: use inline function for croak_sv without brace groups
Graham Knop [Fri, 4 Nov 2022 04:27:41 +0000 (05:27 +0100)]
Devel-PPPort: use inline function for croak_sv without brace groups

The macro for croak_sv when brace groups are not enabled uses
STMT_START/STMT_END. This works when used as a statement, but would
break if used as part of an expression.

To resolve this, change that macro to use a function. As a static inline
function with a namespaced name, it shouldn't cause problems with
namespace pollution.

2 weeks agopod/perlhacks.pod - document TEST_ARGS and make win32 perl use it too
Yves Orton [Thu, 3 Nov 2022 18:50:48 +0000 (19:50 +0100)]
pod/perlhacks.pod - document TEST_ARGS and make win32 perl use it too

Win32 has had TEST_SWITCHES and TEST_FILES for ages. Unix has
TEST_ARGS. This extends Win32 to support TEST_ARGS as well. I
havent made the contrary change to the unix code, anyone using
TEST_SWITCHES is already using it on Win32.

2 weeks agoParseXS - fix todo tests to match the correct filename
Yves Orton [Tue, 8 Nov 2022 13:43:01 +0000 (14:43 +0100)]
ParseXS - fix todo tests to match the correct filename

The original regex was off and showed this test as passing when
it was actually failing, which is what we expect and why the test
is marked as TODO. The test accidentally doubled the extension
expected in the filename, and this patch corrects that mistake.

2 weeks agoperldelta for 545d499045, 42d0708bf6, a1aa0ce9693, 4f8b3850b207
Tony Cook [Mon, 7 Nov 2022 23:39:44 +0000 (10:39 +1100)]
perldelta for 545d49904542d0708bf6a1aa0ce96934f8b3850b207

2 weeks agobump $Storable::VERSION
Tony Cook [Mon, 25 Jul 2022 06:53:41 +0000 (16:53 +1000)]
bump $Storable::VERSION

2 weeks agomake store_hook() handle regular expression objects
Tony Cook [Mon, 25 Jul 2022 04:53:39 +0000 (14:53 +1000)]
make store_hook() handle regular expression objects

Previously this would complain it didn't know the object type
when preparing to call STORABLE_freeze.

2 weeks agoimprove error reporting by store_hook() on an unknown type
Tony Cook [Tue, 19 Jul 2022 05:58:35 +0000 (15:58 +1000)]
improve error reporting by store_hook() on an unknown type

This produced an opaque message when it was asked to freeze an
object of an unsupported type.  Changes:

- replace the opaque internal object type number with the typical perl name of the
  type ("GLOB" instead of "8")
- include the class of the object being frozen to identify which class needs work
- include name of the function we're trying to call to do the freeze,
  if possible

3 weeks agoallow porting/corelist.t to be run from root
Yves Orton [Mon, 24 Oct 2022 07:45:55 +0000 (09:45 +0200)]
allow porting/corelist.t to be run from root

3 weeks agoTest case where different functions are declared
James E Keenan [Mon, 4 Jul 2022 21:02:01 +0000 (21:02 +0000)]
Test case where different functions are declared

In the first sample .xs file supplied for this branch, a function named
'dbh' was declared twice, once inside an 'ifdef', once outside.  This
led me to think that that dual use of the string 'dbh' was the problem
EUPXS was stumbling upon.

However, that appears to be incorrect.  If we supply a second sample .xs
file in which we use two different function names, we still get the
undesired warning.

3 weeks agoAdd TODO-ed test for duplicate warning
James E Keenan [Mon, 4 Jul 2022 15:12:17 +0000 (15:12 +0000)]
Add TODO-ed test for duplicate warning

3 weeks agoAdd test file contributed in GH 19661
E. Choroba [Mon, 4 Jul 2022 14:14:19 +0000 (14:14 +0000)]
Add test file contributed in GH 19661

3 weeks agobuildtoc: Add error check
Karl Williamson [Wed, 2 Nov 2022 19:39:55 +0000 (13:39 -0600)]
buildtoc: Add error check

If something goes wrong, this wouldn't have known it

3 weeks agoUpdate Data::Dumper synopsis
Elvin Aslanov [Fri, 2 Sep 2022 15:09:18 +0000 (19:09 +0400)]
Update Data::Dumper synopsis

Add `my` to synopsis.

Committer: Data-Dumper: Update $VERSION in POD.  The release date no
longer appears in the POD, so let's remove the comment admonishing us to
update it.


3 weeks agoregen/ - add more detail on what the script does and list its inputs properly
Yves Orton [Mon, 12 Sep 2022 09:30:15 +0000 (11:30 +0200)]
regen/ - add more detail on what the script does and list its inputs properly

Previously we were only showing one of the inputs that generates
regnodes.h, now we show all of them. Also add some paragraphs explaining
a bit more detail what the files contain and how we process.

Committer: Small grammatical correction, per

3 weeks agoGenerate opcode.h, opnames.h
Branislav Zahradník [Fri, 4 Nov 2022 18:39:08 +0000 (19:39 +0100)]
Generate opcode.h, opnames.h

3 weeks agoRefactor - with c99 array init index comments are not necessary
Branislav Zahradník [Mon, 17 Oct 2022 05:43:07 +0000 (07:43 +0200)]
Refactor - with c99 array init index comments are not necessary

3 weeks agoRefactor - use c99 array initialization (using op enum)
Branislav Zahradník [Sun, 16 Oct 2022 17:59:38 +0000 (19:59 +0200)]
Refactor - use c99 array initialization (using op enum)

3 weeks agoRefactor - use INIT() macro instead of #ifdef/#endif
Branislav Zahradník [Sun, 16 Oct 2022 16:46:11 +0000 (18:46 +0200)]
Refactor - use INIT() macro instead of #ifdef/#endif

3 weeks agoRefactor - let INIT() macro to accept expressions with comma(s)
Branislav Zahradník [Sun, 16 Oct 2022 17:48:56 +0000 (19:48 +0200)]
Refactor - let INIT() macro to accept expressions with comma(s)

3 weeks agoRefactor - B/ - move generator code to function
Branislav Zahradník [Sun, 16 Oct 2022 15:00:51 +0000 (17:00 +0200)]
Refactor - B/ - move generator code to function

3 weeks agoRefactor - pp_proto.h - move generator code to function
Branislav Zahradník [Sun, 16 Oct 2022 14:11:29 +0000 (16:11 +0200)]
Refactor - pp_proto.h - move generator code to function

3 weeks agoRefactor - opnames.h - unglobalize output handle
Branislav Zahradník [Sun, 16 Oct 2022 10:51:48 +0000 (12:51 +0200)]
Refactor - opnames.h - unglobalize output handle

3 weeks agoRefactor - opnames.h - move epilogue into function
Branislav Zahradník [Sun, 16 Oct 2022 10:47:24 +0000 (12:47 +0200)]
Refactor - opnames.h - move epilogue into function

3 weeks agoRefactor - opnames.h - move opcode predicates into function
Branislav Zahradník [Sun, 16 Oct 2022 10:02:29 +0000 (12:02 +0200)]
Refactor - opnames.h - move opcode predicates into function

3 weeks agoRefactor - opnames.h - move enum generator into function
Branislav Zahradník [Sun, 16 Oct 2022 09:49:57 +0000 (11:49 +0200)]
Refactor - opnames.h - move enum generator into function

3 weeks agoRefactor - opcode.h - unglobalize output handle
Branislav Zahradník [Sun, 16 Oct 2022 09:18:04 +0000 (11:18 +0200)]
Refactor - opcode.h - unglobalize output handle

3 weeks agoRefactor - opcode.h - move PL_opargs into function
Branislav Zahradník [Sun, 16 Oct 2022 09:01:03 +0000 (11:01 +0200)]
Refactor - opcode.h - move PL_opargs into function

3 weeks agoRefactor - opcode.h - move PL_check into function
Branislav Zahradník [Sun, 16 Oct 2022 07:40:31 +0000 (09:40 +0200)]
Refactor - opcode.h - move PL_check into function

3 weeks agoRefactor - opcode.h - move PL_ppaddr into function
Branislav Zahradník [Sun, 16 Oct 2022 07:28:17 +0000 (09:28 +0200)]
Refactor - opcode.h - move PL_ppaddr into function

3 weeks agoRefactor - opcode.h - move opnames into function
Branislav Zahradník [Sun, 16 Oct 2022 06:34:08 +0000 (08:34 +0200)]
Refactor - opcode.h - move opnames into function

3 weeks agoRefactor - opcode.h - move defines into function
Branislav Zahradník [Sun, 16 Oct 2022 06:31:07 +0000 (08:31 +0200)]
Refactor - opcode.h - move defines into function

3 weeks agoRefactor - opcode.h - move prologue into function
Branislav Zahradník [Sun, 16 Oct 2022 06:23:11 +0000 (08:23 +0200)]
Refactor - opcode.h - move prologue into function

3 weeks agoRefactor - required little bit newer perl
Branislav Zahradník [Sun, 16 Oct 2022 06:36:37 +0000 (08:36 +0200)]
Refactor - required little bit newer perl

This is perl5 developer tool, it's safe to expect contributors have
something newer at their disposal.

3 weeks agoRefactor - untabify
Branislav Zahradník [Fri, 4 Nov 2022 18:07:41 +0000 (19:07 +0100)]
Refactor - untabify

3 weeks agoMoved unused variable into debug scope
AnFunctionArray [Fri, 4 Nov 2022 15:52:56 +0000 (17:52 +0200)]
Moved unused variable into debug scope

Moved declaration of object p.

For: Issue:

3 weeks agoregcomp.c - remove always true condition
Yves Orton [Fri, 4 Nov 2022 08:19:59 +0000 (09:19 +0100)]
regcomp.c - remove always true condition

RX_PRECOMP() has for some time been an expression that
will always be true, thus there is not need to test it.

3 weeks agoGitHub Actions: switch from ::set-output to $GITHUB_OUTPUT
Graham Knop [Fri, 4 Nov 2022 05:13:03 +0000 (06:13 +0100)]
GitHub Actions: switch from ::set-output to $GITHUB_OUTPUT

The ::set-output command has been deprecated and replaced with the
$GITHUB_OUTPUT environment file. Convert the workflows to use the newer
output mechanism.


3 weeks agoscope.* - revert and rework SAVECOPWARNINGS change
Yves Orton [Fri, 4 Nov 2022 09:26:11 +0000 (10:26 +0100)]
scope.* - revert and rework SAVECOPWARNINGS change

We can't put PL_compiling or PL_curcop on the save stack as we don't
have a way to ensure they cross threads properly. This showed up as a
win32 t/op/fork.t failure in the thread based fork emulation layer.

This adds a new save type SAVEt_CURCOP_WARNINGS and macro
SAVECOMPILEWARNINGS(). By simply hard coding where the pointers should
be restored to we side step the issue of which thread we are in.

Thanks to Graham Knop for help identifying that one of my commits was

3 weeks agoReplaced recppush/regcppop with memcpy
Alexander Nikolov [Thu, 2 Jun 2022 19:01:42 +0000 (12:01 -0700)]
Replaced recppush/regcppop with memcpy

Basically tested with Intel VTune to be increasing the performance of
a perl regex matching program with multiple capture groups and
recursive patterns

[With minor whitespace edits by Yves.]

3 weeks agoperldelta for 1a2b24d857d
Tony Cook [Wed, 2 Nov 2022 23:06:40 +0000 (10:06 +1100)]
perldelta for 1a2b24d857d

3 weeks agochange the return value of SSNEW to SSize_t
Tony Cook [Thu, 20 Oct 2022 04:04:51 +0000 (15:04 +1100)]
change the return value of SSNEW to SSize_t

The normal savestack index is an I32, but that counts in ANY
(which are typically the larger of pointer or IV sizes), this
meant is the save stack was large, but still nowhere need it's
limit, the result of SSNEW() could overflow.

So make the result SSize_t and adjust SSPTR() to match.

SSPTR() asserts to ensure the supplied type is the same size as
SSize_t to ensure callers are updated to handle the new limit.

3 weeks agoop.c: Add a cast to silence -Wsign-compare warning
TAKAI Kousuke [Wed, 26 Oct 2022 14:59:10 +0000 (23:59 +0900)]
op.c: Add a cast to silence -Wsign-compare warning

In 32-bit build (where IV is not wider than U32), comparing
PL_eval_begin_nest_depth and max_nest_iv would generate a warning:

    op.c:10817:42: warning: comparison of integer expressions of different signedness: ‘U32’ {aka ‘long unsigned int’} and ‘IV’ {aka ‘long int’} [-Wsign-compare]
    10817 |             if (PL_eval_begin_nest_depth >= max_nest_iv) {
          |                                          ^~

3 weeks agore/ - rework so we don't double compile patterns
Yves Orton [Fri, 28 Oct 2022 21:28:06 +0000 (23:28 +0200)]
re/ - rework so we don't double compile patterns

We were calling utf8::upgrade() on qr// objects, which works, in
that it stringifies the pattern, and then upgrades the string, and
the string can be used to match against. But it double compiles the
pattern, which is a bit unnecessary. For example

    $pat= qr/\x{DF}/;
    utf8::upgrade($pat); # $pat is now a string!
    "ss"=~/$pat/;        # and now $pat gets compiled again

works, but it does twice the work needed.

This was found by making utf8::upgrade() ignore refs.