This is a live mirror of the Perl 5 development currently hosted at
15 months agoperlunicode: Fix typo
Karl Williamson [Mon, 9 Mar 2020 22:23:37 +0000 (16:23 -0600)]
perlunicode: Fix typo

Spotted by Hugo van der Sanden

15 months agomalloc.c: Fix compiler warnings/error
Karl Williamson [Sun, 8 Mar 2020 18:29:01 +0000 (12:29 -0600)]
malloc.c: Fix compiler warnings/error

This needed a const to compile, and there were warnings as well.

15 months agooptimize sort by inlining comparison functions
Tomasz Konojacki [Mon, 2 Mar 2020 23:45:05 +0000 (00:45 +0100)]
optimize sort by inlining comparison functions

This makes special-cased forms such as sort { $b <=> $a }
even faster.

Also, since this commit removes PL_sort_RealCmp, it fixes the
issue with nested sort calls mentioned in gh #16129

15 months agopp_sort.c: small refactoring
Tomasz Konojacki [Mon, 2 Mar 2020 23:45:04 +0000 (00:45 +0100)]
pp_sort.c: small refactoring

This will make the future changes a bit easier.

15 months agopp_sort.c: call Perl_sortsv_flags directly
Tomasz Konojacki [Mon, 2 Mar 2020 23:45:03 +0000 (00:45 +0100)]
pp_sort.c: call Perl_sortsv_flags directly

That pointer isn't needed.

15 months agopp_sort.c: normalize indentation
Tomasz Konojacki [Mon, 2 Mar 2020 23:45:02 +0000 (00:45 +0100)]
pp_sort.c: normalize indentation

According to perlhack, code should be indented with four spaces.

This commit doesn't contain any functional changes. If you're
seeing it in "git blame" output, try using -w switch, it will
hide whitespace-only changes.

15 months agonew function specifier: PERL_STATIC_FORCE_INLINE
Tomasz Konojacki [Wed, 4 Mar 2020 22:34:38 +0000 (23:34 +0100)]
new function specifier: PERL_STATIC_FORCE_INLINE

It's the same thing as PERL_STATIC_INLINE but it also adds
__attribute__(always_inline) or __forceinline if the compiler
supports that.

15 months agoregen/ handle PERL_STATIC_INLINE_NO_RET properly
Tomasz Konojacki [Wed, 4 Mar 2020 22:17:31 +0000 (23:17 +0100)]
regen/ handle PERL_STATIC_INLINE_NO_RET properly

15 months agoregen/ fix error message
Tomasz Konojacki [Wed, 4 Mar 2020 22:13:16 +0000 (23:13 +0100)]
regen/ fix error message

15 months agosymbian/symbianish.h: Fix broken macro name
Karl Williamson [Sat, 7 Mar 2020 14:33:32 +0000 (07:33 -0700)]
symbian/symbianish.h: Fix broken macro name

The name was misspelled, and could never have compiled.

This indicates that no one on a Symbian system has tried perls since

15 months agofix typo in perlivp
Craig A. Berry [Fri, 6 Mar 2020 13:27:23 +0000 (07:27 -0600)]
fix typo in perlivp

15 months agoAllow wildcard pattern debugging
Karl Williamson [Mon, 24 Feb 2020 19:16:46 +0000 (12:16 -0700)]
Allow wildcard pattern debugging

This fixes #17026

Patterns can have subpatterns since 5.30.  These are processed when
encountered, by suspending the main pattern compilation, compiling the
subpattern, and then matching that against the set of all legal
possibilities, which Perl knows about.

Debugging info for the compilation portion of the subpattern was added
by be8790133a0ce8fc67454e55e7849a47a0858d32, without fanfare.  But,
prior to this new commit, debugging info was not available for that
matching portion of the compilation, except under DEBUGGING builds, with
-Drv.  This commit adds a new option to 'use re qw(Debug ...)',
WILDCARD, to enable subpattern match debugging.  Whatever other match
debugging options have been turned on will show up when a wildcard
subpattern is compiled iff WILDCARD is specified.

The output of this may be voluminous, which is why you have to ask for
it specifically.  Or, the EXTRA option turns it on, along with several
other things.

