This is a live mirror of the Perl 5 development currently hosted at
3 years agoIn some systems st.ino is never negative.
Jarkko Hietaniemi [Tue, 28 Nov 2017 05:22:07 +0000 (07:22 +0200)]
In some systems st.ino is never negative.

(Like HP-UX.)

3 years agoUse UINT64_C() for 64-bit constant.
Jarkko Hietaniemi [Tue, 28 Nov 2017 05:19:01 +0000 (07:19 +0200)]
Use UINT64_C() for 64-bit constant.

3 years agoAPItest: Add ability to test API fcn utf8_length()
Karl Williamson [Mon, 27 Nov 2017 21:44:23 +0000 (14:44 -0700)]
APItest: Add ability to test API fcn utf8_length()

3 years agoAPItest: Initialize parameter
Karl Williamson [Mon, 27 Nov 2017 21:43:13 +0000 (14:43 -0700)]
APItest: Initialize parameter

This silences a compiler warning

3 years agoinline.h: White-space only
Karl Williamson [Mon, 27 Nov 2017 00:19:49 +0000 (17:19 -0700)]
inline.h: White-space only

Mostly this indents some code that the previous commit created blocks

3 years agoUse is_utf8_invariant_string() more
Karl Williamson [Mon, 27 Nov 2017 00:06:44 +0000 (17:06 -0700)]
Use is_utf8_invariant_string() more

Now that this function was changed to do word-at-a time searching in
commit e17544a60909ed9555c0dad7cd24afc40eb736e7, we can more quickly
find the first variant byte in a string, if any.  Given that a lot of
usage of Perl is on ASCII data, it makes sense to try this first before
any byte-at-a-time processing.

Since Perl can be used on things that are mostly non-ASCII, we give up
at the first such one, and process the rest of the string byte-by-byte.
Otherwise we could have a pipeline of finding the next variant quickly,
but this would only be faster if variants were rare, which I don't feel
we can be confident about, after finding at least one.

3 years agoFix and clarify the pod for utf8_length()
Karl Williamson [Mon, 27 Nov 2017 05:32:58 +0000 (22:32 -0700)]
Fix and clarify the pod for utf8_length()

Contrary to what it previously said, it does not croak.  This clarifies
what happens if the start and end pointers have the same value.

3 years agotoke.c: Don’t leak memory
Father Chrysostomos [Mon, 27 Nov 2017 00:33:09 +0000 (16:33 -0800)]
toke.c: Don’t leak memory

3 years agoperldelta for 2cb35ee01 / #132485
Father Chrysostomos [Mon, 27 Nov 2017 00:28:51 +0000 (16:28 -0800)]
perldelta for 2cb35ee01 / #132485

3 years agosort perldiag
Father Chrysostomos [Sun, 26 Nov 2017 21:50:30 +0000 (13:50 -0800)]
sort perldiag

