This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Remove boilerplate, fill in modules changes and other minor edits
authorSteve Hay <steve.m.hay@googlemail.com>
Sat, 20 Sep 2014 00:17:32 +0000 (01:17 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Sat, 20 Sep 2014 00:37:56 +0000 (01:37 +0100)
And a known_pod_issues.dat regen since I'm giving up for now at least on
trying to get the perldiag link to "\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/" working.

pod/perldelta.pod
t/porting/known_pod_issues.dat

index 68eb709..059273a 100644 (file)
@@ -2,9 +2,6 @@
 
 =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
@@ -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.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =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
 
-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.
 
-=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
 
-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
 
-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 { ... }
@@ -71,85 +41,38 @@ built-in functions:
     close(foo); # close(foo())
     close(bar); # close('bar')
 
-=head1 Deprecations
-
-XXX Any deprecated features, syntax, modules etc. should be listed here.
-
-=head2 Module removals
-
-XXX Remove this section if inapplicable.
-
-The following modules will be removed from the core distribution in a
-future release, and will at that time need to be installed from CPAN.
-Distributions on CPAN which require these modules will need to list them as
-prerequisites.
-
-The core versions of these modules will now issue C<"deprecated">-category
-warnings to alert you to this fact.  To silence these deprecation warnings,
-install the modules in question from CPAN.
-
-Note that these are (with rare exceptions) fine modules that you are encouraged
-to continue to use.  Their disinclusion from core primarily hinges on their
-necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
-not usually on concerns over their design.
-
-=over
-
-=item XXX
-
-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
-
-[ List each other deprecation as a =head2 entry ]
-
 =head1 Performance Enhancements
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
-
-[ List each enhancement as a =item entry ]
-
 =over 4
 
 =item *
 
-Subroutines with an empty prototype and bodies containing just C<undef> are
-now eligible for inlining.
+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>
 
 =item *
 
 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 optimisation does not currently apply to XSUBs or exported
-subroutines, and method calls will undo it, since they cache things in
-typeglobs.
+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>
 
 =back
 
 =head1 Modules and Pragmata
 
-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.
-
-[ Within each section, list entries as a =item entry ]
-
 =head2 New Modules and Pragmata
 
 =over 4
 
 =item *
 
-L<B::Op_private> provides detailed information about the flags used in
-the C<op_private> field of perl opcodes.
+L<B::Op_private> provides detailed information about the flags used in the
+C<op_private> field of perl opcodes.
 
 =back
 
@@ -167,10 +90,17 @@ Tests can now be run in parallel.
 
 L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
 
+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>).
+
 =item *
 
 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 *
 
 L<B> has been upgraded from version 1.50 to 1.51.
@@ -182,6 +112,10 @@ C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
 
 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 *
 
 L<B::Deparse> has been upgraded from version 1.27 to 1.28.
@@ -192,6 +126,9 @@ It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
 
 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 *
 
 L<constant> has been upgraded from version 1.31 to 1.32.
@@ -203,26 +140,42 @@ in packages other than the caller.
 
 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 *
 
 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 *
 
 L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
 
+No changes to installed files other than version bumps.
+
 =item *
 
 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 *
@@ -236,107 +189,158 @@ misspelled options.
 
 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
 
+Corrects a typo in the documentation.
+
 =item *
 
 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
 
+C<keep_alive> is now fork-safe and thread-safe.
+
 =item *
 
 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 *
 
 L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
 
