This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(toke|regcomp).c: Use common fcn to handle \0 problems
[perl5.git] / pod / perldelta.pod
index 41fbe50..8611b58 100644 (file)
@@ -5,15 +5,15 @@
 [ 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.31.5
+perldelta - what is new for perl v5.31.9
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.31.4 release and the 5.31.5
+This document describes differences between the 5.31.8 release and the 5.31.9
 release.
 
-If you are upgrading from an earlier release such as 5.31.3, first read
-L<perl5314delta>, which describes differences between 5.31.3 and 5.31.4.
+If you are upgrading from an earlier release such as 5.31.7, first read
+L<perl5318delta>, which describes differences between 5.31.7 and 5.31.8.
 
 =head1 Notice
 
@@ -45,24 +45,6 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
-=head2 Modifiable variables are no longer permitted in constants
-
-Code like:
-
-    my $var;
-    $sub = sub () { $var };
-
-where C<$var> is referenced elsewhere in some sort of modiable context
-now produces an exception when the sub is defined.
-
-This error can be avoided by adding a return to the sub definition:
-
-    $sub = sub () { return $var };
-
-This has been deprecated since perl 5.22.
-
-[perl #131138]
-
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -113,147 +95,201 @@ XXX
 
 =head1 Modules and Pragmata
 
-=head2 Updated 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.
 
-=over 4
+The list of new and updated modules is modified automatically as part of
+preparing a Perl release, so the only reason to manually add entries here is if
+you're summarising the important changes in the module update. (Also, if the
+manually-added details don't match the automatically-generated ones, the
+release manager will have to investigate the situation carefully.)
 
-=item *
+[ Within each section, list entries as an =item entry ]
 
-L<B> has been upgraded from version 1.76 to 1.77.
+=head2 New Modules and Pragmata
+
+=over 4
 
 =item *
 
-L<B::Deparse> has been upgraded from version 1.49 to 1.50.
+XXX Remove this section if not applicable.
 
-=item *
+=back
 
-L<Devel::PPPort> has been upgraded from version 3.55 to 3.54.
+=head2 Updated Modules and Pragmata
+
+=over 4
 
 =item *
 
-L<Digest::MD5> has been upgraded from version 2.55 to 2.55_01.
+L<XXX> has been upgraded from version A.xx to B.yy.
 
-=item *
+If there was something important to note about this change, include that here.
+
+=back
 
-L<Dumpvalue> has been upgraded from version 1.18 to 1.21.
+=head2 Removed Modules and Pragmata
 
-Previously, when dumping elements of an array and encountering an undefined
-value, the string printed would have been C<empty array>.  This has been
-changed to what was apparently originally intended:  C<empty slot>.
+=over 4
 
 =item *
 
-L<ExtUtils::CBuilder> has been upgraded from version 0.280232 to 0.280233.
+XXX
 
-=item *
+=back
 
-L<Math::BigInt> has been upgraded from version 1.999816 to 1.999817_01.
+=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<Math::BigInt::FastCalc> has been upgraded from version 0.5008 to 0.5009.
+=head2 New Documentation
 
-=item *
+XXX Changes which create B<new> files in F<pod/> go here.
 
-L<Module::CoreList> has been upgraded from version 5.20190920 to 5.20191020.
+=head3 L<XXX>
 
-=item *
+XXX Description of the purpose of the new file here
 
-L<Safe> has been upgraded from version 2.40 to 2.41.
+=head2 Changes to Existing Documentation
 
-=item *
+We have attempted to update the documentation to reflect the changes
+listed in this document.  If you find any we have missed, open an issue
+at L<https://github.com/Perl/perl5/issues>.
 
-L<threads> has been upgraded from version 2.22 to 2.23.
+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 *
+Additionally, the following selected changes have been made:
 
-L<Time::HiRes> has been upgraded from version 1.9763 to 1.9764.
+=head3 L<XXX>
+
+=over 4
 
 =item *
 
-L<XS::APItest> has been upgraded from version 1.03 to 1.04.
-
-If there was something important to note about this change, include that here.
+Links to the now defunct L<https://search.cpan.org> site now point at
+the equivalent L<https://metacpan.org> URL.  [GH #17393]
 
 =back
 
-=head1 Documentation
+=head1 Diagnostics
 
-=head2 Changes to Existing Documentation
+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>.
 
-We have attempted to update the documentation to reflect the changes
-listed in this document.  If you find any we have missed, send email
-to L<perlbug@perl.org|mailto:perlbug@perl.org>.
+XXX 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.
 
-=head3 L<perlguts>
+=head2 New Diagnostics
+
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
+
+=head3 New Errors
 
 =over 4
 
 =item *
 
-Details of the various stacks within the perl interpreter are now explained
-here.
+XXX L<message|perldiag/"message">
 
 =back
 
-Additionally, the following selected changes have been made:
-
-=head3 URLs have been changed to https://, stale links updated
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-Where applicable, the URLs in the documentation have been moved from
-using the http:// protocol to https:// . This also affects the location
-of the bug tracker at L<https://rt.perl.org>.
+L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable">
 
-=item *
+This is actually not a new message, but it is now output when the
+warnings category C<portable> is enabled.
 
-Some links to OS/2 libraries, Address Sanitizer and other system tools
-had gone stale. These have been updated with working links.
+When raised during regular expression pattern compilation, the warning
+has extra text added at the end marking where precisely in the pattern
+it occured.
 
 =item *
 
-Some links to old mails on perl5-porters had gone stale. These have been
-updated with working links.
+L<Non-hex character '%c' terminates \x early.  Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early.  Resolved as "%s"">
 
-=back
+This replaces a warning that was much less specific, and which gave
+false information.  This new warning parallels the similar
+already-existing one raised for C<\o{}>.
 
-=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<message|perldiag/"message">
+
+=back
 
 =head2 Changes to Existing Diagnostics
 
+XXX Changes (i.e. rewording) of diagnostic messages go here
+
 =over 4
 
 =item *
 
-L<Can't use global %s in %s|perldiag/"Can't use global %s in %s">
+L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII">
+
+now has extra text added at the end, when raised during regular
+expression pattern compilation, marking where precisely in the pattern
+it occured.
+
+=item *
+
+L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s"">
+
+now has extra text added at the end, when raised during regular
+expression pattern compilation, marking where precisely in the pattern
+it occured.
+
+=item *
+
+L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid">
+
+now has extra text added at the end, when raised during regular
+expression pattern compilation, marking where precisely in the pattern
+it occured.
+
+=item *
+
+L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s"">
+
+now has extra text added at the end, when raised during regular
+expression pattern compilation, marking where precisely in the pattern
+it occured.
+
+=item *
+
+L<Non-octal character '%c' terminates \o early.  Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early.  Resolved as "%s"">
 
-This error message has been slightly reformatted from the original C<Can't use
-global %s in "%s">, and in particular misleading error messages like C<Can't
-use global $_ in "my"> are now rendered as C<Can't use global $_ in subroutine
-signature>.
+now includes the phrase "terminates \o early", and has extra text added
+at the end, when raised during regular expression pattern compilation,
+marking where precisely in the pattern it occured.  In some instances
+the text of the resolution has been clarified.
 
 =item *
 
-L<Constants from lexical variables potentially modified elsewhere are no longer permitted|perldiag/"Constants from lexical variables potentially modified elsewhere are no longer permitted">
+L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'>
 
-This error message replaces the former C<Constants from lexical variables
-potentially modified elsewhere are deprecated. This will not be allowed in Perl
-5.32> to reflect the fact that this previously deprecated usage has now been
-transformed into an exception.  The message's classification has also been
-updated from D (deprecated) to F (fatal).
+As of Perl 5.32, this message is no longer generated.  Instead,
+L<perldiag/Non-octal character '%c' terminates \o early.  Resolved as "%s">
+is.
 
 =back
 
 =head1 Utility Changes
 
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+XXX Changes to installed programs such as F<perldoc> 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
@@ -283,18 +319,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-Perl now no longer probes for C<d_u32align>, defaulting to C<define>
-on all platforms.  This check was error prone when it was done, which
-was on 32-bit platforms only.  [perl #133495]
-
-=item *
-
-Documentation and hints for building perl on Z/OS (native EBCDIC) have
-been updated. Still work in progress.
-
-=item *
-
-New probe for malloc_usable_size
+XXX
 
 =back
 
@@ -370,9 +395,14 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Windows
+=item VMS
 
-Support for building perl with Visual C++ 6.0 has now been removed.
+With the release of the patch kit C99 V2.0, VSI has provided support for a
+number of previously-missing C99 features.  On systems with that patch kit
+installed, Perl's configuration process will now detect the presence of the
+header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>,
+C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>,
+and C<scalbnl>.
 
 =back
 
@@ -388,19 +418,7 @@ well.
 
 =item *
 
-Added the C<<PL_curstackinfo->si_cxsubix>> field. This records the stack
-index of the most recently pushed sub/format/eval context.  It is set and
-restored automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would
-need to be manually managed if you do any unusual manipulation of the
-context stack.
-
-=item *
-
-Various macros dealing with character type classification and changing
-case where the input is encoded in UTF-8 now require an extra parameter
-to prevent potential reads beyond the end of the buffer.  Use of these
-has generated a deprecation warning since 5.26.  Details are in
-L<perldeprecation/In XS code, use of various macros dealing with UTF-8.>
+XXX
 
 =back
 
@@ -455,21 +473,20 @@ died, add a short obituary here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.31.4..HEAD
+  perl Porting/acknowledgements.pl v5.31.8..HEAD
 
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the perl bug database
-at L<https://rt.perl.org/>.  There may also be information at
-L<https://www.perl.org/>, the Perl Home Page.
+at L<https://github.com/Perl/perl5/issues>.  There may also be information at
+L<http://www.perl.org/>, the Perl Home Page.
 
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+If you believe you have an unreported bug, please open an issue at
+L<https://github.com/Perl/perl5/issues>.  Be sure to trim your bug down to a
+tiny but sufficient test case.
 
 If the bug you are reporting has security implications which make it
-inappropriate to send to a publicly archived mailing list, then see
+inappropriate to send to a public issue tracker, then see
 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
 for details of how to report the issue.