15 months agoregcomp.c: Rmv use of extraneous macro
Karl Williamson [Wed, 4 Mar 2020 23:01:24 +0000 (16:01 -0700)]
regcomp.c: Rmv use of extraneous macro

I added this becuase the name of another macro confused me into thinking
this was necessary, whereas that other macro was all that was needed.

This is the only use of the extraneous macro.

15 months agoregex: Change internal macro name
Karl Williamson [Wed, 4 Mar 2020 22:59:29 +0000 (15:59 -0700)]
regex: Change internal macro name

It wasn't clear to me that the macro did more than a declaration, given
its name.  Rename it to be clear as to what it does.

15 months agoFix variable name in wrap_keyword_plugin documentation
Stefan Seifert [Thu, 5 Mar 2020 10:57:28 +0000 (11:57 +0100)]
Fix variable name in wrap_keyword_plugin documentation

15 months agoregcomp.h: remove redundant comment
Hugo van der Sanden [Thu, 5 Mar 2020 12:23:19 +0000 (12:23 +0000)]
regcomp.h: remove redundant comment

This 1989 comment stopped being true in 1997 with commit c277df4222.

15 months agobump $XS::APItest::VERSION
Tony Cook [Wed, 4 Mar 2020 04:52:41 +0000 (15:52 +1100)]
bump $XS::APItest::VERSION

15 months agoadd casts to IV_MAX, UV_MAX so they match the IVdf, UVdf macros
Tony Cook [Wed, 22 Jan 2020 04:40:05 +0000 (15:40 +1100)]
add casts to IV_MAX, UV_MAX so they match the IVdf, UVdf macros

fixes #17338

15 months agoAPItest: get a compile-time warning if IVdf doesn't match IV_MAX
Tony Cook [Wed, 22 Jan 2020 04:38:15 +0000 (15:38 +1100)]
APItest: get a compile-time warning if IVdf doesn't match IV_MAX

and similarly for UVuf/UV_MAX.

This already warns in PPPort, but that's for testing PPPort, not
the core.

15 months agoregcomp.c: Get rid of meaningless test
Karl Williamson [Mon, 2 Mar 2020 17:15:25 +0000 (10:15 -0700)]
regcomp.c: Get rid of meaningless test

