This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: quadmath
[perl5.git] / pod / perldelta.pod
index 9da5db5..4b4fcfe 100644 (file)
@@ -2,9 +2,6 @@
 
 =head1 NAME
 
 
 =head1 NAME
 
-[ 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.21.4
 
 =head1 DESCRIPTION
 perldelta - what is new for perl v5.21.4
 
 =head1 DESCRIPTION
@@ -15,54 +12,27 @@ release.
 If you are upgrading from an earlier release such as 5.21.2, first read
 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
 
 If you are upgrading from an earlier release such as 5.21.2, first read
 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =head1 Core Enhancements
 
 =head1 Core Enhancements
 
-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.
-
-[ List each enhancement as a =head2 entry ]
-
 =head2 Infinity and NaN (not-a-number) handling improved
 
 =head2 Infinity and NaN (not-a-number) handling improved
 
-Floating point values are able to hold the special values infinity
-(also -infinity), and NaN (not-a-number).  Now we more robustly recognize
-and propagate the value in computations, and on output normalize them
-to C<Inf> and C<NaN>.
+Floating point values are able to hold the special values infinity (also
+-infinity), and NaN (not-a-number).  Now we more robustly recognize and
+propagate the value in computations, and on output normalize them to C<Inf> and
+C<NaN>.
 
 See also the L<POSIX> enhancements.
 
 
 See also the L<POSIX> enhancements.
 
-=head1 Security
-
-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.
-
-[ List each security issue as a =head2 entry ]
-
 =head1 Incompatible Changes
 
 =head1 Incompatible Changes
 
-XXX For a release on a stable branch, this section aspires to be:
-
-    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.
-
-[ List each incompatible change as a =head2 entry ]
-
 =head2 Changes to the C<*> prototype
 
 =head2 Changes to the C<*> prototype
 
-The C<*> character in a subroutine's prototype used to allow barewords
-to take precedence over most, but not all subroutines.  It was never
-consistent and exhibited buggy behaviour.
+The C<*> character in a subroutine's prototype used to allow barewords to take
+precedence over most, but not all subroutines.  It was never consistent and
+exhibited buggy behaviour.
 
 
-Now it has been changed, so subroutines always take precedence over
-barewords, which brings it into conformity with similarly prototyped
-built-in functions:
+Now it has been changed, so subroutines always take precedence over barewords,
+which brings it into conformity with similarly prototyped built-in functions:
 
     sub splat($) { ... }
     sub foo { ... }
 
     sub splat($) { ... }
     sub foo { ... }
@@ -71,113 +41,142 @@ built-in functions:
     close(foo); # close(foo())
     close(bar); # close('bar')
 
     close(foo); # close(foo())
     close(bar); # close('bar')
 
-=head1 Deprecations
-
-XXX Any deprecated features, syntax, modules etc. should be listed here.
+=head1 Performance Enhancements
 
 
-=head2 Module removals
+=over 4
 
 
-XXX Remove this section if inapplicable.
+=item *
 
 
-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.
+Subroutines with an empty prototype and bodies containing just C<undef> are now
+eligible for inlining.
+L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
 
 
-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.
+=item *
 
 
-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.
+Subroutines in packages no longer need to carry typeglobs around with them.
+Declaring a subroutine will now put a simple sub reference in the stash if
+possible, saving memory.  The typeglobs still notionally exist, so accessing
+them will cause the subroutine reference to be upgraded to a typeglob.  This
+optimization does not currently apply to XSUBs or exported subroutines, and
+method calls will undo it, since they cache things in typeglobs.
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
 
 
-=over
+=back
 
 
-=item XXX
+=head1 Modules and Pragmata
 
 
-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.
+=head2 New Modules and Pragmata
 
 
-=back
+=over 4
 
 
-[ List each other deprecation as a =head2 entry ]
+=item *
 
 
-=head1 Performance Enhancements
+L<B::Op_private> provides detailed information about the flags used in the
+C<op_private> field of perl opcodes.
 
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
+=back
 
 
-[ List each enhancement as a =item entry ]
+=head2 Updated Modules and Pragmata
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-Subroutines with an empty prototype and bodies containing just C<undef> are
-now eligible for inlining.  [perl #122728]
+L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
 
 
-=back
+Tests can now be run in parallel.
 
 
-=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.
+L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
 
 
-[ Within each section, list entries as a =item entry ]
+Internal changes to account for the fact that subroutines in packages no longer
+need to carry typeglobs around with them (see under L</Performance
+Enhancements>).
 
 
-=head2 New Modules and Pragmata
+=item *
 
 
-=over 4
+L<attributes> has been upgraded from version 0.22 to 0.23.
+
+The usage of C<memEQs> in the XS has been corrected.
+L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
 
 =item *
 
 
 =item *
 
-XXX
+L<B> has been upgraded from version 1.50 to 1.51.
 
 
-=back
+It provides a new C<B::safename> function, based on the existing
+C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
 
 
-=head2 Updated Modules and Pragmata
+=item *
 
 
-=over 4
+L<B::Concise> has been upgraded from version 0.992 to 0.993.
+
+Internal changes to account for the fact that the defines and labels for the
+flags in the C<op_private> field of OPs are now auto-generated (see under
+L</Internal Changes>).
 
 =item *
 
 
 =item *
 
-L<XXX> has been upgraded from version A.xx to B.yy.
+L<B::Deparse> has been upgraded from version 1.27 to 1.28.
+
+It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
 
 =item *
 
 
 =item *
 
-L<B::Concise> has been upgraded from version 0.992 to 0.993.
+L<bignum> has been upgraded from version 0.37 to 0.38.
+
+An C<eval BLOCK> rather than an C<eval EXPR> is now used to see if we can find
+Math::BigInt::Lite.
 
 =item *
 
 
 =item *
 
-L<B::Deparse> has been upgraded from version 1.27 to 1.28.
+L<constant> has been upgraded from version 1.31 to 1.32.
 
 
-It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>)
-correctly.
+It now accepts fully-qualified constant names, allowing constants to be defined
+in packages other than the caller.
 
 =item *
 
 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
 
 
 =item *
 
 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
 
+Works around limitations in version::vpp detecting v-string magic and adds
+support for forthcoming L<ExtUtils::MakeMaker> bootstrap F<version.pm> for
+Perls older than 5.10.0.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.152 to 2.154.
+
+Fixes CVE-2014-4330 by adding a configuration variable/option to limit
+recursion when dumping deep data structures.
+
+=item *
+
+L<experimental> has been upgraded from version 0.008 to 0.010.
+
+Hardcodes features for Perls older than 5.15.7.
+
 =item *
 
 =item *
 
-L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280219.
-[perl #122675].
+L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
+
+Fixes a regression on Android.
+L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
 
 =item *
 
 
 =item *
 
-L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
-[perl #122415].
+L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
+
+No changes to installed files other than version bumps.
 
 =item *
 
 
 =item *
 
-L<ExtUtils::ParseXS>:  Documentation has been added to
-F<ExtUtils-ParseXS/lib/perlxs.pod> concerning handling of locales when writing
-XS code.
+L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
+
+Fixes a bug with C<maniread()>'s handling of quoted filenames and improves
+C<manifind()> to follow symlinks.
+L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
 
 =item *
 
 
 =item *
 
@@ -190,305 +189,364 @@ misspelled options.
 
 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
 
 
 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
 
+Corrects a typo in the documentation.
+
 =item *
 
 =item *
 
-L<HTTP::Tiny> has been upgraded from version 0.047 to 0.048.
+L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
+
+C<keep_alive> is now fork-safe and thread-safe.
 
 =item *
 
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
+L<IO> has been upgraded from version 1.33 to 1.34.
+
+The XS implementation has been fixed for the sake of older Perls.
 
 =item *
 
 
 =item *
 
-L<POSIX> has been upgraded from version 1.42 to 1.43.
+L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
 
 
-The C99 math functions and constants (for example acosh, round,
-M_E, M_PI) have been added.
+Implements Timeout for C<connect()>.
+L<[cpan #92075]|https://rt.cpan.org/Ticket/Display.html?id=92075>
 
 =item *
 
 
 =item *
 
-L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
+L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
+
+New codes have been added.
 
 =item *
 
 
 =item *
 
-Scalar-List-Utils has been upgraded from version 1.40 to 1.41.
+L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
+
+The documentation now gives test examples using L<Test::More> rather than
+L<Test>.
 
 =item *
 
 
 =item *
 
-L<constant> has been upgraded from version 1.31 to 1.32.
+L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140915.
 
 
-It now accepts fully-qualified constant names, allowing constants to be
-defined in packages other than the caller.
+Updated to cover the latest releases of Perl.
 
 =item *
 
 
 =item *
 
-L<threads> has been upgraded from version 1.95 to 1.96.
+L<overload> has been upgraded from version 1.22 to 1.23.
 
 
-=back
+A redundant C<ref $sub> check has been removed.
 
 
-=head2 Removed Modules and Pragmata
+=item *
 
 
-=over 4
+PathTools has been upgraded from version 3.49 to 3.50.
+
+A warning from the B<gcc> compiler is now avoided when building the XS.
 
 =item *
 
 
 =item *
 
-XXX
+L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
 
 
-=back
+Filehandles opened for reading or writing now have C<:encoding(UTF-8)> set.
+L<[cpan #98019]|https://rt.cpan.org/Ticket/Display.html?id=98019>
 
 
-=head1 Documentation
+=item *
 
 
-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>.
+L<POSIX> has been upgraded from version 1.42 to 1.43.
 
 
-=head2 New Documentation
+The C99 math functions and constants (for example acosh, isinf, isnan, round,
+trunc; M_E, M_SQRT2, M_PI) have been added.
 
 
-XXX Changes which create B<new> files in F<pod/> go here.
+=item *
 
 
-=head3 L<XXX>
+Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
 
 
-XXX Description of the purpose of the new file here
+A new module, L<Sub::Util>, has been added, containing functions related to
+CODE refs, including C<subname> (inspired by Sub::Identity) and C<set_subname>
+(copied and renamed from Sub::Name).
 
 
-=head2 Changes to Existing Documentation
+The use of C<GetMagic> in C<List::Util::reduce()> has also been fixed.
+L<[cpan #63211]|https://rt.cpan.org/Ticket/Display.html?id=63211>
 
 
-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>
+L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
 
 
-=over 4
+Faster checks are now made first in some if-statements.
 
 =item *
 
 
 =item *
 
-XXX Description of the change here
+L<Test::Harness> has been upgraded from version 3.32 to 3.33.
+
+Various documentation fixes.
 
 =item *
 
 
 =item *
 
-L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has
-been corrected. [perl #122661]
+L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
 
 
-=back
+Various documentation fixes.
 
 
-=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>.
+L<threads> has been upgraded from version 1.95 to 1.96.
 
 
-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.
+No changes to installed files other than version bumps.
 
 
-=head2 New Diagnostics
+=item *
+
+L<Time::Piece> has been upgraded from version 1.27 to 1.29.
 
 
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
+When pretty printing negative Time::Seconds, the "minus" is no longer lost.
 
 
-=head3 New Errors
+=item *
+
+L<version> has been upgraded from version 0.9908 to 0.9909.
+
+Numerous changes.  See the F<Changes> file in the CPAN distribution for
+details.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlfunc>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+Calling C<delete> or C<exists> on array values is now described as "strongly
+discouraged" rather than "deprecated".
 
 =back
 
 
 =back
 
-=head3 New Warnings
+=head3 L<perlpolicy>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+The conditions for marking an experimental feature as non-experimental are now
+set out.
 
 =back
 
 
 =back
 
-=head2 Changes to Existing Diagnostics
-
-XXX Changes (i.e. rewording) of diagnostic messages go here
+=head3 L<perlrecharclass>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-XXX Describe change here
+The documentation of Bracketed Character Classes has been expanded to cover the
+improvements in C<qr/[\N{named sequence}]/> (see under L</Selected Bug Fixes>).
 
 =back
 
 
 =back
 
-=head2 Diagnostic Removals
+=head3 L<perlsyn>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-"Constant is not a FOO reference"
+An ambiguity in the documentation of the Ellipsis statement has been corrected.
+L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
 
 
-Compile-time checking of constant dereferencing (e.g.,
-C<< my_constant->() >>) has been removed, since it was not taking
-overloading into account.  [perl #69456] [perl #122607]
+=back
 
 
-=item *
+=head3 L<perlxs>
 
 
-The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
-There is actually no ambiguity here, and this impedes the use of negated
-constants; e.g., C<-Inf>.
+=over 4
 
 =item *
 
 
 =item *
 
-The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
-could get confused in the scope of C<use utf8> if C<Class> were a constant
-whose value contained Latin-1 characters.
+Added a discussion of locale issues in XS code.
 
 =back
 
 
 =back
 
-=head1 Utility Changes
+=head1 Diagnostics
 
 
-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 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>.
 
 
-[ 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. ]
+=head2 New Diagnostics
 
 
-=head2 L<XXX>
+=head3 New Warnings
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-XXX
+L<Character in 'C' format overflow in pack|perldiag/"Character in 'C' format overflow in pack">
 
 
-=back
-
-=head1 Configuration and Compilation
+(W pack) You tried converting an infinity or not-a-number to an unsigned
+character, which makes no sense.  Perl behaved as if you tried to pack 0xFF.
 
 
-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 ].
+L<Character in 'c' format overflow in pack|perldiag/"Character in 'c' format overflow in pack">
 
 
-=over 4
+(W pack) You tried converting an infinity or not-a-number to a signed
+character, which makes no sense.  Perl behaved as if you tried to pack 0xFF.
 
 =item *
 
 
 =item *
 
-XXX
-
-=back
+L<Invalid number (%f) in chr|perldiag/"Invalid number (%f) in chr">
 
 
-=head1 Testing
+(W utf8) You passed an invalid number (like an infinity or not-a-number) to
+C<chr>.  Those are not valid character numbers, so it returned the Unicode
+replacement character (U+FFFD).
 
 
-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.
+=back
 
 
-[ List each test improvement as a =item entry ]
+=head2 Changes to Existing Diagnostics
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-XXX
+L<Global symbol "%s" requires explicit package name|perldiag/"Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)">
 
 
-=back
+This message has had '(did you forget to declare "my %s"?)' appended to it, to
+make it more helpful to new Perl programmers.
+L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638>
 
 
-=head1 Platform Support
+=item *
 
 
-XXX Any changes to platform support should be listed in the sections below.
+L<\N{} in character class restricted to one character in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"\N{} in inverted character class or as a range end-point is restricted to one character in regex; marked by S<<-- HERE> in m/%s/">
 
 
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
+This message has had 'character class' changed to 'inverted character class or
+as a range end-point is' to reflect improvements in C<qr/[\N{named sequence}]/>
+(see under L</Selected Bug Fixes>).
 
 
-=head2 New Platforms
+=item *
 
 
-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.
+L<panic: frexp|perldiag/"panic: frexp: %f">
 
 
-=over 4
+This message has had ': %f' appended to it, to show what the offending floating
+point number is.
 
 
-=item XXX-some-platform
+=back
 
 
-XXX
+=head2 Diagnostic Removals
 
 
-=back
+=over 4
 
 
-=head2 Discontinued Platforms
+=item *
 
 
-XXX List any platforms that this version of perl no longer compiles on.
+"Constant is not a FOO reference"
 
 
-=over 4
+Compile-time checking of constant dereferencing (e.g., C<< my_constant->() >>)
+has been removed, since it was not taking overloading into account.
+L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
+L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
 
 
-=item XXX-some-platform
+=item *
 
 
-XXX
+"Ambiguous use of -foo resolved as -&foo()"
+
+There is actually no ambiguity here, and this impedes the use of negated
+constants; e.g., C<-Inf>.
 
 =back
 
 
 =back
 
-=head2 Platform-Specific Notes
+=head1 Configuration and Compilation
+
+For long doubles (to get more precision and range for floating point
+numbers) one can now use the GCC quadmath library which implements
+the quadruple precision floating point numbers in x86 and ia64 platforms.
+See INSTALL for details.
 
 
-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.
+=head1 Testing
 
 =over 4
 
 
 =over 4
 
-=item XXX-some-platform
+=item *
+
+A new test script, F<op/infnan.t>, has been added to test if Inf and NaN are
+working correctly.  See L</Infinity and NaN (not-a-number) handling improved>.
+
+=item *
 
 
-XXX
+A new test script, F<re/rt122747.t>, has been added to test that the fix for
+L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> is working.
 
 =back
 
 =head1 Internal Changes
 
 
 =back
 
 =head1 Internal Changes
 
-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.
+=over 4
 
 
-[ List each change as a =item entry ]
+=item *
 
 
-=over 4
+C<save_re_context> no longer does anything and has been moved to F<mathoms.c>.
 
 
-C<save_re_context> no longer does anything and has been moved to
-F<mathoms.c>.
+=item *
 
 
-=back
+C<cv_name> is a new API function that can be passed a CV or GV.  It returns an
+SV containing the name of the subroutine for use in diagnostics.
+L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
 
 
-=head1 Selected Bug Fixes
+=item *
 
 
-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>.
+C<cv_set_call_checker_flags> is a new API function that works like
+C<cv_set_call_checker>, except that it allows the caller to specify whether the
+call checker requires a full GV for reporting the subroutine's name, or whether
+it could be passed a CV instead.  Whatever value is passed will be acceptable
+to C<cv_name>.  C<cv_set_call_checker> guarantees there will be a GV, but it
+may have to create one on the fly, which is inefficient.
+L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
 
 
-[ List each fix as a =item entry ]
+=item *
 
 
-=over 4
+C<CvGV> (which is not part of the API) is now a more complex macro, which may
+call a function and reify a GV.  For those cases where is has been used as a
+boolean, C<CvHASGV> has been added, which will return true for CVs that
+notionally have GVs, but without reifying the GV.  C<CvGV> also returns a GV
+now for lexical subs.
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
 
 =item *
 
 
 =item *
 
-XXX
+Added L<perlapi/sync_locale>.  Changing the program's locale should be avoided
+by XS code.  Nevertheless, certain non-Perl libraries called from XS, such as
+C<Gtk> do so.  When this happens, Perl needs to be told that the locale has
+changed.  Use this function to do so, before returning to Perl.
+
+=item *
+
+The defines and labels for the flags in the C<op_private> field of OPs are now
+auto-generated from data in F<regen/op_private>.  The noticeable effect of this
+is that some of the flag output of C<Concise> might differ slightly, and the
+flag output of C<perl -Dx> may differ considerably (they both use the same set
+of labels now).  Also in debugging builds, there is a new assert in
+C<op_free()> that checks that the op doesn't have any unrecognized flags set in
+C<op_private>.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
 
 =item *
 
 
 =item *
 
-Constant dereferencing now works correctly for typeglob constants.
-Previously the glob was stringified and its name looked up.  Now the glob
-itself is used.  [perl #69456]
+Constant dereferencing now works correctly for typeglob constants.  Previously
+the glob was stringified and its name looked up.  Now the glob itself is used.
+L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
 
 =item *
 
 When parsing a funny character ($ @ % &) followed by braces, the parser no
 
 =item *
 
 When parsing a funny character ($ @ % &) followed by braces, the parser no
-longer tries to guess whether it is a block or a hash constructor (causing
-syntax error when it guesses the latter), since it can only be a block.
+longer tries to guess whether it is a block or a hash constructor (causing a
+syntax error when it guesses the latter), since it can only be a block.
 
 =item *
 
 
 =item *
 
-C<undef $reference> now frees the referent immediately, instead of hanging
-on to it until the next statement.  [perl #122556]
+C<undef $reference> now frees the referent immediately, instead of hanging on
+to it until the next statement.
+L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
 
 =item *
 
 
 =item *
 
@@ -502,132 +560,143 @@ bareword is not going to be a subroutine name.
 
 =item *
 
 
 =item *
 
-Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
-deletes any subroutine named C<__ANON__> in the current package.  Not only
-was C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug
-goes back to perl 5.8.0. 
+Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer deletes
+any subroutine named C<__ANON__> in the current package.  Not only was
+C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug goes
+back to Perl 5.8.0.
 
 =item *
 
 
 =item *
 
-Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
-constants of the same name declared by C<use constant>.  This bug was
-introduced in perl 5.10.0.
+Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out constants
+of the same name declared by C<use constant>.  This bug was introduced in Perl
+5.10.0.
 
 =item *
 
 
 =item *
 
-Under some conditions a warning raised in compilation of regular
-expression patterns could be displayed multiple times.  This is now
-fixed.
+Under some conditions a warning raised in compilation of regular expression
+patterns could be displayed multiple times.  This is now fixed.
 
 =item *
 
 
 =item *
 
-C<qr/[\N{named sequence}]/> now works properly in many instances.  Some
-names known to C<\N{...}> refer to a sequence of multiple characters,
-instead of the usual single character.  Bracketed character classes
-generally only match single characters, but now special handling has
-been added so that they can match named sequences, but not if the class
-is inverted or the sequence is specified as the beginning or end of a
-range.  In these cases, the only behavior change from before is a slight
-rewording of the fatal error message given when this class is part of a
-C<?[...])> construct.  When the C<[...]> stands alone, the same
-non-fatal warning as before is raised, and only the first character in
-the sequence is used, again just as before.
+C<qr/[\N{named sequence}]/> now works properly in many instances.  Some names
+known to C<\N{...}> refer to a sequence of multiple characters, instead of the
+usual single character.  Bracketed character classes generally only match
+single characters, but now special handling has been added so that they can
+match named sequences, but not if the class is inverted or the sequence is
+specified as the beginning or end of a range.  In these cases, the only
+behavior change from before is a slight rewording of the fatal error message
+given when this class is part of a C<?[...])> construct.  When the C<[...]>
+stands alone, the same non-fatal warning as before is raised, and only the
+first character in the sequence is used, again just as before.
 
 =item *
 
 Tainted constants evaluated at compile time no longer cause unrelated
 
 =item *
 
 Tainted constants evaluated at compile time no longer cause unrelated
-statements to become tainted.  [perl #122669]
+statements to become tainted.
+L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
 
 =item *
 
 
 =item *
 
-C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
-was not giving the handle the right reference count, so a double free could
-happen.
+C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0", was
+not giving the handle the right reference count, so a double free could happen.
 
 =item *
 
 
 =item *
 
-When deciding that a bareword was a method name, the parser would get
-confused if an "our" sub with the same name existed, and look up the method
-in the package of the "our" sub, instead of the package of the invocant.
+When deciding that a bareword was a method name, the parser would get confused
+if an "our" sub with the same name existed, and look up the method in the
+package of the "our" sub, instead of the package of the invocant.
 
 =item *
 
 
 =item *
 
-The parser no longer gets confused by C<\U=> within a double-quoted string.
-It used to roduce a syntax error, but now compiles it correctly.
-[perl #80368]
+The parser no longer gets confused by C<\U=> within a double-quoted string.  It
+used to produce a syntax error, but now compiles it correctly.
+L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
 
 =item *
 
 
 =item *
 
-It has always been the intention for the C<-B> and C<-T> file test
-operators to treat UTF-8 encoded files as text.
-(L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
-Previously, it was possible for some files to be considered UTF-8 that
-actually weren't valid UTF-8.  This is now fixed.  The operators now
-work on EBCDIC platforms as well.
+It has always been the intention for the C<-B> and C<-T> file test operators to
+treat UTF-8 encoded files as text.  (L<perlfunc|perlfunc/-X FILEHANDLE> has
+been updated to say this.)  Previously, it was possible for some files to be
+considered UTF-8 that actually weren't valid UTF-8.  This is now fixed.  The
+operators now work on EBCDIC platforms as well.
 
 =item *
 
 
 =item *
 
-Under some conditions warning messages raised during regular expression
-pattern compilation were being output more than once.  This has now been
-fixed.
+Under some conditions warning messages raised during regular expression pattern
+compilation were being output more than once.  This has now been fixed.
 
 =item *
 
 
 =item *
 
-A regression has been fixed that was introduced in v5.20.0 (fixed in
-v5.20.1 as well as here) in which a UTF-8 encoded regular expression
-pattern that contains a single ASCII lowercase letter does not match its
-uppercase counterpart. [perl #122655]
+A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
+5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
+that contains a single ASCII lowercase letter does not match its uppercase
+counterpart.
+L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
 
 =item *
 
 
 =item *
 
-Constant folding could incorrectly suppress warnings if lexical warnings
-(C<use warnings> or C<no warnings>) were not in effect and C<$^W> were
-false at compile time and true at run time.
+Constant folding could incorrectly suppress warnings if lexical warnings (C<use
+warnings> or C<no warnings>) were not in effect and C<$^W> were false at
+compile time and true at run time.
 
 =item *
 
 Loading UTF8 tables during a regular expression match could cause assertion
 failures under debugging builds if the previous match used the very same
 
 =item *
 
 Loading UTF8 tables during a regular expression match could cause assertion
 failures under debugging builds if the previous match used the very same
-regular expression.  [perl #122747]
+regular expression.
+L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
 
 =item *
 
 Thread cloning used to work incorrectly for lexical subs, possibly causing
 crashes or double frees on exit.
 
 
 =item *
 
 Thread cloning used to work incorrectly for lexical subs, possibly causing
 crashes or double frees on exit.
 
-=back
-
-=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.
+Since Perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining an
+anonymous subroutine could corrupt things internally, resulting in
+L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data.  This has been
+fixed.
 
 
-[ List each fix as a =item entry ]
+=item *
 
 
-=over 4
+C<(caller $n)[3]> now reports names of lexical subs, instead of treating them
+as "(unknown)".
 
 =item *
 
 
 =item *
 
-XXX
+C<sort subname LIST> now supports lexical subs for the comparison routine.
 
 
-=back
+=item *
 
 
-=head1 Errata From Previous Releases
+Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention the
+two names for the same variable on either side, causing wrong values to be
+assigned.
+L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667>
 
 
-=over 4
+=item *
+
+Long here-doc terminators could cause a bad read on short lines of input.  This
+has been fixed.  It is doubtful that any crash could have occurred.  This bug
+goes back to when here-docs were introduced in Perl 3.000 twenty-five years
+ago.
 
 =item *
 
 
 =item *
 
-XXX Add anything here that we forgot to add, or were mistaken about, in
-the perldelta of a previous release.
+An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
+unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
+it should not.  This has been fixed.  (Note, however, that C<split/^x/> does
+not behave like C<split/^x/m>, which is also considered to be a bug and will be
+fixed in a future version.)
+L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
 
 
-=back
+=item *
 
 
-=head1 Obituary
+The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
+could get confused in the scope of C<use utf8> if C<Class> were a constant
+whose value contained Latin-1 characters.
 
 
-XXX If any significant core contributor has died, we've added a short obituary
-here.
+=back
 
 =head1 Acknowledgements
 
 
 =head1 Acknowledgements