This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
19 months agoinline.h: Return proper value on EBCDIC
Karl Williamson [Wed, 21 Aug 2019 15:14:05 +0000 (09:14 -0600)]
inline.h: Return proper value on EBCDIC

The final step was missing in the conversion from UTF-EBCDIC to uv.

This adds a macro call that expands to its argument on non-EBCDIC
platforms, so this commit makes no changes to the compiled binary on
those systems.

19 months agoReset xxx_convert to empty string if none of 3 utilities is found
James E Keenan [Sun, 18 Aug 2019 13:16:56 +0000 (13:16 +0000)]
Reset xxx_convert to empty string if none of 3 utilities is found

This will cause Configure to enter the WHOA block and default to using
sprintf.

Change Gconvert checkit() prototype for [perl #134371].

In the checkit() routine inside Configure, clang++ was taking the
if (strcmp(expect, got)) branch even though the 'expect' and 'got' strings
were identical.  A first step in debugging this was to realize that
the checkit() function never returned a value, so relabel it as void.
With clang version 7.0.1-8 (tags/RELEASE_701/final) (Debian),
this change seems to work around the strcmp issue.

Further Configure gconvert probe cleanups for C++.  As part of debugging
[perl #134375] and [perl #134371], try to eliminate warnings thrown by
clang++.

19 months agoI18N::Langinfo: Add doc heading
Karl Williamson [Thu, 4 Jul 2019 17:49:14 +0000 (11:49 -0600)]
I18N::Langinfo: Add doc heading

This resolves https://rt.perl.org/Ticket/Display.html?id=134234

19 months agoBump version to 5.31.4 and update Module::Corelist
Tom Hukins [Tue, 20 Aug 2019 15:20:27 +0000 (16:20 +0100)]
Bump version to 5.31.4 and update Module::Corelist

19 months agoNew perldelta for 5.31.4
Tom Hukins [Tue, 20 Aug 2019 15:13:57 +0000 (16:13 +0100)]
New perldelta for 5.31.4

19 months agoTick off 5.31.3
Tom Hukins [Tue, 20 Aug 2019 15:05:57 +0000 (16:05 +0100)]
Tick off 5.31.3

19 months ago5.31.3 today v5.31.3
Tom Hukins [Tue, 20 Aug 2019 13:12:13 +0000 (13:12 +0000)]
5.31.3 today

19 months agoperldelta - module versions
Tom Hukins [Tue, 20 Aug 2019 11:37:32 +0000 (11:37 +0000)]
perldelta - module versions

19 months agoperldelta - acknowledgements
Tom Hukins [Tue, 20 Aug 2019 11:31:44 +0000 (11:31 +0000)]
perldelta - acknowledgements

19 months agoUpdate Module::CoreList for 5.31.3
Tom Hukins [Tue, 20 Aug 2019 11:28:07 +0000 (11:28 +0000)]
Update Module::CoreList for 5.31.3

19 months agoperldelta - remove boilerplate
Tom Hukins [Tue, 20 Aug 2019 11:22:19 +0000 (11:22 +0000)]
perldelta - remove boilerplate

19 months agoPerl_quadmath_format_single(): fix off-by-1 err
David Mitchell [Tue, 20 Aug 2019 12:03:58 +0000 (13:03 +0100)]
Perl_quadmath_format_single(): fix off-by-1 err

RT #134369

This function checks that a floating format string (%f, %e etc) on
-Dusequadmath builds has the 'Q' qualifier , and if not adds it.

However, the "adding" code  allocates a new buffer that is one byte too
short, which this commit fixes.

In practice it doesn't matter, as in core, this function is only ever
called when the 'Q' is already present.

19 months agoperldelta for 442d4b523eda1 (opslot)
David Mitchell [Tue, 20 Aug 2019 07:43:48 +0000 (08:43 +0100)]
perldelta for 442d4b523eda1 (opslot)

19 months agoFix utf8_to_uvchr_buf to match docs
Karl Williamson [Mon, 19 Aug 2019 20:43:30 +0000 (14:43 -0600)]
Fix utf8_to_uvchr_buf to match docs

It did so already except when passed a zero length input on
non-debugging builds.  This caused test failures in Devel::PPPort, and
commit 4a5ab54a18679ab24ca03190884d326c2ca85288 was used to customize
that module in blead to get the tests to pass.

This commit avoids the possibility of having to bump the version again,
which is what that commit did.

19 months agoperldelta for ab7a3d991f6e4eb554d12bf4f083c352fe40452f
James E Keenan [Mon, 19 Aug 2019 21:36:36 +0000 (17:36 -0400)]
perldelta for ab7a3d991f6e4eb554d12bf4f083c352fe40452f

19 months agoUpdate Test-Simple to CPAN version 1.302166
Chad Granum [Mon, 19 Aug 2019 21:32:29 +0000 (17:32 -0400)]
Update Test-Simple to CPAN version 1.302166

1.302166  2019-08-15 10:37:01-07:00 America/Los_Angeles

    - Fix context test on older perls

1.302165  2019-08-15 10:21:09-07:00 America/Los_Angeles

    - Better diagnostics when a context is destroyed unexpectedly
    - Add an event to notify when END phase starts

19 months agoutfebcdic.h: Fix EBCDIC compilation error
Karl Williamson [Mon, 19 Aug 2019 15:05:05 +0000 (09:05 -0600)]
utfebcdic.h: Fix EBCDIC compilation error

The #include needs to always be done, so remove the #ifdef.  The
included file has the proper setup anyway for the variables that were
used.

19 months agoperldelta: Document I8N::LangTags noteworthy change
Karl Williamson [Mon, 19 Aug 2019 15:02:56 +0000 (09:02 -0600)]
perldelta: Document I8N::LangTags noteworthy change

19 months agoperldelta: Fix typo
Karl Williamson [Mon, 19 Aug 2019 15:02:23 +0000 (09:02 -0600)]
perldelta: Fix typo

19 months agoperldelta for 105c827d9a0f
Tony Cook [Mon, 19 Aug 2019 05:49:35 +0000 (15:49 +1000)]
perldelta for 105c827d9a0f

though if anyone has a better description, please update it

19 months ago(perl #124256) disallow \K in lookahead and lookbehind
Tony Cook [Thu, 28 Sep 2017 04:40:24 +0000 (14:40 +1000)]
(perl #124256) disallow \K in lookahead and lookbehind

\K can cause infinite loops in matching in these, and we're not sure
how it really should behave, so forbid it.

20 months agoRevert "Update Scalar-List-Utils to CPAN version 1.51"
Chris 'BinGOs' Williams [Sat, 17 Aug 2019 17:38:54 +0000 (18:38 +0100)]
Revert "Update Scalar-List-Utils to CPAN version 1.51"

This reverts commit 96684a73b5f81ca2a88309182dbc2dca9ab1601a.

Failures with uselongdouble

20 months agoUpdate release schdule, still missing some
Sawyer X [Sat, 17 Aug 2019 13:46:30 +0000 (16:46 +0300)]
Update release schdule, still missing some

20 months agoperldelta for merge commit 17154110146f
Tony Cook [Thu, 15 Aug 2019 04:24:44 +0000 (14:24 +1000)]
perldelta for merge commit 17154110146f

20 months agoCleanup Time::HiRes
Tony Cook [Thu, 15 Aug 2019 04:17:49 +0000 (14:17 +1000)]
Cleanup Time::HiRes

20 months agobump $Time::HiRes::VERSION
Tony Cook [Thu, 15 Aug 2019 04:16:19 +0000 (14:16 +1000)]
bump $Time::HiRes::VERSION

20 months agoTime::HiRes: remove workaround for an ancient Devel::PPPort bug
Tomasz Konojacki [Mon, 15 Jul 2019 23:42:07 +0000 (01:42 +0200)]
Time::HiRes: remove workaround for an ancient Devel::PPPort bug

It was fixed in Devel::PPPort 3.13_02.

[perl #134288]

20 months agoTime::HiRes: remove the remains of MacOS classic support
Tomasz Konojacki [Mon, 15 Jul 2019 21:44:08 +0000 (23:44 +0200)]
Time::HiRes: remove the remains of MacOS classic support

Perl dropped MacOS classic support ages ago.

[perl #134288]

20 months agoTime::HiRes: remove code for perls older than 5.6
Tomasz Konojacki [Mon, 15 Jul 2019 21:36:40 +0000 (23:36 +0200)]
Time::HiRes: remove code for perls older than 5.6

Both Makefile.PL and HiRes.pm contain "use 5.006", so it was dead
code anyway.

[perl #134288]

20 months agoTime::HiRes: normalize indentation
Tomasz Konojacki [Mon, 15 Jul 2019 04:57:48 +0000 (06:57 +0200)]
Time::HiRes: normalize indentation

The indendation style now (roughly) matches what was specified
in the style guide in perlhack.

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.

[perl #134288]

20 months agoperldelta for 2f36de812bad297aa2393aee5b13ed2e3acd00e8
James E Keenan [Thu, 15 Aug 2019 00:57:44 +0000 (20:57 -0400)]
perldelta for 2f36de812bad297aa2393aee5b13ed2e3acd00e8

20 months agoGetopt::Long: sync with CPAN version 2.51
Johan Vromans [Thu, 15 Aug 2019 00:55:34 +0000 (20:55 -0400)]
Getopt::Long: sync with CPAN version 2.51

20 months agoPATCH: [perl #134357] embed.fnc missing flag for docs
Karl Williamson [Tue, 13 Aug 2019 01:14:30 +0000 (19:14 -0600)]
PATCH: [perl #134357] embed.fnc missing flag for docs

A check was recently added if a function had documentation that
embed.fnc accurately reflected that.  Commit
c1a02ccad9a1ea91206b97e66056ee354ac761c1 missed this function

20 months agoRun tests in ext/File-Find/t in series
James E Keenan [Wed, 7 Aug 2019 13:39:56 +0000 (09:39 -0400)]
Run tests in ext/File-Find/t in series

For: RT # 133771

20 months agoUpdate IO-Compress to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:48:50 +0000 (19:48 +0100)]
Update IO-Compress to CPAN version 2.087

  [DELTA]

  2.087 10 August 2019

      * IO::Uncompress::Unzip
        nextStream not updating filehandle correctly
        https://github.com/pmqs/IO-Compress/issues/3
        25152f04f5b1bd9341502e42a5877c72eac3f291

      * Added travis & appveyor files for CI in GitHub

20 months agoUpdate Compress-Raw-Bzip2 to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:47:03 +0000 (19:47 +0100)]
Update Compress-Raw-Bzip2 to CPAN version 2.087

  [DELTA]

  2.087 10 August 2019

      * No Changes

20 months agoUpdate Compress-Raw-Zlib to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:45:34 +0000 (19:45 +0100)]
Update Compress-Raw-Zlib to CPAN version 2.087

  [DELTA]

2.087 10 August 2019

      * clang warning in ppport.h
        update to latest ppport.h
        https://github.com/pmqs/Compress-Raw-Zlib/issues/1
        664a5fbacf778acdd4cfbcc571997f3df5ee43d3

20 months agoUpdate Scalar-List-Utils to CPAN version 1.51
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 09:27:18 +0000 (10:27 +0100)]
Update Scalar-List-Utils to CPAN version 1.51

  [DELTA]

1.51 -- 2019-08-08 14:31:32
  [CHANGES]
   * Add TO_JSON to List::Util::_Pair (thanks ilmari)
   * Various minor docs fixes

  [BUGFIXES]
   * Don't segfault in subname() on deleted stashes (thanks ilmari)
   * Fix uniqnum for large floats and numeric strings (thanks ilmari)

20 months agoperlapi: Document isALNUMC and variants
Karl Williamson [Fri, 9 Aug 2019 17:01:45 +0000 (11:01 -0600)]
perlapi: Document isALNUMC and variants

20 months agoperlapi: my_sprintf is a Miscellaneous function
Karl Williamson [Mon, 5 Aug 2019 00:13:39 +0000 (18:13 -0600)]
perlapi: my_sprintf is a Miscellaneous function

20 months agoperlapi: sortsv_flags is an SV function
Karl Williamson [Mon, 5 Aug 2019 00:06:07 +0000 (18:06 -0600)]
perlapi: sortsv_flags is an SV function

20 months agoperlapi: save_gp is a GV function
Karl Williamson [Mon, 5 Aug 2019 00:03:57 +0000 (18:03 -0600)]
perlapi: save_gp is a GV function

20 months agoperlapi: Reword some isFOO char classification docs
Karl Williamson [Mon, 5 Aug 2019 03:00:36 +0000 (21:00 -0600)]
perlapi: Reword some isFOO char classification docs

The input to these isn't restricted to a byte, and some minor
clarifications.

20 months agoperlapi: 5.30 promise not met; change to 5.32
Karl Williamson [Sat, 3 Aug 2019 15:17:43 +0000 (09:17 -0600)]
perlapi: 5.30 promise not met; change to 5.32

We delayed this change, but I forgot to change this documentation

20 months agoregcomp.c: Don't read off the end of buffer
Karl Williamson [Thu, 27 Jun 2019 21:39:11 +0000 (15:39 -0600)]
regcomp.c: Don't read off the end of buffer

Until this commit, it was possible that \p{nv=3/} would cause the right
brace to be considered part of the property name.

Spotted by Hugo van der Sanden

20 months agofix size-miscalculation upgrading LISTOP TO LOOPOP
David Mitchell [Fri, 9 Aug 2019 10:11:19 +0000 (11:11 +0100)]
fix size-miscalculation upgrading LISTOP TO LOOPOP

RT #134344

My recent commit v5.31.2-54-g8c47b5bce7 broke some CAN modules because
the code in Perl_newFOROP() wasn't accounting for the overhead in the
opslot struct when deciding whether an allocated LISTOP was large enough
to be upgraded in-place to a LOOPOP.

20 months agoAPIify and document several interpreter variables
Tony Cook [Thu, 8 Aug 2019 05:56:58 +0000 (15:56 +1000)]
APIify and document several interpreter variables

20 months agoPERL_DESTRUCT_LEVEL no longer requires a -DDEBUGGING build
Tony Cook [Thu, 8 Aug 2019 05:53:31 +0000 (15:53 +1000)]
PERL_DESTRUCT_LEVEL no longer requires a -DDEBUGGING build

20 months ago(perl #132777) APIify and document PL_perl_destruct_level
Tony Cook [Thu, 31 Jan 2019 04:39:39 +0000 (15:39 +1100)]
(perl #132777) APIify and document PL_perl_destruct_level

This is documented in perlembed.  It's only rarely used on CPAN
but it's pretty basic.

20 months ago(perl #132777) document (sort of) and APIify PL_runops
Tony Cook [Thu, 31 Jan 2019 04:25:05 +0000 (15:25 +1100)]
(perl #132777) document (sort of) and APIify PL_runops

This is documented in perlguts in such a way that it appears be
effectively API, so APIify it.

It's used on CPAN in a small number of modules.

20 months ago(perl #132777) document and APIify PL_parser
Tony Cook [Thu, 31 Jan 2019 04:06:41 +0000 (15:06 +1100)]
(perl #132777) document and APIify PL_parser

Used in a few places on CPAN, either to check or modify the
compilation error count, or to do a little parsing via bufptr.

20 months ago(perl #132777) document and APIify PL_defgv
Tony Cook [Thu, 31 Jan 2019 03:52:14 +0000 (14:52 +1100)]
(perl #132777) document and APIify PL_defgv

This is used occasionally on CPAN, typically to access $_.

20 months ago(perl #132777) APIify and document PL_curstash
Tony Cook [Thu, 31 Jan 2019 03:35:52 +0000 (14:35 +1100)]
(perl #132777) APIify and document PL_curstash

per leont: I can't think of any reason not to make PL_curstash API,
it's both common, useful, simple, and highly unlikely to ever need
change.

20 months ago(perl #132777) document and add PL_curcop to the API
Tony Cook [Thu, 31 Jan 2019 03:04:52 +0000 (14:04 +1100)]
(perl #132777) document and add PL_curcop to the API

PL_curcop is used fairly widely on CPAN, mostly to get the current
line number and file, to check lexical hints, or to check the
stash.

20 months ago(perl #132777) document PL_exit_flags
Tony Cook [Thu, 31 Jan 2019 02:37:44 +0000 (13:37 +1100)]
(perl #132777) document PL_exit_flags

PL_exit_flags is referred to in perlembed, perldiag and two
perldeltas, so APIify and document it.

20 months agoperldelta for 933e3e630076
Tony Cook [Thu, 8 Aug 2019 04:35:51 +0000 (14:35 +1000)]
perldelta for 933e3e630076

20 months ago(perl #134266) make sure $@ is writable when we write to it
Tony Cook [Mon, 5 Aug 2019 05:23:45 +0000 (15:23 +1000)]
(perl #134266) make sure $@ is writable when we write to it

when unwinding.

Since except_sv might be ERRSV we try to preserve it's value,
if not the actual SV (which we have an extra refcount on if it is
except_sv).

20 months agobump $Storable::VERSION and update ChangeLog
Tony Cook [Thu, 8 Aug 2019 01:58:23 +0000 (11:58 +1000)]
bump $Storable::VERSION and update ChangeLog

20 months agominimally document the stacksize tool
Tony Cook [Tue, 6 Aug 2019 00:54:25 +0000 (10:54 +1000)]
minimally document the stacksize tool

20 months agomove Storable CAN_FLOCK computation into XS
Graham Knop [Sat, 20 Apr 2019 10:53:06 +0000 (12:53 +0200)]
move Storable CAN_FLOCK computation into XS

At build time, Storable would check if it could use flock based on some
Config values, and generate the final Storable.pm file using tha value.
This was done to avoid needing to load Config at runtime.  This adds
complexity to the build process.

A simpler option is to build the constant in the XS code.  This means
the build process can be entirely standard for XS.

Some slight adjustments to the code are needed to load the XS module at
BEGIN time, so that the contant is available in the rest of the file.

20 months agoremove remains of Storable stack size detection
Graham Knop [Sat, 20 Apr 2019 10:44:52 +0000 (12:44 +0200)]
remove remains of Storable stack size detection

At build time, Storable used to detect the stack limits and store them.
This was removed in 2a0bbd31bbcc94c7c511f9575df619c5fdf3164c.  That
removed the Limit module and the setup for building it, but left behind
the script used to detect the limits.

Clean up the script and some related bits in the Makefile.PL.

TonyC: retain stacksize, so end users can use it to choose limits

20 months agoperldelta for d1bc97feec1a
Tony Cook [Thu, 8 Aug 2019 01:18:38 +0000 (11:18 +1000)]
perldelta for d1bc97feec1a

20 months ago(perl #133695) "0".."-1" should act like 0..-1
Hauke D [Fri, 30 Nov 2018 12:06:07 +0000 (13:06 +0100)]
(perl #133695) "0".."-1" should act like 0..-1

Previously, *any* string beginning with 0, including the string "0"
itself, would be subject to the magic string auto-increment, instead of
being treated like a number. This meant that "-2".."-1" was the same as
-2..-1 and "1".."-1" was the same as 1..-1, but "0".."-1" was the same
as "0".."99".

This patch fixes that inconsistency, while still allowing ranges like
"01".."31" to produce the strings "01", "02", ... "31", which is what
the "begins with 0" exception was intended for.

This patch also expands the documentation in perlop and states the rules
for the range operator in list context with both operands being strings
more explicitly.

See also #18165 and #18114.

20 months agobump $PerlIO::via::VERSION
Tony Cook [Thu, 8 Aug 2019 00:09:01 +0000 (10:09 +1000)]
bump $PerlIO::via::VERSION

20 months agoPerlIO::Via: check arg is non-NULL before using it.
Tony Cook [Wed, 7 Aug 2019 04:58:14 +0000 (14:58 +1000)]
PerlIO::Via: check arg is non-NULL before using it.

I can't find any code in core that ends up calling the _pushed handler
with arg == NULL, but PerlIO_push() is API, and there might be
CPAN or DarkPAN code out there that does, escpecially since there's
a check for arg being non-NULL further down.

CID 169261.

20 months agoStorable: make count large enough
Tony Cook [Wed, 7 Aug 2019 01:13:53 +0000 (11:13 +1000)]
Storable: make count large enough

AvARRAY() could be very large, and we check for that at line 3807,
but int was (potentially) too small to make that comparison
meaningful.

CID 174681.

20 months agolocale.c: Stop Coverity warning
Karl Williamson [Wed, 7 Aug 2019 03:29:22 +0000 (21:29 -0600)]
locale.c: Stop Coverity warning

Coverity is right, so re-order these clauses.  This code is executed
only if some very strange error occurs.

20 months agoRevert "Revert "postpone perl_parse() exit(0) bugfix""
Tony Cook [Wed, 7 Aug 2019 00:45:52 +0000 (10:45 +1000)]
Revert "Revert "postpone perl_parse() exit(0) bugfix""

This reverts commit 2773b4f50f991900e38d33daace2b9c6a0902c6a.

I haven't made much progress in resolving the problems this produces
downstream, so rather than leaving it broken, I'll revert it until
they can be solved.

20 months agoavoid use-after free in /(?{...})/
David Mitchell [Wed, 19 Jun 2019 12:03:22 +0000 (13:03 +0100)]
avoid use-after free in /(?{...})/

RT #134208

In something like

    eval { sub { " " }->() =~ /(?{ die })/ }

When the match string gets aliased to $_, the SAVE_DEFSV is done after the
SAVEDESTRUCTOR_X(S_cleanup_regmatch_info_aux).  So if croaking, the SV
gets SvREFCNT_dec()ed by the SAVE_DEFSV, then S_cleanup_regmatch_info_aux()
manipulates the SV's magic.

This doesn't cause a problem unless the match string is temporary, in
which case the only other reference keeping it alive will be removed
by the FREETMPs during the croak.

The fix is to make sure an extra ref to the sv is held.

20 months agoinclude a trailing \0 in SVs holding trie info
David Mitchell [Tue, 6 Aug 2019 13:36:45 +0000 (14:36 +0100)]
include a trailing \0 in SVs holding trie info

RT #13427

TRIE_STORE_REVCHAR() was creating SvPV()s with no trailing '\0'. This
doesn't really matter given the specialised use these are put to, but
it upset valgrind et al when perl was run with -Drv which printf("%s")'s
the contents of the string.

20 months agoUpdate Win32 to CPAN version 0.53
Chris 'BinGOs' Williams [Tue, 6 Aug 2019 10:47:02 +0000 (11:47 +0100)]
Update Win32 to CPAN version 0.53

  [DELTA]

0.53  [2019-08-05]
        - improve Win32::GetOSDisplayName
        - added Win2016/2019 detection and version information by
          Richard Leach [PR/15]
        - Include wchar.h to allow building with g++ by Tony Cook [rt#127836]

0.52_02 [2018-11-02] by Reini Urban
        - added () usage croaks.
        - Fixed a -Warray-bounds buffer overflow in LONGPATH,
        - Fix various -Wunused warnings
          and two -Wmaybe-uninitialized.

0.52_01 [2017-11-30]
        - add missing const

20 months agoop_dump(): display a wild parent pointer.
David Mitchell [Mon, 5 Aug 2019 15:22:30 +0000 (16:22 +0100)]
op_dump(): display a wild parent pointer.

Normally the PARENT is displayed only for top-level ops: lower-level
ops have the obvious parent.

This commit adds a check that a lower-level op has a valid parent (i.e.
non-null, points to an op with OPf_KIDS and one of the kids is us).
If these checks fails, the raw content of op_sibparent is displayed.

20 months agoI18N::LangTags: minor clarification
David Cantrell [Thu, 11 Jul 2019 11:04:40 +0000 (12:04 +0100)]
I18N::LangTags: minor clarification

Don't imply that there are other undocumented env vars in play

20 months agoI18N::LangTags: document IGNORE_WIN32_LOCALE
David Cantrell [Thu, 11 Jul 2019 11:03:20 +0000 (12:03 +0100)]
I18N::LangTags: document IGNORE_WIN32_LOCALE

20 months agoI18N::LangTags: bump version
David Cantrell [Thu, 11 Jul 2019 11:35:58 +0000 (12:35 +0100)]
I18N::LangTags: bump version

20 months ago[MERGE] slim down opslot structure.
David Mitchell [Mon, 5 Aug 2019 10:35:08 +0000 (11:35 +0100)]
[MERGE] slim down opslot structure.

When OPs are allocated from a slab (the normal case), what are actually
allocated from the slab are opslot structs, which consist of an OP plus
two pointers.

The branch reduces those two pointers to two U16s, which saves 8 bytes
per op on a 64-bit system.

A further 8 bytes could be saved if those two U16s were included as
extra fields in the OP structure (and the opslot struct disposed of),
but unfortunately too much code does things like Zero(o) or Copy(o1,o2)
which would obliterate the allocation info contained in those two U16s.

20 months agoPerl_opslab_force_free() adjust loop test
David Mitchell [Tue, 16 Jul 2019 15:30:42 +0000 (16:30 +0100)]
Perl_opslab_force_free() adjust loop test

Formerly, slots were allocated within a slab, but leaving the very top
word in the slab as a NULL pointer which appeared as a fake slot so that
a 'while (slot->opslot_next)' loop would stop. Since opslot_next has
been eradicated and the NULL is no longer allocated, the loop condition
for scanning all slots can be simplified slightly (with no change in
functionality).

20 months agoOPSLOT: replace opslot_next with opslot_size
David Mitchell [Tue, 16 Jul 2019 15:14:58 +0000 (16:14 +0100)]
OPSLOT: replace opslot_next with opslot_size

Currently, each allocated opslot has a pointer to the opslot that was
allocated immediately above it. Replace this with a U16 opslot_size field
giving the size of the opslot. The next opslot can then be found by
adding slot->opslot_size * sizeof(void*) to slot.

This saves space.

20 months agostruct opslot: document a field better
David Mitchell [Mon, 15 Jul 2019 10:55:27 +0000 (11:55 +0100)]
struct opslot: document a field better

20 months agoopslabs: change opslab_first to opslab_free_space
David Mitchell [Sat, 13 Jul 2019 19:27:45 +0000 (20:27 +0100)]
opslabs: change opslab_first to opslab_free_space

Currently a OPSLAB maintains a pointer to the lowest allocated OPSLOT
within the slab (slots are allocated downwards). Replace this pointer
with a U16 indicating how many pointer-sized words are free below the
lowest allocated slot.

20 months agoOPSLAB: always have opslab_size field
David Mitchell [Sat, 13 Jul 2019 17:53:08 +0000 (18:53 +0100)]
OPSLAB: always have opslab_size field

Currently this struct only has the opslab_size field on debugging
builds. Change it so that this field is always present. This will make
it easier to not need a fake partial OPSLOT at the end of the slab with
a NULL opslot_next field, which will in turn simplify converting
opslot_next into  U16 size field shortly.

20 months agomake opslot_slab an offset in current slab
David Mitchell [Sat, 13 Jul 2019 17:43:30 +0000 (18:43 +0100)]
make opslot_slab an offset in current slab

Each OPSLOT allocated within an OPSLAB contains a pointer, opslot_slab,
which points back to the first (head) slab of the slab chain (i.e. not
necessarily to the slab which the op is contained in).

This commit changes the pointer to be a 16-bit offset from the start of
the current slab, and adds a pointer at the start of each slab which
points back to the head slab.

The mapping from an op to the head slab is now a two-step process: use
the op's slot's opslot_offset field to find the start of the current
slab, then use that slab's new opslab_head pointer to find the head
slab.

The advantage of this is that it reduces the storage per op.  (It
probably doesn't make any practical difference yet, due to alignment
issues, but that will will be sorted shortly in this branch.)

20 months agoPerl_Slab_Alloc(): rename 'slab' to 'head_slab'
David Mitchell [Sat, 13 Jul 2019 16:52:51 +0000 (17:52 +0100)]
Perl_Slab_Alloc(): rename 'slab' to 'head_slab'

Rename this local var to better identify that it always points to the
first slab in the slab chain, rather than to the current slab.

20 months agoautodoc.pl: Forget heuristics, we have a flag
Karl Williamson [Wed, 31 Jul 2019 19:35:55 +0000 (13:35 -0600)]
autodoc.pl: Forget heuristics, we have a flag

We know if something is a macro because of the 'm' flag.  Don't use the
fallible heuristics to try to determine this.

20 months agoautodoc.pl: Warn if entry missing d flag but has docs
Karl Williamson [Wed, 31 Jul 2019 19:33:19 +0000 (13:33 -0600)]
autodoc.pl: Warn if entry missing d flag but has docs

If you have documention, you're supposed to say so, so that the tools
will work properly.

20 months agoembed.fnc: Note functions that have documentation
Karl Williamson [Wed, 31 Jul 2019 19:26:13 +0000 (13:26 -0600)]
embed.fnc: Note functions that have documentation

A bunch of functions actually were documented, but this fact was omitted
in embed.fnc.

20 months agonumeric.c: Fix typo in pod
Karl Williamson [Wed, 31 Jul 2019 19:20:51 +0000 (13:20 -0600)]
numeric.c: Fix typo in pod

20 months agoembed.fnc: Fix typo in comment
Karl Williamson [Wed, 31 Jul 2019 19:19:15 +0000 (13:19 -0600)]
embed.fnc: Fix typo in comment

20 months agopad.h: Parameters to many functions are ptrs
Karl Williamson [Wed, 31 Jul 2019 19:16:03 +0000 (13:16 -0600)]
pad.h: Parameters to many functions are ptrs

The apidoc entries for 22 functions forgot that the parameters were
pointers to the type.  Since these are macros, this error wasn't caught
until Devel::PPPort tried to generate a test case for them.

20 months agoautodoc.pl: Fix typo in comment
Karl Williamson [Wed, 31 Jul 2019 19:37:09 +0000 (13:37 -0600)]
autodoc.pl: Fix typo in comment

20 months agoFix typo in STORE_LC_NUMERIC_SET_TO_NEEDED_IN docs
Dagfinn Ilmari Mannsåker [Wed, 31 Jul 2019 15:41:10 +0000 (16:41 +0100)]
Fix typo in STORE_LC_NUMERIC_SET_TO_NEEDED_IN docs

20 months ago[perl #134172] perldelta
Hugo van der Sanden [Wed, 31 Jul 2019 12:29:49 +0000 (13:29 +0100)]
[perl #134172] perldelta

20 months ago[perl #134172] Avoid multiple checks of IN_LC(LC_NUMERIC)
Hugo van der Sanden [Mon, 22 Jul 2019 16:08:45 +0000 (17:08 +0100)]
[perl #134172] Avoid multiple checks of IN_LC(LC_NUMERIC)

This adds new API macros STORE_LC_NUMERIC_SET_TO_NEEDED_IN and
WITH_LC_NUMERIC_SET_TO_NEEDED_IN that accept a precalculated value
for the hints checks of IN_LC(LC_NUMERIC).

20 months ago[perl #134172] restrict scope of locale changes during sprintf
Hugo van der Sanden [Mon, 22 Jul 2019 15:29:13 +0000 (16:29 +0100)]
[perl #134172] restrict scope of locale changes during sprintf

In some environments we must hold a mutex for the duration of a temporary
locale change, so we must ensure that mutex is released appropriately.
This means intervening code must not croak, or otherwise bypass the
unlock.

In sv_vcatpvfn_flags(), that requirement was violated when attempting
to avoid multiple temporary locale changes by collapsing them into
a single one. This partially undoes that to fix the problem, while
still attempting to retain some of the benefits by caching the
expensive hints check.

20 months agoperldelta for 8348ac19a3c3
Tony Cook [Wed, 31 Jul 2019 01:14:50 +0000 (11:14 +1000)]
perldelta for 8348ac19a3c3

20 months ago(perl #134310) don't confuse S_no_op()
Tony Cook [Wed, 31 Jul 2019 01:06:20 +0000 (11:06 +1000)]
(perl #134310) don't confuse S_no_op()

This code could previously set PL_bufptr so it points after the
returned s pointer, which S_no_op() asserts on for the test case.

Since setting PL_bufptr here is useful when producing the error
message, just make sure we restore it.

20 months agoRecommend chdir after chroot more strongly
Andrew Hewus Fresh [Thu, 25 Jul 2019 18:00:46 +0000 (11:00 -0700)]
Recommend chdir after chroot more strongly

On Thu, Jul 25, 2019 at 09:35:44AM -0600, Theo de Raadt wrote:
> It is mandatory because otherwise a program-user can arrange for cwd
> to be outside the jail, and utilize that fact to pivot, and in some
> program path utilizations the chroot then becomes not just pointless..
> it is worse than normal, because it creates a dual-namespace view of
> the filesystem, that is a condition that program and libraries are not
> prepared to operate in.

https://marc.info/?l=openbsd-misc&m=156406908805913&w=2

20 months agovms/vms.c: fix unused relational comparison result
Alexandr Savca [Wed, 24 Jul 2019 09:13:05 +0000 (12:13 +0300)]
vms/vms.c: fix unused relational comparison result

Closes [perl #134307].

20 months agoConfigure: reuse "cached" value of "none" for dir
H.Merijn Brand [Thu, 25 Jul 2019 14:09:55 +0000 (16:09 +0200)]
Configure: reuse "cached" value of "none" for dir

When value of a directory (i.e. man1dir) is set to "none" because of:
- '-D' option set on cmdline (i.e. -Dman1dir=none) OR
- because value is reused from previous configure run

And when the prefix is different from the previous configure run(*) then
keep the value of "none". predefined/cached value does not contain the
old prefix so there is no harm in keeping it.

(*): due to another bug this also happens when prefix ends with a
     trailing slash

See https://rt.perl.org/Ticket/Display.html?id=134284

20 months agoRemove trailing '/' from prefix
H.Merijn Brand [Thu, 25 Jul 2019 13:53:40 +0000 (15:53 +0200)]
Remove trailing '/' from prefix

Change how/when the trailing '/' from a prefix is removed.

The original code had two problems:

1) it only stripped the trailing slash when value was predefined
   (either from -Dprefix=/foo/bar/ or from a previous configure run)
2) when it did strip the value then it also caused 'oldprefix' to
   be set. This in turns causes other predefined (/cached) paths to
   be ignored.

See https://rt.perl.org/Public/Bug/Display.html?id=134284