Since ea3daa5, parts of this test became nonsensical as max_offset
cannot be larger than OPTIMIZE_INFIINITY.  (I don't know why compilers
didn't say that this branch is always false.)

Hugo van der Sanden suggested something like this commit to keep the
still valid part of the test.

15 months agoAllow more debugging in re_comp.c
Karl Williamson [Mon, 24 Feb 2020 19:13:16 +0000 (12:13 -0700)]
Allow more debugging in re_comp.c

This adds two main functions that were previously only defined in
regcomp.c to also be defined in re_comp.c.  This allows to use
debugging with them.   To avoid duplicating large data structures,
several lightweight wrapper functions are added to regcomp.c that
re_comp.c calls to access those structures.

15 months agochar_class_invlists.h: Give re_comp.c access to enums,#defines
Karl Williamson [Mon, 24 Feb 2020 18:20:13 +0000 (11:20 -0700)]
char_class_invlists.h: Give re_comp.c access to enums,#defines

The previous commit changed the code so that enums and #defines could be
requested to be in re_comp.c.  This commit changes to use that new

15 months agoregen/ Allow enums/defines to be in re_comp.c
Karl Williamson [Mon, 24 Feb 2020 16:31:02 +0000 (09:31 -0700)]
regen/ Allow enums/defines to be in re_comp.c

Tables, to save memory, that are for regcomp.c are excluded from
re_comp.c, but enums use no resources, and a later commit will want them
accessible from re_comp.c.  So change the code so that they can be
requested to be in re_comp.c

15 months agoMove two regex functions so that can use re debug
Karl Williamson [Mon, 24 Feb 2020 04:00:14 +0000 (21:00 -0700)]
Move two regex functions so that can use re debug

These have to have a version in re_comp.c for to work on them.

15 months agoembed.fnc: Reorder the entries dealing with regexes
Karl Williamson [Mon, 24 Feb 2020 03:46:35 +0000 (20:46 -0700)]
embed.fnc: Reorder the entries dealing with regexes

This moves a bunch of entries around so that they make more sense, and
consolidates some blocks that had the same #ifdefs.  There should be no
change in what gets compiled.

15 months agoregen/ Move #define in output
Karl Williamson [Mon, 24 Feb 2020 02:32:03 +0000 (19:32 -0700)]
regen/ Move #define in output

This value will be needed outside of where it currently is defined; this
commit makes it available elsewhere

15 months agoregcomp.c: Add comments
Karl Williamson [Mon, 24 Feb 2020 02:29:02 +0000 (19:29 -0700)]
regcomp.c: Add comments

I finally took the time to figure out about and debugging, and how
the functions in regcomp.c should be structured to work.  And now I
commented it.

15 months Add comment
Karl Williamson [Mon, 2 Mar 2020 01:21:19 +0000 (18:21 -0700)] Add comment

15 months agomake freed op re-use closer to O(1)
Tony Cook [Tue, 25 Feb 2020 22:51:25 +0000 (09:51 +1100)]
make freed op re-use closer to O(1)

previously freed ops were stored as one singly linked list, and
a failed search for a free op to re-use could potentially search
that entire list, making freed op lookups O(number of freed ops),
or given that the number of freed ops is roughly proportional to
program size, making the total cost of freed op handling roughly
O((program size)**2).  This was bad.

This change makes opslab_freed into an array of linked list heads,
one per op size.  Since in a practical sense the number of op sizes
should remain small, and insertion is amortized O(1), this makes
freed op management now roughly O(program size).

fixes #17555

15 months agoReplace value with a macro: OPTIMIZE_INFTY
Karl Williamson [Fri, 30 Aug 2019 16:28:47 +0000 (10:28 -0600)]
Replace value with a macro: OPTIMIZE_INFTY

This is more mnemonic, and allows us to change things if needed.

15 months agocsh shell needed to build with PERL_EXTERNAL_GLOB defined
James E Keenan [Sun, 1 Mar 2020 22:52:49 +0000 (17:52 -0500)]
csh shell needed to build with PERL_EXTERNAL_GLOB defined


15 months agoparser.h -reorder yy_parser to close x86-64 alignment holes
Richard Leach [Mon, 24 Feb 2020 23:31:16 +0000 (23:31 +0000)]
parser.h -reorder yy_parser to close x86-64 alignment holes

15 months agoregcomp.h -reorder regexp_internal to close x86-64 alignment holes
Richard Leach [Tue, 25 Feb 2020 00:04:53 +0000 (00:04 +0000)]
regcomp.h -reorder regexp_internal to close x86-64 alignment holes

15 months agoBisection example using '--target=test_prep' and '-e'
James E Keenan [Sun, 1 Mar 2020 23:32:27 +0000 (18:32 -0500)]
Bisection example using '--target=test_prep' and '-e'

Add an example where we're bisecting to identify source of a problem in
a test file found in a CPAN distribution which ships with core.

Reworked code example per feedback from Hugo.  Also reworked description
of problem.

15 months agodecrease github actions timeout to 120 minutes
Tomasz Konojacki [Mon, 2 Mar 2020 01:36:16 +0000 (02:36 +0100)]
decrease github actions timeout to 120 minutes

That will make hung actions fail faster. The default 360 minutes
timeout was way too generous, typically none of our actions needs
more than 1 hour to complete.

15 months agopp_sort.c: remove the remains of quicksort
Tomasz Konojacki [Mon, 2 Mar 2020 06:04:10 +0000 (06:04 +0000)]
pp_sort.c: remove the remains of quicksort

e2091bb6ea87111c32936c9170405a44995be338 removed most of it but
some dead code remained.

15 months agoundef Tie::File objects before untie-ing arrays
James E Keenan [Sun, 1 Mar 2020 21:56:57 +0000 (16:56 -0500)]
undef Tie::File objects before untie-ing arrays

This test file was added before we converted all .pm and .t files under
dist/Tie-File to 'use strict' and 'use warnings'.  So at that point the
test ran without warnings.  Once we subsequently began to run with
warnings, we failed to note two instances of "untie attempted while 1
inner references still exist" warnings.  So we should undef the
Tie::File objects before calling 'untie' on the arrays holding records
of tied files.

(Indeed, undef-ing the Tie::File objects may in itself be sufficient to
avert these warnings.  However, the pre-existing SYNOPSIS shows use of
'untie', so we'll include it in this file, whose point is to test what
is asserted in that document.)

15 months agoAdd to perl5313delta for d1bc97feec1a description
Hauke D [Tue, 11 Feb 2020 09:11:01 +0000 (10:11 +0100)]
Add to perl5313delta for d1bc97feec1a description

Documents one of the additional side effects of the change to the range operator with magic string increment that was introduced in d1bc97feec1ac3a922c2.

15 months agoInline the SvGETMAGIC call directly rather than via the macro
Paul "LeoNerd" Evans [Sun, 27 Oct 2019 17:50:39 +0000 (17:50 +0000)]
Inline the SvGETMAGIC call directly rather than via the macro

15 months agoSvTRUE might need to take aTHX
Paul "LeoNerd" Evans [Sun, 27 Oct 2019 17:47:17 +0000 (17:47 +0000)]
SvTRUE might need to take aTHX

15 months agoInitial experiment at moving SvTRUE into a static inline macro
Paul "LeoNerd" Evans [Sun, 27 Oct 2019 16:25:13 +0000 (16:25 +0000)]
Initial experiment at moving SvTRUE into a static inline macro

15 months agoregcomp.c: Silence some compiler warnings
Karl Williamson [Sun, 1 Mar 2020 16:18:11 +0000 (09:18 -0700)]
regcomp.c: Silence some compiler warnings

Precision specifiers should be int, and commit
29f5f37e4b04514c3cc2ee0be3463b4868b88e74 introduced some valid warnings
that this commit also corrects.

15 months agoperlfunc: Note that z modifier works on signed
Karl Williamson [Sun, 1 Mar 2020 17:46:48 +0000 (10:46 -0700)]
perlfunc: Note that z modifier works on signed

That is, variables declared as any of, STRLEN, SSize_t, and Size_t
should be output with this format size modifier.

15 months agoregcomp.c: Fix wrong type for format
Karl Williamson [Thu, 27 Feb 2020 15:58:11 +0000 (08:58 -0700)]
regcomp.c: Fix wrong type for format

The previous commit showed this bug exists where a format wasn't matched
by the type of its argument

15 months agoregen/ Force F or f flags on ... fcns
Karl Williamson [Thu, 27 Feb 2020 15:19:32 +0000 (08:19 -0700)]
regen/ Force F or f flags on ... fcns

This makes sure that a function with varargs arguments is marked as
format or non-format, so that a such a new function can't be added
without considering if it should be marked as 'f'.

15 months agoembed.fnc: Fix comments
Karl Williamson [Thu, 27 Feb 2020 15:13:51 +0000 (08:13 -0700)]
embed.fnc: Fix comments

15 months agoembed.fnc: Make re_croak a format fcn
Karl Williamson [Thu, 27 Feb 2020 14:56:17 +0000 (07:56 -0700)]
embed.fnc: Make re_croak a format fcn

This enables compiler warnings when argument types don't match the

15 months agoregcomp.c: Change re_croak2 to re_croak
Karl Williamson [Thu, 27 Feb 2020 14:48:07 +0000 (07:48 -0700)]
regcomp.c: Change re_croak2 to re_croak

This changes this function from taking two format parameters to instead
taking a single one.  The reason is that the generality isn't actually
currently needed, and it prevents the function from being declared as
taking a format, which adds extra checking.  If this checking had been
in effect, GH #17574 would have generated a warning message.

The reason the second format isn't required is that in all cases, both
formats are literal strings.  In the macros that call this, simply
removing the comma separators between them causes the two literals to
automagically become one by the C preprocessor.

15 months agoAdd epigraph for 5.30.2-RC1
Steve Hay [Sat, 29 Feb 2020 19:37:49 +0000 (19:37 +0000)]
Add epigraph for 5.30.2-RC1

15 months agoregcomp.c -reorder RExC_state_t to close x86-64 alignment holes
Richard Leach [Mon, 24 Feb 2020 23:51:08 +0000 (23:51 +0000)]
regcomp.c -reorder RExC_state_t to close x86-64 alignment holes

15 months agoregcomp.c: Remove never used struct element
Karl Williamson [Sat, 29 Feb 2020 16:02:15 +0000 (09:02 -0700)]
regcomp.c: Remove never used struct element

Noted in
this #define has never been set, and the element hence has never been

15 months ago5.30.2-RC1 today
Steve Hay [Sat, 29 Feb 2020 12:20:58 +0000 (12:20 +0000)]
5.30.2-RC1 today

15 months agoMention perlbug emails in issue template
Dan Book [Fri, 28 Feb 2020 23:48:46 +0000 (18:48 -0500)]
Mention perlbug emails in issue template

15 months agoperlguts.pod: fix typo when describing scope stack
Richard Leach [Wed, 26 Feb 2020 00:10:16 +0000 (00:10 +0000)]
perlguts.pod: fix typo when describing scope stack

15 months agoperl.h: Add comment, reorder conditional branches
Karl Williamson [Mon, 24 Feb 2020 20:52:20 +0000 (13:52 -0700)]
perl.h: Add comment, reorder conditional branches

This clarifies things a bit

15 months agore_intuit_string: fix to work with empty pattern
Karl Williamson [Mon, 24 Feb 2020 20:50:12 +0000 (13:50 -0700)]
re_intuit_string: fix to work with empty pattern

This would fail should it ever be called with a pattern that only
matched nothing.

15 months agoregcomp.c: Add some comments
Karl Williamson [Thu, 20 Feb 2020 22:39:52 +0000 (15:39 -0700)]
regcomp.c: Add some comments

15 months agoRevert "Test 32bit Perl build on Travis"
Karl Williamson [Thu, 27 Feb 2020 16:03:45 +0000 (09:03 -0700)]
Revert "Test 32bit Perl build on Travis"

This reverts commit 83067d4902203c0bd0a6e901cd25f3b871668331.

15 months agobump $Storable::VERSION and update ChangeLog
Tony Cook [Wed, 26 Feb 2020 23:40:46 +0000 (10:40 +1100)]
bump $Storable::VERSION and update ChangeLog

15 months agoStorable: fix a format string vs argument error
Tony Cook [Wed, 26 Feb 2020 23:40:26 +0000 (10:40 +1100)]
Storable: fix a format string vs argument error

15 months agoPATCH: #17574 reg_mesg.t failures on 32-bit builds
Karl Williamson [Wed, 26 Feb 2020 17:48:03 +0000 (10:48 -0700)]
PATCH: #17574 reg_mesg.t failures on 32-bit builds

This turned out to be because I was printing a UV with %c.

15 months agoregcomp.h: Use pre-existing macro to hide variable
Karl Williamson [Wed, 26 Feb 2020 16:01:20 +0000 (09:01 -0700)]
regcomp.h: Use pre-existing macro to hide variable

Instead of repeating this variable name all over the place, use the
macro that had been created to refer to it.

15 months agoregexec.c: Fix Debug statement
Karl Williamson [Tue, 25 Feb 2020 04:11:56 +0000 (21:11 -0700)]
regexec.c: Fix Debug statement

A proper debugging statement isn't just controlled by DEBUG_r, it needs
what sort of class of debugging controls this, so that can operate

This is the second of two cases in the code where it was wrong.

15 months agoregexec.c: Fix Debug statement
Karl Williamson [Tue, 25 Feb 2020 04:09:29 +0000 (21:09 -0700)]
regexec.c: Fix Debug statement

A proper debugging statement isn't just controlled by DEBUG_r, it needs
what sort of class of debugging controls this, so that can operate

This is one of two cases in the code where it was wrong.

15 months agoTest 32bit Perl build on Travis
Pali [Thu, 5 Dec 2019 11:58:12 +0000 (12:58 +0100)]
Test 32bit Perl build on Travis

15 months agofix VC perlglob.exe segv with wrong default libc
Daniel Dragan [Mon, 17 Feb 2020 01:57:46 +0000 (20:57 -0500)]
fix VC perlglob.exe segv with wrong default libc

commit "win32: separate $Config{ccflags} and $Config{optimize}"
4be1bfd74 removed -Md and -MDd from $(OPTIMIZE), so perlglob.exe whose
build recipe is special in that it is compiled and linked in 1 step lost
the -Md flag, this causes "stdout" global var that is linked in from MSVC
libc to resolve to a broken symbol and segv since the FILE * is a pointer
to machine code instead to a FILE struct in the CRT DLL. This is with MSVC
2003 32b CC.

Disassembly shows that after that commit perlglob.exe is
push    8000h
mov     edi, offset __imp____getmainargs
push    edi             ; File
call    _fileno_0

which is a pointer to machine code instead of

mov     eax, ds:__imp___iob
add     eax, 20h
push    8000h           ; int
push    eax             ; File
call    ds:__imp___fileno

where _iob is a pointer to start of static global array of FH structs in

-Md controls ".drectve" section in .obj file that contains

crash stack

The CS struct is gibberish because the FILE * is gibberish.

15 months agocorrect starting version for isa feature
Karen Etheridge [Sat, 22 Feb 2020 21:25:17 +0000 (13:25 -0800)]
correct starting version for isa feature

This was added in commit 813e85a03d, which first appeared in the 5.31.7 release.

15 months agopunctuation
Karen Etheridge [Sat, 22 Feb 2020 20:26:44 +0000 (12:26 -0800)]

15 months agolinkify GH links in last delta
Karen Etheridge [Sat, 22 Feb 2020 20:24:28 +0000 (12:24 -0800)]
linkify GH links in last delta

15 months agominor grammar fixes
Karen Etheridge [Sat, 22 Feb 2020 20:23:06 +0000 (12:23 -0800)]
minor grammar fixes

15 months agoIncrease required macro-space for HP-UX C-ANSI-C
H.Merijn Brand [Sat, 22 Feb 2020 11:26:21 +0000 (12:26 +0100)]
Increase required macro-space for HP-UX C-ANSI-C

125000 was too small!

15 months agoHP-UX 11.11 and below do not have wcrtomb
H.Merijn Brand [Sat, 22 Feb 2020 10:57:43 +0000 (11:57 +0100)]
HP-UX 11.11 and below do not have wcrtomb

At least not with HP C-ANSI-C, but as mbrlen and mbrtowc are already
disabled, it is in kine with expectation.

This makes perl compilable again on 11.11 with HP C-ANSI-C

15 months agoShim update of Module::CoreList for v5.31.10
Chris 'BinGOs' Williams [Fri, 21 Feb 2020 15:25:01 +0000 (15:25 +0000)]
Shim update of Module::CoreList for v5.31.10

15 months agoCoal fire crackdown
Chris 'BinGOs' Williams [Fri, 21 Feb 2020 09:19:14 +0000 (09:19 +0000)]
Coal fire crackdown

15 months agoBump the perl version in various places for 5.31.10
reneeb [Fri, 21 Feb 2020 01:03:02 +0000 (02:03 +0100)]
Bump the perl version in various places for 5.31.10

15 months agogenerated new perldelta after 5.31.9 release
reneeb [Fri, 21 Feb 2020 00:11:01 +0000 (01:11 +0100)]
generated new perldelta after 5.31.9 release

15 months agotick release 5.31.9 in release schedule
reneeb [Fri, 21 Feb 2020 00:04:41 +0000 (01:04 +0100)]
tick release 5.31.9 in release schedule

15 months agoadd epigraph of 5.31.9
reneeb [Thu, 20 Feb 2020 23:54:44 +0000 (00:54 +0100)]
add epigraph of 5.31.9

15 months agoMerge branch 'release-5.31.9' into blead
reneeb [Thu, 20 Feb 2020 23:47:55 +0000 (00:47 +0100)]
Merge branch 'release-5.31.9' into blead

15 months agoregcomp.c: Silence compiler warning
Karl Williamson [Thu, 20 Feb 2020 17:44:55 +0000 (10:44 -0700)]
regcomp.c: Silence compiler warning

This parameter is unused except under certain debugging compile options

Spotted by James Keenan

15 months ago.mailmap should be excluded from the MANIFEST cross checking during release v5.31.9
reneeb [Thu, 20 Feb 2020 15:41:17 +0000 (16:41 +0100)]
.mailmap should be excluded from the MANIFEST cross checking during release

15 months ago.mailmap should not be in MANIFEST, so exclude that file in Porting/manicheck
reneeb [Thu, 20 Feb 2020 15:35:26 +0000 (16:35 +0100)]
.mailmap  should not be in MANIFEST, so exclude that file in Porting/manicheck

15 months agoadd new release to perlhist
reneeb [Thu, 20 Feb 2020 14:47:36 +0000 (15:47 +0100)]
add new release to perlhist

15 months agofinalize perldelta
reneeb [Thu, 20 Feb 2020 14:43:59 +0000 (15:43 +0100)]
finalize perldelta

15 months agoUpdate Module::CoreList for 5.31.9
reneeb [Thu, 20 Feb 2020 14:42:37 +0000 (15:42 +0100)]
Update Module::CoreList for 5.31.9

15 months agofinalize perldelta
reneeb [Thu, 20 Feb 2020 13:51:36 +0000 (14:51 +0100)]
finalize perldelta

15 months agoFixup POSIX::mbtowc, wctomb
Karl Williamson [Sat, 4 Jan 2020 05:18:02 +0000 (22:18 -0700)]
Fixup POSIX::mbtowc, wctomb

This commit enhances these functions so that on threaded perls, they use
mbrtowc and wcrtomb when available, making them thread safe.  The
substitution isn't completely transparent, as no effort is made to hide
any differences in errno setting upon error.  And there may be slight
differences in edge case behavior on some platforms.

This commit also changes the behaviors so that they take a scalar
parameter instead of a char *, and this might be 'undef' or not be
forceable into a valid PV.  If not a PV, the functions initialize the
shift state.  Previously the shift state was always reinitialized with
every call, which meant these could not work on locales with shift

In addition, there were several issues in mbtowc and wctomb that this
commit fixes.

mbtowc and wctomb, when used, are now run with a semaphore.  This avoids
races if called at the same time in another thread.

The returned wide character from mbtowc() could well have been garbage.

The final parameter to mbtowc is now optional, as passing an SV allows
us to determine the length without the need for an extra parameter.  It
is now used only to restrict the parsing of the string to shorter than
the actual length.

wctomb would segfault if the string parameter was shared or hadn't
been pre-allocated with a string of sufficient length to hold the

15 months agoPOSIX::mblen: Make length parameter optional
Karl Williamson [Sat, 4 Jan 2020 05:10:43 +0000 (22:10 -0700)]
POSIX::mblen: Make length parameter optional

Now that the typemap is an SV, we can access the length from that.

15 months agoPOSIX::mblen() Make thread-safe; allow shift state control
Karl Williamson [Sat, 4 Jan 2020 05:16:42 +0000 (22:16 -0700)]
POSIX::mblen() Make thread-safe; allow shift state control

This commit changes the behavior so that it takes a scalar parameter
instead of a char *, and thus might not be forceable into a valid PV.
When not a PV, the shift state is reinitialized, like calling mblen with
a NULL first parameter.  Previously the shift state was always
reinitialized with every call, which meant this could not work on
locales with shift states.

This commit also changes to use mbrlen() on threaded perls transparently
(mostly), when available, to achieve thread-safe operation.  It is not
completely transparent because mbrlen (under the very rare stateful
locales) returns a different value  when it's resetting the shift state.
It also may set errno differently upon errors, and no effort is made to
hide that difference.  Also mbrlen on some platforms can handle partial

[perl #133928] showed that someone was having trouble with shift states.

15 months agoRestrict features in wildcards
Karl Williamson [Sun, 16 Feb 2020 00:39:00 +0000 (17:39 -0700)]
Restrict features in wildcards

The algorithm for dealing with Unicode property wildcards is to wrap the
user-supplied pattern with /miaa.  We don't want the user to be able to
override the /m and /aa parts.  Modifiers that are only specifiable as a
modifier in a qr or similar op (like /gc) can't be included in things
like (?gc).  These normally incur a warning that they are ignored, but
the texts of those warnings are misleading when using wildcards, so I
chose to just make them illegal.  Of course that could be changed to
having custom useful warning texts, but I didn't think it was worth it.

I also chose to forbid recursion of using nested \p{}, just from fear
that it might lead to issues down the road, and it really isn't useful
for this limited universe of strings to match against.  Because
wildcards currently can't handle '}' inside them, only the single letter
\p,\P are valid anyway.

Similarly, I forbid the '*' quantifier to make it harder for the
constructed subpattern to take forever to make any progress and decide
to halt.  Again, using it would be overkill on the universe of possible
match strings.

15 months agoregcomp.c: Reorder cases in a switch
Karl Williamson [Thu, 13 Feb 2020 05:27:58 +0000 (22:27 -0700)]
regcomp.c: Reorder cases in a switch

This is for a future commit where one will have extra work to do before
falling through to the other.

15 months agoregcomp.c: Add wrappers for cmplng/xctng wildcard subpatterns
Karl Williamson [Thu, 13 Feb 2020 04:07:27 +0000 (21:07 -0700)]
regcomp.c: Add wrappers for cmplng/xctng wildcard subpatterns

This is in preparation for being called from more than one place.

It has the salubrious effect that the wrapping we do around the user's
supplied pattern is no longer visible in the Debug output of that

15 months agoregcomp.c: Create wrapper fcn for re_op_compile
Karl Williamson [Thu, 13 Feb 2020 03:53:20 +0000 (20:53 -0700)]
regcomp.c: Create wrapper fcn for re_op_compile

This does the bulk of re_compile(), but is a private entry point,
meaning it takes an extra parameter, and a future commit will call it
from another place.

15 months agoop.h: Move some flag bits down
Karl Williamson [Wed, 12 Feb 2020 23:40:29 +0000 (16:40 -0700)]
op.h: Move some flag bits down

This is in preparation for adding a new flag bit at the end in a future
commit.  It could have been added in the unused space that the first of
these was moved to, but the new one is less important/used, so I thought
it best to come last.  The reason to use unused space is to preserve
binary compatibility with the bits, and we don't care about that at this
point in the development cycle.

15 months agoRegenerate charclass_invlists.h
Karl Williamson [Thu, 20 Feb 2020 04:36:33 +0000 (21:36 -0700)]
Regenerate charclass_invlists.h

There is something wrong with our mechanism to show if this out-of
-sync, because it didn't.  And it needed regenerating.  I will have to
look to understand the reason why.  Nor did any of the tests fail.  In
part, I see from looking at the diffs that there is a rule that is no
longer used.  But it also may be that the Unicode-supplied test are
misisng things.  Obviously one can't test every code point, but just a
representative sample, so some things may fall through the cracks.

15 months agoregcomp.c: Indent some nested # preprocessor directives
Karl Williamson [Tue, 18 Feb 2020 17:51:26 +0000 (10:51 -0700)]
regcomp.c: Indent some nested # preprocessor directives

This is so you can figure out what the scope of the outer one is

15 months agot/re/reg_mesg.t: Emit diagnostics on some more failing tests
Karl Williamson [Wed, 19 Feb 2020 16:47:16 +0000 (09:47 -0700)]
t/re/reg_mesg.t: Emit diagnostics on some more failing tests

15 months agoregcomp.c: Add missing save_re_context()
Karl Williamson [Thu, 20 Feb 2020 00:07:20 +0000 (17:07 -0700)]
regcomp.c: Add missing save_re_context()

I noticed by symmetry that this call is missing.  I don't think anyone
knows how to reliably reproduce the problem this causes under a race
with other threads.

15 months agolib/charnames.t: Move initialization line
Karl Williamson [Wed, 19 Feb 2020 18:06:23 +0000 (11:06 -0700)]
lib/charnames.t: Move initialization line

to a more intuitive spot in the file

15 months agoMove some obsolete UTF-8 handling fcns to mathoms
Karl Williamson [Sat, 15 Feb 2020 18:15:09 +0000 (11:15 -0700)]
Move some obsolete UTF-8 handling fcns to mathoms

Two of the functions are internal to the core; the third has long been