[ 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
[ 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.
=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
=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
=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
=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
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.