9 hours agoEpigraph for 5.29.8 blead
Nicolas R [Thu, 21 Feb 2019 22:27:02 +0000 (15:27 -0700)] 
Epigraph for 5.29.8

20 hours agothey seek him here, they seek him there
Chris 'BinGOs' Williams [Thu, 21 Feb 2019 11:11:58 +0000 (11:11 +0000)] 
they seek him here, they seek him there

25 hours agofix for Module/ 5.029009
Nicolas R [Thu, 21 Feb 2019 06:34:27 +0000 (23:34 -0700)] 
fix for Module/ 5.029009

damn it Nico..

25 hours agoUpdate Module::CoreList for 5.29.9
Nicolas R [Thu, 21 Feb 2019 06:18:33 +0000 (23:18 -0700)] 
Update Module::CoreList for 5.29.9

25 hours agoBump the perl version in various places for 5.29.9
Nicolas R [Thu, 21 Feb 2019 06:11:11 +0000 (23:11 -0700)] 
Bump the perl version in various places for 5.29.9

25 hours agoNew perldelta for 5.29.9
Nicolas R [Thu, 21 Feb 2019 06:04:45 +0000 (23:04 -0700)] 
New perldelta for 5.29.9

25 hours agoTick! 5.29.8
Nicolas R [Thu, 21 Feb 2019 06:01:27 +0000 (23:01 -0700)] 
Tick! 5.29.8

26 hours agoExtra advice to release_managers_guide.pod
Nicolas R [Thu, 21 Feb 2019 05:11:03 +0000 (22:11 -0700)] 
Extra advice to release_managers_guide.pod

