summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSawyer X <xsawyerx@cpan.org>2018-06-22 20:19:08 -0600
committerSteve Hay <steve.m.hay@googlemail.com>2018-11-04 20:39:04 +0000
commit9d1ba25688d286786d0994b12f4a84b76cfdcf36 (patch)
tree831b7f62fec78b85dbfcf0b4ddb1c837e4d5f2ce
parent7346c5fcf961df288bd249d2f150ab6f0e40a3ee (diff)
downloadperl-9d1ba25688d286786d0994b12f4a84b76cfdcf36.tar.gz
Add per5280delta.pod to MANIFEST
(cherry picked from commit 8a466a496bec7250920063d8f0eb252b0d962c08)
-rw-r--r--MANIFEST1
-rwxr-xr-xMakefile.SH8
-rw-r--r--pod/.gitignore2
-rw-r--r--pod/perl5280delta.pod2438
-rw-r--r--pod/perldelta.pod2324
-rw-r--r--vms/descrip_mms.template2
-rw-r--r--win32/GNUmakefile4
-rw-r--r--win32/Makefile4
-rw-r--r--win32/makefile.mk4
-rw-r--r--win32/pod.mak8
10 files changed, 2620 insertions, 2175 deletions
diff --git a/MANIFEST b/MANIFEST
index 2005f544cd..fcf3455b2e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5068,6 +5068,7 @@ pod/perl5244delta.pod Perl changes in version 5.24.4
pod/perl5260delta.pod Perl changes in version 5.26.0
pod/perl5261delta.pod Perl changes in version 5.26.1
pod/perl5262delta.pod Perl changes in version 5.26.2
+pod/perl5280delta.pod Perl changes in version 5.28.0
pod/perl561delta.pod Perl changes in version 5.6.1
pod/perl56delta.pod Perl changes in version 5.6
pod/perl581delta.pod Perl changes in version 5.8.1
diff --git a/Makefile.SH b/Makefile.SH
index 123903dcb0..5197009290 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -575,7 +575,7 @@ esac
$spitshell >>$Makefile <<'!NO!SUBS!'
-perltoc_pod_prereqs = extra.pods pod/perl5280delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5281delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
generated_headers = uudmap.h bitcount.h mg_data.h
@@ -1125,9 +1125,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
$(MINIPERL) pod/perlmodlib.PL -q
-pod/perl5280delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5280delta.pod
- $(LNS) perldelta.pod pod/perl5280delta.pod
+pod/perl5281delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5281delta.pod
+ $(LNS) perldelta.pod pod/perl5281delta.pod
extra.pods: $(MINIPERL_EXE)
-@test ! -f extra.pods || rm -f `cat extra.pods`
diff --git a/pod/.gitignore b/pod/.gitignore
index 8974e374d6..26160694da 100644
--- a/pod/.gitignore
+++ b/pod/.gitignore
@@ -50,7 +50,7 @@
/roffitall
# generated
-/perl5280delta.pod
+/perl5281delta.pod
/perlapi.pod
/perlintern.pod
/perlmodlib.pod
diff --git a/pod/perl5280delta.pod b/pod/perl5280delta.pod
new file mode 100644
index 0000000000..0ecd260ca5
--- /dev/null
+++ b/pod/perl5280delta.pod
@@ -0,0 +1,2438 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5280delta - what is new for perl v5.28.0
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.26.0 release and the 5.28.0
+release.
+
+If you are upgrading from an earlier release such as 5.24.0, first read
+L<perl5260delta>, which describes differences between 5.24.0 and 5.26.0.
+
+=head1 Core Enhancements
+
+=head2 Unicode 10.0 is supported
+
+A list of changes is at
+L<http://www.unicode.org/versions/Unicode10.0.0>.
+
+=head2 L<C<delete>|perlfunc/delete EXPR> on key/value hash slices
+
+L<C<delete>|perlfunc/delete EXPR> can now be used on
+L<keyE<sol>value hash slices|perldata/KeyE<sol>Value Hash Slices>,
+returning the keys along with the deleted values.
+L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328>
+
+=head2 Experimentally, there are now alphabetic synonyms for some regular expression assertions
+
+If you find it difficult to remember how to write certain of the pattern
+assertions, there are now alphabetic synonyms.
+
+ CURRENT NEW SYNONYMS
+ ------ ------------
+ (?=...) (*pla:...) or (*positive_lookahead:...)
+ (?!...) (*nla:...) or (*negative_lookahead:...)
+ (?<=...) (*plb:...) or (*positive_lookbehind:...)
+ (?<!...) (*nlb:...) or (*negative_lookbehind:...)
+ (?>...) (*atomic:...)
+
+These are considered experimental, so using any of these will raise
+(unless turned off) a warning in the C<experimental::alpha_assertions>
+category.
+
+=head2 Mixed Unicode scripts are now detectable
+
+A mixture of scripts, such as Cyrillic and Latin, in a string is often
+the sign of a spoofing attack. A new regular expression construct
+now allows for easy detection of these. For example, you can say
+
+ qr/(*script_run: \d+ \b )/x
+
+And the digits matched will all be from the same set of 10. You won't
+get a look-alike digit from a different script that has a different
+value than what it appears to be.
+
+Or:
+
+ qr/(*sr: \b \w+ \b )/x
+
+makes sure that all the characters come from the same script.
+
+You can also combine script runs with C<(?E<gt>...)> (or
+C<*atomic:...)>).
+
+Instead of writing:
+
+ (*sr:(?<...))
+
+you can now run:
+
+ (*asr:...)
+ # or
+ (*atomic_script_run:...)
+
+This is considered experimental, so using it will raise (unless turned
+off) a warning in the C<experimental::script_run> category.
+
+See L<perlre/Script Runs>.
+
+=head2 In-place editing with C<perl -i> is now safer
+
+Previously in-place editing (C<perl -i>) would delete or rename the
+input file as soon as you started working on a new file.
+
+Without backups this would result in loss of data if there was an
+error, such as a full disk, when writing to the output file.
+
+This has changed so that the input file isn't replaced until the
+output file has been completely written and successfully closed.
+
+This works by creating a work file in the same directory, which is
+renamed over the input file once the output file is complete.
+
+Incompatibilities:
+
+=over
+
+=item *
+
+Since this renaming needs to only happen once, if you create a thread
+or child process, that renaming will only happen in the original
+thread or process.
+
+=item *
+
+If you change directories while processing a file, and your operating
+system doesn't provide the C<unlinkat()>, C<renameat()> and C<fchmodat()>
+functions, the final rename step may fail.
+
+=back
+
+L<[perl #127663]|https://rt.perl.org/Public/Bug/Display.html?id=127663>
+
+=head2 Initialisation of aggregate state variables
+
+A persistent lexical array or hash variable can now be initialized,
+by an expression such as C<state @a = qw(x y z)>. Initialization of a
+list of persistent lexical variables is still not possible.
+
+=head2 Full-size inode numbers
+
+On platforms where inode numbers are of a type larger than perl's native
+integer numerical types, L<stat|perlfunc/stat> will preserve the full
+content of large inode numbers by returning them in the form of strings of
+decimal digits. Exact comparison of inode numbers can thus be achieved by
+comparing with C<eq> rather than C<==>. Comparison with C<==>, and other
+numerical operations (which are usually meaningless on inode numbers),
+work as well as they did before, which is to say they fall back to
+floating point, and ultimately operate on a fairly useless rounded inode
+number if the real inode number is too big for the floating point format.
+
+=head2 The C<sprintf> C<%j> format size modifier is now available with pre-C99 compilers
+
+The actual size used depends on the platform, so remains unportable.
+
+=head2 Close-on-exec flag set atomically
+
+When opening a file descriptor, perl now generally opens it with its
+close-on-exec flag already set, on platforms that support doing so.
+This improves thread safety, because it means that an C<exec> initiated
+by one thread can no longer cause a file descriptor in the process
+of being opened by another thread to be accidentally passed to the
+executed program.
+
+Additionally, perl now sets the close-on-exec flag more reliably, whether
+it does so atomically or not. Most file descriptors were getting the
+flag set, but some were being missed.
+
+=head2 String- and number-specific bitwise ops are no longer experimental
+
+The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>)
+bitwise operators introduced in Perl 5.22 that are available within the
+scope of C<use feature 'bitwise'> are no longer experimental.
+Because the number-specific ops are spelled the same way as the existing
+operators that choose their behaviour based on their operands, these
+operators must still be enabled via the "bitwise" feature, in either of
+these two ways:
+
+ use feature "bitwise";
+
+ use v5.28; # "bitwise" now included
+
+They are also now enabled by the B<-E> command-line switch.
+
+The "bitwise" feature no longer emits a warning. Existing code that
+disables the "experimental::bitwise" warning category that the feature
+previously used will continue to work.
+
+One caveat that module authors ought to be aware of is that the numeric
+operators now pass a fifth TRUE argument to overload methods. Any methods
+that check the number of operands may croak if they do not expect so many.
+XS authors in particular should be aware that this:
+
+ SV *
+ bitop_handler (lobj, robj, swap)
+
+may need to be changed to this:
+
+ SV *
+ bitop_handler (lobj, robj, swap, ...)
+
+=head2 Locales are now thread-safe on systems that support them
+
+These systems include Windows starting with Visual Studio 2005, and in
+POSIX 2008 systems.
+
+The implication is that you are now free to use locales and change them
+in a threaded environment. Your changes affect only your thread.
+See L<perllocale/Multi-threaded operation>
+
+=head2 New read-only predefined variable C<${^SAFE_LOCALES}>
+
+This variable is 1 if the Perl interpreter is operating in an
+environment where it is safe to use and change locales (see
+L<perllocale>.) This variable is true when the perl is
+unthreaded, or compiled in a platform that supports thread-safe locale
+operation (see previous item).
+
+=head1 Security
+
+=head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler
+
+Compiling certain regular expression patterns with the case-insensitive
+modifier could cause a heap buffer overflow and crash perl. This has now been
+fixed.
+L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582>
+
+=head2 [CVE-2017-12883] Buffer over-read in regular expression parser
+
+For certain types of syntax error in a regular expression pattern, the error
+message could either contain the contents of a random, possibly large, chunk of
+memory, or could crash perl. This has now been fixed.
+L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598>
+
+=head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows
+
+A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed
+by removing the buffer completely since it was superfluous anyway.
+L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665>
+
+=head2 Default Hash Function Change
+
+Perl 5.28.0 retires various older hash functions which are not viewed as
+sufficiently secure for use in Perl. We now support four general purpose
+hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX
+hash. In addition we support SBOX32 (a form of tabular hashing) for hashing
+short strings, in conjunction with any of the other hash functions provided.
+
+By default Perl is configured to support SBOX hashing of strings up to 24
+characters, in conjunction with StadtX hashing on 64 bit builds, and
+Zaphod32 hashing for 32 bit builds.
+
+You may control these settings with the following options to Configure:
+
+ -DPERL_HASH_FUNC_SIPHASH
+ -DPERL_HASH_FUNC_SIPHASH13
+ -DPERL_HASH_FUNC_STADTX
+ -DPERL_HASH_FUNC_ZAPHOD32
+
+To disable SBOX hashing you can use
+
+ -DPERL_HASH_USE_SBOX32_ALSO=0
+
+And to set the maximum length to use SBOX32 hashing on with:
+
+ -DSBOX32_MAX_LEN=16
+
+The maximum length allowed is 256. There probably isn't much point
+in setting it higher than the default.
+
+=head1 Incompatible Changes
+
+=head2 Subroutine attribute and signature order
+
+The experimental subroutine signatures feature has been changed so that
+subroutine attributes must now come before the signature rather than
+after. This is because attributes like C<:lvalue> can affect the
+compilation of code within the signature, for example:
+
+ sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) { ...}
+
+Note that this the second time they have been flipped:
+
+ sub f :lvalue ($a, $b) { ... }; # 5.20; 5.28 onwards
+ sub f ($a, $b) :lvalue { ... }; # 5.22 - 5.26
+
+=head2 Comma-less variable lists in formats are no longer allowed
+
+Omitting the commas between variables passed to formats is no longer
+allowed. This has been deprecated since Perl 5.000.
+
+=head2 The C<:locked> and C<:unique> attributes have been removed
+
+These have been no-ops and deprecated since Perl 5.12 and 5.10,
+respectively.
+
+=head2 C<\N{}> with nothing between the braces is now illegal
+
+This has been deprecated since Perl 5.24.
+
+=head2 Opening the same symbol as both a file and directory handle is no longer allowed
+
+Using C<open()> and C<opendir()> to associate both a filehandle and a dirhandle
+to the same symbol (glob or scalar) has been deprecated since Perl 5.10.
+
+=head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed
+
+Use of a bare terminator has been deprecated since Perl 5.000.
+
+=head2 Setting $/ to a reference to a non-positive integer no longer allowed
+
+This used to work like setting it to C<undef>, but has been deprecated
+since Perl 5.20.
+
+=head2 Unicode code points with values exceeding C<IV_MAX> are now fatal
+
+This was deprecated since Perl 5.24.
+
+=head2 The C<B::OP::terse> method has been removed
+
+Use C<B::Concise::b_terse> instead.
+
+=head2 Use of inherited AUTOLOAD for non-methods is no longer allowed
+
+This was deprecated in Perl 5.004.
+
+=head2 Use of strings with code points over 0xFF is not allowed for bitwise string operators
+
+Code points over C<0xFF> do not make sense for bitwise operators and such
+an operation will now croak, except for a few remaining cases. See
+L<perldeprecation>.
+
+This was deprecated in Perl 5.24.
+
+=head2 Setting C<${^ENCODING}> to a defined value is now illegal
+
+This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.
+
+=head2 Backslash no longer escapes colon in PATH for the C<-S> switch
+
+Previously the C<-S> switch incorrectly treated backslash ("\") as an
+escape for colon when traversing the C<PATH> environment variable.
+L<[perl #129183]|https://rt.perl.org/Ticket/Display.html?id=129183>
+
+=head2 the -DH (DEBUG_H) misfeature has been removed
+
+On a perl built with debugging support, the C<H> flag to the C<-D>
+debugging option has been removed. This was supposed to dump hash values,
+but has been broken for many years.
+
+=head2 Yada-yada is now strictly a statement
+
+By the time of its initial stable release in Perl 5.12, the C<...>
+(yada-yada) operator was explicitly intended to serve as a statement,
+not an expression. However, the original implementation was confused
+on this point, leading to inconsistent parsing. The operator was
+accidentally accepted in a few situations where it did not serve as a
+complete statement, such as
+
+ ... . "foo";
+ ... if $a < $b;
+
+The parsing has now been made consistent, permitting yada-yada only as
+a statement. Affected code can use C<do{...}> to put a yada-yada into
+an arbitrary expression context.
+
+=head2 Sort algorithm can no longer be specified
+
+Since Perl 5.8, the L<sort> pragma has had subpragmata C<_mergesort>,
+C<_quicksort>, and C<_qsort> that can be used to specify which algorithm
+perl should use to implement the L<sort|perlfunc/sort> builtin.
+This was always considered a dubious feature that might not last,
+hence the underscore spellings, and they were documented as not being
+portable beyond Perl 5.8. These subpragmata have now been deleted,
+and any attempt to use them is an error. The L<sort> pragma otherwise
+remains, and the algorithm-neutral C<stable> subpragma can be used to
+control sorting behaviour.
+L<[perl #119635]|https://rt.perl.org/Ticket/Display.html?id=119635>
+
+=head2 Over-radix digits in floating point literals
+
+Octal and binary floating point literals used to permit any hexadecimal
+digit to appear after the radix point. The digits are now restricted
+to those appropriate for the radix, as digits before the radix point
+always were.
+
+=head2 Return type of C<unpackstring()>
+
+The return types of the C API functions C<unpackstring()> and
+C<unpack_str()> have changed from C<I32> to C<SSize_t>, in order to
+accommodate datasets of more than two billion items.
+
+=head1 Deprecations
+
+=head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is deprecated
+
+Such strings are represented internally in UTF-8, and C<vec> is a
+bit-oriented operation that will likely give unexpected results on those
+strings.
+
+=head2 Some uses of unescaped C<"{"> in regexes are no longer fatal
+
+Perl 5.26.0 fatalized some uses of an unescaped left brace, but an
+exception was made at the last minute, specifically crafted to be a
+minimal change to allow GNU Autoconf to work. That tool is heavily
+depended upon, and continues to use the deprecated usage. Its use of an
+unescaped left brace is one where we have no intention of repurposing
+C<"{"> to be something other than itself.
+
+That exception is now generalized to include various other such cases
+where the C<"{"> will not be repurposed.
+
+Note that these uses continue to raise a deprecation message.
+
+=head2 Use of unescaped C<"{"> immediately after a C<"("> in regular expression patterns is deprecated
+
+Using unescaped left braces is officially deprecated everywhere, but it
+is not enforced in contexts where their use does not interfere with
+expected extensions to the language. A deprecation is added in this
+release when the brace appears immediately after an opening parenthesis.
+Before this, even if the brace was part of a legal quantifier, it was
+not interpreted as such, but as the literal characters, unlike other
+quantifiers that follow a C<"("> which are considered errors. Now,
+their use will raise a deprecation message, unless turned off.
+
+=head2 Assignment to C<$[> will be fatal in Perl 5.30
+
+Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
+since Perl 5.12, but was never given a deadline for removal. This has
+now been scheduled for Perl 5.30.
+
+=head2 hostname() won't accept arguments in Perl 5.32
+
+Passing arguments to C<Sys::Hostname::hostname()> was already deprecated,
+but didn't have a removal date. This has now been scheduled for Perl
+5.32. L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349>
+
+=head2 Module removals
+
+The following modules will be removed from the core distribution in a
+future release, and will at that time need to be installed from CPAN.
+Distributions on CPAN which require these modules will need to list them as
+prerequisites.
+
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact. To silence these deprecation warnings,
+install the modules in question from CPAN.
+
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use. Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
+
+=over
+
+=item B::Debug
+
+=item L<Locale::Codes> and its associated Country, Currency and Language modules
+
+=back
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+The start up overhead for creating regular expression patterns with
+Unicode properties (C<\p{...}>) has been greatly reduced in most cases.
+
+=item *
+
+Many string concatenation expressions are now considerably faster, due
+to the introduction internally of a C<multiconcat> opcode which combines
+multiple concatenations, and optionally a C<=> or C<.=>, into a single
+action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this
+whole expression is now handled as a single op:
+
+ $s .= "a=$a b=$b\n"
+
+As a special case, if the LHS of an assignment is a lexical variable or
+C<my $s>, the op itself handles retrieving the lexical variable, which
+is faster.
+
+In general, the more the expression includes a mix of constant strings and
+variable expressions, the longer the expression, and the more it mixes
+together non-utf8 and utf8 strings, the more marked the performance
+improvement. For example on a C<x86_64> system, this code has been
+benchmarked running four times faster:
+
+ my $s;
+ my $a = "ab\x{100}cde";
+ my $b = "fghij";
+ my $c = "\x{101}klmn";
+
+ for my $i (1..10_000_000) {
+ $s = "\x{100}wxyz";
+ $s .= "foo=$a bar=$b baz=$c";
+ }
+
+In addition, C<sprintf> expressions which have a constant format
+containing only C<%s> and C<%%> format elements, and which have a fixed
+number of arguments, are now also optimised into a C<multiconcat> op.
+
+=item *
+
+The C<ref()> builtin is now much faster in boolean context, since it no
+longer bothers to construct a temporary string like C<Foo=ARRAY(0x134af48)>.
+
+=item *
+
+C<keys()> in void and scalar contexts is now more efficient.
+
+=item *
+
+The common idiom of comparing the result of index() with -1 is now
+specifically optimised, e.g.
+
+ if (index(...) != -1) { ... }
+
+=item *
+
+C<for()> loops and similar constructs are now more efficient in most cases.
+
+=item *
+
+L<File::Glob> has been modified to remove unnecessary backtracking and
+recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob>
+for more details.
+
+=item *
+
+The XS-level C<SvTRUE()> API function is now more efficient.
+
+=item *
+
+Various integer-returning ops are now more efficient in scalar/boolean context.
+
+=item *
+
+Slightly improved performance when parsing stash names.
+L<[perl #129990]|https://rt.perl.org/Public/Bug/Display.html?id=129990>
+
+=item *
+
+Calls to C<require> for an already loaded module are now slightly faster.
+L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171>
+
+=item *
+
+The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]>
+has been improved significantly except on EBCDIC platforms.
+
+=item *
+
+Various optimizations have been applied to matching regular expression
+patterns, so under the right circumstances, significant performance
+gains may be noticed. But in an application with many varied patterns,
+little overall improvement likely will be seen.
+
+=item *
+
+Other optimizations have been applied to UTF-8 handling, but these are
+not typically a major factor in most applications.
+
+=back
+
+=head1 Modules and Pragmata
+
+Key highlights in this release across several modules:
+
+=head2 Removal of use vars
+
+The usage of C<use vars> has been discouraged since the introduction of
+C<our> in Perl 5.6.0. Where possible the usage of this pragma has now been
+removed from the Perl source code.
+
+This had a slight effect (for the better) on the output of WARNING_BITS in
+L<B::Deparse>.
+
+=head2 Use of DynaLoader changed to XSLoader in many modules
+
+XSLoader is more modern, and most modules already require perl 5.6 or
+greater, so no functionality is lost by switching. In some cases, we have
+also made changes to the local implementation that may not be reflected in
+the version on CPAN due to a desire to maintain more backwards
+compatibility.
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Archive::Tar> has been upgraded from version 2.24 to 2.30.
+
+This update also handled CVE-2018-12015: directory traversal
+vulnerability.
+L<[cpan #125523]|https://rt.cpan.org/Ticket/Display.html?id=125523>
+
+=item *
+
+L<arybase> has been upgraded from version 0.12 to 0.15.
+
+=item *
+
+L<Attribute::Handlers> has been upgraded from version 0.99 to 1.01.
+
+=item *
+
+L<attributes> has been upgraded from version 0.29 to 0.33.
+
+=item *
+
+L<B> has been upgraded from version 1.68 to 1.74.
+
+=item *
+
+L<B::Concise> has been upgraded from version 0.999 to 1.003.
+
+=item *
+
+L<B::Debug> has been upgraded from version 1.24 to 1.26.
+
+NOTE: L<B::Debug> is deprecated and may be removed from a future version
+of Perl.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.40 to 1.48.
+
+It includes many bug fixes, and in particular, it now deparses variable
+attributes correctly:
+
+ my $x :foo; # used to deparse as
+ # 'attributes'->import('main', \$x, 'foo'), my $x;
+
+=item *
+
+L<base> has been upgraded from version 2.25 to 2.27.
+
+=item *
+
+L<bignum> has been upgraded from version 0.47 to 0.49.
+
+=item *
+
+L<blib> has been upgraded from version 1.06 to 1.07.
+
+=item *
+
+L<bytes> has been upgraded from version 1.05 to 1.06.
+
+=item *
+
+L<Carp> has been upgraded from version 1.42 to 1.50.
+
+If a package on the call stack contains a constant named C<ISA>, Carp no
+longer throws a "Not a GLOB reference" error.
+
+L<Carp>, when generating stack traces, now attempts to work around
+longstanding bugs resulting from Perl's non-reference-counted stack.
+L<[perl #52610]|https://rt.perl.org/Ticket/Display.html?id=52610>
+
+Carp has been modified to avoid assuming that objects cannot be
+overloaded without the L<overload> module loaded (this can happen with
+objects created by XS modules). Previously, infinite recursion would
+result if an XS-defined overload method itself called Carp.
+L<[perl #132828]|https://rt.perl.org/Ticket/Display.html?id=132828>
+
+Carp now avoids using C<overload::StrVal>, partly because older versions
+of L<overload> (included with perl 5.14 and earlier) load L<Scalar::Util>
+at run time, which will fail if Carp has been invoked after a syntax error.
+
+=item *
+
+L<charnames> has been upgraded from version 1.44 to 1.45.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.074 to 2.076.
+
+This addresses a security vulnerability in older versions of the 'zlib' library
+(which is bundled with Compress-Raw-Zlib).
+
+=item *
+
+L<Config::Extensions> has been upgraded from version 0.01 to 0.02.
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.28 to 0.29.
+
+=item *
+
+L<CPAN> has been upgraded from version 2.18 to 2.20.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.167 to 2.170.
+
+Quoting of glob names now obeys the Useqq option
+L<[perl #119831]|https://rt.perl.org/Ticket/Display.html?id=119831>.
+
+Attempts to set an option to C<undef> through a combined getter/setter
+method are no longer mistaken for getter calls
+L<[perl #113090]|https://rt.perl.org/Ticket/Display.html?id=113090>.
+
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.26 to 1.27.
+
+=item *
+
+L<Devel::PPPort> has been upgraded from version 3.35 to 3.40.
+
+L<Devel::PPPort> has moved from cpan-first to perl-first maintenance
+
+Primary responsibility for the code in Devel::PPPort has moved into core perl.
+In a practical sense there should be no change except that hopefully it will
+stay more up to date with changes made to symbols in perl, rather than needing
+to be updated after the fact.
+
+=item *
+
+L<Digest::SHA> has been upgraded from version 5.96 to 6.01.
+
+=item *
+
+L<DirHandle> has been upgraded from version 1.04 to 1.05.
+
+=item *
+
+L<DynaLoader> has been upgraded from version 1.42 to 1.45.
+
+Its documentation now shows the use of C<__PACKAGE__> and direct object
+syntax
+L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>.
+
+=item *
+
+L<Encode> has been upgraded from version 2.88 to 2.97.
+
+=item *
+
+L<encoding> has been upgraded from version 2.19 to 2.22.
+
+=item *
+
+L<Errno> has been upgraded from version 1.28 to 1.29.
+
+=item *
+
+L<experimental> has been upgraded from version 0.016 to 0.019.
+
+=item *
+
+L<Exporter> has been upgraded from version 5.72 to 5.73.
+
+=item *
+
+L<ExtUtils::CBuilder> has been upgraded from version 0.280225 to 0.280230.
+
+=item *
+
+L<ExtUtils::Constant> has been upgraded from version 0.23 to 0.25.
+
+=item *
+
+L<ExtUtils::Embed> has been upgraded from version 1.34 to 1.35.
+
+=item *
+
+L<ExtUtils::Install> has been upgraded from version 2.04 to 2.14.
+
+=item *
+
+L<ExtUtils::MakeMaker> has been upgraded from version 7.24 to 7.34.
+
+=item *
+
+L<ExtUtils::Miniperl> has been upgraded from version 1.06 to 1.08.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.34 to 3.39.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.34 to 3.38.
+
+=item *
+
+L<ExtUtils::XSSymSet> has been upgraded from version 1.3 to 1.4.
+
+=item *
+
+L<feature> has been upgraded from version 1.47 to 1.52.
+
+=item *
+
+L<fields> has been upgraded from version 2.23 to 2.24.
+
+=item *
+
+L<File::Copy> has been upgraded from version 2.32 to 2.33.
+
+It will now use the sub-second precision variant of utime() supplied by
+L<Time::HiRes> where available.
+L<[perl #132401]|https://rt.perl.org/Ticket/Display.html?id=132401>.
+
+=item *
+
+L<File::Fetch> has been upgraded from version 0.52 to 0.56.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.28 to 1.31.
+
+=item *
+
+L<File::Path> has been upgraded from version 2.12_01 to 2.15.
+
+=item *
+
+L<File::Spec> and L<Cwd> have been upgraded from version 3.67 to 3.74.
+
+=item *
+
+L<File::stat> has been upgraded from version 1.07 to 1.08.
+
+=item *
+
+L<FileCache> has been upgraded from version 1.09 to 1.10.
+
+=item *
+
+L<Filter::Simple> has been upgraded from version 0.93 to 0.95.
+
+=item *
+
+L<Filter::Util::Call> has been upgraded from version 1.55 to 1.58.
+
+=item *
+
+L<GDBM_File> has been upgraded from version 1.15 to 1.17.
+
+Its documentation now explains that C<each> and C<delete> don't mix in
+hashes tied to this module
+L<[perl #117449]|https://rt.perl.org/Ticket/Display.html?id=117449>.
+
+It will now retry opening with an acceptable block size if asking gdbm
+to default the block size failed
+L<[perl #119623]|https://rt.perl.org/Ticket/Display.html?id=119623>.
+
+=item *
+
+L<Getopt::Long> has been upgraded from version 2.49 to 2.5.
+
+=item *
+
+L<Hash::Util::FieldHash> has been upgraded from version 1.19 to 1.20.
+
+=item *
+
+L<I18N::Langinfo> has been upgraded from version 0.13 to 0.17.
+
+This module is now available on all platforms, emulating the system
+L<nl_langinfo(3)> on systems that lack it. Some caveats apply, as
+L<detailed in its documentation|I18N::Langinfo>, the most severe being
+that, except for MS Windows, the C<CODESET> item is not implemented on
+those systems, always returning C<"">.
+
+It now sets the UTF-8 flag in its returned scalar if the string contains
+legal non-ASCII UTF-8, and the locale is UTF-8
+L<[perl #127288]|https://rt.perl.org/Ticket/Display.html?id=127288>.
+
+This update also fixes a bug in which the underlying locale was ignored
+for the C<RADIXCHAR> (always was returned as a dot) and the C<THOUSEP>
+(always empty). Now the locale-appropriate values are returned.
+
+=item *
+
+L<I18N::LangTags> has been upgraded from version 0.42 to 0.43.
+
+=item *
+
+L<if> has been upgraded from version 0.0606 to 0.0608.
+
+=item *
+
+L<IO> has been upgraded from version 1.38 to 1.39.
+
+=item *
+
+L<IO::Socket::IP> has been upgraded from version 0.38 to 0.39.
+
+=item *
+
+L<IPC::Cmd> has been upgraded from version 0.96 to 1.00.
+
+=item *
+
+L<JSON::PP> has been upgraded from version 2.27400_02 to 2.97001.
+
+=item *
+
+The C<libnet> distribution has been upgraded from version 3.10 to 3.11.
+
+=item *
+
+L<List::Util> has been upgraded from version 1.46_02 to 1.49.
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.42 to 3.56.
+
+B<NOTE>: L<Locale::Codes> scheduled to be removed from core in Perl 5.30.
+
+=item *
+
+L<Locale::Maketext> has been upgraded from version 1.28 to 1.29.
+
+=item *
+
+L<Math::BigInt> has been upgraded from version 1.999806 to 1.999811.
+
+=item *
+
+L<Math::BigInt::FastCalc> has been upgraded from version 0.5005 to 0.5006.
+
+=item *
+
+L<Math::BigRat> has been upgraded from version 0.2611 to 0.2613.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20170530 to 5.20180622.
+
+=item *
+
+L<mro> has been upgraded from version 1.20 to 1.22.
+
+=item *
+
+L<Net::Ping> has been upgraded from version 2.55 to 2.62.
+
+=item *
+
+L<NEXT> has been upgraded from version 0.67 to 0.67_01.
+
+=item *
+
+L<ODBM_File> has been upgraded from version 1.14 to 1.15.
+
+=item *
+
+L<Opcode> has been upgraded from version 1.39 to 1.43.
+
+=item *
+
+L<overload> has been upgraded from version 1.28 to 1.30.
+
+=item *
+
+L<PerlIO::encoding> has been upgraded from version 0.25 to 0.26.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.26 to 0.29.
+
+=item *
+
+L<PerlIO::via> has been upgraded from version 0.16 to 0.17.
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.11 to 1.13.
+
+=item *
+
+L<Pod::Html> has been upgraded from version 1.2202 to 1.24.
+
+A title for the HTML document will now be automatically generated by
+default from a "NAME" section in the POD document, as it used to be
+before the module was rewritten to use L<Pod::Simple::XHTML> to do the
+core of its job
+L<[perl #110520]|https://rt.perl.org/Ticket/Display.html?id=110520>.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.28 to 3.2801.
+
+=item *
+
+The C<podlators> distribution has been upgraded from version 4.09 to 4.10.
+
+Man page references and function names now follow the Linux man page
+formatting standards, instead of the Solaris standard.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.76 to 1.84.
+
+Some more cautions were added about using locale-specific functions in
+threaded applications.
+
+=item *
+
+L<re> has been upgraded from version 0.34 to 0.36.
+
+=item *
+
+L<Scalar::Util> has been upgraded from version 1.46_02 to 1.50.
+
+=item *
+
+L<SelfLoader> has been upgraded from version 1.23 to 1.25.
+
+=item *
+
+L<Socket> has been upgraded from version 2.020_03 to 2.027.
+
+=item *
+
+L<sort> has been upgraded from version 2.02 to 2.04.
+
+=item *
+
+L<Storable> has been upgraded from version 2.62 to 3.08.
+
+=item *
+
+L<Sub::Util> has been upgraded from version 1.48 to 1.49.
+
+=item *
+
+L<subs> has been upgraded from version 1.02 to 1.03.
+
+=item *
+
+L<Sys::Hostname> has been upgraded from version 1.20 to 1.22.
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.16 to 1.17.
+
+=item *
+
+L<Test> has been upgraded from version 1.30 to 1.31.
+
+=item *
+
+L<Test::Harness> has been upgraded from version 3.38 to 3.42.
+
+=item *
+
+L<Test::Simple> has been upgraded from version 1.302073 to 1.302133.
+
+=item *
+
+L<threads> has been upgraded from version 2.15 to 2.22.
+
+The documentation now better describes the problems that arise when
+returning values from threads, and no longer warns about creating threads
+in C<BEGIN> blocks.
+L<[perl #96538]|https://rt.perl.org/Ticket/Display.html?id=96538>
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.56 to 1.58.
+
+=item *
+
+L<Tie::Array> has been upgraded from version 1.06 to 1.07.
+
+=item *
+
+L<Tie::StdHandle> has been upgraded from version 4.4 to 4.5.
+
+=item *
+
+L<Time::gmtime> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9741 to 1.9759.
+
+=item *
+
+L<Time::localtime> has been upgraded from version 1.02 to 1.03.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.31 to 1.3204.
+
+=item *
+
+L<Unicode::Collate> has been upgraded from version 1.19 to 1.25.
+
+=item *
+
+L<Unicode::Normalize> has been upgraded from version 1.25 to 1.26.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.68 to 0.70.
+
+The function C<num> now accepts an optional parameter to help in
+diagnosing error returns.
+
+=item *
+
+L<User::grent> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
+L<User::pwent> has been upgraded from version 1.00 to 1.01.
+
+=item *
+
+L<utf8> has been upgraded from version 1.19 to 1.21.
+
+=item *
+
+L<vars> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
+L<version> has been upgraded from version 0.9917 to 0.9923.
+
+=item *
+
+L<VMS::DCLsym> has been upgraded from version 1.08 to 1.09.
+
+=item *
+
+L<VMS::Stdio> has been upgraded from version 2.41 to 2.44.
+
+=item *
+
+L<warnings> has been upgraded from version 1.37 to 1.42.
+
+It now includes new functions with names ending in C<_at_level>, allowing
+callers to specify the exact call frame.
+L<[perl #132468]|https://rt.perl.org/Ticket/Display.html?id=132468>
+
+=item *
+
+L<XS::Typemap> has been upgraded from version 0.15 to 0.16.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.27 to 0.30.
+
+Its documentation now shows the use of C<__PACKAGE__>, and direct object
+syntax for example C<DynaLoader> usage
+L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>.
+
+Platforms that use C<mod2fname> to edit the names of loadable
+libraries now look for bootstrap (.bs) files under the correct,
+non-edited name.
+
+=back
+
+=head2 Removed Modules and Pragmata
+
+=over 4
+
+=item *
+
+The C<VMS::stdio> compatibility shim has been removed.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+We have attempted to update the documentation to reflect the changes
+listed in this document. If you find any we have missed, send email
+to L<perlbug@perl.org|mailto:perlbug@perl.org>.
+
+Additionally, the following selected changes have been made:
+
+=head3 L<perlapi>
+
+=over 4
+
+=item *
+
+The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
+are now documented comprehensively, where previously the only
+documentation was a reference to the L<perlembed> tutorial.
+
+=item *
+
+The documentation of C<newGIVENOP()> has been belatedly updated to
+account for the removal of lexical C<$_>.
+
+=item *
+
+The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
+documented much more comprehensively than before.
+
+=back
+
+=head3 L<perldata>
+
+=over 4
+
+=item *
+
+The section "Truth and Falsehood" in L<perlsyn> has been moved into
+L<perldata>.
+
+=back
+
+=head3 L<perldebguts>
+
+=over 4
+
+=item *
+
+The description of the conditions under which C<DB::sub()> will be called
+has been clarified.
+L<[perl #131672]|https://rt.perl.org/Ticket/Display.html?id=131672>
+
+=back
+
+=head3 L<perldiag>
+
+=over 4
+
+=item * L<perldiag/Variable length lookbehind not implemented in regex mE<sol>%sE<sol>>
+
+This now gives more ideas as to workarounds to the issue that was
+introduced in Perl 5.18 (but not documented explicitly in its perldelta)
+for the fact that some Unicode C</i> rules cause a few sequences such as
+
+ (?<!st)
+
+to be considered variable length, and hence disallowed.
+
+=item * "Use of state $_ is experimental" in L<perldiag>
+
+This entry has been removed, as the experimental support of this construct was
+removed in perl 5.24.0.
+
+=item *
+
+The diagnostic C<Initialization of state variables in list context
+currently forbidden> has changed to C<Initialization of state variables
+in list currently forbidden>, because list-context initialization of
+single aggregate state variables is now permitted.
+
+=back
+
+=head3 L<perlembed>
+
+=over 4
+
+=item *
+
+The examples in L<perlembed> have been made more portable in the way
+they exit, and the example that gets an exit code from the embedded Perl
+interpreter now gets it from the right place. The examples that pass
+a constructed argv to Perl now show the mandatory null C<argv[argc]>.
+
+=item *
+
+An example in L<perlembed> used the string value of C<ERRSV> as a
+format string when calling croak(). If that string contains format
+codes such as C<%s> this could crash the program.
+
+This has been changed to a call to croak_sv().
+
+An alternative could have been to supply a trivial format string:
+
+ croak("%s", SvPV_nolen(ERRSV));
+
+or as a special case for C<ERRSV> simply:
+
+ croak(NULL);
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+There is now a note that warnings generated by built-in functions are
+documented in L<perldiag> and L<warnings>.
+L<[perl #116080]|https://rt.perl.org/Ticket/Display.html?id=116080>
+
+=item *
+
+The documentation for the C<exists> operator no longer says that
+autovivification behaviour "may be fixed in a future release".
+We've determined that we're not going to change the default behaviour.
+L<[perl #127712]|https://rt.perl.org/Ticket/Display.html?id=127712>
+
+=item *
+
+A couple of small details in the documentation for the C<bless> operator
+have been clarified.
+L<[perl #124428]|https://rt.perl.org/Ticket/Display.html?id=124428>
+
+=item *
+
+The description of C<@INC> hooks in the documentation for C<require>
+has been corrected to say that filter subroutines receive a useless
+first argument.
+L<[perl #115754]|https://rt.perl.org/Ticket/Display.html?id=115754>
+
+=item *
+
+The documentation of C<ref> has been rewritten for clarity.
+
+=item *
+
+The documentation of C<use> now explains what syntactically qualifies
+as a version number for its module version checking feature.
+
+=item *
+
+The documentation of C<warn> has been updated to reflect that since Perl
+5.14 it has treated complex exception objects in a manner equivalent
+to C<die>.
+L<[perl #121372]|https://rt.perl.org/Ticket/Display.html?id=121372>
+
+=item *
+
+The documentation of C<die> and C<warn> has been revised for clarity.
+
+=item *
+
+The documentation of C<each> has been improved, with a slightly more
+explicit description of the sharing of iterator state, and with
+caveats regarding the fragility of while-each loops.
+L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644>
+
+=item *
+
+Clarification to C<require> was added to explain the differences between
+
+ require Foo::Bar;
+ require "Foo/Bar.pm";
+
+=back
+
+=head3 L<perlgit>
+
+=over 4
+
+=item *
+
+The precise rules for identifying C<smoke-me> branches are now stated.
+
+=back
+
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+The section on reference counting in L<perlguts> has been heavily revised,
+to describe references in the way a programmer needs to think about them
+rather than in terms of the physical data structures.
+
+=item *
+
+Improve documentation related to UTF-8 multibytes.
+
+=back
+
+=head3 L<perlintern>
+
+=over 4
+
+=item *
+
+The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
+now documented.
+
+=back
+
+=head3 L<perlobj>
+
+=over 4
+
+=item *
+
+The documentation about C<DESTROY> methods has been corrected, updated,
+and revised, especially in regard to how they interact with exceptions.
+L<[perl #122753]|https://rt.perl.org/Ticket/Display.html?id=122753>
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+The description of the C<x> operator in L<perlop> has been clarified.
+L<[perl #132460]|https://rt.perl.org/Ticket/Display.html?id=132460>
+
+=item *
+
+L<perlop> has been updated to note that C<qw>'s whitespace rules differ
+from that of C<split>'s in that only ASCII whitespace is used.
+
+=item *
+
+The general explanation of operator precedence and associativity has
+been corrected and clarified.
+L<[perl #127391]|https://rt.perl.org/Ticket/Display.html?id=127391>
+
+=item *
+
+The documentation for the C<\> referencing operator now explains the
+unusual context that it supplies to its operand.
+L<[perl #131061]|https://rt.perl.org/Ticket/Display.html?id=131061>
+
+=back
+
+=head3 L<perlrequick>
+
+=over 4
+
+=item *
+
+Clarifications on metacharacters and character classes
+
+=back
+
+=head3 L<perlretut>
+
+=over 4
+
+=item *
+
+Clarify metacharacters.
+
+=back
+
+=head3 L<perlrun>
+
+=over 4
+
+=item *
+
+Clarify the differences between B<< -M >> and B<< -m >>.
+L<[perl #131518]|https://rt.perl.org/Ticket/Display.html?id=131518>
+
+=back
+
+=head3 L<perlsec>
+
+=over 4
+
+=item *
+
+The documentation about set-id scripts has been updated and revised.
+L<[perl #74142]|https://rt.perl.org/Ticket/Display.html?id=74142>
+
+=item *
+
+A section about using C<sudo> to run Perl scripts has been added.
+
+=back
+
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+The section "Truth and Falsehood" in L<perlsyn> has been removed from
+that document, where it didn't belong, and merged into the existing
+paragraph on the same topic in L<perldata>.
+
+=item *
+
+The means to disambiguate between code blocks and hash constructors,
+already documented in L<perlref>, are now documented in L<perlsyn> too.
+L<[perl #130958]|https://rt.perl.org/Ticket/Display.html?id=130958>
+
+=back
+
+=head3 L<perluniprops>
+
+=over 4
+
+=item *
+
+L<perluniprops> has been updated to note that C<\p{Word}> now includes
+code points matching the C<\p{Join_Control}> property. The change to
+the property was made in Perl 5.18, but not documented until now. There
+are currently only two code points that match this property U+200C (ZERO
+WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER).
+
+=item *
+
+For each binary table or property, the documentation now includes which
+characters in the range C<\x00-\xFF> it matches, as well as a list of
+the first few ranges of code points matched above that.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+The entry for C<$+> in perlvar has been expanded upon to describe handling of
+multiply-named capturing groups.
+
+=back
+
+=head3 L<perlfunc>, L<perlop>, L<perlsyn>
+
+=over 4
+
+=item *
+
+In various places, improve the documentation of the special cases
+in the condition expression of a while loop, such as implicit C<defined>
+and assignment to C<$_>.
+L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644>
+
+=back
+
+=head1 Diagnostics
+
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 New Diagnostics
+
+=head3 New Errors
+
+=over 4
+
+=item *
+
+L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
+
+(F) A "goto" statement was executed to jump into the middle of a C<given>
+block. You can't get there from here. See L<perlfunc/goto>.
+
+=item *
+
+L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression">
+
+Use of C<goto> to jump into the parameter of a binary or list operator has
+been prohibited, to prevent crashes and stack corruption.
+L<[perl #130936]|https://rt.perl.org/Ticket/Display.html?id=130936>
+
+You may only enter the I<first> argument of an operator that takes a fixed
+number of arguments, since this is a case that will not cause stack
+corruption.
+L<[perl #132854]|https://rt.perl.org/Ticket/Display.html?id=132854>
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Old package separator used in string|perldiag/"Old package separator used in string">
+
+(W syntax) You used the old package separator, "'", in a variable
+named inside a double-quoted string; e.g., C<"In $name's house">. This
+is equivalent to C<"In $name::s house">. If you meant the former, put
+a backslash before the apostrophe (C<"In $name\'s house">).
+
+=item *
+
+L<perldiag/Locale '%s' contains (at least) the following characters which
+have unexpected meanings: %s The Perl program will use the expected
+meanings>
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+A false-positive warning that was issued when using a
+numerically-quantified sub-pattern in a recursive regex has been
+silenced. L<[perl #131868]|https://rt.perl.org/Public/Bug/Display.html?id=131868>
+
+=item *
+
+The warning about useless use of a concatenation operator in void context
+is now generated for expressions with multiple concatenations, such as
+C<$a.$b.$c>, which used to mistakenly not warn.
+L<[perl #6997]|https://rt.perl.org/Ticket/Display.html?id=6997>
+
+=item *
+
+Warnings that a variable or subroutine "masks earlier declaration in same
+...", or that an C<our> variable has been redeclared, have been moved to a
+new warnings category "shadow". Previously they were in category "misc".
+
+=item *
+
+The deprecation warning from C<Sys::Hostname::hostname()> saying that
+it doesn't accept arguments now states the Perl version in which the
+warning will be upgraded to an error.
+L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349>
+
+=item *
+
+The L<perldiag> entry for the error regarding a set-id script has been
+expanded to make clear that the error is reporting a specific security
+vulnerability, and to advise how to fix it.
+
+=item *
+
+The C<< Unable to flush stdout >> error message was missing a trailing
+newline. [debian #875361]
+
+=back
+
+=head1 Utility Changes
+
+=head2 L<perlbug>
+
+=over 4
+
+=item *
+
+C<--help> and C<--version> options have been added.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item * C89 requirement
+
+Perl has been documented as requiring a C89 compiler to build since October
+1998. A variety of simplifications have now been made to Perl's internals to
+rely on the features specified by the C89 standard. We believe that this
+internal change hasn't altered the set of platforms that Perl builds on, but
+please report a bug if Perl now has new problems building on your platform.
+
+=item *
+
+On GCC, C<-Werror=pointer-arith> is now enabled by default,
+disallowing arithmetic on void and function pointers.
+
+=item *
+
+Where an HTML version of the documentation is installed, the HTML
+documents now use relative links to refer to each other. Links from
+the index page of L<perlipc> to the individual section documents are
+now correct.
+L<[perl #110056]|https://rt.perl.org/Ticket/Display.html?id=110056>
+
+=item *
+
+F<lib/unicore/mktables> now correctly canonicalizes the names of the
+dependencies stored in the files it generates.
+
+F<regen/mk_invlists.pl>, unlike the other F<regen/*.pl> scripts, used
+C<$0> to name itself in the dependencies stored in the files it
+generates. It now uses a literal so that the path stored in the
+generated files doesn't depend on how F<regen/mk_invlists.pl> is
+invoked.
+
+This lack of canonical names could cause test failures in F<t/porting/regen.t>.
+L<[perl #132925]|https://rt.perl.org/Ticket/Display.html?id=132925>
+
+=item * New probes
+
+=over 2
+
+=item HAS_BUILTIN_ADD_OVERFLOW
+
+=item HAS_BUILTIN_MUL_OVERFLOW
+
+=item HAS_BUILTIN_SUB_OVERFLOW
+
+=item HAS_THREAD_SAFE_NL_LANGINFO_L
+
+=item HAS_LOCALECONV_L
+
+=item HAS_MBRLEN
+
+=item HAS_MBRTOWC
+
+=item HAS_MEMRCHR
+
+=item HAS_NANOSLEEP
+
+=item HAS_STRNLEN
+
+=item HAS_STRTOLD_L
+
+=item I_WCHAR
+
+=back
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+Testing of the XS-APItest directory is now done in parallel, where
+applicable.
+
+=item *
+
+Perl now includes a default F<.travis.yml> file for Travis CI testing
+on github mirrors.
+L<[perl #123981]|https://rt.perl.org/Ticket/Display.html?id=123981>
+
+=item *
+
+The watchdog timer count in F<re/pat_psycho.t> can now be overridden.
+
+This test can take a long time to run, so there is a timer to keep
+this in check (currently, 5 minutes). This commit adds checking
+the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set,
+the time out setting is multiplied by its value.
+
+=item *
+
+F<harness> no longer waits for 30 seconds when running F<t/io/openpid.t>.
+L<[perl #121028]|https://rt.perl.org/Ticket/Display.html?id=121028>
+L<[perl #132867]|https://rt.perl.org/Ticket/Display.html?id=132867>
+
+=back
+
+=head1 Packaging
+
+For the past few years we have released perl using three different archive
+formats: bzip (C<.bz2>), LZMA2 (C<.xz>) and gzip (C<.gz>). Since xz compresses
+better and decompresses faster, and gzip is more compatible and uses less
+memory, we have dropped the C<.bz2> archive format with this release.
+(If this poses a problem, do let us know; see L</Reporting Bugs>, below.)
+
+=head1 Platform Support
+
+=head2 Discontinued Platforms
+
+=over 4
+
+=item PowerUX / Power MAX OS
+
+Compiler hints and other support for these apparently long-defunct
+platforms has been removed.
+
+=back
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item CentOS
+
+Compilation on CentOS 5 is now fixed.
+
+=item Cygwin
+
+A build with the quadmath library can now be done on Cygwin.
+
+=item Darwin
+
+Perl now correctly uses reentrant functions, like C<asctime_r>, on
+versions of Darwin that have support for them.
+
+=item FreeBSD
+
+FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for
+architectures other than ARM and MIPS. By default, perl is now compiled
+with the same optimization levels.
+
+=item VMS
+
+Several fix-ups for F<configure.com>, marking function VMS has
+(or doesn't have).
+
+CRTL features can now be set by embedders before invoking Perl by using
+the C<decc$feature_set> and C<decc$feature_set_value> functions.
+Previously any attempt to set features after image initialization were
+ignored.
+
+=item Windows
+
+=over 4
+
+=item *
+
+Support for compiling perl on Windows using Microsoft Visual Studio 2017
+(containing Visual C++ 14.1) has been added.
+
+=item *
+
+Visual C++ compiler version detection has been improved to work on non-English
+language systems.
+
+=item *
+
+We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
+versions earlier than 14.1.
+
+=back
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+A new optimisation phase has been added to the compiler,
+C<optimize_optree()>, which does a top-down scan of a complete optree
+just before the peephole optimiser is run. This phase is not currently
+hookable.
+
+=item *
+
+An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
+chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
+C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
+C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
+contains the argument count, plus a pointer to a constant string and a set
+of segment lengths. For example with
+
+ my $x = "foo=$foo, bar=$bar\n";
+
+the constant string would be C<"foo=, bar=\n"> and the segment lengths
+would be (4,6,1). If the string contains characters such as C<\x80>, whose
+representation changes under utf8, two sets of strings plus lengths are
+precomputed and stored.
+
+=item *
+
+Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not
+safe in the presence of multithreading. A new
+L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been
+added to allow XS modules to safely define custom keywords even when
+loaded from a thread, analogous to L<C<PL_check>|perlapi/PL_check> /
+L<C<wrap_op_checker>|perlapi/wrap_op_checker>.
+
+=item *
+
+The C<PL_statbuf> interpreter variable has been removed.
+
+=item *
+
+The deprecated function C<to_utf8_case()>, accessible from XS code, has
+been removed.
+
+=item *
+
+A new function
+L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc>
+has been added that is like
+L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string>
+but takes an extra pointer parameter into which is stored the location
+of the first variant character, if any are found.
+
+=item *
+
+A new function, L<C<Perl_langinfo()>|perlapi/Perl_langinfo> has been
+added. It is an (almost) drop-in replacement for the system
+C<nl_langinfo(3)>, but works on platforms that lack that; as well as
+being more thread-safe, and hiding some gotchas with locale handling
+from the caller. Code that uses this, needn't use L<C<localeconv(3)>>
+(and be affected by the gotchas) to find the decimal point, thousands
+separator, or currency symbol. See L<perlapi/Perl_langinfo>.
+
+=item *
+
+A new API function L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken> has
+been added to complement L<C<sv_rvweaken()>|perlapi/sv_rvweaken>.
+The implementation was taken from L<Scalar::Util/unweaken>.
+
+=item *
+
+A new flag, C<SORTf_UNSTABLE>, has been added. This will allow a
+future commit to make mergesort unstable when the user specifies ‘no
+sort stable’, since it has been decided that mergesort should remain
+stable by default.
+
+=item *
+
+XS modules can now automatically get reentrant versions of system
+functions on threaded perls.
+
+By adding
+
+ #define PERL_REENTRANT
+
+near the beginning of an C<XS> file, it will be compiled so that
+whatever reentrant functions perl knows about on that system will
+automatically and invisibly be used instead of the plain, non-reentrant
+versions. For example, if you write C<getpwnam()> in your code, on a
+system that has C<getpwnam_r()> all calls to the former will be translated
+invisibly into the latter. This does not happen except on threaded
+perls, as they aren't needed otherwise. Be aware that which functions
+have reentrant versions varies from system to system.
+
+=item *
+
+The C<PERL_NO_OP_PARENT> build define is no longer supported, which means
+that perl is now always built with C<PERL_OP_PARENT> enabled.
+
+=item *
+
+The format and content of the non-utf8 transliteration table attached to
+the C<op_pv> field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a
+C<struct OPtrans_map>.
+
+=item *
+
+A new compiler C<#define>, C<dTHX_DEBUGGING>. has been added. This is
+useful for XS or C code that only need the thread context because their
+debugging statements that get compiled only under C<-DDEBUGGING> need
+one.
+
+=item *
+
+A new API function L<perlapi/Perl_setlocale> has been added.
+
+=item *
+
+L<perlapi/sync_locale> has been revised to return a boolean as to
+whether the system was using the global locale or not.
+
+=item *
+
+A new kind of magic scalar, called a "nonelem" scalar, has been introduced.
+It is stored in an array to denote a non-existent element, whenever such an
+element is accessed in a potential lvalue context. It replaces the
+existing "defelem" (deferred element) magic wherever this is possible,
+being significantly more efficient. This means that
+C<some_sub($sparse_array[$nonelem])> no longer has to create a new magic
+defelem scalar each time, as long as the element is within the array.
+
+It partially fixes the rare bug of deferred elements getting out of synch
+with their arrays when the array is shifted or unshifted.
+L<[perl #132729]|https://rt.perl.org/Ticket/Display.html?id=132729>
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+List assignment (C<aassign>) could in some rare cases allocate an
+entry on the mortals stack and leave the entry uninitialized, leading to
+possible crashes.
+L<[perl #131570]|https://rt.perl.org/Ticket/Display.html?id=131570>
+
+=item *
+
+Attempting to apply an attribute to an C<our> variable where a
+function of that name already exists could result in a NULL pointer
+being supplied where an SV was expected, crashing perl.
+L<[perl #131597]|https://rt.perl.org/Ticket/Display.html?id=131597>
+
+=item *
+
+C<split ' '> now correctly handles the argument being split when in the
+scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature"
+>> feature. Previously, when a string using the single-byte internal
+representation contained characters that are whitespace by Unicode rules but
+not by ASCII rules, it treated those characters as part of fields rather
+than as field separators.
+L<[perl #130907]|https://rt.perl.org/Ticket/Display.html?id=130907>
+
+=item *
+
+Several built-in functions previously had bugs that could cause them to
+write to the internal stack without allocating room for the item being
+written. In rare situations, this could have led to a crash. These bugs have
+now been fixed, and if any similar bugs are introduced in future, they will
+be detected automatically in debugging builds.
+
+These internal stack usage checks introduced are also done
+by the C<entersub> operator when calling XSUBs. This means we can
+report which XSUB failed to allocate enough stack space.
+L<[perl #131975]|https://rt.perl.org/Public/Bug/Display.html?id=131975>
+
+=item *
+
+Using a symbolic ref with postderef syntax as the key in a hash lookup was
+yielding an assertion failure on debugging builds.
+L<[perl #131627]|https://rt.perl.org/Ticket/Display.html?id=131627>
+
+=item *
+
+Array and hash variables whose names begin with a caret now admit indexing
+inside their curlies when interpolated into strings, as in C<<
+"${^CAPTURE[0]}" >> to index C<@{^CAPTURE}>.
+L<[perl #131664]|https://rt.perl.org/Ticket/Display.html?id=131664>
+
+=item *
+
+Fetching the name of a glob that was previously UTF-8 but wasn't any
+longer would return that name flagged as UTF-8.
+L<[perl #131263]|https://rt.perl.org/Ticket/Display.html?id=131263>
+
+=item *
+
+The perl C<sprintf()> function (via the underlying C function
+C<Perl_sv_vcatpvfn_flags()>) has been heavily reworked to fix many minor
+bugs, including the integer wrapping of large width and precision
+specifiers and potential buffer overruns. It has also been made faster in
+many cases.
+
+=item *
+
+Exiting from an C<eval>, whether normally or via an exception, now always
+frees temporary values (possibly calling destructors) I<before> setting
+C<$@>. For example:
+
+ sub DESTROY { eval { die "died in DESTROY"; } }
+ eval { bless []; };
+ # $@ used to be equal to "died in DESTROY" here; it's now "".
+
+=item *
+
+Fixed a duplicate symbol failure with C<-flto -mieee-fp> builds.
+F<pp.c> defined C<_LIB_VERSION> which C<-lieee> already defines.
+L<[perl #131786]|https://rt.perl.org/Ticket/Display.html?id=131786>
+
+=item *
+
+The tokenizer no longer consumes the exponent part of a floating
+point number if it's incomplete.
+L<[perl #131725]|https://rt.perl.org/Ticket/Display.html?id=131725>
+
+=item *
+
+On non-threaded builds, for C<m/$null/> where C<$null> is an empty
+string is no longer treated as if the C</o> flag was present when the
+previous matching match operator included the C</o> flag. The
+rewriting used to implement this behavior could confuse the
+interpreter. This matches the behaviour of threaded builds.
+L<[perl #124368]|https://rt.perl.org/Ticket/Display.html?id=124368>
+
+=item *
+
+Parsing a C<sub> definition could cause a use after free if the C<sub>
+keyword was followed by whitespace including newlines (and comments.)
+L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836>
+
+=item *
+
+The tokenizer now correctly adjusts a parse pointer when skipping
+whitespace in a C<< ${identifier} >> construct.
+L<[perl #131949]|https://rt.perl.org/Public/Bug/Display.html?id=131949>
+
+=item *
+
+Accesses to C<${^LAST_FH}> no longer assert after using any of a
+variety of I/O operations on a non-glob.
+L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263>
+
+=item *
+
+The XS-level C<Copy()>, C<Move()>, C<Zero()> macros and their variants now
+assert if the pointers supplied are C<NULL>. ISO C considers
+supplying NULL pointers to the functions these macros are built upon
+as undefined behaviour even when their count parameters are zero.
+Based on these assertions and the original bug report three macro
+calls were made conditional.
+L<[perl #131746]|https://rt.perl.org/Public/Bug/Display.html?id=131746>
+L<[perl #131892]|https://rt.perl.org/Public/Bug/Display.html?id=131892>
+
+=item *
+
+Only the C<=> operator is permitted for defining defaults for
+parameters in subroutine signatures. Previously other assignment
+operators, e.g. C<+=>, were also accidentally permitted.
+L<[perl #131777]|https://rt.perl.org/Public/Bug/Display.html?id=131777>
+
+=item *
+
+Package names are now always included in C<:prototype> warnings
+L<[perl #131833]|https://rt.perl.org/Public/Bug/Display.html?id=131833>
+
+=item *
+
+The C<je_old_stack_hwm> field, previously only found in the C<jmpenv>
+structure on debugging builds, has been added to non-debug builds as
+well. This fixes an issue with some CPAN modules caused by the size of
+this structure varying between debugging and non-debugging builds.
+L<[perl #131942]|https://rt.perl.org/Public/Bug/Display.html?id=131942>
+
+=item *
+
+The arguments to the C<ninstr()> macro are now correctly parenthesized.
+
+=item *
+
+A NULL pointer dereference in the C<S_regmatch()> function has been
+fixed.
+L<[perl #132017]|https://rt.perl.org/Public/Bug/Display.html?id=132017>
+
+=item *
+
+Calling L<exec PROGRAM LIST|perlfunc/exec PROGRAM LIST> with an empty C<LIST>
+has been fixed. This should call C<execvp()> with an empty C<argv> array
+(containing only the terminating C<NULL> pointer), but was instead just
+returning false (and not setting L<C<$!>|perlvar/$!>).
+L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730>
+
+=item *
+
+The C<gv_fetchmeth_sv> C function stopped working properly in Perl 5.22 when
+fetching a constant with a UTF-8 name if that constant subroutine was stored in
+the stash as a simple scalar reference, rather than a full typeglob. This has
+been corrected.
+
+=item *
+
+Single-letter debugger commands followed by an argument which starts with
+punctuation (e.g. C<p$^V> and C<x@ARGV>) now work again. They had been
+wrongly requiring a space between the command and the argument.
+L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174>
+
+=item *
+
+L<splice|perlfunc/splice ARRAY,OFFSET,LENGTH,LIST> now throws an exception
+("Modification of a read-only value attempted") when modifying a read-only
+array. Until now it had been silently modifying the array. The new behaviour
+is consistent with the behaviour of L<push|perlfunc/push ARRAY,LIST> and
+L<unshift|perlfunc/unshift ARRAY,LIST>.
+L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000>
+
+=item *
+
+C<stat()>, C<lstat()>, and file test operators now fail if given a
+filename containing a nul character, in the same way that C<open()>
+already fails.
+
+=item *
+
+C<stat()>, C<lstat()>, and file test operators now reliably set C<$!> when
+failing due to being applied to a closed or otherwise invalid file handle.
+
+=item *
+
+File test operators for Unix permission bits that don't exist on a
+particular platform, such as C<-k> (sticky bit) on Windows, now check that
+the file being tested exists before returning the blanket false result,
+and yield the appropriate errors if the argument doesn't refer to a file.
+
+=item *
+
+Fixed a 'read before buffer' overrun when parsing a range starting with
+C<\N{}> at the beginning of the character set for the transliteration
+operator.
+L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245>
+
+=item *
+
+Fixed a leaked scalar when parsing an empty C<\N{}> at compile-time.
+L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245>
+
+=item *
+
+Calling C<do $path> on a directory or block device now yields a meaningful
+error code in C<$!>.
+L<[perl #125774]|https://rt.perl.org/Ticket/Display.html?id=125774>
+
+=item *
+
+Regexp substitution using an overloaded replacement value that provides
+a tainted stringification now correctly taints the resulting string.
+L<[perl #115266]|https://rt.perl.org/Ticket/Display.html?id=115266>
+
+=item *
+
+Lexical sub declarations in C<do> blocks such as C<do { my sub lex; 123 }>
+could corrupt the stack, erasing items already on the stack in the
+enclosing statement. This has been fixed.
+L<[perl #132442]|https://rt.perl.org/Ticket/Display.html?id=132442>
+
+=item *
+
+C<pack> and C<unpack> can now handle repeat counts and lengths that
+exceed two billion.
+L<[perl #119367]|https://rt.perl.org/Ticket/Display.html?id=119367>
+
+=item *
+
+Digits past the radix point in octal and binary floating point literals
+now have the correct weight on platforms where a floating point
+significand doesn't fit into an integer type.
+
+=item *
+
+The canonical truth value no longer has a spurious special meaning as a
+callable subroutine. It used to be a magic placeholder for a missing
+C<import> or C<unimport> method, but is now treated like any other string
+C<1>.
+L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+
+=item *
+
+C<system> now reduces its arguments to strings in the parent process, so
+any effects of stringifying them (such as overload methods being called
+or warnings being emitted) are visible in the way the program expects.
+L<[perl #121105]|https://rt.perl.org/Ticket/Display.html?id=121105>
+
+=item *
+
+The C<readpipe()> built-in function now checks at compile time that
+it has only one parameter expression, and puts it in scalar context,
+thus ensuring that it doesn't corrupt the stack at runtime.
+L<[perl #4574]|https://rt.perl.org/Ticket/Display.html?id=4574>
+
+=item *
+
+C<sort> now performs correct reference counting when aliasing C<$a> and
+C<$b>, thus avoiding premature destruction and leakage of scalars if they
+are re-aliased during execution of the sort comparator.
+L<[perl #92264]|https://rt.perl.org/Ticket/Display.html?id=92264>
+
+=item *
+
+C<reverse> with no operand, reversing C<$_> by default, is no longer in
+danger of corrupting the stack.
+L<[perl #132544]|https://rt.perl.org/Ticket/Display.html?id=132544>
+
+=item *
+
+C<exec>, C<system>, et al are no longer liable to have their argument
+lists corrupted by reentrant calls and by magic such as tied scalars.
+L<[perl #129888]|https://rt.perl.org/Ticket/Display.html?id=129888>
+
+=item *
+
+Perl's own C<malloc> no longer gets confused by attempts to allocate
+more than a gigabyte on a 64-bit platform.
+L<[perl #119829]|https://rt.perl.org/Ticket/Display.html?id=119829>
+
+=item *
+
+Stacked file test operators in a sort comparator expression no longer
+cause a crash.
+L<[perl #129347]|https://rt.perl.org/Ticket/Display.html?id=129347>
+
+=item *
+
+An identity C<tr///> transformation on a reference is no longer mistaken
+for that reference for the purposes of deciding whether it can be
+assigned to.
+L<[perl #130578]|https://rt.perl.org/Ticket/Display.html?id=130578>
+
+=item *
+
+Lengthy hexadecimal, octal, or binary floating point literals no
+longer cause undefined behaviour when parsing digits that are of such
+low significance that they can't affect the floating point value.
+L<[perl #131894]|https://rt.perl.org/Ticket/Display.html?id=131894>
+
+=item *
+
+C<open $$scalarref...> and similar invocations no longer leak the file
+handle.
+L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814>
+
+=item *
+
+Some convoluted kinds of regexp no longer cause an arithmetic overflow
+when compiled.
+L<[perl #131893]|https://rt.perl.org/Ticket/Display.html?id=131893>
+
+=item *
+
+The default typemap, by avoiding C<newGVgen>, now no longer leaks when
+XSUBs return file handles (C<PerlIO *> or C<FILE *>).
+L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814>
+
+=item *
+
+Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
+crashes because of the early freeing of the subroutine.
+
+=item *
+
+The C<printf> format specifier C<%.0f> no longer rounds incorrectly
+L<[perl #47602]|https://rt.perl.org/Ticket/Display.html?id=47602>,
+and now shows the correct sign for a negative zero.
+
+=item *
+
+Fixed an issue where the error C<< Scalar value @arrayname[0] better
+written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >>
+when arrayname starts with C<< Inf >>.
+L<[perl #132645]|https://rt.perl.org/Ticket/Display.html?id=132645>
+
+=item *
+
+The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools
+distribution now behaves the same as XS implementation on errors: it
+returns an error, and sets C<< $! >>.
+L<[perl #132648]|https://rt.perl.org/Ticket/Display.html?id=132648>
+
+=item *
+
+Vivify array elements when putting them on the stack.
+Fixes L<[perl #8910]|https://rt.perl.org/Ticket/Display.html?id=8910>
+(reported in April 2002).
+
+=item *
+
+Fixed parsing of braced subscript after parens. Fixes
+L<[perl #8045]|https://rt.perl.org/Ticket/Display.html?id=8045>
+(reported in December 2001).
+
+=item *
+
+C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the
+length of the replacement character list was greater than 0x7fff.
+
+=item *
+
+C<tr/non_utf8/non_utf8/cd> failed to add the implied
+C<\x{100}-\x{7fffffff}> to the search character list.
+
+=item *
+
+Compilation failures within "perl-within-perl" constructs, such as with
+string interpolation and the right part of C<s///e>, now cause
+compilation to abort earlier.
+
+Previously compilation could continue in order to report other errors,
+but the failed sub-parse could leave partly parsed constructs on the
+parser shift-reduce stack, confusing the parser, leading to perl
+crashes.
+L<[perl #125351]|https://rt.perl.org/Ticket/Display.html?id=125351>
+
+=item *
+
+On threaded perls where the decimal point (radix) character is not a
+dot, it has been possible for a race to occur between threads when one
+needs to use the real radix character (such as with C<sprintf>). This has
+now been fixed by use of a mutex on systems without thread-safe locales,
+and the problem just doesn't come up on those with thread-safe locales.
+
+=item *
+
+Errors while compiling a regex character class could sometime trigger an
+assertion failure.
+L<[perl #132163]|https://rt.perl.org/Ticket/Display.html?id=132163>
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.28.0 represents approximately 13 months of development since Perl
+5.26.0 and contains approximately 730,000 lines of changes across 2,200
+files from 77 authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 580,000 lines of changes to 1,300 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its fourth decade thanks to a vibrant
+community of users and developers. The following people are known to have
+contributed the improvements that became Perl 5.28.0:
+
+Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alberto Simões, Alexandr
+Savca, Andrew Fresh, Andy Dougherty, Andy Lester, Aristotle Pagaltzis, Ask
+Bjørn Hansen, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
+Mannsåker, Dan Collins, Daniel Dragan, David Cantrell, David Mitchell,
+Dmitry Ulanov, Dominic Hargreaves, E. Choroba, Eric Herman, Eugen Konkov,
+Father Chrysostomos, Gene Sullivan, George Hartzell, Graham Knop, Harald
+Jörg, H.Merijn Brand, Hugo van der Sanden, Jacques Germishuys, James E
+Keenan, Jarkko Hietaniemi, Jerry D. Hedden, J. Nick Koston, John Lightsey,
+John Peacock, John P. Linderman, John SJ Anderson, Karen Etheridge, Karl
+Williamson, Ken Brown, Ken Cotterill, Leon Timmermans, Lukas Mai, Marco
+Fontani, Marc-Philip Werner, Matthew Horsfall, Neil Bowers, Nicholas Clark,
+Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter John Acklam, Reini Urban,
+Renee Baecker, Ricardo Signes, Robin Barker, Sawyer X, Scott Lanning, Sergey
+Aleynikov, Shirakata Kentaro, Shoichi Kaji, Slaven Rezic, Smylers, Steffen
+Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tomasz
+Konojacki, Tom Hukins, Tom Wyant, Tony Cook, Vitali Peil, Yves Orton,
+Zefram.
+
+The list above is almost certainly incomplete as it is automatically
+generated from version control history. In particular, it does not include
+the names of the (very much appreciated) contributors who reported issues to
+the Perl bug tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please
+see the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the perl bug database
+at L<https://rt.perl.org/> . There may also be information at
+L<http://www.perl.org/> , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release. Be sure to trim your bug down to a tiny but
+sufficient test case. Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications which make it
+inappropriate to send to a publicly archived mailing list, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
+
+=head1 Give Thanks
+
+If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
+you can do so by running the C<perlthanks> program:
+
+ perlthanks
+
+This will send an email to the Perl 5 Porters list with your show of thanks.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index f823fbf6a6..d5ebc3ab1d 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,423 +2,57 @@
=head1 NAME
-perldelta - what is new for perl v5.28.0
+[ this is a template for a new perldelta file. Any text flagged as XXX needs
+to be processed before release. ]
+
+perldelta - what is new for perl v5.28.1
=head1 DESCRIPTION
-This document describes differences between the 5.26.0 release and the 5.28.0
+This document describes differences between the 5.28.0 release and the 5.28.1
release.
-If you are upgrading from an earlier release such as 5.24.0, first read
-L<perl5260delta>, which describes differences between 5.24.0 and 5.26.0.
-
-=head1 Core Enhancements
-
-=head2 Unicode 10.0 is supported
-
-A list of changes is at
-L<http://www.unicode.org/versions/Unicode10.0.0>.
-
-=head2 L<C<delete>|perlfunc/delete EXPR> on key/value hash slices
-
-L<C<delete>|perlfunc/delete EXPR> can now be used on
-L<keyE<sol>value hash slices|perldata/KeyE<sol>Value Hash Slices>,
-returning the keys along with the deleted values.
-L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328>
-
-=head2 Experimentally, there are now alphabetic synonyms for some regular expression assertions
-
-If you find it difficult to remember how to write certain of the pattern
-assertions, there are now alphabetic synonyms.
-
- CURRENT NEW SYNONYMS
- ------ ------------
- (?=...) (*pla:...) or (*positive_lookahead:...)
- (?!...) (*nla:...) or (*negative_lookahead:...)
- (?<=...) (*plb:...) or (*positive_lookbehind:...)
- (?<!...) (*nlb:...) or (*negative_lookbehind:...)
- (?>...) (*atomic:...)
-
-These are considered experimental, so using any of these will raise
-(unless turned off) a warning in the C<experimental::alpha_assertions>
-category.
-
-=head2 Mixed Unicode scripts are now detectable
-
-A mixture of scripts, such as Cyrillic and Latin, in a string is often
-the sign of a spoofing attack. A new regular expression construct
-now allows for easy detection of these. For example, you can say
-
- qr/(*script_run: \d+ \b )/x
-
-And the digits matched will all be from the same set of 10. You won't
-get a look-alike digit from a different script that has a different
-value than what it appears to be.
-
-Or:
-
- qr/(*sr: \b \w+ \b )/x
+If you are upgrading from an earlier release such as 5.27.0, first read
+L<perl5280delta>, which describes differences between 5.27.0 and 5.28.0.
-makes sure that all the characters come from the same script.
-
-You can also combine script runs with C<(?E<gt>...)> (or
-C<*atomic:...)>).
-
-Instead of writing:
-
- (*sr:(?<...))
-
-you can now run:
-
- (*asr:...)
- # or
- (*atomic_script_run:...)
-
-This is considered experimental, so using it will raise (unless turned
-off) a warning in the C<experimental::script_run> category.
-
-See L<perlre/Script Runs>.
-
-=head2 In-place editing with C<perl -i> is now safer
-
-Previously in-place editing (C<perl -i>) would delete or rename the
-input file as soon as you started working on a new file.
-
-Without backups this would result in loss of data if there was an
-error, such as a full disk, when writing to the output file.
-
-This has changed so that the input file isn't replaced until the
-output file has been completely written and successfully closed.
-
-This works by creating a work file in the same directory, which is
-renamed over the input file once the output file is complete.
-
-Incompatibilities:
-
-=over
-
-=item *
+=head1 Notice
-Since this renaming needs to only happen once, if you create a thread
-or child process, that renaming will only happen in the original
-thread or process.
+XXX Any important notices here
-=item *
-
-If you change directories while processing a file, and your operating
-system doesn't provide the C<unlinkat()>, C<renameat()> and C<fchmodat()>
-functions, the final rename step may fail.
-
-=back
-
-L<[perl #127663]|https://rt.perl.org/Public/Bug/Display.html?id=127663>
-
-=head2 Initialisation of aggregate state variables
-
-A persistent lexical array or hash variable can now be initialized,
-by an expression such as C<state @a = qw(x y z)>. Initialization of a
-list of persistent lexical variables is still not possible.
-
-=head2 Full-size inode numbers
-
-On platforms where inode numbers are of a type larger than perl's native
-integer numerical types, L<stat|perlfunc/stat> will preserve the full
-content of large inode numbers by returning them in the form of strings of
-decimal digits. Exact comparison of inode numbers can thus be achieved by
-comparing with C<eq> rather than C<==>. Comparison with C<==>, and other
-numerical operations (which are usually meaningless on inode numbers),
-work as well as they did before, which is to say they fall back to
-floating point, and ultimately operate on a fairly useless rounded inode
-number if the real inode number is too big for the floating point format.
-
-=head2 The C<sprintf> C<%j> format size modifier is now available with pre-C99 compilers
-
-The actual size used depends on the platform, so remains unportable.
-
-=head2 Close-on-exec flag set atomically
-
-When opening a file descriptor, perl now generally opens it with its
-close-on-exec flag already set, on platforms that support doing so.
-This improves thread safety, because it means that an C<exec> initiated
-by one thread can no longer cause a file descriptor in the process
-of being opened by another thread to be accidentally passed to the
-executed program.
-
-Additionally, perl now sets the close-on-exec flag more reliably, whether
-it does so atomically or not. Most file descriptors were getting the
-flag set, but some were being missed.
-
-=head2 String- and number-specific bitwise ops are no longer experimental
-
-The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>)
-bitwise operators introduced in Perl 5.22 that are available within the
-scope of C<use feature 'bitwise'> are no longer experimental.
-Because the number-specific ops are spelled the same way as the existing
-operators that choose their behaviour based on their operands, these
-operators must still be enabled via the "bitwise" feature, in either of
-these two ways:
-
- use feature "bitwise";
-
- use v5.28; # "bitwise" now included
-
-They are also now enabled by the B<-E> command-line switch.
-
-The "bitwise" feature no longer emits a warning. Existing code that
-disables the "experimental::bitwise" warning category that the feature
-previously used will continue to work.
-
-One caveat that module authors ought to be aware of is that the numeric
-operators now pass a fifth TRUE argument to overload methods. Any methods
-that check the number of operands may croak if they do not expect so many.
-XS authors in particular should be aware that this:
-
- SV *
- bitop_handler (lobj, robj, swap)
-
-may need to be changed to this:
-
- SV *
- bitop_handler (lobj, robj, swap, ...)
-
-=head2 Locales are now thread-safe on systems that support them
-
-These systems include Windows starting with Visual Studio 2005, and in
-POSIX 2008 systems.
-
-The implication is that you are now free to use locales and change them
-in a threaded environment. Your changes affect only your thread.
-See L<perllocale/Multi-threaded operation>
+=head1 Core Enhancements
-=head2 New read-only predefined variable C<${^SAFE_LOCALES}>
+XXX New core language features go here. Summarize user-visible core language
+enhancements. Particularly prominent performance optimisations could go
+here, but most should go in the L</Performance Enhancements> section.
-This variable is 1 if the Perl interpreter is operating in an
-environment where it is safe to use and change locales (see
-L<perllocale>.) This variable is true when the perl is
-unthreaded, or compiled in a platform that supports thread-safe locale
-operation (see previous item).
+[ List each enhancement as a =head2 entry ]
=head1 Security
-=head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler
-
-Compiling certain regular expression patterns with the case-insensitive
-modifier could cause a heap buffer overflow and crash perl. This has now been
-fixed.
-L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582>
-
-=head2 [CVE-2017-12883] Buffer over-read in regular expression parser
-
-For certain types of syntax error in a regular expression pattern, the error
-message could either contain the contents of a random, possibly large, chunk of
-memory, or could crash perl. This has now been fixed.
-L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598>
-
-=head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows
-
-A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed
-by removing the buffer completely since it was superfluous anyway.
-L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665>
+XXX Any security-related notices go here. In particular, any security
+vulnerabilities closed should be noted here rather than in the
+L</Selected Bug Fixes> section.
-=head2 Default Hash Function Change
-
-Perl 5.28.0 retires various older hash functions which are not viewed as
-sufficiently secure for use in Perl. We now support four general purpose
-hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX
-hash. In addition we support SBOX32 (a form of tabular hashing) for hashing
-short strings, in conjunction with any of the other hash functions provided.
-
-By default Perl is configured to support SBOX hashing of strings up to 24
-characters, in conjunction with StadtX hashing on 64 bit builds, and
-Zaphod32 hashing for 32 bit builds.
-
-You may control these settings with the following options to Configure:
-
- -DPERL_HASH_FUNC_SIPHASH
- -DPERL_HASH_FUNC_SIPHASH13
- -DPERL_HASH_FUNC_STADTX
- -DPERL_HASH_FUNC_ZAPHOD32
-
-To disable SBOX hashing you can use
-
- -DPERL_HASH_USE_SBOX32_ALSO=0
-
-And to set the maximum length to use SBOX32 hashing on with:
-
- -DSBOX32_MAX_LEN=16
-
-The maximum length allowed is 256. There probably isn't much point
-in setting it higher than the default.
+[ List each security issue as a =head2 entry ]
=head1 Incompatible Changes
-=head2 Subroutine attribute and signature order
-
-The experimental subroutine signatures feature has been changed so that
-subroutine attributes must now come before the signature rather than
-after. This is because attributes like C<:lvalue> can affect the
-compilation of code within the signature, for example:
-
- sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) { ...}
-
-Note that this the second time they have been flipped:
-
- sub f :lvalue ($a, $b) { ... }; # 5.20; 5.28 onwards
- sub f ($a, $b) :lvalue { ... }; # 5.22 - 5.26
-
-=head2 Comma-less variable lists in formats are no longer allowed
-
-Omitting the commas between variables passed to formats is no longer
-allowed. This has been deprecated since Perl 5.000.
-
-=head2 The C<:locked> and C<:unique> attributes have been removed
-
-These have been no-ops and deprecated since Perl 5.12 and 5.10,
-respectively.
-
-=head2 C<\N{}> with nothing between the braces is now illegal
-
-This has been deprecated since Perl 5.24.
-
-=head2 Opening the same symbol as both a file and directory handle is no longer allowed
-
-Using C<open()> and C<opendir()> to associate both a filehandle and a dirhandle
-to the same symbol (glob or scalar) has been deprecated since Perl 5.10.
-
-=head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed
-
-Use of a bare terminator has been deprecated since Perl 5.000.
-
-=head2 Setting $/ to a reference to a non-positive integer no longer allowed
-
-This used to work like setting it to C<undef>, but has been deprecated
-since Perl 5.20.
-
-=head2 Unicode code points with values exceeding C<IV_MAX> are now fatal
-
-This was deprecated since Perl 5.24.
-
-=head2 The C<B::OP::terse> method has been removed
-
-Use C<B::Concise::b_terse> instead.
-
-=head2 Use of inherited AUTOLOAD for non-methods is no longer allowed
-
-This was deprecated in Perl 5.004.
-
-=head2 Use of strings with code points over 0xFF is not allowed for bitwise string operators
-
-Code points over C<0xFF> do not make sense for bitwise operators and such
-an operation will now croak, except for a few remaining cases. See
-L<perldeprecation>.
+XXX For a release on a stable branch, this section aspires to be:
-This was deprecated in Perl 5.24.
+ There are no changes intentionally incompatible with 5.XXX.XXX
+ If any exist, they are bugs, and we request that you submit a
+ report. See L</Reporting Bugs> below.
-=head2 Setting C<${^ENCODING}> to a defined value is now illegal
-
-This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.
-
-=head2 Backslash no longer escapes colon in PATH for the C<-S> switch
-
-Previously the C<-S> switch incorrectly treated backslash ("\") as an
-escape for colon when traversing the C<PATH> environment variable.
-L<[perl #129183]|https://rt.perl.org/Ticket/Display.html?id=129183>
-
-=head2 the -DH (DEBUG_H) misfeature has been removed
-
-On a perl built with debugging support, the C<H> flag to the C<-D>
-debugging option has been removed. This was supposed to dump hash values,
-but has been broken for many years.
-
-=head2 Yada-yada is now strictly a statement
-
-By the time of its initial stable release in Perl 5.12, the C<...>
-(yada-yada) operator was explicitly intended to serve as a statement,
-not an expression. However, the original implementation was confused
-on this point, leading to inconsistent parsing. The operator was
-accidentally accepted in a few situations where it did not serve as a
-complete statement, such as
-
- ... . "foo";
- ... if $a < $b;
-
-The parsing has now been made consistent, permitting yada-yada only as
-a statement. Affected code can use C<do{...}> to put a yada-yada into
-an arbitrary expression context.
-
-=head2 Sort algorithm can no longer be specified
-
-Since Perl 5.8, the L<sort> pragma has had subpragmata C<_mergesort>,
-C<_quicksort>, and C<_qsort> that can be used to specify which algorithm
-perl should use to implement the L<sort|perlfunc/sort> builtin.
-This was always considered a dubious feature that might not last,
-hence the underscore spellings, and they were documented as not being
-portable beyond Perl 5.8. These subpragmata have now been deleted,
-and any attempt to use them is an error. The L<sort> pragma otherwise
-remains, and the algorithm-neutral C<stable> subpragma can be used to
-control sorting behaviour.
-L<[perl #119635]|https://rt.perl.org/Ticket/Display.html?id=119635>
-
-=head2 Over-radix digits in floating point literals
-
-Octal and binary floating point literals used to permit any hexadecimal
-digit to appear after the radix point. The digits are now restricted
-to those appropriate for the radix, as digits before the radix point
-always were.
-
-=head2 Return type of C<unpackstring()>
-
-The return types of the C API functions C<unpackstring()> and
-C<unpack_str()> have changed from C<I32> to C<SSize_t>, in order to
-accommodate datasets of more than two billion items.
+[ List each incompatible change as a =head2 entry ]
=head1 Deprecations
-=head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is deprecated
-
-Such strings are represented internally in UTF-8, and C<vec> is a
-bit-oriented operation that will likely give unexpected results on those
-strings.
-
-=head2 Some uses of unescaped C<"{"> in regexes are no longer fatal
-
-Perl 5.26.0 fatalized some uses of an unescaped left brace, but an
-exception was made at the last minute, specifically crafted to be a
-minimal change to allow GNU Autoconf to work. That tool is heavily
-depended upon, and continues to use the deprecated usage. Its use of an
-unescaped left brace is one where we have no intention of repurposing
-C<"{"> to be something other than itself.
-
-That exception is now generalized to include various other such cases
-where the C<"{"> will not be repurposed.
-
-Note that these uses continue to raise a deprecation message.
-
-=head2 Use of unescaped C<"{"> immediately after a C<"("> in regular expression patterns is deprecated
-
-Using unescaped left braces is officially deprecated everywhere, but it
-is not enforced in contexts where their use does not interfere with
-expected extensions to the language. A deprecation is added in this
-release when the brace appears immediately after an opening parenthesis.
-Before this, even if the brace was part of a legal quantifier, it was
-not interpreted as such, but as the literal characters, unlike other
-quantifiers that follow a C<"("> which are considered errors. Now,
-their use will raise a deprecation message, unless turned off.
-
-=head2 Assignment to C<$[> will be fatal in Perl 5.30
-
-Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
-since Perl 5.12, but was never given a deadline for removal. This has
-now been scheduled for Perl 5.30.
-
-=head2 hostname() won't accept arguments in Perl 5.32
-
-Passing arguments to C<Sys::Hostname::hostname()> was already deprecated,
-but didn't have a removal date. This has now been scheduled for Perl
-5.32. L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349>
+XXX Any deprecated features, syntax, modules etc. should be listed here.
=head2 Module removals
+XXX Remove this section if not applicable.
+
The following modules will be removed from the core distribution in a
future release, and will at that time need to be installed from CPAN.
Distributions on CPAN which require these modules will need to list them as
@@ -435,727 +69,90 @@ not usually on concerns over their design.
=over
-=item B::Debug
+=item XXX
-=item L<Locale::Codes> and its associated Country, Currency and Language modules
+XXX Note that deprecated modules should be listed here even if they are listed
+as an updated module in the L</Modules and Pragmata> section.
=back
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-The start up overhead for creating regular expression patterns with
-Unicode properties (C<\p{...}>) has been greatly reduced in most cases.
+[ List each other deprecation as a =head2 entry ]
-=item *
-
-Many string concatenation expressions are now considerably faster, due
-to the introduction internally of a C<multiconcat> opcode which combines
-multiple concatenations, and optionally a C<=> or C<.=>, into a single
-action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this
-whole expression is now handled as a single op:
-
- $s .= "a=$a b=$b\n"
-
-As a special case, if the LHS of an assignment is a lexical variable or
-C<my $s>, the op itself handles retrieving the lexical variable, which
-is faster.
-
-In general, the more the expression includes a mix of constant strings and
-variable expressions, the longer the expression, and the more it mixes
-together non-utf8 and utf8 strings, the more marked the performance
-improvement. For example on a C<x86_64> system, this code has been
-benchmarked running four times faster:
-
- my $s;
- my $a = "ab\x{100}cde";
- my $b = "fghij";
- my $c = "\x{101}klmn";
-
- for my $i (1..10_000_000) {
- $s = "\x{100}wxyz";
- $s .= "foo=$a bar=$b baz=$c";
- }
-
-In addition, C<sprintf> expressions which have a constant format
-containing only C<%s> and C<%%> format elements, and which have a fixed
-number of arguments, are now also optimised into a C<multiconcat> op.
-
-=item *
-
-The C<ref()> builtin is now much faster in boolean context, since it no
-longer bothers to construct a temporary string like C<Foo=ARRAY(0x134af48)>.
-
-=item *
-
-C<keys()> in void and scalar contexts is now more efficient.
-
-=item *
-
-The common idiom of comparing the result of index() with -1 is now
-specifically optimised, e.g.
-
- if (index(...) != -1) { ... }
-
-=item *
-
-C<for()> loops and similar constructs are now more efficient in most cases.
-
-=item *
-
-L<File::Glob> has been modified to remove unnecessary backtracking and
-recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob>
-for more details.
-
-=item *
-
-The XS-level C<SvTRUE()> API function is now more efficient.
-
-=item *
-
-Various integer-returning ops are now more efficient in scalar/boolean context.
-
-=item *
-
-Slightly improved performance when parsing stash names.
-L<[perl #129990]|https://rt.perl.org/Public/Bug/Display.html?id=129990>
-
-=item *
-
-Calls to C<require> for an already loaded module are now slightly faster.
-L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171>
-
-=item *
+=head1 Performance Enhancements
-The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]>
-has been improved significantly except on EBCDIC platforms.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
-=item *
+[ List each enhancement as an =item entry ]
-Various optimizations have been applied to matching regular expression
-patterns, so under the right circumstances, significant performance
-gains may be noticed. But in an application with many varied patterns,
-little overall improvement likely will be seen.
+=over 4
=item *
-Other optimizations have been applied to UTF-8 handling, but these are
-not typically a major factor in most applications.
+XXX
=back
=head1 Modules and Pragmata
-Key highlights in this release across several modules:
-
-=head2 Removal of use vars
+XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
+go here. If Module::CoreList is updated, generate an initial draft of the
+following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
+for important changes should then be added by hand. In an ideal world,
+dual-life modules would have a F<Changes> file that could be cribbed.
-The usage of C<use vars> has been discouraged since the introduction of
-C<our> in Perl 5.6.0. Where possible the usage of this pragma has now been
-removed from the Perl source code.
+The list of new and updated modules is modified automatically as part of
+preparing a Perl release, so the only reason to manually add entries here is if
+you're summarising the important changes in the module update. (Also, if the
+manually-added details don't match the automatically-generated ones, the
+release manager will have to investigate the situation carefully.)
-This had a slight effect (for the better) on the output of WARNING_BITS in
-L<B::Deparse>.
+[ Within each section, list entries as an =item entry ]
-=head2 Use of DynaLoader changed to XSLoader in many modules
-
-XSLoader is more modern, and most modules already require perl 5.6 or
-greater, so no functionality is lost by switching. In some cases, we have
-also made changes to the local implementation that may not be reflected in
-the version on CPAN due to a desire to maintain more backwards
-compatibility.
-
-=head2 Updated Modules and Pragmata
+=head2 New Modules and Pragmata
=over 4
=item *
-L<Archive::Tar> has been upgraded from version 2.24 to 2.30.
-
-This update also handled CVE-2018-12015: directory traversal
-vulnerability.
-L<[cpan #125523]|https://rt.cpan.org/Ticket/Display.html?id=125523>
-
-=item *
-
-L<arybase> has been upgraded from version 0.12 to 0.15.
-
-=item *
-
-L<Attribute::Handlers> has been upgraded from version 0.99 to 1.01.
-
-=item *
-
-L<attributes> has been upgraded from version 0.29 to 0.33.
-
-=item *
-
-L<B> has been upgraded from version 1.68 to 1.74.
-
-=item *
-
-L<B::Concise> has been upgraded from version 0.999 to 1.003.
-
-=item *
-
-L<B::Debug> has been upgraded from version 1.24 to 1.26.
-
-NOTE: L<B::Debug> is deprecated and may be removed from a future version
-of Perl.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.40 to 1.48.
-
-It includes many bug fixes, and in particular, it now deparses variable
-attributes correctly:
-
- my $x :foo; # used to deparse as
- # 'attributes'->import('main', \$x, 'foo'), my $x;
-
-=item *
-
-L<base> has been upgraded from version 2.25 to 2.27.
-
-=item *
-
-L<bignum> has been upgraded from version 0.47 to 0.49.
-
-=item *
-
-L<blib> has been upgraded from version 1.06 to 1.07.
-
-=item *
-
-L<bytes> has been upgraded from version 1.05 to 1.06.
-
-=item *
-
-L<Carp> has been upgraded from version 1.42 to 1.50.
-
-If a package on the call stack contains a constant named C<ISA>, Carp no
-longer throws a "Not a GLOB reference" error.
-
-L<Carp>, when generating stack traces, now attempts to work around
-longstanding bugs resulting from Perl's non-reference-counted stack.
-L<[perl #52610]|https://rt.perl.org/Ticket/Display.html?id=52610>
-
-Carp has been modified to avoid assuming that objects cannot be
-overloaded without the L<overload> module loaded (this can happen with
-objects created by XS modules). Previously, infinite recursion would
-result if an XS-defined overload method itself called Carp.
-L<[perl #132828]|https://rt.perl.org/Ticket/Display.html?id=132828>
-
-Carp now avoids using C<overload::StrVal>, partly because older versions
-of L<overload> (included with perl 5.14 and earlier) load L<Scalar::Util>
-at run time, which will fail if Carp has been invoked after a syntax error.
-
-=item *
-
-L<charnames> has been upgraded from version 1.44 to 1.45.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.074 to 2.076.
-
-This addresses a security vulnerability in older versions of the 'zlib' library
-(which is bundled with Compress-Raw-Zlib).
-
-=item *
-
-L<Config::Extensions> has been upgraded from version 0.01 to 0.02.
-
-=item *
-
-L<Config::Perl::V> has been upgraded from version 0.28 to 0.29.
-
-=item *
-
-L<CPAN> has been upgraded from version 2.18 to 2.20.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.167 to 2.170.
-
-Quoting of glob names now obeys the Useqq option
-L<[perl #119831]|https://rt.perl.org/Ticket/Display.html?id=119831>.
-
-Attempts to set an option to C<undef> through a combined getter/setter
-method are no longer mistaken for getter calls
-L<[perl #113090]|https://rt.perl.org/Ticket/Display.html?id=113090>.
-
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.26 to 1.27.
-
-=item *
-
-L<Devel::PPPort> has been upgraded from version 3.35 to 3.40.
-
-L<Devel::PPPort> has moved from cpan-first to perl-first maintenance
-
-Primary responsibility for the code in Devel::PPPort has moved into core perl.
-In a practical sense there should be no change except that hopefully it will
-stay more up to date with changes made to symbols in perl, rather than needing
-to be updated after the fact.
-
-=item *
-
-L<Digest::SHA> has been upgraded from version 5.96 to 6.01.
-
-=item *
-
-L<DirHandle> has been upgraded from version 1.04 to 1.05.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.42 to 1.45.
-
-Its documentation now shows the use of C<__PACKAGE__> and direct object
-syntax
-L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>.
-
-=item *
-
-L<Encode> has been upgraded from version 2.88 to 2.97.
-
-=item *
-
-L<encoding> has been upgraded from version 2.19 to 2.22.
-
-=item *
-
-L<Errno> has been upgraded from version 1.28 to 1.29.
-
-=item *
-
-L<experimental> has been upgraded from version 0.016 to 0.019.
-
-=item *
-
-L<Exporter> has been upgraded from version 5.72 to 5.73.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280225 to 0.280230.
-
-=item *
-
-L<ExtUtils::Constant> has been upgraded from version 0.23 to 0.25.
-
-=item *
-
-L<ExtUtils::Embed> has been upgraded from version 1.34 to 1.35.
-
-=item *
-
-L<ExtUtils::Install> has been upgraded from version 2.04 to 2.14.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.24 to 7.34.
-
-=item *
-
-L<ExtUtils::Miniperl> has been upgraded from version 1.06 to 1.08.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.34 to 3.39.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.34 to 3.38.
-
-=item *
-
-L<ExtUtils::XSSymSet> has been upgraded from version 1.3 to 1.4.
-
-=item *
-
-L<feature> has been upgraded from version 1.47 to 1.52.
-
-=item *
-
-L<fields> has been upgraded from version 2.23 to 2.24.
-
-=item *
-
-L<File::Copy> has been upgraded from version 2.32 to 2.33.
-
-It will now use the sub-second precision variant of utime() supplied by
-L<Time::HiRes> where available.
-L<[perl #132401]|https://rt.perl.org/Ticket/Display.html?id=132401>.
-
-=item *
-
-L<File::Fetch> has been upgraded from version 0.52 to 0.56.
-
-=item *
-
-L<File::Glob> has been upgraded from version 1.28 to 1.31.
-
-=item *
-
-L<File::Path> has been upgraded from version 2.12_01 to 2.15.
-
-=item *
-
-L<File::Spec> and L<Cwd> have been upgraded from version 3.67 to 3.74.
-
-=item *
-
-L<File::stat> has been upgraded from version 1.07 to 1.08.
-
-=item *
-
-L<FileCache> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Filter::Simple> has been upgraded from version 0.93 to 0.95.
-
-=item *
-
-L<Filter::Util::Call> has been upgraded from version 1.55 to 1.58.
-
-=item *
-
-L<GDBM_File> has been upgraded from version 1.15 to 1.17.
-
-Its documentation now explains that C<each> and C<delete> don't mix in
-hashes tied to this module
-L<[perl #117449]|https://rt.perl.org/Ticket/Display.html?id=117449>.
-
-It will now retry opening with an acceptable block size if asking gdbm
-to default the block size failed
-L<[perl #119623]|https://rt.perl.org/Ticket/Display.html?id=119623>.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.49 to 2.5.
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.19 to 1.20.
-
-=item *
-
-L<I18N::Langinfo> has been upgraded from version 0.13 to 0.17.
-
-This module is now available on all platforms, emulating the system
-L<nl_langinfo(3)> on systems that lack it. Some caveats apply, as
-L<detailed in its documentation|I18N::Langinfo>, the most severe being
-that, except for MS Windows, the C<CODESET> item is not implemented on
-those systems, always returning C<"">.
-
-It now sets the UTF-8 flag in its returned scalar if the string contains
-legal non-ASCII UTF-8, and the locale is UTF-8
-L<[perl #127288]|https://rt.perl.org/Ticket/Display.html?id=127288>.
-
-This update also fixes a bug in which the underlying locale was ignored
-for the C<RADIXCHAR> (always was returned as a dot) and the C<THOUSEP>
-(always empty). Now the locale-appropriate values are returned.
-
-=item *
-
-L<I18N::LangTags> has been upgraded from version 0.42 to 0.43.
-
-=item *
-
-L<if> has been upgraded from version 0.0606 to 0.0608.
-
-=item *
-
-L<IO> has been upgraded from version 1.38 to 1.39.
-
-=item *
-
-L<IO::Socket::IP> has been upgraded from version 0.38 to 0.39.
-
-=item *
-
-L<IPC::Cmd> has been upgraded from version 0.96 to 1.00.
-
-=item *
-
-L<JSON::PP> has been upgraded from version 2.27400_02 to 2.97001.
-
-=item *
-
-The C<libnet> distribution has been upgraded from version 3.10 to 3.11.
-
-=item *
-
-L<List::Util> has been upgraded from version 1.46_02 to 1.49.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.42 to 3.56.
-
-B<NOTE>: L<Locale::Codes> scheduled to be removed from core in Perl 5.30.
-
-=item *
-
-L<Locale::Maketext> has been upgraded from version 1.28 to 1.29.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.999806 to 1.999811.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.5005 to 0.5006.
-
-=item *
-
-L<Math::BigRat> has been upgraded from version 0.2611 to 0.2613.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20170530 to 5.20180622.
-
-=item *
-
-L<mro> has been upgraded from version 1.20 to 1.22.
-
-=item *
-
-L<Net::Ping> has been upgraded from version 2.55 to 2.62.
-
-=item *
-
-L<NEXT> has been upgraded from version 0.67 to 0.67_01.
-
-=item *
-
-L<ODBM_File> has been upgraded from version 1.14 to 1.15.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.39 to 1.43.
-
-=item *
-
-L<overload> has been upgraded from version 1.28 to 1.30.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.25 to 0.26.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.26 to 0.29.
-
-=item *
-
-L<PerlIO::via> has been upgraded from version 0.16 to 0.17.
-
-=item *
-
-L<Pod::Functions> has been upgraded from version 1.11 to 1.13.
-
-=item *
-
-L<Pod::Html> has been upgraded from version 1.2202 to 1.24.
-
-A title for the HTML document will now be automatically generated by
-default from a "NAME" section in the POD document, as it used to be
-before the module was rewritten to use L<Pod::Simple::XHTML> to do the
-core of its job
-L<[perl #110520]|https://rt.perl.org/Ticket/Display.html?id=110520>.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.28 to 3.2801.
-
-=item *
-
-The C<podlators> distribution has been upgraded from version 4.09 to 4.10.
-
-Man page references and function names now follow the Linux man page
-formatting standards, instead of the Solaris standard.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.76 to 1.84.
-
-Some more cautions were added about using locale-specific functions in
-threaded applications.
-
-=item *
-
-L<re> has been upgraded from version 0.34 to 0.36.
-
-=item *
-
-L<Scalar::Util> has been upgraded from version 1.46_02 to 1.50.
-
-=item *
-
-L<SelfLoader> has been upgraded from version 1.23 to 1.25.
-
-=item *
-
-L<Socket> has been upgraded from version 2.020_03 to 2.027.
-
-=item *
-
-L<sort> has been upgraded from version 2.02 to 2.04.
-
-=item *
-
-L<Storable> has been upgraded from version 2.62 to 3.08.
-
-=item *
-
-L<Sub::Util> has been upgraded from version 1.48 to 1.49.
-
-=item *
-
-L<subs> has been upgraded from version 1.02 to 1.03.
-
-=item *
-
-L<Sys::Hostname> has been upgraded from version 1.20 to 1.22.
-
-=item *
-
-L<Term::ReadLine> has been upgraded from version 1.16 to 1.17.
-
-=item *
-
-L<Test> has been upgraded from version 1.30 to 1.31.
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.38 to 3.42.
-
-=item *
-
-L<Test::Simple> has been upgraded from version 1.302073 to 1.302133.
-
-=item *
-
-L<threads> has been upgraded from version 2.15 to 2.22.
-
-The documentation now better describes the problems that arise when
-returning values from threads, and no longer warns about creating threads
-in C<BEGIN> blocks.
-L<[perl #96538]|https://rt.perl.org/Ticket/Display.html?id=96538>
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.56 to 1.58.
-
-=item *
-
-L<Tie::Array> has been upgraded from version 1.06 to 1.07.
-
-=item *
-
-L<Tie::StdHandle> has been upgraded from version 4.4 to 4.5.
-
-=item *
-
-L<Time::gmtime> has been upgraded from version 1.03 to 1.04.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9741 to 1.9759.
-
-=item *
-
-L<Time::localtime> has been upgraded from version 1.02 to 1.03.
-
-=item *
-
-L<Time::Piece> has been upgraded from version 1.31 to 1.3204.
-
-=item *
-
-L<Unicode::Collate> has been upgraded from version 1.19 to 1.25.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.25 to 1.26.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.68 to 0.70.
-
-The function C<num> now accepts an optional parameter to help in
-diagnosing error returns.
-
-=item *
-
-L<User::grent> has been upgraded from version 1.01 to 1.02.
-
-=item *
-
-L<User::pwent> has been upgraded from version 1.00 to 1.01.
-
-=item *
-
-L<utf8> has been upgraded from version 1.19 to 1.21.
-
-=item *
-
-L<vars> has been upgraded from version 1.03 to 1.04.
-
-=item *
+XXX Remove this section if not applicable.
-L<version> has been upgraded from version 0.9917 to 0.9923.
+=back
-=item *
+=head2 Updated Modules and Pragmata
-L<VMS::DCLsym> has been upgraded from version 1.08 to 1.09.
+=over 4
=item *
-L<VMS::Stdio> has been upgraded from version 2.41 to 2.44.
+L<XXX> has been upgraded from version A.xx to B.yy.
-=item *
+If there was something important to note about this change, include that here.
-L<warnings> has been upgraded from version 1.37 to 1.42.
-
-It now includes new functions with names ending in C<_at_level>, allowing
-callers to specify the exact call frame.
-L<[perl #132468]|https://rt.perl.org/Ticket/Display.html?id=132468>
+=back
-=item *
+=head2 Removed Modules and Pragmata
-L<XS::Typemap> has been upgraded from version 0.15 to 0.16.
+=over 4
=item *
-L<XSLoader> has been upgraded from version 0.27 to 0.30.
-
-Its documentation now shows the use of C<__PACKAGE__>, and direct object
-syntax for example C<DynaLoader> usage
-L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>.
-
-Platforms that use C<mod2fname> to edit the names of loadable
-libraries now look for bootstrap (.bs) files under the correct,
-non-edited name.
+XXX
=back
-=head2 Removed Modules and Pragmata
+=head1 Documentation
-=over 4
+XXX Changes to files in F<pod/> go here. Consider grouping entries by
+file and be sure to link to the appropriate page, e.g. L<perlfunc>.
-=item *
+=head2 New Documentation
-The C<VMS::stdio> compatibility shim has been removed.
+XXX Changes which create B<new> files in F<pod/> go here.
-=back
+=head3 L<XXX>
-=head1 Documentation
+XXX Description of the purpose of the new file here
=head2 Changes to Existing Documentation
@@ -1163,1241 +160,250 @@ We have attempted to update the documentation to reflect the changes
listed in this document. If you find any we have missed, send email
to L<perlbug@perl.org|mailto:perlbug@perl.org>.
+XXX Changes which significantly change existing files in F<pod/> go here.
+However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
+section.
+
Additionally, the following selected changes have been made:
-=head3 L<perlapi>
+=head3 L<XXX>
=over 4
=item *
-The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
-are now documented comprehensively, where previously the only
-documentation was a reference to the L<perlembed> tutorial.
-
-=item *
-
-The documentation of C<newGIVENOP()> has been belatedly updated to
-account for the removal of lexical C<$_>.
-
-=item *
-
-The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
-documented much more comprehensively than before.
+XXX Description of the change here
=back
-=head3 L<perldata>
+=head1 Diagnostics
-=over 4
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
-=item *
+XXX New or changed warnings emitted by the core's C<C> code go here. Also
+include any changes in L<perldiag> that reconcile it to the C<C> code.
-The section "Truth and Falsehood" in L<perlsyn> has been moved into
-L<perldata>.
+=head2 New Diagnostics
-=back
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
-=head3 L<perldebguts>
+=head3 New Errors
=over 4
=item *
-The description of the conditions under which C<DB::sub()> will be called
-has been clarified.
-L<[perl #131672]|https://rt.perl.org/Ticket/Display.html?id=131672>
+XXX L<message|perldiag/"message">
=back
-=head3 L<perldiag>
+=head3 New Warnings
=over 4
-=item * L<perldiag/Variable length lookbehind not implemented in regex mE<sol>%sE<sol>>
-
-This now gives more ideas as to workarounds to the issue that was
-introduced in Perl 5.18 (but not documented explicitly in its perldelta)
-for the fact that some Unicode C</i> rules cause a few sequences such as
-
- (?<!st)
-
-to be considered variable length, and hence disallowed.
-
-=item * "Use of state $_ is experimental" in L<perldiag>
-
-This entry has been removed, as the experimental support of this construct was
-removed in perl 5.24.0.
-
=item *
-The diagnostic C<Initialization of state variables in list context
-currently forbidden> has changed to C<Initialization of state variables
-in list currently forbidden>, because list-context initialization of
-single aggregate state variables is now permitted.
+XXX L<message|perldiag/"message">
=back
-=head3 L<perlembed>
-
-=over 4
-
-=item *
-
-The examples in L<perlembed> have been made more portable in the way
-they exit, and the example that gets an exit code from the embedded Perl
-interpreter now gets it from the right place. The examples that pass
-a constructed argv to Perl now show the mandatory null C<argv[argc]>.
-
-=item *
-
-An example in L<perlembed> used the string value of C<ERRSV> as a
-format string when calling croak(). If that string contains format
-codes such as C<%s> this could crash the program.
-
-This has been changed to a call to croak_sv().
-
-An alternative could have been to supply a trivial format string:
-
- croak("%s", SvPV_nolen(ERRSV));
-
-or as a special case for C<ERRSV> simply:
-
- croak(NULL);
-
-=back
+=head2 Changes to Existing Diagnostics
-=head3 L<perlfunc>
+XXX Changes (i.e. rewording) of diagnostic messages go here
=over 4
=item *
-There is now a note that warnings generated by built-in functions are
-documented in L<perldiag> and L<warnings>.
-L<[perl #116080]|https://rt.perl.org/Ticket/Display.html?id=116080>
-
-=item *
-
-The documentation for the C<exists> operator no longer says that
-autovivification behaviour "may be fixed in a future release".
-We've determined that we're not going to change the default behaviour.
-L<[perl #127712]|https://rt.perl.org/Ticket/Display.html?id=127712>
-
-=item *
-
-A couple of small details in the documentation for the C<bless> operator
-have been clarified.
-L<[perl #124428]|https://rt.perl.org/Ticket/Display.html?id=124428>
-
-=item *
-
-The description of C<@INC> hooks in the documentation for C<require>
-has been corrected to say that filter subroutines receive a useless
-first argument.
-L<[perl #115754]|https://rt.perl.org/Ticket/Display.html?id=115754>
-
-=item *
-
-The documentation of C<ref> has been rewritten for clarity.
-
-=item *
-
-The documentation of C<use> now explains what syntactically qualifies
-as a version number for its module version checking feature.
-
-=item *
-
-The documentation of C<warn> has been updated to reflect that since Perl
-5.14 it has treated complex exception objects in a manner equivalent
-to C<die>.
-L<[perl #121372]|https://rt.perl.org/Ticket/Display.html?id=121372>
-
-=item *
-
-The documentation of C<die> and C<warn> has been revised for clarity.
-
-=item *
-
-The documentation of C<each> has been improved, with a slightly more
-explicit description of the sharing of iterator state, and with
-caveats regarding the fragility of while-each loops.
-L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644>
-
-=item *
-
-Clarification to C<require> was added to explain the differences between
-
- require Foo::Bar;
- require "Foo/Bar.pm";
+XXX Describe change here
=back
-=head3 L<perlgit>
-
-=over 4
-
-=item *
+=head1 Utility Changes
-The precise rules for identifying C<smoke-me> branches are now stated.
+XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
-=back
+[ List utility changes as a =head2 entry for each utility and =item
+entries for each change
+Use L<XXX> with program names to get proper documentation linking. ]
-=head3 L<perlguts>
+=head2 L<XXX>
=over 4
=item *
-The section on reference counting in L<perlguts> has been heavily revised,
-to describe references in the way a programmer needs to think about them
-rather than in terms of the physical data structures.
-
-=item *
-
-Improve documentation related to UTF-8 multibytes.
+XXX
=back
-=head3 L<perlintern>
-
-=over 4
-
-=item *
-
-The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
-now documented.
+=head1 Configuration and Compilation
-=back
+XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
+go here. Any other changes to the Perl build process should be listed here.
+However, any platform-specific changes should be listed in the
+L</Platform Support> section, instead.
-=head3 L<perlobj>
+[ List changes as an =item entry ].
=over 4
=item *
-The documentation about C<DESTROY> methods has been corrected, updated,
-and revised, especially in regard to how they interact with exceptions.
-L<[perl #122753]|https://rt.perl.org/Ticket/Display.html?id=122753>
+XXX
=back
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-The description of the C<x> operator in L<perlop> has been clarified.
-L<[perl #132460]|https://rt.perl.org/Ticket/Display.html?id=132460>
-
-=item *
-
-L<perlop> has been updated to note that C<qw>'s whitespace rules differ
-from that of C<split>'s in that only ASCII whitespace is used.
-
-=item *
-
-The general explanation of operator precedence and associativity has
-been corrected and clarified.
-L<[perl #127391]|https://rt.perl.org/Ticket/Display.html?id=127391>
-
-=item *
-
-The documentation for the C<\> referencing operator now explains the
-unusual context that it supplies to its operand.
-L<[perl #131061]|https://rt.perl.org/Ticket/Display.html?id=131061>
-
-=back
+=head1 Testing
-=head3 L<perlrequick>
+XXX Any significant changes to the testing of a freshly built perl should be
+listed here. Changes which create B<new> files in F<t/> go here as do any
+large changes to the testing harness (e.g. when parallel testing was added).
+Changes to existing files in F<t/> aren't worth summarizing, although the bugs
+that they represent may be covered elsewhere.
-=over 4
+XXX If there were no significant test changes, say this:
-=item *
+Tests were added and changed to reflect the other additions and changes
+in this release.
-Clarifications on metacharacters and character classes
+XXX If instead there were significant changes, say this:
-=back
+Tests were added and changed to reflect the other additions and
+changes in this release. Furthermore, these significant changes were
+made:
-=head3 L<perlretut>
+[ List each test improvement as an =item entry ]
=over 4
=item *
-Clarify metacharacters.
+XXX
=back
-=head3 L<perlrun>
-
-=over 4
+=head1 Platform Support
-=item *
+XXX Any changes to platform support should be listed in the sections below.
-Clarify the differences between B<< -M >> and B<< -m >>.
-L<[perl #131518]|https://rt.perl.org/Ticket/Display.html?id=131518>
+[ Within the sections, list each platform as an =item entry with specific
+changes as paragraphs below it. ]
-=back
+=head2 New Platforms
-=head3 L<perlsec>
+XXX List any platforms that this version of perl compiles on, that previous
+versions did not. These will either be enabled by new files in the F<hints/>
+directories, or new subdirectories and F<README> files at the top level of the
+source tree.
=over 4
-=item *
-
-The documentation about set-id scripts has been updated and revised.
-L<[perl #74142]|https://rt.perl.org/Ticket/Display.html?id=74142>
-
-=item *
+=item XXX-some-platform
-A section about using C<sudo> to run Perl scripts has been added.
+XXX
=back
-=head3 L<perlsyn>
-
-=over 4
-
-=item *
-
-The section "Truth and Falsehood" in L<perlsyn> has been removed from
-that document, where it didn't belong, and merged into the existing
-paragraph on the same topic in L<perldata>.
-
-=item *
-
-The means to disambiguate between code blocks and hash constructors,
-already documented in L<perlref>, are now documented in L<perlsyn> too.
-L<[perl #130958]|https://rt.perl.org/Ticket/Display.html?id=130958>
-
-=back
+=head2 Discontinued Platforms
-=head3 L<perluniprops>
+XXX List any platforms that this version of perl no longer compiles on.
=over 4
-=item *
+=item XXX-some-platform
-L<perluniprops> has been updated to note that C<\p{Word}> now includes
-code points matching the C<\p{Join_Control}> property. The change to
-the property was made in Perl 5.18, but not documented until now. There
-are currently only two code points that match this property U+200C (ZERO
-WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER).
-
-=item *
-
-For each binary table or property, the documentation now includes which
-characters in the range C<\x00-\xFF> it matches, as well as a list of
-the first few ranges of code points matched above that.
+XXX
=back
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-The entry for C<$+> in perlvar has been expanded upon to describe handling of
-multiply-named capturing groups.
-
-=back
+=head2 Platform-Specific Notes
-=head3 L<perlfunc>, L<perlop>, L<perlsyn>
+XXX List any changes for specific platforms. This could include configuration
+and compilation changes or changes in portability/compatibility. However,
+changes within modules for platforms should generally be listed in the
+L</Modules and Pragmata> section.
=over 4
-=item *
+=item XXX-some-platform
-In various places, improve the documentation of the special cases
-in the condition expression of a while loop, such as implicit C<defined>
-and assignment to C<$_>.
-L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644>
+XXX
=back
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages. For the complete list of
-diagnostic messages, see L<perldiag>.
+=head1 Internal Changes
-=head2 New Diagnostics
+XXX Changes which affect the interface available to C<XS> code go here. Other
+significant internal changes for future core maintainers should be noted as
+well.
-=head3 New Errors
+[ List each change as an =item entry ]
=over 4
=item *
-L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
-
-(F) A "goto" statement was executed to jump into the middle of a C<given>
-block. You can't get there from here. See L<perlfunc/goto>.
-
-=item *
-
-L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression">
-
-Use of C<goto> to jump into the parameter of a binary or list operator has
-been prohibited, to prevent crashes and stack corruption.
-L<[perl #130936]|https://rt.perl.org/Ticket/Display.html?id=130936>
-
-You may only enter the I<first> argument of an operator that takes a fixed
-number of arguments, since this is a case that will not cause stack
-corruption.
-L<[perl #132854]|https://rt.perl.org/Ticket/Display.html?id=132854>
+XXX
=back
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<Old package separator used in string|perldiag/"Old package separator used in string">
-
-(W syntax) You used the old package separator, "'", in a variable
-named inside a double-quoted string; e.g., C<"In $name's house">. This
-is equivalent to C<"In $name::s house">. If you meant the former, put
-a backslash before the apostrophe (C<"In $name\'s house">).
-
-=item *
-
-L<perldiag/Locale '%s' contains (at least) the following characters which
-have unexpected meanings: %s The Perl program will use the expected
-meanings>
+=head1 Selected Bug Fixes
-=back
+XXX Important bug fixes in the core language are summarized here. Bug fixes in
+files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
-=head2 Changes to Existing Diagnostics
+[ List each fix as an =item entry ]
=over 4
=item *
-A false-positive warning that was issued when using a
-numerically-quantified sub-pattern in a recursive regex has been
-silenced. L<[perl #131868]|https://rt.perl.org/Public/Bug/Display.html?id=131868>
-
-=item *
-
-The warning about useless use of a concatenation operator in void context
-is now generated for expressions with multiple concatenations, such as
-C<$a.$b.$c>, which used to mistakenly not warn.
-L<[perl #6997]|https://rt.perl.org/Ticket/Display.html?id=6997>
-
-=item *
-
-Warnings that a variable or subroutine "masks earlier declaration in same
-...", or that an C<our> variable has been redeclared, have been moved to a
-new warnings category "shadow". Previously they were in category "misc".
-
-=item *
-
-The deprecation warning from C<Sys::Hostname::hostname()> saying that
-it doesn't accept arguments now states the Perl version in which the
-warning will be upgraded to an error.
-L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349>
-
-=item *
-
-The L<perldiag> entry for the error regarding a set-id script has been
-expanded to make clear that the error is reporting a specific security
-vulnerability, and to advise how to fix it.
-
-=item *
-
-The C<< Unable to flush stdout >> error message was missing a trailing
-newline. [debian #875361]
+XXX
=back
-=head1 Utility Changes
-
-=head2 L<perlbug>
-
-=over 4
+=head1 Known Problems
-=item *
+XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
+tests that had to be C<TODO>ed for the release would be noted here. Unfixed
+platform specific bugs also go here.
-C<--help> and C<--version> options have been added.
-
-=back
-
-=head1 Configuration and Compilation
+[ List each fix as an =item entry ]
=over 4
-=item * C89 requirement
-
-Perl has been documented as requiring a C89 compiler to build since October
-1998. A variety of simplifications have now been made to Perl's internals to
-rely on the features specified by the C89 standard. We believe that this
-internal change hasn't altered the set of platforms that Perl builds on, but
-please report a bug if Perl now has new problems building on your platform.
-
=item *
-On GCC, C<-Werror=pointer-arith> is now enabled by default,
-disallowing arithmetic on void and function pointers.
-
-=item *
-
-Where an HTML version of the documentation is installed, the HTML
-documents now use relative links to refer to each other. Links from
-the index page of L<perlipc> to the individual section documents are
-now correct.
-L<[perl #110056]|https://rt.perl.org/Ticket/Display.html?id=110056>
-
-=item *
-
-F<lib/unicore/mktables> now correctly canonicalizes the names of the
-dependencies stored in the files it generates.
-
-F<regen/mk_invlists.pl>, unlike the other F<regen/*.pl> scripts, used
-C<$0> to name itself in the dependencies stored in the files it
-generates. It now uses a literal so that the path stored in the
-generated files doesn't depend on how F<regen/mk_invlists.pl> is
-invoked.
-
-This lack of canonical names could cause test failures in F<t/porting/regen.t>.
-L<[perl #132925]|https://rt.perl.org/Ticket/Display.html?id=132925>
-
-=item * New probes
-
-=over 2
-
-=item HAS_BUILTIN_ADD_OVERFLOW
-
-=item HAS_BUILTIN_MUL_OVERFLOW
-
-=item HAS_BUILTIN_SUB_OVERFLOW
-
-=item HAS_THREAD_SAFE_NL_LANGINFO_L
-
-=item HAS_LOCALECONV_L
-
-=item HAS_MBRLEN
-
-=item HAS_MBRTOWC
-
-=item HAS_MEMRCHR
-
-=item HAS_NANOSLEEP
-
-=item HAS_STRNLEN
-
-=item HAS_STRTOLD_L
-
-=item I_WCHAR
-
-=back
+XXX
=back
-=head1 Testing
+=head1 Errata From Previous Releases
=over 4
=item *
-Testing of the XS-APItest directory is now done in parallel, where
-applicable.
-
-=item *
-
-Perl now includes a default F<.travis.yml> file for Travis CI testing
-on github mirrors.
-L<[perl #123981]|https://rt.perl.org/Ticket/Display.html?id=123981>
-
-=item *
-
-The watchdog timer count in F<re/pat_psycho.t> can now be overridden.
-
-This test can take a long time to run, so there is a timer to keep
-this in check (currently, 5 minutes). This commit adds checking
-the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set,
-the time out setting is multiplied by its value.
-
-=item *
-
-F<harness> no longer waits for 30 seconds when running F<t/io/openpid.t>.
-L<[perl #121028]|https://rt.perl.org/Ticket/Display.html?id=121028>
-L<[perl #132867]|https://rt.perl.org/Ticket/Display.html?id=132867>
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
=back
-=head1 Packaging
-
-For the past few years we have released perl using three different archive
-formats: bzip (C<.bz2>), LZMA2 (C<.xz>) and gzip (C<.gz>). Since xz compresses
-better and decompresses faster, and gzip is more compatible and uses less
-memory, we have dropped the C<.bz2> archive format with this release.
-(If this poses a problem, do let us know; see L</Reporting Bugs>, below.)
-
-=head1 Platform Support
-
-=head2 Discontinued Platforms
-
-=over 4
-
-=item PowerUX / Power MAX OS
-
-Compiler hints and other support for these apparently long-defunct
-platforms has been removed.
-
-=back
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item CentOS
-
-Compilation on CentOS 5 is now fixed.
-
-=item Cygwin
-
-A build with the quadmath library can now be done on Cygwin.
-
-=item Darwin
-
-Perl now correctly uses reentrant functions, like C<asctime_r>, on
-versions of Darwin that have support for them.
-
-=item FreeBSD
-
-FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for
-architectures other than ARM and MIPS. By default, perl is now compiled
-with the same optimization levels.
+=head1 Obituary
-=item VMS
-
-Several fix-ups for F<configure.com>, marking function VMS has
-(or doesn't have).
-
-CRTL features can now be set by embedders before invoking Perl by using
-the C<decc$feature_set> and C<decc$feature_set_value> functions.
-Previously any attempt to set features after image initialization were
-ignored.
-
-=item Windows
-
-=over 4
-
-=item *
-
-Support for compiling perl on Windows using Microsoft Visual Studio 2017
-(containing Visual C++ 14.1) has been added.
-
-=item *
-
-Visual C++ compiler version detection has been improved to work on non-English
-language systems.
-
-=item *
-
-We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
-versions earlier than 14.1.
-
-=back
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-A new optimisation phase has been added to the compiler,
-C<optimize_optree()>, which does a top-down scan of a complete optree
-just before the peephole optimiser is run. This phase is not currently
-hookable.
-
-=item *
-
-An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
-chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
-C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
-C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
-contains the argument count, plus a pointer to a constant string and a set
-of segment lengths. For example with
-
- my $x = "foo=$foo, bar=$bar\n";
-
-the constant string would be C<"foo=, bar=\n"> and the segment lengths
-would be (4,6,1). If the string contains characters such as C<\x80>, whose
-representation changes under utf8, two sets of strings plus lengths are
-precomputed and stored.
-
-=item *
-
-Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not
-safe in the presence of multithreading. A new
-L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been
-added to allow XS modules to safely define custom keywords even when
-loaded from a thread, analogous to L<C<PL_check>|perlapi/PL_check> /
-L<C<wrap_op_checker>|perlapi/wrap_op_checker>.
-
-=item *
-
-The C<PL_statbuf> interpreter variable has been removed.
-
-=item *
-
-The deprecated function C<to_utf8_case()>, accessible from XS code, has
-been removed.
-
-=item *
-
-A new function
-L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc>
-has been added that is like
-L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string>
-but takes an extra pointer parameter into which is stored the location
-of the first variant character, if any are found.
-
-=item *
-
-A new function, L<C<Perl_langinfo()>|perlapi/Perl_langinfo> has been
-added. It is an (almost) drop-in replacement for the system
-C<nl_langinfo(3)>, but works on platforms that lack that; as well as
-being more thread-safe, and hiding some gotchas with locale handling
-from the caller. Code that uses this, needn't use L<C<localeconv(3)>>
-(and be affected by the gotchas) to find the decimal point, thousands
-separator, or currency symbol. See L<perlapi/Perl_langinfo>.
-
-=item *
-
-A new API function L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken> has
-been added to complement L<C<sv_rvweaken()>|perlapi/sv_rvweaken>.
-The implementation was taken from L<Scalar::Util/unweaken>.
-
-=item *
-
-A new flag, C<SORTf_UNSTABLE>, has been added. This will allow a
-future commit to make mergesort unstable when the user specifies ‘no
-sort stable’, since it has been decided that mergesort should remain
-stable by default.
-
-=item *
-
-XS modules can now automatically get reentrant versions of system
-functions on threaded perls.
-
-By adding
-
- #define PERL_REENTRANT
-
-near the beginning of an C<XS> file, it will be compiled so that
-whatever reentrant functions perl knows about on that system will
-automatically and invisibly be used instead of the plain, non-reentrant
-versions. For example, if you write C<getpwnam()> in your code, on a
-system that has C<getpwnam_r()> all calls to the former will be translated
-invisibly into the latter. This does not happen except on threaded
-perls, as they aren't needed otherwise. Be aware that which functions
-have reentrant versions varies from system to system.
-
-=item *
-
-The C<PERL_NO_OP_PARENT> build define is no longer supported, which means
-that perl is now always built with C<PERL_OP_PARENT> enabled.
-
-=item *
-
-The format and content of the non-utf8 transliteration table attached to
-the C<op_pv> field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a
-C<struct OPtrans_map>.
-
-=item *
-
-A new compiler C<#define>, C<dTHX_DEBUGGING>. has been added. This is
-useful for XS or C code that only need the thread context because their
-debugging statements that get compiled only under C<-DDEBUGGING> need
-one.
-
-=item *
-
-A new API function L<perlapi/Perl_setlocale> has been added.
-
-=item *
-
-L<perlapi/sync_locale> has been revised to return a boolean as to
-whether the system was using the global locale or not.
-
-=item *
-
-A new kind of magic scalar, called a "nonelem" scalar, has been introduced.
-It is stored in an array to denote a non-existent element, whenever such an
-element is accessed in a potential lvalue context. It replaces the
-existing "defelem" (deferred element) magic wherever this is possible,
-being significantly more efficient. This means that
-C<some_sub($sparse_array[$nonelem])> no longer has to create a new magic
-defelem scalar each time, as long as the element is within the array.
-
-It partially fixes the rare bug of deferred elements getting out of synch
-with their arrays when the array is shifted or unshifted.
-L<[perl #132729]|https://rt.perl.org/Ticket/Display.html?id=132729>
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-List assignment (C<aassign>) could in some rare cases allocate an
-entry on the mortals stack and leave the entry uninitialized, leading to
-possible crashes.
-L<[perl #131570]|https://rt.perl.org/Ticket/Display.html?id=131570>
-
-=item *
-
-Attempting to apply an attribute to an C<our> variable where a
-function of that name already exists could result in a NULL pointer
-being supplied where an SV was expected, crashing perl.
-L<[perl #131597]|https://rt.perl.org/Ticket/Display.html?id=131597>
-
-=item *
-
-C<split ' '> now correctly handles the argument being split when in the
-scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature"
->> feature. Previously, when a string using the single-byte internal
-representation contained characters that are whitespace by Unicode rules but
-not by ASCII rules, it treated those characters as part of fields rather
-than as field separators.
-L<[perl #130907]|https://rt.perl.org/Ticket/Display.html?id=130907>
-
-=item *
-
-Several built-in functions previously had bugs that could cause them to
-write to the internal stack without allocating room for the item being
-written. In rare situations, this could have led to a crash. These bugs have
-now been fixed, and if any similar bugs are introduced in future, they will
-be detected automatically in debugging builds.
-
-These internal stack usage checks introduced are also done
-by the C<entersub> operator when calling XSUBs. This means we can
-report which XSUB failed to allocate enough stack space.
-L<[perl #131975]|https://rt.perl.org/Public/Bug/Display.html?id=131975>
-
-=item *
-
-Using a symbolic ref with postderef syntax as the key in a hash lookup was
-yielding an assertion failure on debugging builds.
-L<[perl #131627]|https://rt.perl.org/Ticket/Display.html?id=131627>
-
-=item *
-
-Array and hash variables whose names begin with a caret now admit indexing
-inside their curlies when interpolated into strings, as in C<<
-"${^CAPTURE[0]}" >> to index C<@{^CAPTURE}>.
-L<[perl #131664]|https://rt.perl.org/Ticket/Display.html?id=131664>
-
-=item *
-
-Fetching the name of a glob that was previously UTF-8 but wasn't any
-longer would return that name flagged as UTF-8.
-L<[perl #131263]|https://rt.perl.org/Ticket/Display.html?id=131263>
-
-=item *
-
-The perl C<sprintf()> function (via the underlying C function
-C<Perl_sv_vcatpvfn_flags()>) has been heavily reworked to fix many minor
-bugs, including the integer wrapping of large width and precision
-specifiers and potential buffer overruns. It has also been made faster in
-many cases.
-
-=item *
-
-Exiting from an C<eval>, whether normally or via an exception, now always
-frees temporary values (possibly calling destructors) I<before> setting
-C<$@>. For example:
-
- sub DESTROY { eval { die "died in DESTROY"; } }
- eval { bless []; };
- # $@ used to be equal to "died in DESTROY" here; it's now "".
-
-=item *
-
-Fixed a duplicate symbol failure with C<-flto -mieee-fp> builds.
-F<pp.c> defined C<_LIB_VERSION> which C<-lieee> already defines.
-L<[perl #131786]|https://rt.perl.org/Ticket/Display.html?id=131786>
-
-=item *
-
-The tokenizer no longer consumes the exponent part of a floating
-point number if it's incomplete.
-L<[perl #131725]|https://rt.perl.org/Ticket/Display.html?id=131725>
-
-=item *
-
-On non-threaded builds, for C<m/$null/> where C<$null> is an empty
-string is no longer treated as if the C</o> flag was present when the
-previous matching match operator included the C</o> flag. The
-rewriting used to implement this behavior could confuse the
-interpreter. This matches the behaviour of threaded builds.
-L<[perl #124368]|https://rt.perl.org/Ticket/Display.html?id=124368>
-
-=item *
-
-Parsing a C<sub> definition could cause a use after free if the C<sub>
-keyword was followed by whitespace including newlines (and comments.)
-L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836>
-
-=item *
-
-The tokenizer now correctly adjusts a parse pointer when skipping
-whitespace in a C<< ${identifier} >> construct.
-L<[perl #131949]|https://rt.perl.org/Public/Bug/Display.html?id=131949>
-
-=item *
-
-Accesses to C<${^LAST_FH}> no longer assert after using any of a
-variety of I/O operations on a non-glob.
-L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263>
-
-=item *
-
-The XS-level C<Copy()>, C<Move()>, C<Zero()> macros and their variants now
-assert if the pointers supplied are C<NULL>. ISO C considers
-supplying NULL pointers to the functions these macros are built upon
-as undefined behaviour even when their count parameters are zero.
-Based on these assertions and the original bug report three macro
-calls were made conditional.
-L<[perl #131746]|https://rt.perl.org/Public/Bug/Display.html?id=131746>
-L<[perl #131892]|https://rt.perl.org/Public/Bug/Display.html?id=131892>
-
-=item *
-
-Only the C<=> operator is permitted for defining defaults for
-parameters in subroutine signatures. Previously other assignment
-operators, e.g. C<+=>, were also accidentally permitted.
-L<[perl #131777]|https://rt.perl.org/Public/Bug/Display.html?id=131777>
-
-=item *
-
-Package names are now always included in C<:prototype> warnings
-L<[perl #131833]|https://rt.perl.org/Public/Bug/Display.html?id=131833>
-
-=item *
-
-The C<je_old_stack_hwm> field, previously only found in the C<jmpenv>
-structure on debugging builds, has been added to non-debug builds as
-well. This fixes an issue with some CPAN modules caused by the size of
-this structure varying between debugging and non-debugging builds.
-L<[perl #131942]|https://rt.perl.org/Public/Bug/Display.html?id=131942>
-
-=item *
-
-The arguments to the C<ninstr()> macro are now correctly parenthesized.
-
-=item *
-
-A NULL pointer dereference in the C<S_regmatch()> function has been
-fixed.
-L<[perl #132017]|https://rt.perl.org/Public/Bug/Display.html?id=132017>
-
-=item *
-
-Calling L<exec PROGRAM LIST|perlfunc/exec PROGRAM LIST> with an empty C<LIST>
-has been fixed. This should call C<execvp()> with an empty C<argv> array
-(containing only the terminating C<NULL> pointer), but was instead just
-returning false (and not setting L<C<$!>|perlvar/$!>).
-L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730>
-
-=item *
-
-The C<gv_fetchmeth_sv> C function stopped working properly in Perl 5.22 when
-fetching a constant with a UTF-8 name if that constant subroutine was stored in
-the stash as a simple scalar reference, rather than a full typeglob. This has
-been corrected.
-
-=item *
-
-Single-letter debugger commands followed by an argument which starts with
-punctuation (e.g. C<p$^V> and C<x@ARGV>) now work again. They had been
-wrongly requiring a space between the command and the argument.
-L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174>
-
-=item *
-
-L<splice|perlfunc/splice ARRAY,OFFSET,LENGTH,LIST> now throws an exception
-("Modification of a read-only value attempted") when modifying a read-only
-array. Until now it had been silently modifying the array. The new behaviour
-is consistent with the behaviour of L<push|perlfunc/push ARRAY,LIST> and
-L<unshift|perlfunc/unshift ARRAY,LIST>.
-L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000>
-
-=item *
-
-C<stat()>, C<lstat()>, and file test operators now fail if given a
-filename containing a nul character, in the same way that C<open()>
-already fails.
-
-=item *
-
-C<stat()>, C<lstat()>, and file test operators now reliably set C<$!> when
-failing due to being applied to a closed or otherwise invalid file handle.
-
-=item *
-
-File test operators for Unix permission bits that don't exist on a
-particular platform, such as C<-k> (sticky bit) on Windows, now check that
-the file being tested exists before returning the blanket false result,
-and yield the appropriate errors if the argument doesn't refer to a file.
-
-=item *
-
-Fixed a 'read before buffer' overrun when parsing a range starting with
-C<\N{}> at the beginning of the character set for the transliteration
-operator.
-L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245>
-
-=item *
-
-Fixed a leaked scalar when parsing an empty C<\N{}> at compile-time.
-L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245>
-
-=item *
-
-Calling C<do $path> on a directory or block device now yields a meaningful
-error code in C<$!>.
-L<[perl #125774]|https://rt.perl.org/Ticket/Display.html?id=125774>
-
-=item *
-
-Regexp substitution using an overloaded replacement value that provides
-a tainted stringification now correctly taints the resulting string.
-L<[perl #115266]|https://rt.perl.org/Ticket/Display.html?id=115266>
-
-=item *
-
-Lexical sub declarations in C<do> blocks such as C<do { my sub lex; 123 }>
-could corrupt the stack, erasing items already on the stack in the
-enclosing statement. This has been fixed.
-L<[perl #132442]|https://rt.perl.org/Ticket/Display.html?id=132442>
-
-=item *
-
-C<pack> and C<unpack> can now handle repeat counts and lengths that
-exceed two billion.
-L<[perl #119367]|https://rt.perl.org/Ticket/Display.html?id=119367>
-
-=item *
-
-Digits past the radix point in octal and binary floating point literals
-now have the correct weight on platforms where a floating point
-significand doesn't fit into an integer type.
-
-=item *
-
-The canonical truth value no longer has a spurious special meaning as a
-callable subroutine. It used to be a magic placeholder for a missing
-C<import> or C<unimport> method, but is now treated like any other string
-C<1>.
-L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
-
-=item *
-
-C<system> now reduces its arguments to strings in the parent process, so
-any effects of stringifying them (such as overload methods being called
-or warnings being emitted) are visible in the way the program expects.
-L<[perl #121105]|https://rt.perl.org/Ticket/Display.html?id=121105>
-
-=item *
-
-The C<readpipe()> built-in function now checks at compile time that
-it has only one parameter expression, and puts it in scalar context,
-thus ensuring that it doesn't corrupt the stack at runtime.
-L<[perl #4574]|https://rt.perl.org/Ticket/Display.html?id=4574>
-
-=item *
-
-C<sort> now performs correct reference counting when aliasing C<$a> and
-C<$b>, thus avoiding premature destruction and leakage of scalars if they
-are re-aliased during execution of the sort comparator.
-L<[perl #92264]|https://rt.perl.org/Ticket/Display.html?id=92264>
-
-=item *
-
-C<reverse> with no operand, reversing C<$_> by default, is no longer in
-danger of corrupting the stack.
-L<[perl #132544]|https://rt.perl.org/Ticket/Display.html?id=132544>
-
-=item *
-
-C<exec>, C<system>, et al are no longer liable to have their argument
-lists corrupted by reentrant calls and by magic such as tied scalars.
-L<[perl #129888]|https://rt.perl.org/Ticket/Display.html?id=129888>
-
-=item *
-
-Perl's own C<malloc> no longer gets confused by attempts to allocate
-more than a gigabyte on a 64-bit platform.
-L<[perl #119829]|https://rt.perl.org/Ticket/Display.html?id=119829>
-
-=item *
-
-Stacked file test operators in a sort comparator expression no longer
-cause a crash.
-L<[perl #129347]|https://rt.perl.org/Ticket/Display.html?id=129347>
-
-=item *
-
-An identity C<tr///> transformation on a reference is no longer mistaken
-for that reference for the purposes of deciding whether it can be
-assigned to.
-L<[perl #130578]|https://rt.perl.org/Ticket/Display.html?id=130578>
-
-=item *
-
-Lengthy hexadecimal, octal, or binary floating point literals no
-longer cause undefined behaviour when parsing digits that are of such
-low significance that they can't affect the floating point value.
-L<[perl #131894]|https://rt.perl.org/Ticket/Display.html?id=131894>
-
-=item *
-
-C<open $$scalarref...> and similar invocations no longer leak the file
-handle.
-L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814>
-
-=item *
-
-Some convoluted kinds of regexp no longer cause an arithmetic overflow
-when compiled.
-L<[perl #131893]|https://rt.perl.org/Ticket/Display.html?id=131893>
-
-=item *
-
-The default typemap, by avoiding C<newGVgen>, now no longer leaks when
-XSUBs return file handles (C<PerlIO *> or C<FILE *>).
-L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814>
-
-=item *
-
-Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
-crashes because of the early freeing of the subroutine.
-
-=item *
-
-The C<printf> format specifier C<%.0f> no longer rounds incorrectly
-L<[perl #47602]|https://rt.perl.org/Ticket/Display.html?id=47602>,
-and now shows the correct sign for a negative zero.
-
-=item *
-
-Fixed an issue where the error C<< Scalar value @arrayname[0] better
-written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >>
-when arrayname starts with C<< Inf >>.
-L<[perl #132645]|https://rt.perl.org/Ticket/Display.html?id=132645>
-
-=item *
-
-The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools
-distribution now behaves the same as XS implementation on errors: it
-returns an error, and sets C<< $! >>.
-L<[perl #132648]|https://rt.perl.org/Ticket/Display.html?id=132648>
-
-=item *
-
-Vivify array elements when putting them on the stack.
-Fixes L<[perl #8910]|https://rt.perl.org/Ticket/Display.html?id=8910>
-(reported in April 2002).
-
-=item *
-
-Fixed parsing of braced subscript after parens. Fixes
-L<[perl #8045]|https://rt.perl.org/Ticket/Display.html?id=8045>
-(reported in December 2001).
-
-=item *
-
-C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the
-length of the replacement character list was greater than 0x7fff.
-
-=item *
-
-C<tr/non_utf8/non_utf8/cd> failed to add the implied
-C<\x{100}-\x{7fffffff}> to the search character list.
-
-=item *
-
-Compilation failures within "perl-within-perl" constructs, such as with
-string interpolation and the right part of C<s///e>, now cause
-compilation to abort earlier.
-
-Previously compilation could continue in order to report other errors,
-but the failed sub-parse could leave partly parsed constructs on the
-parser shift-reduce stack, confusing the parser, leading to perl
-crashes.
-L<[perl #125351]|https://rt.perl.org/Ticket/Display.html?id=125351>
-
-=item *
-
-On threaded perls where the decimal point (radix) character is not a
-dot, it has been possible for a race to occur between threads when one
-needs to use the real radix character (such as with C<sprintf>). This has
-now been fixed by use of a mutex on systems without thread-safe locales,
-and the problem just doesn't come up on those with thread-safe locales.
-
-=item *
-
-Errors while compiling a regex character class could sometime trigger an
-assertion failure.
-L<[perl #132163]|https://rt.perl.org/Ticket/Display.html?id=132163>
-
-=back
+XXX If any significant core contributor or member of the CPAN community has
+died, add a short obituary here.
=head1 Acknowledgements
-Perl 5.28.0 represents approximately 13 months of development since Perl
-5.26.0 and contains approximately 730,000 lines of changes across 2,200
-files from 77 authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 580,000 lines of changes to 1,300 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its fourth decade thanks to a vibrant
-community of users and developers. The following people are known to have
-contributed the improvements that became Perl 5.28.0:
-
-Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alberto Simões, Alexandr
-Savca, Andrew Fresh, Andy Dougherty, Andy Lester, Aristotle Pagaltzis, Ask
-Bjørn Hansen, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
-Mannsåker, Dan Collins, Daniel Dragan, David Cantrell, David Mitchell,
-Dmitry Ulanov, Dominic Hargreaves, E. Choroba, Eric Herman, Eugen Konkov,
-Father Chrysostomos, Gene Sullivan, George Hartzell, Graham Knop, Harald
-Jörg, H.Merijn Brand, Hugo van der Sanden, Jacques Germishuys, James E
-Keenan, Jarkko Hietaniemi, Jerry D. Hedden, J. Nick Koston, John Lightsey,
-John Peacock, John P. Linderman, John SJ Anderson, Karen Etheridge, Karl
-Williamson, Ken Brown, Ken Cotterill, Leon Timmermans, Lukas Mai, Marco
-Fontani, Marc-Philip Werner, Matthew Horsfall, Neil Bowers, Nicholas Clark,
-Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter John Acklam, Reini Urban,
-Renee Baecker, Ricardo Signes, Robin Barker, Sawyer X, Scott Lanning, Sergey
-Aleynikov, Shirakata Kentaro, Shoichi Kaji, Slaven Rezic, Smylers, Steffen
-Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tomasz
-Konojacki, Tom Hukins, Tom Wyant, Tony Cook, Vitali Peil, Yves Orton,
-Zefram.
-
-The list above is almost certainly incomplete as it is automatically
-generated from version control history. In particular, it does not include
-the names of the (very much appreciated) contributors who reported issues to
-the Perl bug tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please
-see the F<AUTHORS> file in the Perl source distribution.
+XXX Generate this with:
+
+ perl Porting/acknowledgements.pl v5.27.11..HEAD
=head1 Reporting Bugs
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index a9940f09fc..6da3727d43 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
extra.pods : miniperl
@ @extra_pods.com
-PERLDELTA_CURRENT = [.pod]perl5280delta.pod
+PERLDELTA_CURRENT = [.pod]perl5281delta.pod
$(PERLDELTA_CURRENT) : [.pod]perldelta.pod
Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 2403688b6f..05193a1f2d 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1679,7 +1679,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5280delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5281delta.pod
$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1777,7 +1777,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5280delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5281delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
diff --git a/win32/Makefile b/win32/Makefile
index 09c9e77f7d..1e245f7128 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1282,7 +1282,7 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5280delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5281delta.pod
cd ..\win32
$(PERLEXE) $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1382,7 +1382,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5280delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5281delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
diff --git a/win32/makefile.mk b/win32/makefile.mk
index a0a34d99c9..a6072a95a6 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1622,7 +1622,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5280delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5281delta.pod
$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1720,7 +1720,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5280delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5281delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
diff --git a/win32/pod.mak b/win32/pod.mak
index 4638153d9d..4b21cd9448 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -53,7 +53,7 @@ POD = perl.pod \
perl5260delta.pod \
perl5261delta.pod \
perl5262delta.pod \
- perl5280delta.pod \
+ perl5281delta.pod \
perl561delta.pod \
perl56delta.pod \
perl581delta.pod \
@@ -202,7 +202,7 @@ MAN = perl.man \
perl5260delta.man \
perl5261delta.man \
perl5262delta.man \
- perl5280delta.man \
+ perl5281delta.man \
perl561delta.man \
perl56delta.man \
perl581delta.man \
@@ -351,7 +351,7 @@ HTML = perl.html \
perl5260delta.html \
perl5261delta.html \
perl5262delta.html \
- perl5280delta.html \
+ perl5281delta.html \
perl561delta.html \
perl56delta.html \
perl581delta.html \
@@ -500,7 +500,7 @@ TEX = perl.tex \
perl5260delta.tex \
perl5261delta.tex \
perl5262delta.tex \
- perl5280delta.tex \
+ perl5281delta.tex \
perl561delta.tex \
perl56delta.tex \
perl581delta.tex \