diff options
author | Steve Hay <steve.m.hay@googlemail.com> | 2014-09-20 01:17:32 +0100 |
---|---|---|
committer | Steve Hay <steve.m.hay@googlemail.com> | 2014-09-20 01:37:56 +0100 |
commit | 5cfa0642e558c8f454036404eb757b77e68f8f45 (patch) | |
tree | 0c33d02404cb0cf1633099583d5d632cecadeb45 /pod/perldelta.pod | |
parent | 5654cc4ecbbe52f346fca1d568892a85c0a10040 (diff) | |
download | perl-5cfa0642e558c8f454036404eb757b77e68f8f45.tar.gz |
perldelta - Remove boilerplate, fill in modules changes and other minor edits
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.
Diffstat (limited to 'pod/perldelta.pod')
-rw-r--r-- | pod/perldelta.pod | 603 |
1 files changed, 239 insertions, 364 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 68eb709ed5..059273aea3 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -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 -a 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: |