28 hours ago(perl #133778) adjust MARK if we extend the stack in pp_repeat
Tony Cook [Tue, 5 Feb 2019 23:37:58 +0000 (10:37 +1100)] 
(perl #133778) adjust MARK if we extend the stack in pp_repeat

for a list repeat in scalar/void context

32 hours agoBump Devel::PPPort to 3.44 for CPAN release v5.29.8
Nicolas R [Wed, 20 Feb 2019 23:15:28 +0000 (16:15 -0700)] 
Bump Devel::PPPort to 3.44 for CPAN release

During v5.29.8 dev cycle a change was made to Devel-PPPort
18d728ac3b which justify to bump and release a new
version of Devel::PPPort.

35 hours agoAdd 5.29.8 release to pod/perlhist
Nicolas R [Wed, 20 Feb 2019 20:58:44 +0000 (13:58 -0700)] 
Add 5.29.8 release to pod/perlhist

35 hours agoAdd XS::APItest to unclaimedModules in
Nicolas R [Wed, 20 Feb 2019 19:23:50 +0000 (12:23 -0700)] 
Add XS::APItest to unclaimedModules in

Without this change would not see the
changes from XS::APItest.

    ./perl -Ilib Porting/ \
        --mode=update pod/perldelta.pod

35 hours agoUpdate Module::CoreList for 5.19.8
Nicolas R [Wed, 20 Feb 2019 18:34:52 +0000 (11:34 -0700)] 
Update Module::CoreList for 5.19.8

35 hours agoPerldelta final massage for 5.29.8 release
Nicolas R [Wed, 20 Feb 2019 17:22:48 +0000 (10:22 -0700)] 
Perldelta final massage for 5.29.8 release

Update perldelta file with recent changes
and perform some extra cleanup.

37 hours agoAdd more Travis CI flavors to the matrix
Nicolas R [Thu, 14 Feb 2019 20:57:11 +0000 (13:57 -0700)] 
Add more Travis CI flavors to the matrix

This configuration is going to considerably slowing
down smokes but this is a useful alternate when
preparing a release.

We can probably consider commenting these extra config
and only check them for release. Or we could also provide
two travis.yaml:
- .travis.yml.light
- .travis.yml.full

And use a symlink depending which one we want to use.

39 hours agoAdd note for BLEAD point release to release_managers_guide.pod
Nicolas R [Wed, 20 Feb 2019 16:32:59 +0000 (09:32 -0700)] 
Add note for BLEAD point release to release_managers_guide.pod

Add note concerning the bump of PERL_API_* constants
for blead point releases.

39 hours agoTime-HiRes 1.9760 - bump Module::CoreList & co
Nicolas R [Wed, 20 Feb 2019 00:04:33 +0000 (17:04 -0700)] 
Time-HiRes 1.9760 - bump Module::CoreList & co

Also bump Porting/ to synchronize
with the upstream version we are using.

2 days agoDevel::PPPort: Fix D_PPP_FIX_UTF8_ERRSV macro
Pali [Thu, 14 Feb 2019 11:35:23 +0000 (12:35 +0100)] 
Devel::PPPort: Fix D_PPP_FIX_UTF8_ERRSV macro

It should use errsv value from passed argument.

2 days agoperldelta for 125ddee8ebdb, 2e51033c15c9
Tony Cook [Wed, 20 Feb 2019 00:53:58 +0000 (11:53 +1100)] 
perldelta for 125ddee8ebdb2e51033c15c9

2 days agotest for error set on socket() failure tonyc/socket-error
Tony Cook [Tue, 19 Feb 2019 23:57:19 +0000 (10:57 +1100)] 
test for error set on socket() failure

2 days agowin32/win32sck.c: better socket() error handling
Tomasz Konojacki [Tue, 19 Feb 2019 17:16:06 +0000 (18:16 +0100)] 
win32/win32sck.c: better socket() error handling

When the protocol passed to socket() is unknown, set errno to

[perl #133853]

2 days ago[MERGE] fix PERL_GLOBAL_STRUCT builds
David Mitchell [Tue, 19 Feb 2019 15:41:03 +0000 (15:41 +0000)] 

smoked for quite a while and the code has bit-rotted. The commits in
this branch made them build and all test pass again, at least on Linux

2 days agomerge two versions of Perl_my_cxt_init
David Mitchell [Tue, 19 Feb 2019 15:20:16 +0000 (15:20 +0000)] 
merge two versions of Perl_my_cxt_init

There are two separate copies of this function, chosen by
the presence of PERL_GLOBAL_STRUCT_PRIVATE. The previous couple of
commits have made them more similar; this commit merges them into a
single function with differing blocks of code protected by

2 days agoPerl_my_cxt_init: remove unnecessary code
David Mitchell [Tue, 19 Feb 2019 14:59:24 +0000 (14:59 +0000)] 
Perl_my_cxt_init: remove unnecessary code

In the PERL_GLOBAL_STRUCT_PRIVATE variant of this code, it zeroes out
unused slots of a freshly-realloced PL_my_cxt_list[]. This is not
necessary, as those slots won't be used until a new index is allocated,
as which point the new slot will get written to before anything else.

The non-PERL_GLOBAL_STRUCT_PRIVATE variant of this function doesn't have
this redundant zeroing.

So remove it.

2 days agoharmonise two versions of Perl_my_cxt_init
David Mitchell [Tue, 19 Feb 2019 14:35:31 +0000 (14:35 +0000)] 
harmonise two versions of Perl_my_cxt_init

There are two separate copies of this function, chosen by

Make the two versions closer to each other, to allow shortly for

Mainly its renaming the int pointer parameter from 'index' to 'indexp',
and adding a local var 'index', which is assigned from *indexp where

Also harmonise some of the comments between the two functions.

2 days agoperlvars.h: remove #ifdef DEBUGGING
David Mitchell [Tue, 19 Feb 2019 12:29:38 +0000 (12:29 +0000)] 
perlvars.h: remove #ifdef DEBUGGING

Under PERL_GLOBAL_STRUCT, all the "global" vars are put in a structure,
which means perlvars.h needs a similar constraint to intrpvar.h:
its size and alignment shouldn't change between debugging and
non-debugging builds. This is because regcomp/exec.c are compiled both
with and without DEBUGGING.

[Fixed by Karl]

2 days agoPERL_GLOBAL_STRUCT: remove static var from sv.c
David Mitchell [Tue, 19 Feb 2019 11:06:38 +0000 (11:06 +0000)] 
PERL_GLOBAL_STRUCT: remove static var from sv.c

This var was protected by PERL_GLOBAL_STRUCT_PRIVATE, but
PERL_GLOBAL_STRUCT doesn't allow static vars either.

2 days agoget MakeMaker to play under PERL_GLOBAL_STRUCT
David Mitchell [Tue, 19 Feb 2019 08:53:43 +0000 (08:53 +0000)] 
get MakeMaker to play under PERL_GLOBAL_STRUCT

Under PERL_GLOBAL_STRUCT (well, actually I've only tried under
PERL_GLOBAL_STRUCT_PRIVATE), cpan/ExtUtils-MakeMaker/t/03-xsstatic.t
was failing some tests. This was because it was creating a
statically-linked perl binary, but wasn't compiling perlmain.c with
-DPERL_CORE. Usually this doesn't matter, but under PERL_GLOBAL_STRUCT
it needed a definition of aTHX which it was pulling from XSUB.h rather
than perl.h, causing a SEGV.

Until a proper fix makes it way into MakeMaker, explicitly define
PERL_CORE in perlmain.c

2 days agofix thread issue with PERL_GLOBAL_STRUCT
David Mitchell [Mon, 18 Feb 2019 09:29:29 +0000 (09:29 +0000)] 
fix thread issue with PERL_GLOBAL_STRUCT

The MY_CXT subsystem allows per-thread pseudo-static data storage.
Part of the implementation for this involves each XS module being
assigned a unique index in its my_cxt_index static var when first

Because PERL_GLOBAL_STRUCT bans any static vars, under those builds
there is instead a table which maps the MY_CXT_KEY identifying string to

Unfortunately, this table was allocated per-interpreter rather than
globally, meaning if multiple threads tried to load the same XS module,
crashes could ensue.

This manifested itself in failures in

The fix is relatively straightforward: allocate PL_my_cxt_keys globally
rather than per-interpreter.

Also record the size of this struct in a new var, PL_my_cxt_keys_size,
rather than doing double duty on PL_my_cxt_size.

2 days agoPerl_my_cxt_init: fix potential race condition
David Mitchell [Mon, 18 Feb 2019 09:19:38 +0000 (09:19 +0000)] 
Perl_my_cxt_init: fix potential race condition

(Found by code inspection - I can't reproduce a failure)

the MY_CXT subsystem, which allows per-thread pseudo-static variables,
has a thread race condition.

When a module is first loaded, it is allocated  unique index (from
PL_my_cxt_index++) which is assigned to the module's my_cxt_index static

If two threads both try to load an XS module at the same time, its
possible for one thread to set my_cxtp, then a second thread to overwrite
it with a higher value, causing the first thread to use the wrong index
into its local storage.

2 days agoPL_InBitmap: fix with -DPERL_GLOBAL_STRUCT_PRIVATE
David Mitchell [Fri, 28 Dec 2018 12:50:14 +0000 (12:50 +0000)] 

Valgrind wasn't happy, as this global var wasn't being initialised to

2 days agofoo_cloexec() under PERL_GLOBAL_STRUCT_PRIVATE
David Mitchell [Wed, 26 Dec 2018 12:58:06 +0000 (12:58 +0000)] 
foo_cloexec() under PERL_GLOBAL_STRUCT_PRIVATE

Fix the various Perl_PerlSock_dup2_cloexec() type functions so that
t/porting/liberl.a passes under -DPERL_GLOBAL_STRUCT_PRIVATE builds.

In these builds it is forbidden to have any static variables, but each
of these functions (via convoluted macros) has a static var called
'strategy' which records, for each function, whether a run-time probe
has been done to determine the best way of achieving close-exec
functionality, and the result.

Replace them all with 'global' vars: PL_strategy_dup2 etc.

NB these vars aren't thread-safe but it doesn't really matter, as the
worst that can happen is for a redundant probe or two to be done before
a suitable "don't probe any more" value is written to the var and seen
by all the threads.

2 days agoPERL_GLOBAL_STRUCT_PRIVATE: fix some const strings
David Mitchell [Fri, 28 Dec 2018 11:29:27 +0000 (11:29 +0000)] 
PERL_GLOBAL_STRUCT_PRIVATE: fix some const strings

change a couple of
    const char * foo[] = { ... }
    const char * const foo[] = { ... }

Making the string ptrs const means the whole thing is RO and doesn't
appear in data section, making porting/libperl.t happier when building

2 days agoregcomp.c: don't include INTERN.h
David Mitchell [Wed, 26 Dec 2018 20:50:16 +0000 (20:50 +0000)] 
regcomp.c: don't include INTERN.h

This file only needs including by globals.c; it was being included
in regcomp.c too as the declarations in regcomp.h aren't included by
perl.h and thus don't get pulled into globals.c.  This was a confusing
and hacky workaround.

Instead, this commit causes globals.c to #include regcomp.h directly

After this commit, only globals.c #includes INTERN.h

2 days agoext/SDBM_File/sdbm.c: don't include INTERN.h
David Mitchell [Wed, 26 Dec 2018 20:37:45 +0000 (20:37 +0000)] 
ext/SDBM_File/sdbm.c: don't include INTERN.h

This file really only needs including by globals.c - including it in
sdbm.c was probably just a thinko or cut and paste error from decades ago.
Removing it doesn't seem to break anything.

After this commit, only globals.c and regcomp.c include it.

2 days agovutil.c: build under PERL_GLOBAL_STRUCT_PRIVATE
David Mitchell [Wed, 26 Dec 2018 10:41:28 +0000 (10:41 +0000)] 
vutil.c: build under PERL_GLOBAL_STRUCT_PRIVATE

The perl build option -DPERL_GLOBAL_STRUCT_PRIVATE had bit-rotted
due to lack of smoking. This commit and the next fix it.
I've separated out the vutil.c change into a separate commit since
this file is actually part of the 'version' CPAN distribution and
normally should be edited upstream first.

2 days agoadd dVAR's for PERL_GLOBAL_STRUCT_PRIVATE builds
David Mitchell [Wed, 26 Dec 2018 10:45:22 +0000 (10:45 +0000)] 

The perl build option -DPERL_GLOBAL_STRUCT_PRIVATE had bit-rotted
due to lack of smoking. The main fix is to just add 'dVAR;' to any
functions which have a pTHX arg. It's a NOOP on normal builds.

2 days agore/user_prop_race_thr.t: reduce timeout
David Mitchell [Tue, 19 Feb 2019 09:12:33 +0000 (09:12 +0000)] 
re/user_prop_race_thr.t: reduce timeout

This new test script has a test that's supposed to exercise an up-to 10s
wait-and-retry loop when loading properties. It has a 500s timeout
built-in for if that fails. On my system its been intermittently
failing (not sure if due to something I'm doing or a problem with the
test or with regcomp.c) which effectively hangs the test run.

So decrease the timeout to 25 secs.

3 days agoUpdate Time-HiRes Changes for 1.9760
Nicolas R [Mon, 18 Feb 2019 23:42:44 +0000 (16:42 -0700)] 
Update Time-HiRes Changes for 1.9760

1.9760 is now released to CPAN to match its status
in blead.

This commit is synchronizing the Changelog, by reintroducing
some history which were lost during previous reverts.

Any new change since cf8375d should now go to the next release 1.9761.
A '{{NEXT}}' entry was added to the Changes for tracking these changes.

Note that a Dual-Life git repository is now available for Time-HiRes.


4 days agoUpdate releaser managers
Sawyer X [Mon, 18 Feb 2019 07:36:46 +0000 (09:36 +0200)] 
Update releaser managers

4 days agodeprecate: bump $VERSION to 0.04
Aristotle Pagaltzis [Mon, 18 Feb 2019 07:06:30 +0000 (08:06 +0100)] 
deprecate: bump $VERSION to 0.04

4 days agodeprecate: expand the documentation
Aristotle Pagaltzis [Sun, 17 Feb 2019 23:14:52 +0000 (00:14 +0100)] 
deprecate: expand the documentation

4 days agoprepare next patch
Aristotle Pagaltzis [Sun, 17 Feb 2019 23:14:46 +0000 (00:14 +0100)] 
prepare next patch

4 days agodeprecate: fix POD heading level
Aristotle Pagaltzis [Sun, 17 Feb 2019 23:14:38 +0000 (00:14 +0100)] 
deprecate: fix POD heading level

5 days agomktables: Omit unnecessary duplicates
Karl Williamson [Sun, 17 Feb 2019 03:02:57 +0000 (20:02 -0700)] 
mktables: Omit unnecessary duplicates

These are in a generated structure.

5 days agoperldelta: perldelta for previous commit
Karl Williamson [Sat, 16 Feb 2019 19:14:27 +0000 (12:14 -0700)] 
perldelta: perldelta for previous commit

5 days agomalloc.c: Limit malloc size to PTRDIFF_MAX
Karl Williamson [Sat, 16 Feb 2019 18:44:56 +0000 (11:44 -0700)] 
malloc.c: Limit malloc size to PTRDIFF_MAX

Without doing this, it is possible that the behavior is undefined when
subtracting two pointers that point to the same object.

See thread beginning at

In particular this from Tomasz Konojacki

C11 says:

> When two pointers are subtracted, both shall point to elements of the
> same array object, or one past the last element of the array object;
> the result is the difference of the subscripts of the two array
> elements. The size of the result is implementation-defined, and its
> type (a signed integer type) is ptrdiff_t defined in the <stddef.h>
> header.  If the result is not representable in an object of that type,
> the behavior is undefined.

There are many ways to interpret this passage, but according to (most?)
C compilers developers, it means that no object can be larger than
PTRDIFF_MAX. For example, gcc's optimizer assummes that strlen() will
never return anything larger than PTRDIFF_MAX [1].

There's also a blogpost[2] on this topic, which IMO is a very
interesting read.

If gcc and clang can assume that all objects won't be larger than
PTRDIFF_MAX, so can we. Also, in practice, ssize_t and ptrdiff_t on most
(all?) platforms are defined as exactly the same type.

BTW, the fact that compilers assume that objects can't be larger than
PTRDIFF_MAX has very dangerous implications on 32-bit platforms. Is it
possible to create string longer than PTRDIFF_MAX on 32-bit perls?. It
shouldn't be allowed.

[1] -
[2] -

5 days agoregcomp.c: Don't interate a loop needlessly
Karl Williamson [Sat, 16 Feb 2019 18:29:51 +0000 (11:29 -0700)] 
regcomp.c: Don't interate a loop needlessly

While single stepping in gdb, I noticed that this loop kept executing,
when it need not.

5 days agoperldelta for previous commi
Karl Williamson [Sat, 16 Feb 2019 18:29:01 +0000 (11:29 -0700)] 
perldelta for previous commi

5 days agoPATCH: [perl #133770] null pointer dereference in S_regclass()
Karl Williamson [Sat, 16 Feb 2019 18:11:59 +0000 (11:11 -0700)] 
PATCH: [perl #133770] null pointer dereference in S_regclass()

The failing case can be reduced to


(It only happens on UTF-8 patterns).

The bottom line is that it was assuming that there was at least one
character that folded to 1fb2 besides itself, even though the function
call said there weren't any such.  The solution is to pay attention to
the function return value.

I incorporated Hugo's++ patch as part of this one.

However, the original test case should never have gotten this far.  The
parser is getting passed garbage, and instead of croaking, it is somehow
interpreting it as valid and calling the regex compiler.  I will file a
ticket about that.

5 days agoPATCH: [perl #133767] Assertion failure
Karl Williamson [Sat, 16 Feb 2019 16:50:33 +0000 (09:50 -0700)] 
PATCH: [perl #133767] Assertion failure

The problem here is that a syntax error occurs and hence certain things
don't get done, but processing continues, as the error isn't checked for
until after the return of the function that found it.  The failing
assertion is checking that those certain things actually did get done.

There appear to be good reasons to defer the raising of the error until
then, so the simplest way to fix this is to generalize the code so that
the failing assertion doesn't happen.

6 days agoJakub Wilk is now a Perl author.
James E Keenan [Fri, 15 Feb 2019 12:47:47 +0000 (07:47 -0500)] 
Jakub Wilk is now a Perl author.

6 days agoperlthrtut: Fix POD formatting
Jakub Wilk [Thu, 14 Feb 2019 17:11:56 +0000 (18:11 +0100)] 
perlthrtut: Fix POD formatting

6 days agoUse STATIC_ASSERT_STMT for checking compile-time invariants
Dagfinn Ilmari MannsÃ¥ker [Fri, 15 Feb 2019 11:15:03 +0000 (11:15 +0000)] 
Use STATIC_ASSERT_STMT for checking compile-time invariants

Better to have the build fail if they're wrong than relying on the
code path being hit at runtime in a DEBUGGING build.

7 days agoMerge branch 'incore' into blead
Karl Williamson [Fri, 15 Feb 2019 05:14:12 +0000 (22:14 -0700)] 
Merge branch 'incore' into blead

This branch moves the handling of user-defined \p{} properties from
lib/ into regcomp.c  (rewriting it in C).  This fixes a
bunch of bugs, and removes all uses of swashes from regular expression
compilation and execution.

7 days agoRemove relics of regex swash use
Karl Williamson [Wed, 22 Aug 2018 04:27:19 +0000 (22:27 -0600)] 
Remove relics of regex swash use

This removes the most obvious and easy things that are no longer needed
since regexes no longer use swashes at all.

tr/// continues, for the time being, to use swashes, so not all swash
handling is removable now.  But tr/// doesn't use inversion lists, and
so a bunch of code is ripped out here.  Other code could have been, but
I did only the relatively easy stuff.  The rest can be ripped out all at
once when tr/// is stops using swashes.

7 days agoUse mnemonics for array indices
Karl Williamson [Thu, 14 Feb 2019 19:34:49 +0000 (12:34 -0700)] 
Use mnemonics for array indices

The element at say, [0] is a particular thing.  This commit changes to
use a mnemonic instead of [0], for clarity

7 days agoregcomp.c: Arrays no longer need PL_sv_undef placeholders
Karl Williamson [Thu, 23 Aug 2018 19:54:48 +0000 (13:54 -0600)] 
regcomp.c: Arrays no longer need PL_sv_undef placeholders

An empty entry is now just NULL.

7 days agoregcomp.c: Simplify args passing for ANYOF nodes
Karl Williamson [Wed, 22 Aug 2018 02:12:00 +0000 (20:12 -0600)] 
regcomp.c: Simplify args passing for ANYOF nodes

A swash is no longer used, so we can remove some elements from the array
of data that gets stored with the compiled pattern for use in runtime
matching.  This is the first step in more simplifications.

Since a swash isn't used, this change also requires regexec.c to change
to use a straight inversion list lookup.  This has the salutary effect
of eliminating a conversion between code point and UTF-8.

7 days agoAdd .t for testing user-defined \p{} races
Karl Williamson [Thu, 14 Feb 2019 19:16:13 +0000 (12:16 -0700)] 
Add .t for testing user-defined \p{} races

7 days agot/re/regexp_unicode_prop.t: Make sure sub called only once
Karl Williamson [Mon, 6 Aug 2018 23:00:40 +0000 (17:00 -0600)] 
t/re/regexp_unicode_prop.t: Make sure sub called only once

User-defined properties are supposed to be called just once for /i and
once for non-/i.  This adds tests for that.

It turns out that this was broken in blead.

7 days agot/re/regexp_unicode_prop.t: Add tests
Karl Williamson [Fri, 24 Aug 2018 18:34:18 +0000 (12:34 -0600)] 
t/re/regexp_unicode_prop.t: Add tests

Add some tests.  These test various error conditions that haven't been
tested before.

7 days agot/re/regexp_unicode_prop.t: Test that can have nested pkgs
Karl Williamson [Wed, 15 Aug 2018 23:11:15 +0000 (17:11 -0600)] 
t/re/regexp_unicode_prop.t: Test that can have nested pkgs

That is, in \p{user-defined}

7 days agot/re/regexp_unicode_prop.t: Add some stress
Karl Williamson [Wed, 15 Aug 2018 23:09:45 +0000 (17:09 -0600)] 
t/re/regexp_unicode_prop.t: Add some stress

This adds some trailing spaces and comments in expansion of
\p{user-defined}/ to verify things work.

7 days agot/op/taint.t: Add test
Karl Williamson [Wed, 15 Aug 2018 23:07:51 +0000 (17:07 -0600)] 
t/op/taint.t: Add test

7 days agoregcomp.c: Add some potential code that's #ifdef'd out
Karl Williamson [Thu, 23 Aug 2018 20:05:29 +0000 (14:05 -0600)] 
regcomp.c: Add some potential code that's #ifdef'd out

This is in case we ever need it.  This checks for portability in the
code points specified in user-defined properties.  Previously there was
a check, but I couldn't get a warning to trigger unless there was also
overflow.  So that means the pattern compile failed due to the overflow,
and the portability warning was superfluous.  But, one can have
non-portable code points without overflow; just the old method didn't
properly detect them.  If we do ever need to detect and report on them,
the code is mostly written and in this commit.

7 days agoMove \p{user-defined} to core from
Karl Williamson [Tue, 21 Aug 2018 00:31:04 +0000 (18:31 -0600)] 
Move \p{user-defined} to core from

This large commit moves the handling of user-defined properties to C
code.  This should speed it up, but the main reason to do this is to
stop using swashes in this case, leaving only tr/// using them.  Once
that too is converted, all swash handling can be ripped out of perl.

Doing this in perl has caused some nasty interactions that will now be
fixed automatically.

The change is not entirely transparent, however (besides speed and the
possibility of removing these interactions).  perldelta in this commit
details these.

7 days agoAdd global hash to handle \p{user-defined}
Karl Williamson [Wed, 15 Aug 2018 22:11:04 +0000 (16:11 -0600)] 
Add global hash to handle \p{user-defined}

A global hash has to be specially handled.  The keys can't be shared,
and all the SVs stored into it must be in its thread.  This commit adds
the hash, and initialization, and macros for context change, but doesn't
use them.  The code to deal with this is entirely confined to regcomp.c.

7 days agoAdd mutex for dealing with qr/\p{user-defined}/
Karl Williamson [Wed, 15 Aug 2018 21:45:14 +0000 (15:45 -0600)] 
Add mutex for dealing with qr/\p{user-defined}/

This will be used in future commits

7 days agoregcomp.c: Add/reword some comments/white-space
Karl Williamson [Mon, 6 Aug 2018 23:39:35 +0000 (17:39 -0600)] 
regcomp.c: Add/reword some comments/white-space

7 days agoregcomp.c: Change variable name
Karl Williamson [Fri, 3 Aug 2018 20:12:49 +0000 (14:12 -0600)] 
regcomp.c: Change variable name

The new name more closely corresponds with its use.

7 days agoperldelta prep setup for v5.29.8
Nicolas R [Thu, 14 Feb 2019 21:44:24 +0000 (14:44 -0700)] 
perldelta prep setup for v5.29.8

This is a preparation commit for the future
Perl v5.29.8 release.

perldelta still contains some placeholder which
would need to be cleanup before release and would
also need to take into account any changes since
commit 5eabe055

Several sections have already been removed considering
they would not be used, feel free to restore them if required.

7 days agoperldelta module changes from ext,lib
Nicolas R [Thu, 14 Feb 2019 19:12:41 +0000 (13:12 -0600)] 
perldelta module changes from ext,lib

remove useless module sections for 5.29.8

7 days agoUpdate Modules section for perldelta for 5.29.8
Nicolas R [Thu, 14 Feb 2019 18:45:20 +0000 (12:45 -0600)] 
Update Modules section for perldelta for 5.29.8

List cpan & dist packages updated since v5.29.7
and add a warning for the JSON::PP incompatible changes.

7 days agoUpdate JSON-PP to CPAN version 4.00
Nicolas R [Thu, 14 Feb 2019 16:30:34 +0000 (10:30 -0600)] 
Update JSON-PP to CPAN version 4.00


4.00 2018-12-07
- production release

3.99_01 2018-12-03
As JSON::XS 4.0 changed its policy and enabled allow_nonref
by default, JSON::PP also enabled allow_nonref by default

- implement allow_tags that was introduced by JSON::XS 3.0
- add boolean_values that was introduced by JSON::XS 4.0
- allow literal tags in strings in relaxed mode, as JSON::XS 3.02 does
- allow PERL_JSON_PP_USE_B environmental variable to restore
old number detection behavior for compatibility
- various doc updates

7 days agot/porting/manifest.t add line number
Nicolas R [Thu, 14 Feb 2019 16:15:10 +0000 (10:15 -0600)] 
t/porting/manifest.t add line number

Improve t/porting/manifest.t output on errors
to show the line number.

7 days agoNet::Ping 501_ping_icmpv6.t: disable sudo test
Nicolas R [Thu, 14 Feb 2019 02:22:10 +0000 (20:22 -0600)] 
Net::Ping 501_ping_icmpv6.t: disable sudo test

This is similar to the changes made in 7bfdd8260c
we do not want to use 'sudo' during the tests.

7 days agoUpdate Net::Ping to upstream version 2.71
Nicolas R [Thu, 14 Feb 2019 00:32:46 +0000 (18:32 -0600)] 
Update Net::Ping to upstream version 2.71

This retains blead customizations:
1a58b39af8 remove of 'use vars'
7bfdd8260c 500_ping_icmp.t: remove sudo code

These changes are not required anymore, they
are merged upstream
0fc44d0a18 avoid stderr noise in tests

7 days agoUpdate Test-Simple to CPAN version 1.302162
Chris 'BinGOs' Williams [Thu, 14 Feb 2019 13:17:57 +0000 (13:17 +0000)] 
Update Test-Simple to CPAN version 1.302162


1.302162  2019-02-05 19:55:14-08:00 America/Los_Angeles

    - Typo fixes in documentation

8 days agoUpdate Module-Load to CPAN version 0.34
Nicolas R [Wed, 13 Feb 2019 23:58:31 +0000 (17:58 -0600)] 
Update Module-Load to CPAN version 0.34


0.34    Sun Feb 10 13:56:54 GMT 2019
* Added SEE ALSO section to documentation. RT#100575
* Unreachable code cleanup (

8 days agoperlrecharclass: Note many fewer xdigits than digts
Karl Williamson [Wed, 13 Feb 2019 17:02:13 +0000 (10:02 -0700)] 
perlrecharclass: Note many fewer xdigits than digts

This adds a note explaining why there are only two sets of hex digits

8 days agoperlrecharclass: Rmv obsolete RFC
Karl Williamson [Wed, 13 Feb 2019 16:33:56 +0000 (09:33 -0700)] 
perlrecharclass: Rmv obsolete RFC

The deleted text asked for comments on a proposal that never went

8 days agoperlrecharclass: Clarify
Karl Williamson [Wed, 13 Feb 2019 16:30:29 +0000 (09:30 -0700)] 
perlrecharclass: Clarify


9 days ago(perl #133660) add test for goto &sub in overload leaking
Tony Cook [Wed, 6 Feb 2019 04:42:10 +0000 (15:42 +1100)] 
(perl #133660) add test for goto &sub in overload leaking

The bug in this case was fixed in db9848c8d.

11 days agoperlsyn.pod: correct typo in doc
Andreas Koenig [Sun, 10 Feb 2019 16:20:57 +0000 (16:20 +0000)] 
perlsyn.pod: correct typo in doc

2 weeks Fix to work with -DNO_LOCALE config opt
Karl Williamson [Wed, 6 Feb 2019 18:54:14 +0000 (11:54 -0700)] Fix to work with -DNO_LOCALE config opt

We shouldn't export non-existent variables

2 weeks agolocale.c: Fix compilation error
Karl Williamson [Wed, 6 Feb 2019 18:53:10 +0000 (11:53 -0700)] 
locale.c: Fix compilation error

This code would fail to require if Configure had ccflags=-DNO_LOCALE

2 weeks agot/ C.UTF-8 is a likely locale
Karl Williamson [Wed, 6 Feb 2019 18:51:05 +0000 (11:51 -0700)] 
t/ C.UTF-8 is a likely locale

When looking for locales on a system, try this one which seems to be
getting to be available widely.

2 weeks agoext/POSIX: Fix compilation error
Karl Williamson [Wed, 6 Feb 2019 18:49:25 +0000 (11:49 -0700)] 
ext/POSIX: Fix compilation error

This code is not usually compiled, but if tried, it would fail.  It
needed a cast.

2 weeks agoMerge branch 'turkic locale handling' into blead
Karl Williamson [Tue, 5 Feb 2019 18:45:10 +0000 (11:45 -0700)] 
Merge branch 'turkic locale handling' into blead

This series of commmits adds seamdless handling of UTF-8 Turkic locales
to blead.  Unicode furnishes an alternate set of casing rules for these
locales, which until now were ignored by Perl.  These commits causes
Perl to use the alternate rules when it detects that the UTF-8 locale it
is using is in fact a specialized Turkic one

2 weeks agoDocs for new Turkic UTF-8 locale support
Karl Williamson [Tue, 5 Feb 2019 18:30:05 +0000 (11:30 -0700)] 
Docs for new Turkic UTF-8 locale support

2 weeks agolocale.c: Add detection of Turkic UTF-8 locales
Karl Williamson [Tue, 5 Feb 2019 01:58:26 +0000 (18:58 -0700)] 
locale.c: Add detection of Turkic UTF-8 locales

When switching into a new locale, after it is decided this is a UTF-8
locale, the code now also checks for if the locale is a specialized
Turkic one, which has a couple of slightly modified casing change rules.
If so, it sets a flag indicating this.

The code that has been added in previous commits in this series check if
that flag is set when they are actually paying attention to the
background locale, and if so behave according to Unicode Turkic rules.

2 weeks agoregcomp.c: White-space only
Karl Williamson [Tue, 5 Feb 2019 01:30:25 +0000 (18:30 -0700)] 
regcomp.c: White-space only

Indent a block of code newly formed by the previous commit

2 weeks agoAdd Turkish locale handling to /i pattern matching
Karl Williamson [Tue, 5 Feb 2019 00:46:20 +0000 (17:46 -0700)] 
Add Turkish locale handling to /i pattern matching

Previous commits in this series have changed uc(), lc(), fc(), etc. to
know how to handle Turkish UTF-8 locales.  This commit extends this to
/i regular expression pattern matching.

2 weeks agopp.c: White-space only
Karl Williamson [Mon, 4 Feb 2019 23:18:51 +0000 (16:18 -0700)] 
pp.c: White-space only

Indent block newly formed by the previous commit.

2 weeks agopp.c: Add handling for Turkish locales for uc() etc
Karl Williamson [Mon, 4 Feb 2019 23:12:58 +0000 (16:12 -0700)] 
pp.c: Add handling for Turkish locales for uc() etc

The functions lc() uc() ucfirst() lcfirst() and fc() are hereby expanded
to handle the differences required in Turkish locales.

No Turkish locales are recognized until later in this series of

2 weeks agot/op/lc.t: Add tests for Turkish locales
Karl Williamson [Mon, 4 Feb 2019 23:03:49 +0000 (16:03 -0700)] 
t/op/lc.t: Add tests for Turkish locales

But since these aren't recognized yet, they will be skipped

2 weeks agoAdd .t to test Turkic locale folding
Karl Williamson [Mon, 4 Feb 2019 22:29:55 +0000 (15:29 -0700)] 
Add .t to test Turkic locale folding

This just calls with a particular option.

But, as of this commit, Turkish locales aren't recognized specially, so
this test just always skips.

2 weeks agot/re/ Enhance to deal with Turkic rules
Karl Williamson [Mon, 4 Feb 2019 22:23:31 +0000 (15:23 -0700)] 
t/re/ Enhance to deal with Turkic rules

The CaseFolding.txt file has special locale-dependent rules.  This
commit changed fold_grind to notice them, and to generate tests for
the situation we aren't in, which are expected to fail.

Since, as of this commit, the Turkic locale is not recognized, this
commit has the effect of generating tests for the Turkic locale, running
them, and making sure they fail when appropriate.

2 weeks agot/ Add functions to find Turkic UTF-8 locales
Karl Williamson [Mon, 4 Feb 2019 21:18:18 +0000 (14:18 -0700)] 
t/ Add functions to find Turkic UTF-8 locales

These will be used by later commits.  But right now Perl doesn't know
how to determine if a locale is Turkic, so these functions return no
locale, until later in this commit series