This is a live mirror of the Perl 5 development currently hosted at
4 years agoMake utf8_to_uvchr() slightly safer
Karl Williamson [Tue, 31 Jul 2018 03:41:44 +0000 (21:41 -0600)]
Make utf8_to_uvchr() slightly safer

Recent commit aa3c16bd709ef9b9c8c785af48f368e08f70c74b made this
function safe if the input is a NUL-terminated string.  But if not, it
can read past the end of the buffer.  It used as a limit the maximum
length a UTF-8 code point can be.  But most code points in real-world
use aren't nearly that long, and we know how long that can be by looking
at the first byte.  Therefore, use the length determined by the first
byte as the limit instead of the maximum possible.

4 years agoRevise kludge for [perl #133136]
Karl Williamson [Wed, 25 Jul 2018 21:00:15 +0000 (15:00 -0600)]
Revise kludge for [perl #133136]

Lexical::SealRequireHints has a test that is looking for internal Perl
behavior that has changed, and the maintainer has been unresponsive.
Since this test is high in the cpan river, in order to get 5.28
released, a kludge was added that used the old behavior.  But that old
behavior is about to be completely removed, so this does a different
kludge that loads, and that is what the .t is actually
expecting.  This leaves us free to remove the behavior without affecting
the module.

4 years agomathoms.c: Make safer a deprecated function
Karl Williamson [Wed, 25 Jul 2018 03:41:41 +0000 (21:41 -0600)]
mathoms.c: Make safer a deprecated function

This function is deprecated because it is lacking a length parameter, so
malformed UTF-8 may cause it to read beyond the buffer.  This commit
causes it to not read beyond a NUL character, which makes it safe for
the common case that the input is a C string.

4 years agoutf8.c: Make safer some deprecated functions
Karl Williamson [Wed, 25 Jul 2018 03:28:42 +0000 (21:28 -0600)]
utf8.c: Make safer some deprecated functions

This function is a common function, only called from various deprecated
functions, but they may be moved to ppport.h.  They are lacking a length
parameter, so malformed UTF-8 may cause them to read beyond the buffer.
This commit causes this common function to not read beyond a NUL
character, which makes all its callers safe for the common case that
the input is a NUL-terminated C string.

4 years agoutf8.c: Avoid some unnecessary work
Karl Williamson [Wed, 25 Jul 2018 01:52:25 +0000 (19:52 -0600)]
utf8.c: Avoid some unnecessary work

The code changed by this commit used to check that the input was valid
UTF-8, and if so, calculated the code point, using a fast function
that doesn't do any error checking.

However, the changes earlier in 5.29 make the time spent in checking for
validity hardly less than the time spent in calculating the code point
at the same time.  So this commit switches to calculating the code point
from the start, avoiding a second pass through the byte string.

4 years agoutf8.c: Remove unused parameters
Karl Williamson [Wed, 25 Jul 2018 01:43:19 +0000 (19:43 -0600)]
utf8.c: Remove unused parameters

These functions used to have swashes, but now all have inversion lists
instead, so we can get rid of the code that handled their swashes.

4 years agoutf8.c: Remove common code
Karl Williamson [Tue, 24 Jul 2018 23:25:13 +0000 (17:25 -0600)]
utf8.c: Remove common code

Call another function that incorporates the same code that is removed by
this commit.

4 years agomktables: Some tests are invalid
Karl Williamson [Wed, 25 Jul 2018 02:12:24 +0000 (20:12 -0600)]
mktables: Some tests are invalid

These tests have been wrongly passing.  A future commit will change

4 years agoutf8.c: Make safer a deprecated function
Karl Williamson [Tue, 24 Jul 2018 23:20:08 +0000 (17:20 -0600)]
utf8.c: Make safer a deprecated function

This function is only called from deprecated functions, but they may be
moved to ppport.h.  It is lacking a length parameter, so malformed UTF-8
may cause it to read beyond the buffer.  This commit causes it to not
read beyond a NUL character, which makes it safe for the common case
that the input is a C string.

4 years agoutf8.c: Make unused parameter signal its status
Karl Williamson [Wed, 25 Jul 2018 01:35:55 +0000 (19:35 -0600)]
utf8.c: Make unused parameter signal its status

Change the string in this string parameter to indicate it is unused,
like the similar calls nearby.

4 years agoInitialize some inversion lists at start-up.
Karl Williamson [Wed, 25 Jul 2018 01:16:46 +0000 (19:16 -0600)]
Initialize some inversion lists at start-up.

The time it takes for these is trivial, since they are using compiled-in
Unicode values.

4 years agoinline.h: Init a variable to silence stupid compilers
Karl Williamson [Fri, 3 Aug 2018 04:48:55 +0000 (22:48 -0600)]
inline.h: Init a variable to silence stupid compilers

In looking at smokes, I noticed some compilers wrongly warn that this
variable is used uninitialize.  It's easiest to humor them.

4 years agoAvoid extra newlines on VMS in t/opbasic/arith.t
Craig A. Berry [Thu, 2 Aug 2018 22:30:21 +0000 (17:30 -0500)]
Avoid extra newlines on VMS in t/opbasic/arith.t

Separate print statements through a pipe with autoflush on cause
extra newlines due a bug in the VMS pipe implementation, and were
causing this test to fail with an "unexpected output" message. So
consolidate into a single print statement.

4 years agoAvoid extra newlines on VMS in t/op/local.t.
Craig A. Berry [Thu, 2 Aug 2018 22:23:50 +0000 (17:23 -0500)]
Avoid extra newlines on VMS in t/op/local.t.

Separate print statements through a pipe with autoflush on cause
extra newlines due a bug in the VMS pipe implementation, and were
causing this test to fail with an "unexpected output" message. So
consolidate into a single print statement.

4 years agoMove Unicode \p{} definitions to regcomp.c
Karl Williamson [Mon, 30 Jul 2018 22:00:25 +0000 (16:00 -0600)]
Move Unicode \p{} definitions to regcomp.c

These are only used in compiling patterns.  They previously were placed
in utf8.c because they are large, and there is a copy of regcomp.c in
ext/re, so they would have use twice the space.

This commit changes things so that they only are used and defined in
regcomp.c, (not re_comp.c) so that duplication does not occur.  They are
accessed only from one function, and that is also moved from utf8.c to
regcomp.c, only compiled in regcomp.c, and referred to as an external by

I had to change the names of the table.  Previously they started with
'PL_' in case any got exposed, but globvar.t mindlessly assumes that any
such variables in the file regcomp.c are globals, and wrongly complains.
It was easier to just change the prefix to 'UNI_' instead.

A few tables are used in regexec.c, and are duplicated in re_exec.c.
Things could be adjusted so that only one copy is used.  I tried this,
but the tables are far more intertwined in regexec.c functions than
the ones changed in this commit, as only a single function accesses
these.  Thus doing this would be a lot harder, and the payback isn't all
that much.  I started work to make them EXTCONSTs, and then discovered
the intertwining, but left in that work, unused.

4 years agoext/POSIX/t/posix.t - Fix 'strtold works' test
sisyphus [Thu, 2 Aug 2018 07:59:50 +0000 (17:59 +1000)]
ext/POSIX/t/posix.t - Fix 'strtold works' test

4 years agot/run/locale.t - Add missing SKIP:{} block
sisyphus [Thu, 2 Aug 2018 07:55:44 +0000 (17:55 +1000)]
t/run/locale.t - Add missing SKIP:{} block

4 years agoConfigure: redirect try.c errors to /dev/null
Karl Williamson [Tue, 31 Jul 2018 04:00:13 +0000 (22:00 -0600)]
Configure: redirect try.c errors to /dev/null

4 years agoperldelta for 028f02e7e97a, 3d5e9c119db6 and bbc9927bf24e
Tony Cook [Wed, 1 Aug 2018 06:54:02 +0000 (16:54 +1000)]
perldelta for 028f02e7e97a3d5e9c119db6 and bbc9927bf24e

4 years agowin32: fix argumentless sleep()
Tomasz Konojacki [Sun, 15 Jul 2018 00:33:16 +0000 (02:33 +0200)]
win32: fix argumentless sleep()

Before this commit, pause() was implemented as a macro calling
win32_sleep((32767L << 16) + 32767), which was causing the following
problems with argumentless sleep():

- it was sleeping for 4262198 seconds (~50 days) instead of forever
- it was triggering "sleep(2147450879) too large" warning

This commit implements pause() as a proper function which calls
win32_msgwait() with an INFINITE timeout.

[perl #133376]

4 years ago(perl #133314) always close the directory handle on clean up
Tony Cook [Mon, 2 Jul 2018 00:43:19 +0000 (10:43 +1000)]
(perl #133314) always close the directory handle on clean up

Previously the directory handle was only closed if the rest of the
magic free clean up is done, but in most success cases that code
doesn't run, leaking the directory handle.

So always close the directory if our AV is available.

4 years ago(perl #133314) test for handle leaks from in-place editing
Tony Cook [Wed, 1 Aug 2018 01:55:22 +0000 (11:55 +1000)]
(perl #133314) test for handle leaks from in-place editing

4 years agobump $Storable::VERSION
Tony Cook [Tue, 31 Jul 2018 00:29:37 +0000 (10:29 +1000)]
bump $Storable::VERSION

since I made a substansive change to stacklimit

4 years ago(perl #133411) don't try to load Storable with -Dusecrosscompile
Tony Cook [Mon, 30 Jul 2018 11:00:52 +0000 (21:00 +1000)]
(perl #133411) don't try to load Storable with -Dusecrosscompile

4 years agoFix setting GCCTARGET in win32/ when CCTYPE is set to GCC
Steve Hay [Mon, 30 Jul 2018 07:31:10 +0000 (08:31 +0100)]
Fix setting GCCTARGET in win32/ when CCTYPE is set to GCC

This just copies a piece of logic from win32/GNUmakefile to get GCCTARGET
set when CCTYPE is already set to GCC.

4 years agofix version autodetect for Visual C 64bit edition
Daniel Dragan [Fri, 27 Jul 2018 20:44:26 +0000 (16:44 -0400)]
fix version autodetect for Visual C 64bit edition

-replace *= with := in because we dont want to run
 "gcc.exe -dumpmachine" multiple times
-64 bit Visual C has the major version number at 1 "token" less than
 32 bit edition, so the autodetect code was saying VC 2005 64b was
 CCTYPE="MSVC-60" because shell var %i was "00" in the "set /A", VC 2005
 32b wasn't affected, MS when they created 64 bit VC took some liberties
 in changing the version string, rumor has it many legacy code bases do a
 string test for "80x86", so that is why it was never updated by MS. I
 think detecting 64b VC version numbers has been broken since day 1 of
 the autodetect code that I wrote in commit ca30c090c3 . I just never
 tested it on 64b before.
-copy the "info" target from GNUMakefile to for debugging
 reasons, mostly so I can verify this revised autodetect logic works but
 since the target uses alot of CPU/IO/many procs launched to compute the
 version and many cmd.exes are launched for all those echo line, dont by
 default execute the "info" target from "all" target on dmake
 to save build time. Copying "info" target also reduces diff-ness between
 the 2 makefiles. Maybe one day remove running the info target by dafault
 on a target "all" from GNUmakefile too, but not in this commit.
-consolidate the recipe lines for "info" target so less cmd.exe procs are
 launched by the make tools, unroll echo CCTYPE into both branches. For
 me with dmake, the "info" targets execution time went from 398ms to 141 ms
-there was a skip of "VC" version vs "cl.exe" version between VC 2013 aka
 VC 12 and VC 2015 aka VC 14, so at cl.exe ver 19 the skip must be
 accounted for, also starting in VC 2017, the MINOR version number started
 being relevent since MS stopped ticking up the MAJOR version number so
 take the "X" from AB.XY.CD.EF and append it to the version number, the 2nd
 number in "tokens" sets %j var to be that number, but dont look at minor
 number for older VCs since the only old "AB.10" VC compiler, which is
 VC 2003 aka 7.10 and VC 2002 aka 7.00 are treated identically and combined
 to 7.00 for perl purposes
-fixed a bug that a console without gcc and without vc in the PATH
 autodetected to a gibberish MSVC version instead of erroring to the user

4 years agoBump Time::HiRes $VERSION since its XS was changed in the previous commit
Steve Hay [Fri, 27 Jul 2018 07:40:10 +0000 (08:40 +0100)]
Bump Time::HiRes $VERSION since its XS was changed in the previous commit

4 years agoremove distros from needing ppport.h in core
Daniel Dragan [Thu, 26 Jul 2018 12:12:56 +0000 (13:12 +0100)]
remove distros from needing ppport.h in core

These changes are towards a goal of removing mkppport one day as part of
a optimization for parallel building (less deps needed before XS
extensions are built). This is a follow-on patch to the dummy ppport.h
trick in Perl #128438 ticket that had issues.

-for Time::HiRes the DEFINE() in Makefile.PL can't be be in sub init()
 because that sub isn't called on windows
-SLU has not needed ppport.h in core since commit 5e99e069f5
 aka 1.47 import from cpan
-Cwd used to be a no ppport.h since 3.25, in 3.30_02 the code (Cwd.xs) was
 deleted/broken under commit 9bc94e3dae, or changes file
 "Remove more special logic required for core perl.". Put back the Cwd.xs
 code and remove Cwd from the ppport.h list

4 years agot/porting/manifest.t - Don't strip out MANIFEST.SKIP files
Steve Hay [Wed, 25 Jul 2018 12:16:29 +0000 (13:16 +0100)]
t/porting/manifest.t - Don't strip out MANIFEST.SKIP files

The previous commit's addition of Devel-PPPort's MANIFEST.SKIP caused this
test to fail because it was stripping that file out of the list of files
tracked by git and then complaining that it wasn't in the list of files
tracked by git!

We only have two MANIFEST.SKIP files in core. They're both listed in the
MANIFEST and they're both tracked by git, so nothing special needs doing

4 years agoAdd dist/Devel-PPPort/MANIFEST.SKIP to MANIFEST
Steve Hay [Wed, 25 Jul 2018 07:46:49 +0000 (08:46 +0100)]

4 years agoRevert "Delete MANIFEST.SKIP from dist/Devel-PPPort for now"
Steve Hay [Wed, 25 Jul 2018 07:19:15 +0000 (08:19 +0100)]
Revert "Delete MANIFEST.SKIP from dist/Devel-PPPort for now"

This reverts commit 077685406080f6c6256731ba0cc7c07e8b91e160.

4 years agoremove all exported symbols from GCC win32 miniperl
Daniel Dragan [Thu, 15 Mar 2018 00:11:51 +0000 (20:11 -0400)]
remove all exported symbols from GCC win32 miniperl

Similar to commit a19baa613 and same reasoning. Makes binary smaller/more
chances for optimization but mingw linker is still much less smart than
the VC linker.

Remaining problems are that GCC miniperl.exe still links to WS2_32.dll
(winsock library) yet the win32_* socket functions have nothing calling

GCC 4.9.2 i686-w64-mingw32

miniperl.exe 1660KB before this no exports commit
miniperl.exe 1584KB after this no exports commit

4 years agoDon't compile S_env_alloc() when not used
David Mitchell [Mon, 23 Jul 2018 08:15:38 +0000 (09:15 +0100)]
Don't compile S_env_alloc() when not used

RT #133360

I recently added S_env_alloc() as a helper function for
Perl_my_setenv(); but it's not needed on all platforms, so #ifdef it to
only be compiled on platforms where its needed.

Avoids a compiler warning.

4 years agoFix trivial compilation warning in Data::Dumper
Aaron Crane [Sun, 22 Jul 2018 17:10:21 +0000 (18:10 +0100)]
Fix trivial compilation warning in Data::Dumper

Apparently a declaration of a static function that's never defined can
count as an unused function.

4 years agoembed.fnc: Rmv wrong marker that a fcn has docs
Karl Williamson [Sun, 22 Jul 2018 15:28:04 +0000 (09:28 -0600)]
embed.fnc: Rmv wrong marker that a fcn has docs

This was a copy paste error.  This is a function that should not be
called directly, and isn't documented.

4 years agolib/ Bump version to 1.43
Karl Williamson [Sun, 22 Jul 2018 15:44:49 +0000 (09:44 -0600)]
lib/ Bump version to 1.43

4 years agolib/Config/ Bump version to .03
Karl Williamson [Sun, 22 Jul 2018 15:44:24 +0000 (09:44 -0600)]
lib/Config/ Bump version to .03

4 years ago[MERGE] Data::Dumper fixes for older Perl versions
Aaron Crane [Sun, 22 Jul 2018 12:52:58 +0000 (13:52 +0100)]
[MERGE] Data::Dumper fixes for older Perl versions

Notably, this restores deparsing support in the XS dumper.

4 years agoData::Dumper: restore XS-mode deparse support in older Perls
Aaron Crane [Sat, 21 Apr 2018 18:16:05 +0000 (20:16 +0200)]
Data::Dumper: restore XS-mode deparse support in older Perls

4 years agoData::Dumper: handle incomplete support for Unicode glob names
Aaron Crane [Sat, 21 Apr 2018 14:59:46 +0000 (16:59 +0200)]
Data::Dumper: handle incomplete support for Unicode glob names

Before version 5.16, Perl didn't have full support for Unicode in glob
names. This change allows Data::Dumper's tests to pass in Perl 5.8 through

4 years agoData::Dumper: ensure character-classification macros use U8
Aaron Crane [Sat, 21 Apr 2018 14:58:35 +0000 (16:58 +0200)]
Data::Dumper: ensure character-classification macros use U8

This fixes some tests on older Perls.

4 years agodist/Data-Dumper/t/dumper.t: clarify some test names
Aaron Crane [Sat, 21 Apr 2018 14:47:57 +0000 (16:47 +0200)]
dist/Data-Dumper/t/dumper.t: clarify some test names

4 years agodist/Data-Dumper/t/dumper.t: add missing test name
Aaron Crane [Sat, 21 Apr 2018 14:47:36 +0000 (16:47 +0200)]
dist/Data-Dumper/t/dumper.t: add missing test name

4 years agodist/Data-Dumper/t/indent.t: avoid scalar split
Aaron Crane [Sat, 21 Apr 2018 14:41:45 +0000 (16:41 +0200)]
dist/Data-Dumper/t/indent.t: avoid scalar split

Older versions of Perl yield a warning for this usage.

4 years agoPorting/epigraphs.pod: fix a typo in an old epigraph
Aaron Crane [Sun, 22 Jul 2018 12:29:32 +0000 (13:29 +0100)]
Porting/epigraphs.pod: fix a typo in an old epigraph

4 years agoEnsure perlmodlib.pod contains all non-dual-life modules
Aaron Crane [Mon, 25 Jun 2018 14:42:33 +0000 (15:42 +0100)]
Ensure perlmodlib.pod contains all non-dual-life modules

The pod/perlmodlib.pod file is generated at build time by pod/perlmodlib.PL,
which looks at the POD of library and pragma files to find "=head1 NAME"
directives. It reads each file a paragraph at a time ($/ = ""), and considers
each individual paragraph as potentially containing POD.

However, if it finds no "=head1 NAME" entry in a module, it silently ignores
it. That's reasonable for dual-life modules — there's often a good reason
why a particular file has no POD — but for single-life modules, this could
well indicate an issue.

In particular, commit effd17dc012719d584aa712c6c7bd5dc142885b6, as part of
rearranging the contents of lib/, inadvertently changed the
context of its "=head1 NAME" line so that it's no longer the start of a
paragraph. This had the effect of removing from perlmodlib; that
gap was pointed out by pink_mist++ on IRC.

The fix for that is trivial: add a blank in the appropriate place in
regen/, and regen.

The change to pod/perlmodlib.PL to die on missing "=head1 NAME" lines has
also yielded a second module (Config::Extensions) that was missing from
perlmodlib for the same reason; that's also fixed in this commit.

4 years agoregen/ Collapse unused boundary values
Karl Williamson [Sat, 21 Jul 2018 20:09:24 +0000 (14:09 -0600)]
regen/ Collapse unused boundary values

Each Unicode property that specifies a boundary conditions, like
Word_Break, partitions all the Unicode code points into equivalence
classes.  So, for example, combining marks are placed into the Extend
class, because they are usually used to extend the previous character
and don't stand on their own. creates a boolean table of
all pairwise combinations of these classes, so that it knows by simple
lookup if the first character is class X and the next character is class
Y, if a break is permitted between these.

However, in some cases the answer isn't as simple as this, and other
means such as the characters in the vicinity of X and Y must be used to
disambiguate.  In these cases the table value in the cell (X,Y) isn't a
boolean, but is some other number indicating some specially crafted code
section to execute to resolve the issue.

Over the years, Unicode has tended to subdivide partitions into smaller
ones, as they've refined their algorithms.  But with Unicode 11, they
used another method and actually removed partitions.  Rather, they
retain the partitions, but no code point actually takes on the value of
an obsolete partition.

In order to not have to change the algorithm unnecessarily between
Unicode releases (who knows, they might change their minds, and
unobsolete these next time), mk_invlists has just kept the tables
around, but those cells won't ever get accessed because no code point in
the current release evaluates to them.

But that makes the tables unnecessarily large.  We can achieve the same
thing by mapping each unused equivalence class to the same value, which
we call 'unused'.  The algorithms that refer to the obsolete partitions
go through the data assigning values to the cells, but now the cells
overlap, since all obsolete classes map to the same row or column.  Thus
the data is total garbage.  But that doesn't matter, since that row or
column is never read by the data in the Unicode release the table is
constructed for.

mk_invlists also can compile older Unicode releases, and this makes
those tables smaller than before, with all unused classes in a
given release collapsed into a single row and single column of (unused)

4 years agoregen/ Make adjacent comment and its code
Karl Williamson [Wed, 18 Jul 2018 20:53:43 +0000 (14:53 -0600)]
regen/ Make adjacent comment and its code

4 years agoregen/ Add comments
Karl Williamson [Sat, 21 Jul 2018 03:34:16 +0000 (21:34 -0600)]
regen/ Add comments

These are from

4 years agoUse Unicode 11.0
Unicode Consortium [Fri, 20 Jul 2018 20:46:28 +0000 (14:46 -0600)]
Use Unicode 11.0

This completes the process of upgrading to Unicode 11.0.

4 years agoPrepare for Unicode 11.0
Karl Williamson [Fri, 20 Jul 2018 20:37:34 +0000 (14:37 -0600)]
Prepare for Unicode 11.0

Unicode 11 has some new data files needed for it, and some changes in
the boundary rules that need to be accounted for.  This does all that
can be done without causing tests to fail.  The LB algorithm has
changed, and tests would fail if we included the code changes needed for
that change in this commit.  Instead those few lines will come as part
of the Unicode 11.0 commit.

4 years agomktables: Comment, white-space
Karl Williamson [Fri, 20 Jul 2018 20:06:57 +0000 (14:06 -0600)]
mktables: Comment, white-space

4 years agomktables: Avoid some unnecessary work
Karl Williamson [Fri, 20 Jul 2018 19:54:50 +0000 (13:54 -0600)]
mktables: Avoid some unnecessary work

By simply removing a special case, we can avoid having to work around it

4 years agoregen/ Fix a couple typos, nits
Karl Williamson [Fri, 20 Jul 2018 19:40:10 +0000 (13:40 -0600)]
regen/ Fix a couple typos, nits

4 years agomktables: Improve warning message
Karl Williamson [Fri, 20 Jul 2018 19:13:15 +0000 (13:13 -0600)]
mktables: Improve warning message

I forgot that mktables (until told that things have been updated) makes
all failing boundary condition  tests pass and hence I got confused.
It's a simple matter to remind the user that this is happening, to
prevent the confusion

4 years agoToday's Module::CoreList is now on CPAN
Steve Hay [Fri, 20 Jul 2018 15:56:18 +0000 (16:56 +0100)]
Today's Module::CoreList is now on CPAN


4 years agoUpdate Module-CoreList for 5.29.2
Steve Hay [Fri, 20 Jul 2018 15:50:20 +0000 (16:50 +0100)]
Update Module-CoreList for 5.29.2

4 years agoBump version to 5.29.2
Steve Hay [Fri, 20 Jul 2018 15:37:46 +0000 (16:37 +0100)]
Bump version to 5.29.2

(including regen\

4 years agoCreate new perldelta for 5.29.2
Steve Hay [Fri, 20 Jul 2018 15:33:03 +0000 (16:33 +0100)]
Create new perldelta for 5.29.2

4 years agoTick off 5.29.1
Steve Hay [Fri, 20 Jul 2018 15:24:37 +0000 (16:24 +0100)]
Tick off 5.29.1

4 years agoAdd epigraph for 5.29.1
Steve Hay [Fri, 20 Jul 2018 15:24:28 +0000 (16:24 +0100)]
Add epigraph for 5.29.1

4 years agoDelete MANIFEST.SKIP from dist/Devel-PPPort for now v5.29.1
Steve Hay [Fri, 20 Jul 2018 13:34:19 +0000 (14:34 +0100)]
Delete MANIFEST.SKIP from dist/Devel-PPPort for now

The file was recently added by commit 6235e84a41 but makerel aborts with
the file present because it isn't listed in the top-level MANIFEST. Adding
it there then causes t/porting/manifest.t to fail, complaining that the
file shouldn't be in MANIFEST because it isn't tracked by git.


Let's just delete it for now and sort it out after getting 5.29.1 done.

4 years ago5.29.1 today
Steve Hay [Fri, 20 Jul 2018 10:07:11 +0000 (11:07 +0100)]
5.29.1 today

4 years agoFinalize perldelta
Steve Hay [Fri, 20 Jul 2018 10:03:34 +0000 (11:03 +0100)]
Finalize perldelta

4 years agoUpdate Module::CoreList for 5.29.1
Steve Hay [Fri, 20 Jul 2018 09:56:10 +0000 (10:56 +0100)]
Update Module::CoreList for 5.29.1

4 years agoRevert "Remove some deprecated functions from mathoms.c"
Karl Williamson [Thu, 19 Jul 2018 22:26:34 +0000 (16:26 -0600)]
Revert "Remove some deprecated functions from mathoms.c"

This reverts commit e6e9f5a198d7e054e6857a9c6e99a07d639f7f3c.
I think it best to revert this until I'm ready for stating in perldelta
exactly the options for replacing uses of these functions.

4 years agoTidy-ups following Devel::PPPort and Storable syncings
Steve Hay [Thu, 19 Jul 2018 20:36:33 +0000 (21:36 +0100)]
Tidy-ups following Devel::PPPort and Storable syncings

- Update versions in Porting/
- Devel::PPPort - Former blead customization of parts/embed.fnc (commit
  b6bb1ecbab) is now included in the CPAN distro
- Sync Storable's MANIFEST with the CPAN version
- Storable's retrieve.t is still customized (commit 7e52c9caaa) but we
  don't normally bother listing customized files for upstream=>blead
  distros anyway

4 years agoperldelta - Latest module updates
Steve Hay [Thu, 19 Jul 2018 20:16:45 +0000 (21:16 +0100)]
perldelta - Latest module updates

4 years agoModule::CoreList - Bump $VERSION for tomorrow's release
Steve Hay [Thu, 19 Jul 2018 20:16:28 +0000 (21:16 +0100)]
Module::CoreList - Bump $VERSION for tomorrow's release

(Should have been done after 5.29.0 was released.)

4 years agoAdding MANIFEST for Storable
Sawyer X [Thu, 19 Jul 2018 17:39:16 +0000 (20:39 +0300)]
Adding MANIFEST for Storable

4 years agoMerge branch 'sawyer/storable' into blead
Sawyer X [Thu, 19 Jul 2018 17:28:47 +0000 (20:28 +0300)]
Merge branch 'sawyer/storable' into blead

4 years agoMerge branch 'blead' of ssh:// into blead
Sawyer X [Thu, 19 Jul 2018 17:27:42 +0000 (20:27 +0300)]
Merge branch 'blead' of ssh:// into blead

4 years agoUpdate MANIFEST for Devel::PPPort
Sawyer X [Thu, 19 Jul 2018 17:27:38 +0000 (20:27 +0300)]
Update MANIFEST for Devel::PPPort

4 years agoUndo part of commit 06db6b4516 - Test-Simple still needs '.' in @INC too
Steve Hay [Thu, 19 Jul 2018 16:26:22 +0000 (17:26 +0100)]
Undo part of commit 06db6b4516 - Test-Simple still needs '.' in @INC too

I was getting cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t failing without
this fix.

4 years agoMerge branch 'devel-ppport-reorder' into blead
Sawyer X [Thu, 19 Jul 2018 13:37:51 +0000 (16:37 +0300)]
Merge branch 'devel-ppport-reorder' into blead

4 years agoperldelta - Updates, tidy-ups and remove boilerplate
Steve Hay [Thu, 19 Jul 2018 13:21:35 +0000 (14:21 +0100)]
perldelta - Updates, tidy-ups and remove boilerplate

4 years agoFix VC6 build following commit aa3c16bd70
Steve Hay [Thu, 19 Jul 2018 12:49:00 +0000 (13:49 +0100)]
Fix VC6 build following commit aa3c16bd70

4 years agoperldeprecation.pod - Fix a couple of nits
Steve Hay [Thu, 19 Jul 2018 12:38:22 +0000 (13:38 +0100)]
perldeprecation.pod - Fix a couple of nits

4 years agoperldelta - Changes since 5.29.0
Steve Hay [Thu, 19 Jul 2018 08:17:54 +0000 (09:17 +0100)]
perldelta - Changes since 5.29.0

4 years agoUpgrade to Thread::Queue 3.13
jdhedden [Wed, 18 Jul 2018 02:00:31 +0000 (22:00 -0400)]
Upgrade to Thread::Queue 3.13

4 years agoperldelta: Note illegality of some former deprecations
Karl Williamson [Tue, 17 Jul 2018 22:04:07 +0000 (16:04 -0600)]
perldelta: Note illegality of some former deprecations

4 years agoRemove updated modules from list of needing dot in @INC
Karl Williamson [Tue, 17 Jul 2018 20:17:11 +0000 (14:17 -0600)]
Remove updated modules from list of needing dot in @INC

Apparently the maintainers of all but two modules have updated them to
not need a dot in @INC.

The two remaining ones are


4 years agoMake utf8_to_uvchr() safer
Karl Williamson [Tue, 17 Jul 2018 19:57:54 +0000 (13:57 -0600)]
Make utf8_to_uvchr() safer

This function is deprecated because the API doesn't allow it to
determine the end of the input string, so it can read off the far end.
But I just realized that since many strings are NUL-terminated, so we
can forbid it from reading past the next NUL, and hence make it safe in
many cases.

4 years agoutf8.c: Add comments
Karl Williamson [Tue, 17 Jul 2018 19:32:01 +0000 (13:32 -0600)]
utf8.c: Add comments

Explain why we don't have to check the return code from
_invlist_search() here.  See [perl #133365]

4 years agoregexec.c: Use macro instead of Perl_invlist_search()
Karl Williamson [Tue, 17 Jul 2018 19:29:50 +0000 (13:29 -0600)]
regexec.c: Use macro instead of Perl_invlist_search()

There's no reason to use the function name, and by using the macro, this
code is insulated against future changes

Tina Müller [Mon, 16 Jul 2018 11:10:24 +0000 (13:10 +0200)]

For: RT # 133380

Committer: Tina Müller is now a Perl AUTHOR.

4 years agoperlop: Clarify tr''' behavior
Karl Williamson [Tue, 17 Jul 2018 13:58:36 +0000 (07:58 -0600)]
perlop: Clarify tr''' behavior

When the delimiter is an apostrophe, hyphens aren't special, and \x{},
for example, isn't interpolated.  This was confusing enough to me that I
filed ticket [perl #130679], which I will now reject

4 years agoperlop: Nits
Karl Williamson [Tue, 17 Jul 2018 13:54:03 +0000 (07:54 -0600)]
perlop: Nits

Add a word for emphasis, and split some unrelated concepts into separate

4 years agoRestore lost line from comment
Hugo van der Sanden [Tue, 17 Jul 2018 13:51:13 +0000 (14:51 +0100)]
Restore lost line from comment

This somehow disappeared in the mro => mro_core rename of 8b371338c1.

4 years agoClarify a comment - it's mini\.exists that gets deleted, not config.h
Steve Hay [Tue, 17 Jul 2018 07:37:47 +0000 (08:37 +0100)]
Clarify a comment - it's mini\.exists that gets deleted, not config.h

4 years agowin32/Makefile: prevent execution without CCTYPE set
Daniel Dragan [Sun, 13 May 2018 02:12:20 +0000 (22:12 -0400)]
win32/Makefile: prevent execution without CCTYPE set

MSVC6 is the oldest CC supported. I dont think many Win32 users use it
anymore since if they use VC Perl at all, it will be the latest
Visual Studio "Community Edition" MS released. win32/GNUMakefile and
win32/ autodetect VC versions, the nmake one doesn't. Out of
habit someone (like me) might type "nmake" at cmd prompt with a newer VC
but there aren't any obvious symptoms of something going wrong until

C:\p525\src\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e
chmod -- 755 ..\..\lib\auto\Win32CORE\Win32CORE.lib
..\miniperl.exe -I..\lib > Extensions_static
link -dll -def:perldll.def -base:0x28000000 -out:..\perl528.dll
@Extensions_static @C:\Users\Owner\AppData\Local\Temp\nm9E37.tmp
perldll.def(2) : warning LNK4017: DESCRIPTION statement not supported for
the target platform; ignored
perldll.def : error LNK2001: unresolved external symbol PL_lc_numeric_mutex
..\perl528.lib : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 12.0\
VC\BIN\link.EXE"' : return code '0x460'

Hitting this error because CCTYPE wasn't set, is very confusing and I spent
alot of time to debug it. The CCTYPE inside (MSVC60) didn't
match MSVC version inside perl.h (MSC_VER macro) after CPP, so the symbol
didn't exist in object file world but did exist the the synthesized object
file defines inside

How to implement the check:

Creating a psuedo target that checks that CCTYPE isn't empty and putting
it very early in the dependency tree, like on the mini config.h target,
caused a rebuild the world every time nmake ran. Writing a psuedo target
file to disk would not catch the second wrong nmake run in a a
"nmake CCTYPE=MSVC70 ..\foo.obj" and then a "nmake test" execution list by
a dev. So just put the CCTYPE check on the CC and LINK macros since the
major of all recipies executed will be one or the other binary. A couple
targets, whose recipies are miniperl.exe running a .pl will escape the
CCTYPE check, but checking CCTYPE very late in the build process, becomes
pointless since the build would likely break and stop by that point.

Also mini config.h needs to be deleted if an empty CCTYPE was used since
the mini config.h target will suceed (but write an illogical config.h)
and if the user obeys the error and sets CCTYPE on 2nd nmake run,
mini config.h wont be rebuilt and will be for a different CC version
(a non-existant one) which will cause more undefined behavior further down
the build process.

4 years agowin32/Makefile: put mini config.h in correct place in dep tree
Daniel Dragan [Thu, 10 May 2018 18:00:14 +0000 (14:00 -0400)]
win32/Makefile: put mini config.h in correct place in dep tree

I fixed this for GNUMakefile and when I added the parallel
building feature to those 2 but I left nmake unfixed. Now fix it. This
commit allow a "nmake CCTYPE=MSVC90 av.obj" or
"nmake CCTYPE=MSVC90 mini/av.obj" or other individual build product
targets to work on a cleaned src tree, while previously you'd get with
the above commands
        cl -c -nologo -GF -W3 -I..\lib\CORE -I.\include -I. -I.. -DWIN32
c:\p525\src\perl.h(28) : fatal error C1083: Cannot open include file:
'config.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 12.0
\VC\BIN\cl.EXE"' : return code '0x2'

Basically, "all" was the only target that worked on a clean src tree with
the nmake makefile previously. Also collapse the catting recipies into
single lines to speed up the mini config.h generation through less proc
starts of cmd.exe by nmake.exe. This reduces the mini config.h target time,
see timings in ticket associated with this comit. Also sync the sentinal
command (.exists) between all 3 mkfs for less diff-ness between the 3
mkfs (debugging aid).

4 years agoperlapi: AvFILL isn't deprecated
Karl Williamson [Tue, 17 Jul 2018 00:34:49 +0000 (18:34 -0600)]
perlapi: AvFILL isn't deprecated

See [perl #133278]

4 years agoCorrect POD formatting error.
James E Keenan [Mon, 16 Jul 2018 19:42:37 +0000 (19:42 +0000)]
Correct POD formatting error.

clang 6.0.0 was reporting:

    =cut missing? numeric.c:1087:*/

Add =cut to correspond to previous =for.

4 years agoperllocale: Improve pod appearance
Karl Williamson [Mon, 16 Jul 2018 16:40:47 +0000 (10:40 -0600)]
perllocale: Improve pod appearance

Using Z<> instead of NBSP improves the pod spacing.

4 years agolocale.c: Fix conditional compilation
Francois Perrad [Sun, 1 Jul 2018 22:17:44 +0000 (00:17 +0200)]
locale.c: Fix conditional compilation

With Perl 5.28.0, there are some mismatches between blocks
and conditional compilation in the Perl__is_cur_LC_category_utf8() function.
The compilation of miniperl could fails like this:
locale.c: In function `Perl__is_cur_LC_category_utf8`:
locale.c:5481:1: error: expected declaration or statement at end of input

Signed-off-by: Francois Perrad <>
4 years agoUpgrade Test::Simple from version 1.302136 to 1.302138
Steve Hay [Mon, 16 Jul 2018 07:55:18 +0000 (08:55 +0100)]
Upgrade Test::Simple from version 1.302136 to 1.302138

4 years agoUpgrade File::Temp from version 0.2306 to 0.2308
Steve Hay [Mon, 16 Jul 2018 07:49:06 +0000 (08:49 +0100)]
Upgrade File::Temp from version 0.2306 to 0.2308

4 years agoUpgrade DB_File from version 1.841 to 1.842
Steve Hay [Mon, 16 Jul 2018 07:47:01 +0000 (08:47 +0100)]
Upgrade DB_File from version 1.841 to 1.842

4 years agonumeric.c: Silence compiler warning
Karl Williamson [Sun, 15 Jul 2018 17:09:16 +0000 (11:09 -0600)]
numeric.c: Silence compiler warning

It is always expecting non-NULL, so make it so