3 years ago[perl #132485] Warn about "$foo'bar"
Father Chrysostomos [Sun, 26 Nov 2017 21:41:27 +0000 (13:41 -0800)]
[perl #132485] Warn about "$foo'bar"

3 years agotoke.c: Comment typo
Father Chrysostomos [Sat, 25 Nov 2017 18:07:28 +0000 (10:07 -0800)]
toke.c: Comment typo

3 years agoexpect -k to be overloadable on Win32
Zefram [Sun, 26 Nov 2017 18:20:10 +0000 (18:20 +0000)]
expect -k to be overloadable on Win32

Since commit a6c31837e629c46be2f7496149b36a4b79f93484, the -k filetest
operator works more coherently on Win32, in that it now stats the
requested file and only returns a non-error false result for an extant
file.  This makes it respect string overloading on its argument, which
was previously ignored.  A test of string overloading for filetests
was expecting string overloading to be ignored for -k on Win32, and now
needs to have no such exception.

3 years agoPOSIX.xs: Convert to use is_utf8_non_invariant_string()
Karl Williamson [Sat, 18 Nov 2017 21:21:49 +0000 (14:21 -0700)]
POSIX.xs: Convert to use is_utf8_non_invariant_string()

In localeconv()

3 years agotoke.c: Convert to use is_utf8_non_invariant_string
Karl Williamson [Sat, 18 Nov 2017 21:17:30 +0000 (14:17 -0700)]
toke.c: Convert to use is_utf8_non_invariant_string

3 years agomg.c: Convert to use is_utf8_non_invariant_string()
Karl Williamson [Sat, 18 Nov 2017 21:16:26 +0000 (14:16 -0700)]
mg.c: Convert to use is_utf8_non_invariant_string()

3 years agoAdd is_utf8_non_invariant_string()
Karl Williamson [Sat, 18 Nov 2017 21:05:07 +0000 (14:05 -0700)]
Add is_utf8_non_invariant_string()

This function tells whether or not its argument is a sequence of bytes
that is legal Perl-extended-UTF-8, and which either requires UTF-8
(because it contains wide characters) or would have a different
representation when not under UTF-8.

This paradigm is used in several places in the perl core to decide
whether to turn on an SV's utf8 flag.  None of those places realized
that there was a simple way to avoid rescanning the string (though
perhaps a good C optimizer would).  This commit creates a funtion that
does this task without the rescan; the next commits will convert to use
this function.

3 years agoChange 3 functions to be #defines of others
Karl Williamson [Sat, 18 Nov 2017 20:52:44 +0000 (13:52 -0700)]
Change 3 functions to be #defines of others

I made these separate functions because I thought it would make faster
code, but I realized that modern compilers should be able to optimize
the more general functions into the same code as the ones removed by
this commit, given that the parameters are known to be 0 at compile

It's easier to maintain one version of a function than two, so this
commit favors that.

3 years agoinline.h: Avoid some extra strlen()
Karl Williamson [Sat, 18 Nov 2017 04:59:59 +0000 (21:59 -0700)]
inline.h: Avoid some extra strlen()

The API of these functions says that if the length is 0, strlen() is
called to compute it.  In several cases, control is handed off to a
function using 0, throwing away the already-computed length.  Change
to use the computed length when calling the functions, avoiding the

3 years agosv_utf8_decode: Reverse order of tests for speed
Karl Williamson [Sat, 25 Nov 2017 04:56:09 +0000 (21:56 -0700)]
sv_utf8_decode: Reverse order of tests for speed

Not that we have a fast is_utf8_invariant_string_loc(), use it first to
quickly find any variants.  Then use is_utf8_string() from then on.
This is the reverse order as to how it worked before this commit.  This
speeds things up two ways: 1) we use the faster function first, and 2)
use the information it returns to avoid reparsing the string starting at
the beginning.

3 years agopp_sys.c: Avoid reparsing string
Karl Williamson [Sat, 18 Nov 2017 23:36:45 +0000 (16:36 -0700)]
pp_sys.c: Avoid reparsing string

By using is_utf8_invariant_string_loc() instead of plain
is_utf8_invariant_string(), we can start parsing at the first variant
(if any is found) instead of the previous behavior of starting again at
the beginning of the string.

3 years agominiperl/minitest cannot do these tests.
Jarkko Hietaniemi [Fri, 24 Nov 2017 06:00:20 +0000 (08:00 +0200)]
miniperl/minitest cannot do these tests.

3 years agotoke.c lex_stuff_pvn(): Use fcn, not handrolled code
Karl Williamson [Thu, 23 Nov 2017 06:13:29 +0000 (23:13 -0700)]
toke.c lex_stuff_pvn(): Use fcn, not handrolled code

Use the inline function that accomplishes the same thing as this
hand-rolled code.  The inline function should generate the same thing on
ASCII platforms, but be faster on EBCDIC ones.

3 years agomktables: Avoid some work
Karl Williamson [Tue, 21 Nov 2017 18:44:11 +0000 (11:44 -0700)]
mktables: Avoid some work

Some tables generated by this program are completely described as the
complements of other tables.  There is no need to thus generate them, as
when their value is needed, they can be generated from the other one.
However, this takes time, and so this commit caches the result the first
time it is needed, and returns that for any future needs.

This must not be done until after the controlling table is fully
populated, or else the cache would have to be invalidated.  Since there
is unlikely to be the need for getting the value before the populating
is one, What is done here is to simply lock the controlling table, so
that any attempt to change it will raise an error, and the code can be
fixed at that time, if the need ever does arise.

3 years agodoop.c: Change to use is_utf8_invariant_string()
Karl Williamson [Wed, 22 Nov 2017 22:39:13 +0000 (15:39 -0700)]
doop.c: Change to use is_utf8_invariant_string()

This commit changes 3 occurrences of byte-at-a-time looking to see if a
string is invariant under UTF-8, to using the inlined
is_utf8_invariant_string() which now does much faster word-at-a-time

