This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 31b6f23ed55c
[perl5.git] / pod / perldelta.pod
index e89e966..452c8a5 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.24.0
+[ this is a template for a new perldelta file.  Any text flagged as XXX needs
+to be processed before release. ]
 
-=head1 DESCRIPTION
-
-This document describes the differences between the 5.22.0 release and the
-5.24.0 release.
-
-=head1 Core Enhancements
-
-=head2 Postfix dereferencing is no longer experimental
-
-Using the C<postderef> and C<postderef_qq> features no longer emits a
-warning. Existing code that disables the C<experimental::postderef> warning
-category that they previously used will continue to work. The C<postderef>
-feature has no effect; all Perl code can use postfix dereferencing,
-regardless of what feature declarations are in scope. The C<5.24> feature
-bundle now includes the C<postderef_qq> feature.
-
-=head2 Unicode 8.0 is now supported
-
-For details on what is in this release, see
-L<http://www.unicode.org/versions/Unicode8.0.0/>.
-
-=head2 perl will now croak when closing an in-place output file fails
-
-Until now, failure to close the output file for an in-place edit was not
-detected, meaning that the input file could be clobbered without the edit being
-successfully completed.  Now, when the output file cannot be closed
-successfully, an exception is raised.
-
-=head2 New C<\b{lb}> boundary in regular expressions
-
-C<lb> stands for Line Break.  It is a Unicode property
-that determines where a line of text is suitable to break (typically so
-that it can be output without overflowing the available horizontal
-space).  This capability has long been furnished by the
-L<Unicode::LineBreak> module, but now a light-weight, non-customizable
-version that is suitable for many purposes is in core Perl.
-
-=head2 C<qr/(?[ ])/> now works in UTF-8 locales
-
-L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
-now will successfully compile when S<C<use locale>> is in effect.  The compiled
-pattern will use standard Unicode rules.  If the runtime locale is not a
-UTF-8 one, a warning is raised and standard Unicode rules are used
-anyway.  No tainting is done since the outcome does not actually depend
-on the locale.
-
-=head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
-
-Negative shifts are reverse shifts: left shift becomes right shift,
-and right shift becomes left shift.
-
-Shifting by the number of bits in a native integer (or more) is zero,
-except when the "overshift" is right shifting a negative value under
-C<use integer>, in which case the result is -1 (arithmetic shift).
-
-Until now negative shifting and overshifting have been undefined
-because they have relied on whatever the C implementation happens
-to do.  For example, for the overshift a common C behavior is
-"modulo shift":
-
-  1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
-
-  # And the same for <<, while Perl now produces 0 for both.
-
-Now these behaviors are well-defined under Perl, regardless of what
-the underlying C implementation does.  Note, however, that you cannot
-escape the native integer width, you need to know how far left you
-can go.  You can use for example:
-
-  use Config;
-  my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
-
-If you need a more bits on the left shift, you can use for example
-the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
-
-=head2 printf and sprintf now allow reordered precision arguments
-
-That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
-the existing reordering mechanism (which allows reordering for arguments
-that are used as format fields, widths, and vector separators).
-
-=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
-
-When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
-C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
-included in the hash passed to the handler, if supported by the
-platform.
-
-=head1 Security
-
-=head2 Set proper umask before calling C<mkstemp(3)>
-
-In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
-and restoring it afterwards. This wrongfully tells open(2) to strip
-the owner read and write bits from the given mode before applying it,
-rather than the intended negation of leaving only those bits in place.
-
-Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
-glibc) create a file with permissions 0066, leaving world read and
-write permissions regardless of current umask.
-
-This has been fixed by using umask 0177 instead. [perl #127322]
-
-=head2 Fix out of boundary access in Win32 path handling
-
-This is CVE-2015-8608.  For more information see
-L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
-
-=head2 Fix loss of taint in canonpath
-
-This is CVE-2015-8607.  For more information see
-L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
-
-=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
-
-Added validation that will detect both a short salt and invalid characters
-in the salt.
-L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
-
-=head2 Remove duplicate environment variables from C<environ>
-
-Previously, if an environment variable appeared more than once in
-C<environ[]>, C<%ENV> would contain the last entry for that name,
-while a typical C<getenv()> would return the first entry. We now
-make sure C<%ENV> contains the same as what C<getenv> returns.
-
-Second, we remove duplicates from C<environ[]>, so if a setting
-with that name is set in C<%ENV> we won't pass an unsafe value
-to a child process.
-
-[CVE-2016-2381]
-
-=head1 Incompatible Changes
-
-=head2 The C<autoderef> feature has been removed
-
-The experimental C<autoderef> feature (which allowed calling C<push>,
-C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
-a scalar argument) has been deemed unsuccessful. It has now been removed;
-trying to use the feature (or to disable the C<experimental::autoderef>
-warning it previously triggered) now yields an exception.
-
-=head2 Lexical $_ has been removed
-
-C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
-with no obvious solution.  In Perl 5.18.0, it was made experimental on the
-theory that it would either be removed or redesigned in a less confusing (but
-backward-incompatible) way.  Over the following years, no alternatives were
-proposed.  The feature has now been removed and will fail to compile.
-
-=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
-
-This is now more suited to be a drop-in replacement for plain C<\b>, but
-giving better results for parsing natural language.  Previously it
-strictly followed the current Unicode rules which calls for it to match
-between each white space character.  Now it doesn't generally match
-within spans of white space, behaving like C<\b> does.  See
-L<perlrebackslash/\b{wb}>
-
-=head2 Regular expression compilation errors
-
-Some regular expression patterns that had runtime errors now
-don't compile at all.
-
-Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
-expression pattern constructs are now checked for validity at pattern
-compilation time, and invalid ones will cause the program to not
-compile.  In earlier releases, this check was often deferred until run
-time.  Whenever an error check is moved from run- to compile time,
-erroneous code is caught 100% of the time, whereas before it would only
-get caught if and when the offending portion actually gets executed,
-which for unreachable code might be never.
-
-=head2 C<qr/\N{}/> now disallowed under C<use re "strict">
-
-An empty C<\N{}> makes no sense, but for backwards compatibility is
-accepted as doing nothing, though a deprecation warning is raised by
-default.  But now this is a fatal error under the experimental feature
-L<re/'strict' mode>.
-
-=head2 Nested declarations are now disallowed
-
-A C<my>, C<our>, or C<state> declaration is no longer allowed inside
-of another C<my>, C<our>, or C<state> declaration.
-
-For example, these are now fatal:
-
-   my ($x, my($y));
-   our (my $x);
-
-L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
-
-L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
-
-=head2 The C</\C/> character class has been removed.
-
-This regular expression character class was deprecated in v5.20.0 and has
-produced a deprecation warning since v5.22.0. It is now a compile-time
-error. If you need to examine the individual bytes that make up a
-UTF8-encoded character, then use C<utf8::encode()> on the string (or a
-copy) first.
-
-=head2 C<chdir('')> no longer chdirs home
-
-Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
-perl v5.8, and will now fail.  Use C<chdir()> instead.
-
-=head2 ASCII characters in variable names must now be all visible
-
-It was legal until now on ASCII platforms for variable names to contain
-non-graphical ASCII control characters (ordinals 0 through 31, and 127,
-which are the C0 controls and C<DELETE>).  This usage has been
-deprecated since v5.20, and as of now causes a syntax error.  The
-variables these names referred to are special, reserved by Perl for
-whatever use it may choose, now, or in the future.  Each such variable
-has an alternative way of spelling it.  Instead of the single
-non-graphic control character, a two character sequence beginning with a
-caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
-L<perlvar>.   It remains legal, though unwise and deprecated (raising a
-deprecation warning), to use certain non-graphic non-ASCII characters in
-variables names when not under S<C<use utf8>>.  No code should do this,
-as all such variables are reserved by Perl, and Perl doesn't currently
-define any of them (but could at any time, without notice).
-
-=head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
-
-C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
-Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
-contrary to the documentation.
-
-=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
-
-The experimental Extended Bracketed Character Classes can contain regular
-bracketed character classes within them.  These differ from regular ones in
-that white space is generally ignored, unless escaped by preceding it with a
-backslash.  The white space that is ignored is now limited to just tab C<\t>
-and SPACE characters.  Previously, it was any white space.  See
-L<perlrecharclass/Extended Bracketed Character Classes>.
-
-=head1 Deprecations
-
-=head2 Using code points above the platform's C<IV_MAX> is now deprecated
-
-Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
-at one time defined them up to 2**31 - 1, but Perl has allowed them to
-be as high as anything that will fit in a word on the platform being
-used.  However, use of those above the platform's C<IV_MAX> is broken in
-some constructs, notably C<tr///>, regular expression patterns involving
-quantifiers, and in some arithmetic and comparison operations, such as
-being the upper limit of a loop.  Now the use of such code points raises
-a deprecation warning, unless that warning category is turned off.
-C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
-64-bit ones.
-
-=head2 Doing bitwise operations on strings containing code points above
-0xFF is deprecated
-
-The string bitwise operators treat their operands as strings of bytes,
-and values beyond 0xFF are nonsensical in this context.  To operate on
-encoded bytes, first encode the strings.  To operate on code points'
-numeric values, use C<split> and C<map ord>.  In the future, this
-warning will be replaced by an exception.
-
-=head2 sysread(), syswrite(), recv() and send() are deprecated on
-:utf8 handles
-
-The sysread(), recv(), syswrite() and send() operators
-are deprecated on handles that have the C<:utf8> layer, either
-explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
-
-Both sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers.  Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
-ignoring any layers.  If the flag is set, both write the value UTF-8
-encoded, even if the layer is some different encoding, such as the
-example above.
-
-Ideally, all of these operators would completely ignore the C<:utf8>
-state, working only with bytes, but this would result in silently
-breaking existing code.  To avoid this a future version of perl will
-throw an exception when any of sysread(), recv(), syswrite() or send()
-are called on handle with the C<:utf8> layer.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-The overhead of scope entry and exit has been considerably reduced, so
-for example subroutine calls, loops and basic blocks are all faster now.
-This empty function call now takes about a third less time to execute:
-
-    sub f{} f();
-
-=item *
-
-Many languages, such as Chinese, are caseless.  Perl now knows about
-most common ones, and skips much of the work when
-a program tries to change case in them (like C<ucfirst()>) or match
-caselessly (C<qr//i>).  This will speed up a program, such as a web
-server, that can operate on multiple languages, while it is operating on a
-caseless one.
-
-=item *
-
-C</fixed-substr/> has been made much faster.
-
-On platforms with a libc memchr() implementation which makes good use of
-underlying hardware support, patterns which include fixed substrings will now
-often be much faster; for example with glibc on a recent x86_64 CPU, this:
-
-    $s = "a" x 1000 . "wxyz";
-    $s =~ /wxyz/ for 1..30000
-
-is now about 7 times faster.  On systems with slow memchr(), e.g. 32-bit ARM
-Raspberry Pi, there will be a small or little speedup.  Conversely, some
-pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
-times slower on the rPi, 1.5x slower on x86_64.
-
-=item *
-
-Faster addition, subtraction and multiplication.
-
-Since 5.8.0, arithmetic became slower due to the need to support
-64-bit integers. To deal with 64-bit integers, a lot more corner
-cases need to be checked, which adds time. We now detect common
-cases where there is no need to check for those corner cases,
-and special-case them.
-
-=item *
-
-Preincrement, predecrement, postincrement, and postdecrement have been
-made faster by internally splitting the functions which handled multiple
-cases into different functions.
-
-=item *
-
-Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
-for XSUBs and const subs has been removed.  This removed one glob/scalar combo
-for each unique C<.c> file that XSUBs and const subs came from.  On startup
-(C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
-Loading XS modules created more glob/scalar combos.  These things were created
-regardless of whether the perl debugger was being used or not, unlike for pure
-perl subs, and ignores that the perl debugger can not debug C code.
-
-=item *
-
-On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
-exist, is now 3.5x faster than before.
-
-=item *
-
-Single arguments in list assign are now slightly faster:
-
-  ($x) = (...);
-  (...) = ($x);
-
-=item *
-
-Less peak memory is now used when compiling regular expression patterns.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over
-
-=item *
-
-L<arybase> has been upgraded from version 0.10 to 0.11.
-
-=item *
-
-L<Attribute::Handlers> has been upgraded from version 0.97 to 0.99.
-
-=item *
-
-L<autodie> has been upgraded from version 2.26 to 2.29.
-
-=item *
-
-L<autouse> has been upgraded from version 1.08 to 1.11.
-
-=item *
-
-L<B> has been upgraded from version 1.58 to 1.62.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.35 to 1.37.
-
-=item *
-
-L<base> has been upgraded from version 2.22 to 2.23.
-
-=item *
-
-L<Benchmark> has been upgraded from version 1.2 to 1.22.
-
-=item *
-
-L<bignum> has been upgraded from version 0.39 to 0.42.
-
-=item *
-
-L<bytes> has been upgraded from version 1.04 to 1.05.
-
-=item *
-
-L<Carp> has been upgraded from version 1.36 to 1.40.
-
-=item *
-
-L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
-
-=item *
-
-L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.140.
-
-=item *
-
-L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.018.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.158 to 2.160.
-
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
-
-=item *
-
-L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
-
-=item *
-
-L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.32 to 1.38.
-
-=item *
-
-L<Encode> has been upgraded from version 2.72 to 2.80.
-
-=item *
-
-L<encoding> has been upgraded from version 2.14 to 2.17.
-
-=item *
-
-L<encoding::warnings> has been upgraded from version 0.11 to 0.12.
-
-=item *
-
-L<English> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Errno> has been upgraded from version 1.23 to 1.25.
-
-=item *
-
-L<experimental> has been upgraded from version 0.013 to 0.016.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280225.
-
-=item *
-
-L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.04_01 to 7.10_01.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.28 to 3.31.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.28 to 3.31.
-
-=item *
-
-L<feature> has been upgraded from version 1.40 to 1.42.
-
-=item *
-
-L<fields> has been upgraded from version 2.17 to 2.23.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.29 to 1.34.
-
-=item *
-
-L<File::Glob> has been upgraded from version 1.24 to 1.26.
-
-=item *
-
-L<File::Path> has been upgraded from version 2.09 to 2.12_01.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.56 to 3.63.
-
-=item *
-
-L<Filter::Util::Call> has been upgraded from version 1.54 to 1.55.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.45 to 2.48.
-
-=item *
-
-L<Hash::Util> has been upgraded from version 0.18 to 0.19.
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.15 to 1.19.
-
-=item *
-
-L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
-
-=item *
-
-L<I18N::Langinfo> has been upgraded from version 0.12 to 0.13.
-
-=item *
-
-L<if> has been upgraded from version 0.0604 to 0.0606.
-
-=item *
-
-L<IO> has been upgraded from version 1.35 to 1.36.
-
-=item *
-
-L<IO-Compress> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<IPC::Open3> has been upgraded from version 1.18 to 1.20.
-
-=item *
-
-L<IPC::SysV> has been upgraded from version 2.04 to 2.06_01.
-
-=item *
-
-L<List::Util> has been upgraded from version 1.41 to 1.42_02.
-
-=item *
-
-L<locale> has been upgraded from version 1.06 to 1.08.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.34 to 3.37.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.9997 to 1.999715.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.40.
-
-=item *
-
-L<Math::BigRat> has been upgraded from version 0.2608 to 0.260802.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20160320.
-
-=item *
-
-L<Module::Metadata> has been upgraded from version 1.000026 to 1.000031.
-
-=item *
-
-L<mro> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<ODBM_File> has been upgraded from version 1.12 to 1.14.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.32 to 1.34.
-
-=item *
-
-L<parent> has been upgraded from version 0.232 to 0.234.
-
-=item *
-
-L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
-
-=item *
-
-L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
-
-=item *
-
-L<perlfaq> has been upgraded from version 5.021009 to 5.021010.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.21 to 0.24.
-
-=item *
-
-L<PerlIO::mmap> has been upgraded from version 0.014 to 0.016.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.22 to 0.24.
-
-=item *
-
-L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
-
-=item *
-
-L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.25 to 3.25_02.
-
-=item *
-
-L<Pod::Simple> has been upgraded from version 3.29 to 3.32.
-
-=item *
-
-L<Pod::Usage> has been upgraded from version 1.64 to 1.68.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.53 to 1.65.
-
-=item *
-
-L<Scalar::Util> has been upgraded from version 1.41 to 1.42_02.
-
-=item *
-
-L<SDBM_File> has been upgraded from version 1.13 to 1.14.
-
-=item *
-
-L<SelfLoader> has been upgraded from version 1.22 to 1.23.
-
-=item *
-
-L<Socket> has been upgraded from version 2.018 to 2.020_03.
-
-=item *
-
-L<Storable> has been upgraded from version 2.53 to 2.56.
-
-=item *
-
-L<strict> has been upgraded from version 1.09 to 1.11.
-
-=item *
-
-L<Term::ANSIColor> has been upgraded from version 4.03 to 4.04.
-
-=item *
-
-L<Term::Cap> has been upgraded from version 1.15 to 1.17.
-
-=item *
-
-L<Test> has been upgraded from version 1.26 to 1.28.
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.35 to 3.36.
-
-=item *
-
-L<Thread::Queue> has been upgraded from version 3.05 to 3.08.
-
-=item *
-
-L<threads> has been upgraded from version 2.01 to 2.06.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.48 to 1.50.
-
-=item *
-
-L<Tie::File> has been upgraded from version 1.01 to 1.02.
-
-=item *
-
-L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9726 to 1.9732.
-
-=item *
-
-L<Time::Piece> has been upgraded from version 1.29 to 1.31.
-
-=item *
-
-L<Unicode::Collate> has been upgraded from version 1.12 to 1.14.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.18 to 1.25.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.61 to 0.64.
-
-=item *
-
-L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
-
-=item *
-
-L<utf8> has been upgraded from version 1.17 to 1.19.
-
-=item *
-
-L<version> has been upgraded from version 0.9909 to 0.9916.
-
-=item *
-
-L<warnings> has been upgraded from version 1.32 to 1.36.
-
-=item *
-
-L<Win32> has been upgraded from version 0.51 to 0.52.
-
-=item *
-
-L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
-
-=item *
-
-L<XS::Typemap> has been upgraded from version 0.13 to 0.14.
-
-=item *
-
-L<XSLoader> has been upgraded from version 0.20 to 0.21.
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlapi>
-
-=over 4
-
-=item *
-
-The process of using undocumented globals has been documented, namely, that one
-should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
-first to get the go-ahead for documenting and using an undocumented function or
-global variable.
-
-=back
-
-=head3 L<perlcall>
-
-=over 4
-
-=item *
-
-A number of cleanups have been made to perlcall, including:
-
-=over 4
-
-=item *
-
-use EXTEND(SP, n) and PUSHs() instead of XPUSHs() where applicable
-and update prose to match
-
-=item *
-
-add POPu, POPul and POPpbytex to the "complete list of POP macros"
-and clarify the documentation for some of the existing entries, and
-a note about side-effects
-
-=item *
-
-add API documentation for POPu and POPul
-
-=item *
-
-use ERRSV more efficiently
-
-=item *
-
-approaches to thread-safety storage of SVs.
-
-=back
-
-=back
-
-=head3 L<perlfunc>
-
-=over 4
-
-=item *
-
-The documentation of C<hex> has been revised to clarify valid inputs.
-
-=item *
-
-Better explain meaning of negative PIDs in C<waitpid>.
-L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
-
-=item *
-
-General cleanup: there's more consistency now (in POD usage, grammar, code
-examples), better practices in code examples (use of C<my>, removal of bareword
-filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
-
-=back
-
-=head3 L<perlguts>
-
-=over 4
-
-=item *
-
-A new section has been added, L<perlguts/"Dynamic Scope and the Context
-Stack">, which explains how the perl context stack works.
-
-=back
-
-=head3 L<perllocale>
-
-=over 4
-
-=item *
-
-A stronger caution about using locales in threaded applications is
-given.  Locales are not thread-safe, and you can get wrong results or
-even segfaults if you use them there.
-
-=back
-
-=head3 L<perlmodlib>
-
-=over 4
-
-=item *
-
-We now recommend contacting the module-authors list or PAUSE in seeking
-guidance on the naming of modules.
-
-=back
-
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-The documentation of C<qx//> now describes how C<$?> is affected.
-
-=back
-
-=head3 L<perlpolicy>
-
-=over 4
-
-=item *
-
-This note has been added to perlpolicy:
-
- While civility is required, kindness is encouraged; if you have any
- doubt about whether you are being civil, simply ask yourself, "Am I
- being kind?" and aspire to that.
-
-=back
-
-=head3 L<perlreftut>
-
-=over 4
-
-=item *
-
-Fix some examples to be L<strict> clean.
-
-=back
-
-=head3 L<perlrebackslash>
-
-=over 4
-
-=item *
-
-Clarify that in languages like Japanese and Thai, dictionary lookup
-is required to determine word boundaries.
-
-=back
-
-=head3 L<perlsub>
-
-=over 4
-
-=item *
-
-Updated to note that anonymous subroutines can have signatures.
-
-=back
-
-=head3 L<perlsyn>
-
-=over 4
-
-=item *
-
-Fixed a broken example where C<=> was used instead of
-C<==> in conditional in do/while example.
-
-=back
-
-=head3 L<perltie>
-
-=over 4
-
-=item *
-
-The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
-
-=back
-
-=head3 L<perlunicode>
-
-=over 4
-
-=item *
-
-Discourage use of 'In' prefix for Unicode Block property.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-The documentation of C<$@> was reworded to clarify that it is not just for
-syntax errors in C<eval>.
-L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
-
-=item *
-
-The specific true value of C<$!{E...}> is now documented, noting that it is
-subject to change and not guaranteed.
-
-=item *
-
-Use of C<$OLD_PERL_VERSION> is now discouraged.
-
-=back
-
-=head3 L<perlxs>
-
-=over 4
-
-=item *
-
-The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
-by default, not I<enabled>.
-
-=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<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
-
-(F) Transliteration (C<tr///> and C<y///>) transliterates individual
-characters.  But a named sequence by definition is more than an
-individual character, and hence doing this operation on it doesn't make
-sense.
-
-=item *
-
-L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
-
-(F) A "my", "our" or "state" declaration was found within another declaration,
-such as C<my ($x, my($y), $z)> or C<our (my $x)>.
-
-=item *
-
-L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=item *
-
-L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
-
-=item *
-
-L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
-
-(F) You supplied a number to the -C option that either has extra leading
-zeroes or overflows perl's unsigned integer representation.
-
-=item *
-
-L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=item *
-
-L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=item *
-
-L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
-perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
-
-=item *
-
-L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
-
-(W deprecated) The sysread(), recv(), syswrite() and send() operators
-are deprecated on handles that have the C<:utf8> layer, either
-explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
-
-Both sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers.  Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
-ignoring any layers.  If the flag is set, both write the value UTF-8
-encoded, even if the layer is some different encoding, such as the
-example above.
-
-Ideally, all of these operators would completely ignore the C<:utf8>
-state, working only with bytes, but this would result in silently
-breaking existing code.  To avoid this a future version of perl will
-throw an exception when any of sysread(), recv(), syswrite() or send()
-are called on handle with the C<:utf8> layer.
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
-longer deprecated.  It is discouraged to encourage uniformity (so that, for
-example, one can grep more easily) but it will not be removed.
-L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
-
-=item *
-
-The diagnostic C<< Hexadecimal float: internal error >> has been changed to
-C<< Hexadecimal float: internal error (%s) >> to include more information.
-
-=item *
-
-L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
-
-This error now reports the name of the non-lvalue subroutine you attempted to
-use as an lvalue.
-
-=item *
-
-When running out of memory during an attempt the increase the stack
-size, previously, perl would die using the cryptic message
-C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
-This has been fixed to show the prettier message:
-L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-C<Configure> now acts as if the C<-O> option is always passed, allowing command
-line options to override saved configuration.  This should eliminate confusion
-when command line options are ignored for no obvious reason.  C<-O> is now
-permitted, but ignored.
-
-=item *
-
-Bison 3.0 is now supported.
-
-=item *
-
-F<Configure> no longer probes for F<libnm> by default.  Originally
-this was the "New Math" library, but the name has been re-used by the
-GNOME NetworkManager.
-L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
-
-=item *
-
-Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
-
-=item *
-
-C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
-not used by C<< PPPort.pm >>, only by its test files.
-
-=item *
-
-It is now possible to specify which compilation date to show on
-C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
-
-=item *
-
-Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
-C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
-the interpreter, since Perl 5.17.10.  This has been fixed.
-
-=item *
-
-F<Configure> should handle spaces in paths a little better.
-
-=item *
-
-No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
-using Perl and POSIX-BC at this time, and by not generating these tables
-it saves time during development, and makes the resulting tar ball smaller.
-
-=item *
-
-The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
-
-=item *
-
-You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
-
-=item *
-
-The Win32 miniperl now has a real C<getcwd> which increases build performance
-resulting in C<getcwd()> being 605x faster in Win32 miniperl.
-
-=back
-
-=head1 Testing
-
-=over 4
-
-=item *
-
-A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
-C<OP_AASSIGN>.
-
-=item *
-
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item AmigaOS
-
-=over 4
-
-=item *
-
-The AmigaOS port has been reintegrated into the main tree, based off of
-Perl 5.22.1.
-
-=back
-
-=item Cygwin
-
-=over 4
-
-=item *
-
-Tests are more robust against unusual cygdrive prefixes.
-L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
-
-=back
-
-=item EBCDIC
-
-=over 4
-
-=item UTF-EBCDIC extended
-
-UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
-extended so that it can represent code points up to 2 ** 64 - 1 on
-platforms with 64-bit words.  This brings it into parity with UTF-8.
-This enhancement requires an incompatible change to the representation
-of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
-previous maximum representable code point).  This means that a file that
-contains one of these code points, written out with previous versions of
-perl cannot be read in, without conversion, by a perl containing this
-change.  We do not believe any such files are in existence, but if you
-do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
-and we will write a conversion script for you.
-
-=item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
-
-Comparing two strings that were both encoded in UTF-8 (or more
-precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
-uses C<cmp()>, this fixes that as well.
-
-=item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
-
-Perl v5.22 introduced the concept of portable ranges to regular
-expression patterns.  A portable range matches the same set of
-characters no matter what platform is being run on.  This concept is now
-extended to C<tr///>.  See
-C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
-
-There were also some problems with these operations under S<C<use
-utf8>>, which are now fixed
-
-=back
-
-=item FreeBSD
-
-=over 4
-
-=item *
-
-Use the C<fdclose()> function from FreeBSD if it is available.
-L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
-
-=back
-
-=item IRIX
-
-=over 4
-
-=item *
-
-Under some circumstances IRIX stdio fgetc() and fread() set the errno to
-C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
-is now cleared in such cases.
-L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
-
-=item *
-
-Problems when multiplying long doubles by infinity have been fixed.
-L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
-
-=back
-
-=item MacOS X
-
-=over 4
-
-=item *
-
-Until now OS X builds of perl have specified a link target of 10.3 (Panther,
-2003) but have not specified a compiler target.  From now on, builds of perl on
-OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
-version and specify that as the explicit build target in both compiler and
-linker flags, thus preserving binary compatibility for extensions built later
-regardless of changes in OS X, SDK, or compiler and linker versions.  To
-override the default value used in the build and preserved in the flags,
-specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
-perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
-earlier there is no change to the behavior present when those systems were
-current; the link target is still OS X 10.3 and there is no explicit compiler
-target.
-
-=item *
-
-Builds with both -DDEBUGGING and threading enabled would fail with a
-"panic: free from wrong pool" error when built or tested from Terminal
-on OS X.  This was caused by perl's internal management of the
-environment conflicting with an atfork handler using the libc
-setenv() function to update the environment.
+perldelta - what is new for perl v5.25.2
 
-Perl now uses setenv()/unsetenv() to update the environment on OS X.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
-
-=back
-
-=item Solaris
-
-=over 4
-
-=item *
-
-All Solaris now builds shared libperl.
-
-Solaris and variants like OpenIndiana now always build with the shared
-Perl library (Configure -Duseshrplib).  This was required for the
-OpenIndiana builds, but this has also been the setting for Oracle/Sun
-Perl builds for several years.
-
-=back
-
-=item Tru64
-
-=over 4
-
-=item *
-
-Workaround where Tru64 balks when prototypes are listed as
-C<< PERL_STATIC_INLINE >>, but where the test is build with
-C<< -DPERL_NO_INLINE_FUNCTIONS >>.
-
-=back
-
-=item VMS
-
-=over 4
-
-=item *
-
-On VMS, the math function prototypes in C<math.h> are now visible under C++.
-Now building the POSIX extension with C++ will no longer crash.
-
-=item *
-
-VMS has had C<setenv>/C<unsetenv> since v7.0 (released in 1996),
-C<Perl_vmssetenv> now always uses C<setenv>/C<unsetenv>.
-
-=item *
-
-Perl now implements its own C<killpg> by scanning for processes in the
-specified process group, which may not mean exactly the same thing as a Unix
-process group, but allows us to send a signal to a parent (or master) process
-and all of its sub-processes.  At the perl level, this means we can now send a
-negative pid like so:
-
-    kill SIGKILL, -$pid;
-
-to signal all processes in the same group as C<$pid>.
-
-=item *
-
-For those C<%ENV> elements based on the CRTL environ array, we've always
-preserved case when setting them but did look-ups only after upcasing the
-key first, which made lower- or mixed-case entries go missing. This problem
-has been corrected by making C<%ENV> elements derived from the environ array
-case-sensitive on look-up as well as case-preserving on store.
-
-=item *
-
-Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
-considered logical names, but now consider all sources of C<%ENV> as
-determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
-
-=item *
-
-The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
-side effect of this change, VAX is no longer supported as the terminal
-release of OpenVMS VAX was v7.3 in 2001.
-
-=back
+=head1 DESCRIPTION
 
-=item Win32
+This document describes differences between the 5.25.1 release and the 5.25.2
+release.
 
-=over 4
+If you are upgrading from an earlier release such as 5.25.0, first read
+L<perl5251delta>, which describes differences between 5.25.0 and 5.25.1.
 
-=item *
+=head1 Notice
 
-A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
-option is off by default, meaning the default is to do Windows registry
-lookups.  This option stops Perl from looking inside the registry for anything.
-For what values are looked up in the registry see L<perlwin32>.  Internally, in
-C, the name of this option is C<WIN32_NO_REGISTRY>.
+XXX Any important notices here
 
-=item *
+=head1 Core Enhancements
 
-The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
-C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
-vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
-for entries at all times through Perl processes life time even if they did not
-exist.  For performance reasons, now, if the root key (i.e.
-C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
-not exist at process start time, it will not be checked again for C<%ENV>
-override entries for the remainder of the Perl processes life.  This more
-closely matches Unix behavior in that the environment is copied or inherited
-on startup and changing the variable in the parent process or another process
-or editing F<.bashrc> will not change the environmental variable in other
-existing, running, processes.
+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.
 
-=item *
+[ List each enhancement as a =head2 entry ]
 
-One glob fetch was removed for each C<-X> or C<stat> call whether done from
-Perl code or internally from Perl's C code.  The glob being looked up was
-C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
-C<stat> slightly faster.
+=head2 Perl can now do default collation in UTF-8 locales on platforms
+that support it
 
-=item *
+Some platforms natively do a reasonable job of collating and sorting in
+UTF-8 locales.  Perl now works with those.  For portability and full
+control, L<Unicode::Collate> is still recommended, but now you may
+not need to do anything special to get good-enough results, depending on
+your application.  See
+L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>
 
-During miniperl's process startup, during the build process, 4 to 8 IO calls
-related to the process starting F<.pl> and the F<buildcustomize.pl> file were
-removed from the code opening and executing the first 1 or 2 F<.pl> files.
+=head2 Better locale collation of strings containing embedded C<NUL>
+characters
 
-=item *
+In locales that have multi-level character weights, these are now
+ignored at the higher priority ones.  There are still some gotchas in
+some strings, though.  See
+L<perllocale/Collation of strings containing embedded C<NUL> characters>.
 
-Builds using Microsoft Visual C++ 2003 and earlier no longer produce
-an "INTERNAL COMPILER ERROR" message.  [perl #126045]
+=head1 Security
 
-=item *
+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.
 
-Visual C++ 2013 builds will now execute on XP and higher. Previously they would
-only execute on Vista and higher.
+[ List each security issue as a =head2 entry ]
 
-=item *
+=head2 C<-Di> switch is now required for PerlIO debugging output
 
-You can now build perl with GNU Make and GCC.  [perl #123440]
+Previously PerlIO debugging output would be sent to the file specified
+by the C<PERLIO_DEBUG> environment variable if perl wasn't running
+setuid and the C<-T> or C<-t> switches hadn't been parsed yet.
 
-=item *
+If perl performed output at a point where it hadn't yet parsed its
+switches this could result in perl creating or overwriting the file
+named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied.
 
-C<truncate($filename, $size)> now works for files over 4GB in size.
-[perl #125347]
+Perl now requires the C<-Di> switch to produce PerlIO debugging
+output.  By default this is written to C<stderr>, but can optionally
+be redirected to a file by setting the C<PERLIO_DEBUG> environment
+variable.
 
-=item *
+If perl is running setuid or the C<-T> switch has supplied
+C<PERLIO_DEBUG> is ignored and the debugging output is sent to
+C<stderr> as for any other C<-D> switch.
 
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
+=head1 Incompatible Changes
 
-=item *
+XXX For a release on a stable branch, this section aspires to be:
 
-Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
-result in an invalid C<$Config{archname}> for the resulting perl.
-[perl #127584]
+    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.
 
-=item *
+[ List each incompatible change as a =head2 entry ]
 
-Errors set by Winsock functions are now put directly into C<$^E>, and the
-relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
-modules for testing this against.
+=head1 Deprecations
 
-The previous behavior of putting the errors (converted to POSIX-style C<E*>
-error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
-of like-named Winsock and POSIX error constants, a relationship between which
-has unfortunately been established in one way or another since Perl 5.8.0.
+XXX Any deprecated features, syntax, modules etc. should be listed here.
 
-The new behavior provides a much more robust solution for checking Winsock
-errors in portable software without accidentally matching POSIX tests that were
-intended for other OSes and may have different meanings for Winsock.
+=head2 Module removals
 
-The old behavior is currently retained, warts and all, for backwards
-compatibility, but users are encouraged to change any code that tests C<$!>
-against C<E*> constants for Winsock errors to instead test C<$^E> against
-C<WSAE*> constants.  After a suitable deprecation period, the old behavior may
-be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
-possible confusion over which error variable to check.
+XXX Remove this section if inapplicable.
 
-=back
+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.
 
-=item ppc64el
+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.
 
-=over 4
+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.
 
-=item floating point
+=over
 
-The floating point format of ppc64el (Debian naming for little-endian
-PowerPC) is now detected correctly.
+=item XXX
 
-=back
+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 Internal Changes
+[ List each other deprecation as a =head2 entry ]
 
-=over 4
+=head1 Performance Enhancements
 
-=item *
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
 
-The implementation of perl's context stack system, and its internal API,
-have been heavily reworked. Note that no significant changes have been
-made to any external APIs, but XS code which relies on such internal
-details may need to be fixed. The main changes are:
+[ List each enhancement as a =item entry ]
 
 =over 4
 
 =item *
 
-The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
-inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
-function args rather than implicitly relying on local vars such as
-C<gimme> and C<newsp> being available. Also their functionality has
-changed: in particular, C<cx_popblock()> no longer decrements
-C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
-involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
-documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
-details on how to use them.
-
-=item *
-
-Various macros, which now consistently have a CX_ prefix, have been added:
-
-  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
-
-or renamed:
-
-  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
-
-=item *
-
-C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
-C<pp_enter*> and C<pp_leave*> no longer do
-
-  ENTER; SAVETMPS; ....; LEAVE
-
-=item *
-
-C<cx_popblock()> now also restores C<PL_curpm>.
-
-=item *
-
-In C<dounwind()> for every context type, the current savestack frame is
-now processed before each context is popped; formerly this was only done
-for sub-like context frames. This action has been removed from
-C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
-must be called before C<cx_popsub()> etc.
-
-C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
-(formerly it only did the C<cx_popsub()> etc. actions on each frame).
-
-=item *
-
-The temps stack is now freed on scope exit; previously, temps created
-during the last statement of a block wouldn't be freed until the next
-C<nextstate> following the block (apart from an existing hack that did
-this for recursive subs in scalar context); and in something like
-C<f(g())>, the temps created by the last statement in C<g()> would
-formerly not be freed until the statement following the return from
-C<f()>.
-
-=item *
-
-Most values that were saved on the savestack on scope entry are now
-saved in suitable new fields in the context struct, and saved and
-restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
-faster.
-
-=item *
-
-Various context struct fields have been added, removed or modified.
-
-=item *
-
-The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
-considerably tidied up, including removing the C<argarray> field from the
-context struct, and extracting out some common (but rarely used) code into
-a separate function, C<clear_defarray()>. Also, useful subsets of
-C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
-gathered into the new functions C<cx_popsub_args()> and
-C<cx_popsub_common()>.
-
-=item *
-
-C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
-of the C<pp_leave*>'s to process return args.
-
-=item *
-
-C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
-C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
-
-=item *
-
-Some variables formerly declared by C<dMULTICALL> (but not documented) have
-been removed.
+XXX
 
 =back
 
-=item *
-
-The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
-been removed. It was documented as deprecated in Perl 5.20, with a statement
-that it would be removed early in the 5.21.x series; that has now finally
-happened.
-L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
-
-=item *
-
-Remove unwarranted assertion in C<Perl_newATTRSUB_x()>. If a stub subroutine
-definition with a prototype has been seen, then any subsequent stub (or
-definition) of the same subroutine with an attribute was causing an assertion
-failure because of a null pointer.
-L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
-
-=item *
-
-Replace C<::> with C<__> in C<ExtUtils::ParseXS> like it's done for
-parameters/return values. This is more consistent, and simplifies writing XS
-code wrapping C++ classes into a nested Perl namespace (it requires only
-a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
-for C<Foo::Bar>).
-
-=item *
-
-Deprecate the C<to_utf8_case()> function, see
-L<http://nntp.perl.org/group/perl.perl5.porters/233287>.
-
-=item *
-
-Perl core code and the threads extension have been annotated so that,
-if Perl is configured to use threads, then during compile-time clang (3.6
-or later) will warn about suspicious uses of mutexes.
-See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
-information.
-
-=item *
-
-The C<signbit()> emulation has been enhanced.  This will help older
-and/or more exotic platforms or configurations.
-
-=item *
-
-The C<to_utf8_case> function is discouraged in favor of C<toUPPER_utf8>,
-C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
-
-=item *
-
-EBCDIC code paths have largely been unified with non-EBCDIC ones to
-avoid repetition and make maintenance easier.
-
-=item *
-
-MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
-F<caretx.c>, where other operating systems set that variable.
-
-=item *
-
-C<< sv_ref() >> is now part of the API.
-
-=item *
-
-L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
-previously has always returned C<0> since Perl 5.000 stable but that was
-undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
-expected to be impacted since the proper API call would be through public API
-C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
-C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
-meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
+=head1 Modules and Pragmata
 
-=item *
+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 C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
-with integer truncation and wrapping.  In particular, some casts formerly used
-within the macros have been removed.  This means for example that passing an
-unsigned nitems argument is likely to raise a compiler warning now (it's always
-been documented to require a signed value; formerly int, lately SSize_t).
+[ Within each section, list entries as a =item entry ]
 
-=item *
+=head2 New Modules and Pragmata
 
-C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
+=over 4
 
 =item *
 
-C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
+XXX
 
 =back
 
-=head1 Selected Bug Fixes
+=head2 Updated Modules and Pragmata
 
 =over 4
 
 =item *
 
-It now works properly to specify a user-defined property, such as
-
- qr/\p{mypkg1::IsMyProperty}/i
-
-with C</i> caseless matching, an explicit package name, and
-I<IsMyProperty> not defined at the time of the pattern compilation.
-
-=item *
-
-Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
-more compatible with the originals.  [perl #127619]
-
-=item *
-
-Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
-to modify the source SV, resulting in the program dying. [perl #127635]
-
-=item *
-
-Fixed a spurious warning about posix character classes. [perl #127581]
+L<XXX> has been upgraded from version A.xx to B.yy.
 
 =item *
 
-Fixed an obscure case where a pattern could fail to match. This only 
-occurred when matching characters from the set of C1 controls, when
-the target matched string was in UTF-8, and only on EBCDIC platforms.
+L<Module::CoreList> has been upgraded from 5.20160520 to 5.20160620.
 
-=item *
-
-Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
-it assumed that if the filename (without the F<.pmc?> extension) differed
-from the package name, if was a misspelled use statement (i.e. C<use Strict>
-instead of C<use strict>). We now check whether there's really a 
-miscapitalization happening, and not another issue.
+=back
 
-=item *
+=head2 Removed Modules and Pragmata
 
-Turn an assertion into a more user friendly failure when parsing
-regexes. [perl #127599]
+=over 4
 
 =item *
 
-Correctly raise an error when trying to compile patterns with 
-unterminated character classes while there are trailing backslashes.
-[perl #126141].
-
-=item *
+XXX
 
-Line numbers larger than 2**31-1 but less than 2**32 are no longer
-returned by caller() as negative numbers.  [perl #126991]
+=back
 
-=item *
+=head1 Documentation
 
-C<< unless ( I<assignment> ) >> now properly warns when syntax
-warnings are enabled.  [perl #127122]
+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
 
-Setting an C<ISA> glob to an array reference now properly adds
-C<isaelem> magic to any existing elements.  Previously modifying such
-an element would not update the ISA cache, so method calls would call
-the wrong function.  Perl would also crash if the C<ISA> glob was
-destroyed, since new code added in 5.23.7 would try to release the
-C<isaelem> magic from the elements.  [perl #127351]
+XXX Changes which create B<new> files in F<pod/> go here.
 
-=item *
+=head3 L<XXX>
 
-If a here-doc was found while parsing another operator, the parser had
-already read end of file, and the here-doc was not terminated, perl
-could produce an assertion or a segmentation fault.  This now reliably
-complains about the unterminated here-doc.  [perl #125540]
+XXX Description of the purpose of the new file here
 
-=item *
+=head2 Changes to Existing Documentation
 
-untie() would sometimes return the last value returned by the UNTIE()
-handler as well as it's normal value, messing up the stack.  [perl
-#126621]
+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.
 
-=item *
+=head3 L<XXX>
 
-Fixed an operator precedence problem when C< castflags & 2> is true.
-[perl #127474]
+=over 4
 
 =item *
 
-Caching of DESTROY methods could result in a non-pointer or a
-non-STASH stored in the SvSTASH() slot of a stash, breaking the B
-STASH() method.  The DESTROY method is now cached in the MRO metadata
-for the stash.  [perl #126410]
+XXX Description of the change here
 
-=item *
+=back
 
-The AUTOLOAD method is now called when searching for a DESTROY method,
-and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
+=head1 Diagnostics
 
-=item *
+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>.
 
-Avoid parsing beyond the end of the buffer when processing a C<#line>
-directive with no filename.  [perl #127334]
+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.
 
-=item *
+=head2 New Diagnostics
 
-Perl now raises a warning when a regular expression pattern looks like
-it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
-there was some slight defect in its specification which causes it to
-instead be treated as a regular bracketed character class.  An example
-would be missing the second colon in the above like this:
-C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
-The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
-C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
-meaning, and now a warning is raised.  No warning is raised unless the
-specification is very close to one of the 14 legal POSIX classes.  (See
-L<perlrecharclass/POSIX Character Classes>.)
-[perl #8904]
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
 
-=item *
+=head3 New Errors
 
-Certain regex patterns involving a complemented POSIX class in an
-inverted bracketed character class, and matching something else
-optionally would improperly fail to match.  An example of one that could
-fail is C<qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
-[perl #127537]
+=over 4
 
 =item *
 
-Perl 5.22 added support to the C99 hexadecimal floating point notation,
-but sometimes misparses hex floats. This has been fixed.
-[perl #127183]
+L<Version control conflict marker|perldiag/"Version control conflict marker">
 
 =item *
 
-A regression that allowed undeclared barewords in hash keys to work despite
-strictures has been fixed.
-L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
+XXX L<message|perldiag/"message">
 
-=item *
-
-Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
-or C<unimport()> method isn't found now correctly handle scalar context.
-L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+=back
 
-=item *
+=head3 New Warnings
 
-Report more context when we see an array where we expect to see an
-operator and avoid an assertion failure.
-L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
+=over 4
 
 =item *
 
-Modifying an array that was previously a package C<@ISA> no longer
-causes assertion failures or crashes.
-L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
+XXX L<message|perldiag/"message">
 
-=item *
+=back
 
-Retain binary compatibility across plain and DEBUGGING perl builds.
-L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
+=head2 Changes to Existing Diagnostics
 
-=item *
+XXX Changes (i.e. rewording) of diagnostic messages go here
 
-Avoid leaking memory when setting C<$ENV{foo}> on darwin.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+=over 4
 
 =item *
 
-C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
-of characters from the start of the regex, perl needs to count back that
-many characters from the current C<pos()> position and start matching from
-there. However, it was counting back bytes rather than characters, which
-could lead to panics on utf8 strings.
+XXX Describe change here
 
-=item *
+=back
 
-In some cases operators that return integers would return negative
-integers as large positive integers.
-L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
+=head1 Utility Changes
 
-=item *
+XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
 
-The C<pipe()> operator would assert for DEBUGGING builds instead of
-producing the correct error message.  The condition asserted on is
-detected and reported on correctly without the assertions, so the
-assertions were removed.
-L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
+[ 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. ]
 
-=item *
+=head2 L<XXX>
 
-In some cases, failing to parse a here-doc would attempt to use freed
-memory.  This was caused by a pointer not being restored correctly.
-L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
+=over 4
 
 =item *
 
-C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
-for *a before restoring its SV slot.
-L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
+XXX
 
-=item *
-
-Multiple problems with the new hexadecimal floating point printf
-format C<%a> were fixed:
-L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
-L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
-L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
+=back
 
-=item *
+=head1 Configuration and Compilation
 
-Calling mg_set() in leave_scope() no longer leaks.
+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.
 
-=item *
+[ List changes as a =item entry ].
 
-A regression from Perl v5.20 was fixed in which debugging output of regular
-expression compilation was wrong.  (The pattern was correctly compiled, but
-what got displayed for it was wrong.)
+=over 4
 
 =item *
 
-C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
-seem to give the expected results, yet passed all the tests in the
-extensive suite furnished by Unicode.  It turns out that it was because
-these were short input strings, and the failures had to do with longer
-inputs.
-
-=item *
+F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no
+files require updates.  This could cause dependencies, F<perlmain.c>
+in particular, to be rebuilt unnecessarily.  [perl #126710]
 
-Certain syntax errors in
-L<perlrecharclass/Extended Bracketed Character Classes> caused panics
-instead of the proper error message.  This has now been fixed. [perl
-#126481]
+=back
 
-=item *
+=head1 Testing
 
-An earlier commit added a message when a quantifier in a regular
-expression was useless, but then caused the parser to skip it;
-this caused the surplus quantifier to be silently ignored, instead
-of throwing an error. This is now fixed. [perl #126253]
+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.
 
-=item *
+[ List each test improvement as a =item entry ]
 
-The switch to building non-XS modules last in win32/makefile.mk (introduced
-by design as part of the changes to enable parallel building) caused the
-build of POSIX to break due to problems with the version module. This
-is now fixed.
+=over 4
 
 =item *
 
-Improved parsing of hex float constants.
+XXX
 
-=item *
+=back
 
-Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
-could read past the source when given a non-utf8 source, and a utf8 target.
-[perl #126325]
+=head1 Platform Support
 
-=item *
+XXX Any changes to platform support should be listed in the sections below.
 
-Fixed several cases where perl would abort due to a segmentation fault,
-or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
 
-=item *
+=head2 New Platforms
 
-There were places in regular expression patterns where comments (C<(?#...)>)
-weren't allowed, but should have been.  This is now fixed.
-L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
+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.
 
-=item *
+=over 4
 
-Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
-within regular expression patterns could cause a segfault instead of a proper
-error message.
-L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
-L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
+=item XXX-some-platform
 
-=item *
+XXX
 
-Another problem with
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
-constructs has been fixed wherein things like C<\c]> could cause panics.
-L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
+=back
 
-=item *
+=head2 Discontinued Platforms
 
-Some problems with attempting to extend the perl stack to around 2G or 4G
-entries have been fixed.  This was particularly an issue on 32-bit perls built
-to use 64-bit integers, and was easily noticeable with the list repetition
-operator, e.g.
+XXX List any platforms that this version of perl no longer compiles on.
 
-    @a = (1) x $big_number
+=over 4
 
-Formerly perl may have crashed, depending on the exact value of C<$big_number>;
-now it will typically raise an exception.
-L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
+=item XXX-some-platform
 
-=item *
+XXX
 
-In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
-the condition is C<(?!)> then perl failed the match outright instead of
-matching the no-pattern.  This has been fixed.
-L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
+=back
 
-=item *
+=head2 Platform-Specific Notes
 
-The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
-argument and set C<REGERROR>/C<REGMARK> appropriately as well.
-L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
+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.
 
-=item *
+=over 4
 
-Several bugs, including a segmentation fault, have been fixed with the bounds
-checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
-C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
-string; none of the C<\b{}> ones do.
-L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
+=item XXX-some-platform
 
-=item *
+XXX
 
-Duplicating a closed file handle for write no longer creates a
-filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
+=back
 
-=item *
+=head1 Internal Changes
 
-Warning fatality is now ignored when rewinding the stack.  This
-prevents infinite recursion when the now fatal error also causes
-rewinding of the stack.  [perl #123398]
+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.
 
-=item * 
+[ List each change as a =item entry ]
 
-In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
-option, such that the successfully parsed number was not saved as the option
-value if it parsed to the end of the argument.  [perl #125381]
+=over 4
 
 =item *
 
-The PadlistNAMES macro is an lvalue again.
+Perl no longer panics when switching into some locales on machines with
+buggy C<strxfrm()> implementations in their libc. [perl #121734]
 
-=item *
+=back
 
-Zero -DPERL_TRACE_OPS memory for sub-threads.
+=head1 Selected Bug Fixes
 
-perl_clone_using() was missing Zero init of PL_op_exec_cnt[].  This
-caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
-large op-counts at destruct.  These counts would print %x as "ABABABAB",
-clearly a mem-poison value.
+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>.
 
-=item *
+[ List each fix as a =item entry ]
 
-A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
-or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
-particular typemap entries are thought to be extremely rarely used by XS
-modules. [perl #124181]
+=over 4
 
 =item *
 
-C<alarm()> and C<sleep()> will now warn if the argument is a negative number
-and return undef. Previously they would pass the negative value to the
-underlying C function which may have set up a timer with a surprising value.
-
-=item *
+C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly
+warn when syntax warnings are enabled.  [perl #127333]
 
-Perl can again be compiled with any Unicode version.  This used to
-(mostly) work, but was lost in v5.18 through v5.20.  The property
-C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
-incorrectly said it did.  This has been fixed.
+=back
 
-=item *
+=head1 Known Problems
 
-Very large code-points (beyond Unicode) in regular expressions no
-longer cause a buffer overflow in some cases when converted to UTF-8.
-L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
+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.
 
-=item *
+[ List each fix as a =item entry ]
 
-The integer overflow check for the range operator (...) in list
-context now correctly handles the case where the size of the range is
-larger than the address space.  This could happen on 32-bits with
--Duse64bitint.
-L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
+=over 4
 
 =item *
 
-A crash with C<< %::=(); J->${\"::"} >> has been fixed.
-L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
-
-=item *
+XXX
 
-C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
-[perl #125805]
+=back
 
-=item *
+=head1 Errata From Previous Releases
 
-Regular expression possessive quantifier v5.20 regression now fixed.
-C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
-to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
-work if I<min> and I<max> were equal.  [perl #125825]
+=over 4
 
 =item *
 
-C<< BEGIN <> >> no longer segfaults and properly produces an error
-message.  [perl #125341]
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
 
-=item *
+=back
 
-In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
-not always detected, giving incorrect results.  This is now fixed.
+=head1 Obituary
 
-=back
+XXX If any significant core contributor has died, we've added a short obituary
+here.
 
 =head1 Acknowledgements
 
-[ XXX: generate this just in time, Ricardo! ]
+XXX Generate this with:
+
+  perl Porting/acknowledgements.pl v5.25.1..HEAD
 
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles recently
 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-https://rt.perl.org/ .  There may also be information at
-http://www.perl.org/ , the Perl Home Page.
+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