+Implements Timeout for C<connect()>.
+L<[cpan #92075]|https://rt.cpan.org/Ticket/Display.html?id=92075>
+
 =item *
 
 L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
 
+New codes have been added.
+
 =item *
 
 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 *
 
 L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140915.
 
+Updated to cover the latest releases of Perl.
+
 =item *
 
 L<overload> has been upgraded from version 1.22 to 1.23.
 
+A redundant C<ref $sub> check has been removed.
+
 =item *
 
 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 *
 
 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
 
+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>
+
 =item *
 
 L<POSIX> has been upgraded from version 1.42 to 1.43.
 
-The C99 math functions and constants (for example acosh, isinf, isnan,
-round, trunc; M_E, M_SQRT2, M_PI) have been added.
+The C99 math functions and constants (for example acosh, isinf, isnan, round,
+trunc; M_E, M_SQRT2, M_PI) have been added.
 
 =item *
 
 Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
 
+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).
+
+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>
+
 =item *
 
 L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
 
+Faster checks are now made first in some if-statements.
+
 =item *
 
 L<Test::Harness> has been upgraded from version 3.32 to 3.33.
 
+Various documentation fixes.
+
 =item *
 
 L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
 
+Various documentation fixes.
+
 =item *
 
 L<threads> has been upgraded from version 1.95 to 1.96.
 
+No changes to installed files other than version bumps.
+
 =item *
 
 L<Time::Piece> has been upgraded from version 1.27 to 1.29.
 
+When pretty printing negative Time::Seconds, the "minus" is no longer lost.
+
 =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
 
-=head2 Removed Modules and Pragmata
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlfunc>
 
 =over 4
 
 =item *
 
-XXX
+Calling C<delete> or C<exists> on array values is now described as "strongly
+discouraged" rather than "deprecated".
 
 =back
 
-=head1 Documentation
+=head3 L<perlpolicy>
 
-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>.
+=over 4
 
-=head2 New Documentation
+=item *
 
-XXX Changes which create B<new> files in F<pod/> go here.
+The conditions for marking an experimental feature as non-experimental are now
+set out.
 
-=head3 L<XXX>
+=back
 
-XXX Description of the purpose of the new file here
+=head3 L<perlrecharclass>
 
-=head2 Changes to Existing Documentation
+=over 4
+
+=item *
 
-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.
+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
 
 =head3 L<perlsyn>
 
@@ -344,8 +348,7 @@ section.
 
 =item *
 
-An ambiguity in the documentation of the Ellipsis statement has
-been corrected.
+An ambiguity in the documentation of the Ellipsis statement has been corrected.
 L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
 
 =back
@@ -366,273 +369,176 @@ 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>.
 
-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.
-
 =head2 New Diagnostics
 
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
-
-=head3 New Errors
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Character in 'C' format overflow in pack|perldiag/"Character in 'C' format overflow in pack">
 
-=back
+(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.
 
-=head3 New Warnings
+=item *
 
-=over 4
+L<Character in 'c' format overflow in pack|perldiag/"Character in 'c' format overflow in pack">
+
+(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 *
 
-XXX L<message|perldiag/"message">
+L<Invalid number (%f) in chr|perldiag/"Invalid number (%f) in chr">
+
+(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).
 
 =back
 
 =head2 Changes to Existing Diagnostics
 
-XXX Changes (i.e. rewording) of diagnostic messages go here
-
 =over 4
 
 =item *
 
-L<Global symbol "%s" requires explicit package name|perldiag/Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)>
+L<Global symbol "%s" requires explicit package name|perldiag/"Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)">
 
-This message has had '(did you forget to declare "my %s"?)' appended to it,
-to make it more helpful to new Perl programmers.
+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>
 
-=back
-
-=head2 Diagnostic Removals
-
-=over 4
-
 =item *
 
-"Constant is not a FOO reference"
+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/">
 
-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>
+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>).
 
 =item *
 
-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>.
+L<panic: frexp|perldiag/"panic: frexp: %f">
 
-=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.
+This message has had ': %f' appended to it, to show what the offending floating
+point number is.
 
 =back
 