3 years agoSearch for UTF-8 invariants by word
Karl Williamson [Wed, 15 Nov 2017 17:19:33 +0000 (10:19 -0700)]
Search for UTF-8 invariants by word

The functions is_utf8_invariant_string() and
is_utf8_invariant_string_loc() are used in several places in the core
and are part of the public API.  This commit speeds them up
significantly on ASCII (not EBCDIC) platforms, by changing to use
word-at-a-time parsing instead of per-byte.  (Per-byte is retained for
any initial bytes to reach the next word boundary, and any final bytes
that don't fill an entire word.)

The following results were obtained parsing a long string on a 64-bit
word machine:

        byte   word
       ------ ------
    Ir 100.00 665.35
    Dr 100.00 797.03
    Dw 100.00 102.12
  COND 100.00 799.27
   IND 100.00  97.56

COND_m 100.00 144.83
 IND_m 100.00  75.00

 Ir_m1 100.00 100.00
 Dr_m1 100.00 100.02
 Dw_m1 100.00 104.12

 Ir_mm 100.00 100.00
 Dr_mm 100.00 100.00
 Dw_mm 100.00 100.00

100% is baseline; numbers larger than that are improvements.  The COND
measurement indicates, for example, that there 1/8 as many conditional
branches in the word-at-a-time version.

3 years agoutf8.c: White-space only
Karl Williamson [Thu, 23 Nov 2017 06:18:04 +0000 (23:18 -0700)]
utf8.c: White-space only

Properly outdent 2 lines

3 years ago[MERGE] t/TEST -deparse fixups
David Mitchell [Thu, 23 Nov 2017 10:45:59 +0000 (10:45 +0000)]
[MERGE] t/TEST -deparse fixups

One of my occasional attempts to fix regressions in 'TEST -deparse' -
which runs every test script through the deparser, then tries to execute

This branch fixes the following regressing scripts:


and updates Porting/deparse-skips.txt to note the following
expected-to-fail scripts are now passing:


and marks the following as a new expected-fail (due to hard-coded line
numbers in tests):


3 years agoupdate Porting/deparse-skips.txt
David Mitchell [Wed, 22 Nov 2017 23:13:47 +0000 (23:13 +0000)]
update Porting/deparse-skips.txt

Since the last update (Jun 2017), one test script has stopped passing
under 't/TEST -deparse':


due to hard-code expected line numbers in tests for warning messages;
while the following test scripts have started passing:


3 years agoautouse: fix autouse.t deparsing
David Mitchell [Wed, 22 Nov 2017 17:38:42 +0000 (17:38 +0000)]
autouse: fix autouse.t deparsing

autouse.t uses B as a random test XS module which it can defer loading.
However, B recently changed to not use Exporter, which upsets autouse:
but *only* when running under 't/TEST -deparse'. I'm not sure why it only
fails then, but in any case, this commit changes it so that it uses
Hash::Util instead.

3 years agoDeparse: handle warnings NOFATAL
David Mitchell [Wed, 22 Nov 2017 17:01:04 +0000 (17:01 +0000)]
Deparse: handle warnings NOFATAL

In general, Deparse currently outputs 'use warnings foo' as


or similar, except that it special-cases all bits being set or unset as

    use warnings;
    no warnings;

This failed for something like

    use warnings FATAL => all;
        use warnings NOFATAL => all;

since was deparing the NOFATAL line as a simple

    use warnings;

which is wrong.

So don't just see whehter the final bit pattern matches 'use/no warnings';
also see whether there are any other bits which need turning off.

3 years agoDeparse: handle state attributes
David Mitchell [Wed, 22 Nov 2017 16:03:29 +0000 (16:03 +0000)]
Deparse: handle state attributes

It already correctly deparses e.g.

    my $x :shared = 1;

Now that attributes are legal on state vars, extend deparsing to them too:

    state $x :shared = 1;

Also, rename maybe_my_attr() to maybe_var_attr() to reflect its widened

3 years agoDeparse: don't parenthesise state @a = ...
David Mitchell [Wed, 22 Nov 2017 13:32:03 +0000 (13:32 +0000)]
Deparse: don't parenthesise state @a = ...

It was deparsing

    state @a = ...


    (state(@a)) = ...

(and similarly for CORE::state(...))

However, a list assign of a state array/hash is currently only legal
in the absence of parens.

3 years agoTEST -deparse: don't list unexpected pass as fail
David Mitchell [Wed, 22 Nov 2017 12:25:28 +0000 (12:25 +0000)]
TEST -deparse: don't list unexpected pass as fail

When running a test script under TEST -deparse, if it passes, but
according to Porting/deparse-skips.txt it was expected to fail, then
don't list it as a failing test. It wil still get listed at the end
in the section on unexpected passes, so there's no need to list it twice.

3 years agoDon't Deparse "${$}abc" as "$$abc"
David Mitchell [Wed, 22 Nov 2017 12:14:42 +0000 (12:14 +0000)]
Don't Deparse "${$}abc" as "$$abc"

This fixes ./TEST -deparse op/stat.t

This only fixes multiconcat - in theory concat suffers from the same bug,
although in practice any concat expression involving at least one constant
string will be upgraded to multiconcat.

3 years agoDeparse: avoid upgrading RV to GV in stash entries
David Mitchell [Wed, 22 Nov 2017 09:51:24 +0000 (09:51 +0000)]
Deparse: avoid upgrading RV to GV in stash entries

As well as being undesirable in its own right, it was causing some subs
not to be deparsed.

In something like

    package Foo;
    sub f { ... }
    *g = \&f;

The stash entry $Foo::{f} is an RV pointing to the CV, while $Foo::{g} is
a GV whose CV slot points to the same CV.

That CV's CvNAME() will be 'f' and its CvSTASH() will point to %Foo::.

If Deparse attempts to process $Foo::{g} before $Foo::{f}, it will get a
GV and in that code path it does something like

    $cv = $gv->CV;
    next if $$gv != ${$cv->GV}; # Ignore imposters

The trouble is that $cv->GV calls (at the C level) CvGV(cv), which tries
to retrieve the GV stored in $Foo::{f}, and finding only an RV, upgrades
it to a GV.

This confuses Deparse, because it has already created objects for all the
stash's entries, so when it comes to process $Foo::{f}, it already
has a B::IV object for the RV (and so goes down the RV code path), but
further introspection of that object (such as flags) sees a GV,

Hence the 3 lines of code at the top of this text were being deparsed
without 'sub f {}' being emitted.

This has been a problem for a while, but only recently has the "RV->CV
instead of GV->CV" optimisation been applied outside of package main::,
and so become more noticeable.

3 years agoDeparse nested (($x .= ...) .= ...) correctly.
David Mitchell [Fri, 17 Nov 2017 12:47:07 +0000 (12:47 +0000)]
Deparse nested (($x .= ...) .= ...) correctly.

It was sometimes outputting '.=' as '.'.

Now that the OPpCONCAT_NESTED flag has been added to indicate
that OPf_STACKED has been set on a concat op as an optimisation rather than
indictating .=, it's easier to deparse CONCAT/OPf_STACKED correctly.

3 years agoadd OPpCONCAT_NESTED flag
David Mitchell [Fri, 17 Nov 2017 12:23:17 +0000 (12:23 +0000)]

This flag makes no functional difference to runtime (it merely flags
that an optimisation has been performed), but it will shortly be used to
assist Deparse and warnings.

OPf_STACKED, when set on a OP_CONCAT, normally indicates .=; but it
also gets set to optimise

    $a . $b . $c


    ($a . $b) .= $c

so that the first concat's PADTMP (which holds the result of $a.$b) can be
reused. Set a flag in this case to help deparse and warn distinguish the

3 years handle optimised-away keys() better
David Mitchell [Fri, 17 Nov 2017 11:16:08 +0000 (11:16 +0000)] handle optimised-away keys() better

keys() in void/scalar context optimises away the OP_KEYS op and handles
the action directly in the OP_PADHV or OP_RV2HV op.  However, Deparse
wasn't handling precedence correctly, so for example

    keys(%h) / 2

was being deparsed as

    keys %h/2

Also, keys wasn't being output as CORE::keys in the presence of

    sub keys {}

3 years agoUpgrade Compress-Raw-Zlib from version 2.075 to 2.076
Steve Hay [Thu, 23 Nov 2017 08:22:21 +0000 (08:22 +0000)]
Upgrade Compress-Raw-Zlib from version 2.075 to 2.076

3 years agoUpgrade Unicode-Collate from version 1.24 to 1.25
Steve Hay [Thu, 23 Nov 2017 08:20:09 +0000 (08:20 +0000)]
Upgrade Unicode-Collate from version 1.24 to 1.25

3 years agobisect-runner: Add --test-module option
Father Chrysostomos [Thu, 23 Nov 2017 02:41:52 +0000 (18:41 -0800)]
bisect-runner: Add --test-module option

See the POD documentation in the diff for details.

3 years agoSync ExtUtils-CBuilder with CPAN release 0.280230
Alberto Simões [Wed, 22 Nov 2017 16:21:21 +0000 (16:21 +0000)]
Sync ExtUtils-CBuilder with CPAN release 0.280230

    0.280230 - 2017-11-22


      - Updated Changes
      - Used OurPkgVersion instead of PkgVersion

3 years agoFix test failures in GCC "long doubles" builds on Windows
Steve Hay [Wed, 22 Nov 2017 08:22:55 +0000 (08:22 +0000)]
Fix test failures in GCC "long doubles" builds on Windows

Patch by on perl #132479.

3 years agoBump Carp to version 1.45
Nicolas R [Tue, 21 Nov 2017 22:58:14 +0000 (15:58 -0700)]
Bump Carp to version 1.45

Previous Carp update from 915a6810d3 was merged
after 5.27.6 release... so we need to bump
the release version.

3 years agofix wordwrapping on generated acknowledgements text
Karen Etheridge [Tue, 21 Nov 2017 22:43:04 +0000 (14:43 -0800)]
fix wordwrapping on generated acknowledgements text

experimentation reveals that 77 chars is just sufficient to produce
output such that gmail will not re-wrap the text and make release
announcements dreadfully ugly.

3 years agoadd link to announcement email
Karen Etheridge [Tue, 21 Nov 2017 22:42:48 +0000 (14:42 -0800)]
add link to announcement email

3 years agoCarp: optimize format_arg when arguments contain many references
J. Nick Koston [Thu, 12 Oct 2017 06:57:36 +0000 (01:57 -0500)]
Carp: optimize format_arg when arguments contain many references

RT #132274

This is a very minimal patch after RT discussion.
When using the CPAN version of UNIVERSAL::isa we cannot
use UNIVERSAL::isa on Carp without taking the risk of
going into one infinite loop.

As UNIVERSAL::isa on CPAN is the only one to advertise
a VERSION, we can use this value to disable the UNIVERSAL

Note version bump is not required as it already occurred
since v5.27.5 release.

Signed-off-by: Nicolas R <>
3 years agoFix release schedule
Sawyer X [Tue, 21 Nov 2017 14:12:04 +0000 (15:12 +0100)]
Fix release schedule

3 years agoBump Locale-Codes from 3.54 to 3.55
Sullivan Beck [Fri, 17 Nov 2017 15:59:43 +0000 (10:59 -0500)]
Bump Locale-Codes from 3.54 to 3.55

Includes perldelta entry noting its deprecation in core.

3 years agoupdate newGIVENOP() doc for loss of lexical $_
Zefram [Tue, 21 Nov 2017 09:32:09 +0000 (09:32 +0000)]
update newGIVENOP() doc for loss of lexical $_

3 years agoUpdate META.json for JSON::PP update
Steve Hay [Tue, 21 Nov 2017 08:46:18 +0000 (08:46 +0000)]
Update META.json for JSON::PP update

3 years agoModule::CoreList 5.20171120 is now on CPAN
Steve Hay [Tue, 21 Nov 2017 08:29:53 +0000 (08:29 +0000)]
Module::CoreList 5.20171120 is now on CPAN

3 years agoUpgrade JSON::PP from version 2.94 to 2.97000
Steve Hay [Tue, 21 Nov 2017 08:29:00 +0000 (08:29 +0000)]
Upgrade JSON::PP from version 2.94 to 2.97000

3 years agoUpgrade Test::Simple from version 1.302111 to 1.302113
Steve Hay [Tue, 21 Nov 2017 08:26:22 +0000 (08:26 +0000)]
Upgrade Test::Simple from version 1.302111 to 1.302113

3 years agoUpgrade Unicode::Collate from version 1.23 to 1.24
Steve Hay [Tue, 21 Nov 2017 08:18:21 +0000 (08:18 +0000)]
Upgrade Unicode::Collate from version 1.23 to 1.24

3 years agoFix Ask Bjørn Hansen's name in perl5276delta
Dagfinn Ilmari Mannsåker [Tue, 21 Nov 2017 00:03:26 +0000 (00:03 +0000)]
Fix Ask Bjørn Hansen's name in perl5276delta

The AUTHORS file had it wrong (see previous commit) when the perldelta
was generated.

3 years agoFix Ask Bjørn Hansen's AUTHORS entry
Dagfinn Ilmari Mannsåker [Mon, 20 Nov 2017 23:34:12 +0000 (23:34 +0000)]
Fix Ask Bjørn Hansen's AUTHORS entry

It was originally added incorrectly with an ö in commit 3c975e43, and
when the file was recoded from ISO-8859-1 to UTF-8 in commit 055f8557 it
got further mangled to öe.

3 years agofix formatting in earlier epigraph
Karen Etheridge [Mon, 20 Nov 2017 23:41:01 +0000 (15:41 -0800)]
fix formatting in earlier epigraph

3 years agomisc small amendments to the RMG
Karen Etheridge [Mon, 20 Nov 2017 02:36:22 +0000 (18:36 -0800)]
misc small amendments to the RMG

3 years agominor updates to perldelta template
Karen Etheridge [Sun, 19 Nov 2017 23:30:52 +0000 (15:30 -0800)]
minor updates to perldelta template

3 years agokeep version ordering consistent
Karen Etheridge [Mon, 20 Nov 2017 01:56:29 +0000 (17:56 -0800)]
keep version ordering consistent

3 years agoremove bz2 option from release template
Karen Etheridge [Mon, 20 Nov 2017 22:49:24 +0000 (14:49 -0800)]
remove bz2 option from release template

3 years agogenerate preliminary Module::CoreList updates for 5.27.7
Karen Etheridge [Mon, 20 Nov 2017 23:32:18 +0000 (15:32 -0800)]
generate preliminary Module::CoreList updates for 5.27.7

3 years agoBump the perl version in various places for 5.27.7
Karen Etheridge [Mon, 20 Nov 2017 23:16:15 +0000 (15:16 -0800)]
Bump the perl version in various places for 5.27.7

3 years agonew perldelta for 5.27.7
Karen Etheridge [Mon, 20 Nov 2017 23:11:32 +0000 (15:11 -0800)]
new perldelta for 5.27.7

3 years agotick off release 5.27.6
Karen Etheridge [Mon, 20 Nov 2017 23:04:14 +0000 (15:04 -0800)]
tick off release 5.27.6

3 years agocommit epigraph for release 5.27.6
Karen Etheridge [Mon, 20 Nov 2017 23:03:12 +0000 (15:03 -0800)]
commit epigraph for release 5.27.6

3 years agoadd new release to perlhist v5.27.6
Karen Etheridge [Mon, 20 Nov 2017 02:23:34 +0000 (18:23 -0800)]
add new release to perlhist

3 years agofinalize perldelta for 5.27.6
Karen Etheridge [Mon, 20 Nov 2017 02:22:20 +0000 (18:22 -0800)]
finalize perldelta for 5.27.6

3 years agoperldelta: update updated modules
Karen Etheridge [Mon, 20 Nov 2017 02:32:31 +0000 (18:32 -0800)]
perldelta: update updated modules

3 years agoUpdate Module::CoreList for 5.27.6
Karen Etheridge [Mon, 20 Nov 2017 02:12:51 +0000 (18:12 -0800)]
Update Module::CoreList for 5.27.6

3 years agoperldelta updates for 5.27.6
Karen Etheridge [Sun, 19 Nov 2017 23:29:12 +0000 (15:29 -0800)]
perldelta updates for 5.27.6

- remove template notes
- add items not mentioned before
    - key highlights of updated modules
    - changes to supported platforms
    - perlbug enhancements
    - perldiag's removal of diag corresponding to experimental::lexical_topic
    - "Allow sub-in-stash outside of main" change actually happened in 5.27.5
- added a few RT#s to existing entries
- misc markup and spelling fixes

3 years agoadd missing section on sub typeglobs to perl275delta
Karen Etheridge [Mon, 20 Nov 2017 01:18:31 +0000 (17:18 -0800)]
add missing section on sub typeglobs to perl275delta

3 years agoMULTICONCAT - use distinct TMPS for const overload
David Mitchell [Mon, 20 Nov 2017 15:19:59 +0000 (15:19 +0000)]
MULTICONCAT - use distinct TMPS for const overload

Because OP_MULTICONCAT optimises away any const SVs, they have to be
recreated if a concat overload method is called. Up until now (for
efficiency) the same SvTEMP was used to create each const TEMP.  This
caused problems if an overload method saved a ref to the argument.

This is easily fixed by not reusing the TEMP (and the extra inefficiency
is small compared to the overall burden of calling out to an overloaded

With this patch, the following test code changes from getting "BB" to
getting "AB":

    my @a;
    use overload '.' => sub { push @a, \$_[1]; $_[0] };
    my $o = bless [];
    my $x = $o . "A" . $o . 'B';
    is "${$a[0]}${$a[2]}", "AB", "RT #132385";

3 years ago-b option in makerel was removed
Karen Etheridge [Mon, 20 Nov 2017 04:55:30 +0000 (20:55 -0800)]
-b option in makerel was removed

3 years agoadd perldelta for packaging changes
Karen Etheridge [Sun, 19 Nov 2017 23:37:07 +0000 (15:37 -0800)]
add perldelta for packaging changes

3 years agoRemoved bzip option from makerel
=?UTF-8?q?Ask=20Bj=C3=B8rn=20Hansen?= [Tue, 31 Oct 2017 15:39:21 +0000 (08:39 -0700)]
Removed bzip option from makerel

xz compresses better and decompresses faster, gzip is still more
compatible and uses less memory. In the recent years we've
archived perl as both gzip, bzip2 and xz which doesn't make much
sense. This is a followup to f276fdad.

closes [perl #132381].

3 years agofix spelling
Karen Etheridge [Sun, 19 Nov 2017 22:34:56 +0000 (14:34 -0800)]
fix spelling

3 years agobump threads version to account for previous changes to comments and tests
Karen Etheridge [Sun, 19 Nov 2017 18:46:26 +0000 (10:46 -0800)]
bump threads version to account for previous changes to comments and tests

3 years agofix tainting of s/// with overloaded replacement
Zefram [Sun, 19 Nov 2017 09:15:53 +0000 (09:15 +0000)]
fix tainting of s/// with overloaded replacement

The substitution code was trying to track the taintedness of the
replacement string itself, but it didn't account for the replacement
being an untainted object with overloading that returns a tainted
stringification.  It looked at the taintedness of the object value, not
realising that taint could arise during the string concatenation per se.
Change the taint checks to look at the actual TAINT_get flag after string
concatenation.  This may falsely ascribe to the replacement taint that
actually came from somewhere else, but the end result is the same anyway:
there's no visible behaviour that distinguishes taint specifically from
the replacement.  Also remove a related taint check that seems to be
not needed at all.  Fixes [perl #115266].

3 years agofix other pod versions that had become out of date, and add reminder comments
Karen Etheridge [Sun, 19 Nov 2017 04:06:35 +0000 (20:06 -0800)]
fix other pod versions that had become out of date, and add reminder comments

3 years agofix Attribute::Handlers pod to match new $VERSION
Karen Etheridge [Sun, 19 Nov 2017 03:57:57 +0000 (19:57 -0800)]
fix Attribute::Handlers pod to match new $VERSION the comment next to the $VERSION declaration reminds us to do

3 years agoperldelta for perluniprops change
Karl Williamson [Sun, 19 Nov 2017 02:44:47 +0000 (19:44 -0700)]
perldelta for perluniprops change

For commit 9b79e9e3431d11e79a4f85268f70130b7b4369f6

3 years agolocale.c: Use computed length for U+10FFFF
Karl Williamson [Sat, 18 Nov 2017 23:50:48 +0000 (16:50 -0700)]
locale.c: Use computed length for U+10FFFF

The previous commit calculates this and placed the result in a header
file.  This now uses the calculated value instead of a hard-coded "4",
which is incorrect on EBCDIC platforms.

3 years agoregen/ Add U+10FFFF entry
Karl Williamson [Sat, 18 Nov 2017 23:43:40 +0000 (16:43 -0700)]
regen/ Add U+10FFFF entry

We need the length of the UTF-8 for this code point elsewhere, and it
is different between ASCII and EBCDIC.

3 years agoSync cpan/Test-Simple with CPAN version 1.302111.
James E Keenan [Sat, 18 Nov 2017 20:48:18 +0000 (15:48 -0500)]
Sync cpan/Test-Simple with CPAN version 1.302111.

3 years agoUpstream has released Test-Simple with new t/Legacy/Tester/tbt_09do.t.
James E Keenan [Sat, 18 Nov 2017 20:33:32 +0000 (15:33 -0500)]
Upstream has released Test-Simple with new t/Legacy/Tester/tbt_09do.t.

Since that now matches what we have in blead, we no longer need to have a
CUSTOMIZED entry in Porting/

3 years agoRestore ability to build on platforms without snprintf()
Aaron Crane [Sat, 18 Nov 2017 18:07:23 +0000 (18:07 +0000)]
Restore ability to build on platforms without snprintf()

C89 does not in fact define snprintf() or vsnprintf(), and we must therefore
probe for the existence of those functions before trying to use them.

khw++ for pointing out my earlier error.

This reverts part or all of each of the following commits:

13d66b05c6163c3514774d3d11da5f3950e97e98 Rely on C89 vsnprintf()
e791399041815a1a45cea3c7f277c7045b96e51b Rely on C89 snprintf()
adf7d503e55721c500f0bf66560b8f5df7966fe7 pod/perlhacktips.pod: remove some outdated portability notes

3 years agoPorting/ add missing config-symbol file
Aaron Crane [Sat, 18 Nov 2017 16:37:44 +0000 (16:37 +0000)]
Porting/ add missing config-symbol file

Cross/ should probably have been added to the list
of config-symbol files when it was first added, and the fact that it wasn't
means that there are many symbols it doesn't list. In the absence of any
better information, I've defaulted them to the Cross/

3 years agoRegenerate Porting/Glossary
Aaron Crane [Sat, 18 Nov 2017 15:51:12 +0000 (15:51 +0000)]
Regenerate Porting/Glossary

3 years agoRegenerate sample config files
Aaron Crane [Sat, 18 Nov 2017 15:47:00 +0000 (15:47 +0000)]
Regenerate sample config files

3 years agoRebuild Configure from current metaconfig
Aaron Crane [Sat, 18 Nov 2017 13:40:50 +0000 (13:40 +0000)]
Rebuild Configure from current metaconfig

Commit 46857622bdd8fff9558b66485f86ae4eb019ec55 of the metaconfig repo
reverts to the upstream version of i_sysmman.U, which has a slightly
different comment.

3 years agoPATCH: [perl #132463] perluniprops for \p{Word}
Karl Williamson [Sat, 18 Nov 2017 16:35:25 +0000 (09:35 -0700)]
PATCH: [perl #132463] perluniprops for \p{Word}

perluniprops was not updated to reflect the changes made to what
\p{Word} contains as of 5.18.  What was added was the code points that
have the Join_Control property, which, so far, only contain U+200C and
U+200D.  This commit uses Join Control instead of the hard-coded code
point numbers, so that when Unicode changes it, it automatically will
still be valid.

Thanks for spotting this.

3 years agofix perldelta formatting
Zefram [Fri, 17 Nov 2017 14:08:11 +0000 (14:08 +0000)]
fix perldelta formatting

Documentation changes get =items, not =head3s.

3 years agoclarify perlop description of binary "x"
Zefram [Fri, 17 Nov 2017 14:05:49 +0000 (14:05 +0000)]
clarify perlop description of binary "x"

[perl #132460]

3 years agorestore deparsing style for \&foo
Zefram [Fri, 17 Nov 2017 09:03:46 +0000 (09:03 +0000)]
restore deparsing style for \&foo

When deparsing a reference to a sub in the current package, other than in
a call expression, with "use strict 'vars'" in effect and no lexical sub
of the same name in scope, commit dd6661605fe0a54c602f2e55f875acfdcd330b79
accidentally changed the deparsing from "&main::foo" to "&foo".
Both deparsings are correct, and the short one arguably preferable.
In fact, the deparsing was originally of the short form, but changed to
the long form (probably accidentally) in Perl 5.21.7, when the deparser
started adding the package to distinguish package subs from lexical subs
of the same name.  Nevertheless, it was not the intention to change this
output in that edit, and it broke a CPAN module's tests.  Consequently,
this commit restores the long-form deparsing in this case.

3 years agorip out quicksort and sort algorithm control
Zefram [Fri, 17 Nov 2017 05:28:21 +0000 (05:28 +0000)]
rip out quicksort and sort algorithm control

[perl #119635]

3 years agoembed.fnc: Add X flag to newly private UTF16 fcns
Karl Williamson [Fri, 17 Nov 2017 05:28:49 +0000 (22:28 -0700)]
embed.fnc: Add X flag to newly private UTF16 fcns

The E flag added in cfd95a374972942cba5e8afc019dc6019815b45c needs
either the X flag or be private to its containing file.

Spotted by Craig Berry.

3 years agoSuppress warning in XS-APItest’s sniscow.t
Father Chrysostomos [Fri, 17 Nov 2017 04:07:27 +0000 (20:07 -0800)]
Suppress warning in XS-APItest’s sniscow.t