-=head1 Utility Changes
-
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
-Most of these are built within the directory F<utils>.
-
-[ 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 L<XXX>
+=head2 Diagnostic Removals
 
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head1 Configuration and Compilation
-
-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.
-
-[ List changes as a =item entry ].
+"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
+"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
 
 =head1 Testing
 
-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.
-
-[ List each test improvement as a =item entry ]
-
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head1 Platform Support
-
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
-
-=head2 New Platforms
-
-XXX List any platforms that this version of perl compiles on, that previous
-versions did not.  These will either be enabled by new files in the F<hints/>
-directories, or new subdirectories and F<README> files at the top level of the
-source tree.
-
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
-
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
+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>.
 
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
-
-=head2 Platform-Specific Notes
-
-XXX List any changes for specific platforms.  This could include configuration
-and compilation changes or changes in portability/compatibility.  However,
-changes within modules for platforms should generally be listed in the
-L</Modules and Pragmata> section.
-
-=over 4
-
-=item XXX-some-platform
+=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
 
-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.
-
-[ List each change as a =item entry ]
-
 =over 4
 
 =item *
 
-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 *
 
-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.
+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>
 
 =item *
 
 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.
+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>
 
 =item *
 
-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.
+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 *
 
-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.
+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
-unrecognised flags set in C<op_private>.
-
+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
 
-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>.
-
-[ List each fix as a =item entry ]
-
 =over 4
 
 =item *
 
-XXX
-
-=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.
+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
-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 *
 
-C<undef $reference> now frees the referent immediately, instead of hanging
-on to it until the next statement.
+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 *
@@ -647,36 +553,34 @@ bareword is not going to be a subroutine name.
 
 =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 *
 
-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 *
 
-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 *
 
-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 *
 
@@ -686,50 +590,47 @@ L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
 
 =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 *
 
-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 *
 
-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.
+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 *
 
-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 *
 
-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 *
 
-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.
+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 *
 
-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 *
 
@@ -745,15 +646,15 @@ crashes or double frees on exit.
 
 =item *
 
-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.
+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.
 
 =item *
 
-C<(caller $n)[3]> now reports names of lexical subs, instead of treating
-them as "(unknown)".
+C<(caller $n)[3]> now reports names of lexical subs, instead of treating them
+as "(unknown)".
 
 =item *
 
@@ -761,17 +662,17 @@ C<sort subname LIST> now supports lexical subs for the comparison routine.
 
 =item *
 
-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.
+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>
 
 =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.
+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 *
 
@@ -782,40 +683,14 @@ 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
-
-=head1 Known Problems
-
-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.
-
-[ List each fix as a =item entry ]
-
-=over 4
-
 =item *
 
-XXX
-
-=back
-
-=head1 Errata From Previous Releases
-
-=over 4
-
-=item *
-
-XXX Add anything here that we forgot to add, or were mistaken about, in
-the perldelta of a previous release.
+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.
 
 =back
 
-=head1 Obituary
-
-XXX If any significant core contributor has died, we've added a short obituary
-here.
-
 =head1 Acknowledgements
 
 XXX Generate this with:
index cfab7ca..4152a65 100644 (file)
@@ -1,4 +1,4 @@
-# This file is the data file for porting/podcheck.t.
+# This file is the data file for porting\podcheck.t.
 # There are three types of lines.
 # Comment lines are white-space only or begin with a '#', like this one.  Any
 #   changes you make to the comment lines will be lost when the file is
@@ -247,6 +247,7 @@ pod/perlcygwin.pod  Verbatim line length including indents exceeds 79 by    24
 pod/perldebguts.pod    Verbatim line length including indents exceeds 79 by    34
 pod/perldebtut.pod     Verbatim line length including indents exceeds 79 by    22
 pod/perldebug.pod      Verbatim line length including indents exceeds 79 by    3
+pod/perldelta.pod      Apparent broken link    1
 pod/perldsc.pod        Verbatim line length including indents exceeds 79 by    4
 pod/perldtrace.pod     Verbatim line length including indents exceeds 79 by    26
 pod/perlfunc.pod       ? Should you be using F<...> or maybe L<...> instead of 1