This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Perldelta for 5.39.7
[perl5.git] / pod / perldelta.pod
index a188692..d4a8e67 100644 (file)
@@ -2,81 +2,58 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.39.4
+perldelta - what is new for perl v5.39.7
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.39.3 release and the 5.39.4
+This document describes differences between the 5.39.6 release and the 5.39.7
 release.
 
-If you are upgrading from an earlier release such as 5.39.2, first read
-L<perl5393delta>, which describes differences between 5.39.2 and 5.39.3.
+If you are upgrading from an earlier release such as 5.39.5, first read
+L<perl5396delta>, which describes differences between 5.39.5 and 5.39.6.
 
 =head1 Modules and Pragmata
 
-=head2 New Modules and Pragmata
+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.)
+
+=head2 Updated Modules and Pragmata
 
 =over 4
 
 =item *
 
-L<Test2::Suite> 0.000156 has been added to the Perl core.
-
-This distribution contains a comprehensive set of test tools for writing unit
-tests.  It is the successor to L<Test::More> and similar modules.  Its
-inclusion in the Perl core means that CPAN module tests can be written using
-this suite of tools without extra dependencies.
+L<Exporter> has been upgraded from version 5.77 to 5.78.
 
 =item *
 
-L<Term::Table> 0.017 has been added to the Perl core.
-
-This module is a dependency of L<Test2::Suite>.
-
-=back
-
-=head2 Updated Modules and Pragmata
-
-=over 4
+L<Hash::Util> has been upgraded from version 0.30 to 0.31.
 
 =item *
 
-L<feature> has been upgraded from version 1.84 to 1.85.
+L<I18N::Langinfo> has been upgraded from version 0.22 to 0.23.
 
-It now documents the C<:all> feature bundle, and suggests a reason why you may
-not wish to use it.
+It now handles the additional locale categories that Linux defines
+beyond those in the POSIX Standard.
 
 =item *
 
-L<builtin> now accepts a version bundle as an input argument, requesting it to
-import all of the functions that are considered a stable part of the module at
-the given Perl version. For example:
-
-    use builtin ':5.40';
+L<Math::BigInt> has been upgraded from version 2.003001 to 2.003002.
 
 =item *
 
-L<POSIX> has been upgraded from version 2.15 to 2.16.
-
-The C<mktime> function now works correctly on 32-bit platforms even if the
-platform's C<time_t> type is larger than 32 bits. [L<GH #21551|https://github.com/Perl/perl5/issues/21551>]
-
-The C<T_SIGNO> and C<T_FD> typemap entries have been fixed so they work with
-any variable name, rather than just the hardcoded C<sig> and C<fd>.
-
-The mappings for C<Mode_t>, C<pid_t>, C<Uid_t>, C<Gid_t> and C<Time_t> have
-been updated to be integer types; previously they were C<NV> floating-point.
+L<Math::BigInt::FastCalc> has been upgraded from version 0.5016 to 0.5018.
 
 =item *
 
-L<perl5db.pl> has been upgraded from version 1.77 to 1.78.
-
-Made parsing of the C<l> command arguments saner.
-[L<GH #21350|https://github.com/Perl/perl5/issues/21350>]
+L<Pod::Checker> has been upgraded from version 1.75 to 1.76.
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.20230920 to 5.20231020.
+L<SelfLoader> has been upgraded from version 1.26 to 1.27.
 
 =back
 
@@ -88,195 +65,69 @@ 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>.
 
-Additionally, the following selected changes have been made:
-
-=head3 L<perlre>
-
-=over 4
-
-=item *
-
-Removed statement suggesting C</p> is a no-op.
-
-=back
-
-=head3 L<perlapi>
-
-=over 4
-
-=item *
-
-Several internal functions now have documentation - the various C<newSUB>
-functions, C<newANONLIST()>, C<newANONHASH()>, C<newSVREF()> and similar.
-
-=back
-
-=head1 Diagnostics
-
-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>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
+=head1 Internal Changes
 
 =over 4
 
 =item *
 
-L<Builtin version bundle "%s" is not supported by Perl|perldiag/Builtin version bundle "%s" is not supported by Perl>
-
-(F) You attempted to C<use builtin :ver> for a version number that is either
-older than 5.39 (when the ability was added), or newer than the current perl
-version.
+C<dAX>, C<dITEMS> and hence C<dXSARGS> now declare C<AX> and C<items>
+as C<Stack_off_t> rather than C<SSize_t>.  This reverts back to
+compatibility with pre-64-bit stack support for default builds of perl
+where C<Stack_off_t> is C<I32>.  [GH #21782]
 
 =item *
 
-L<Invalid version bundle "%s"|perldiag/Invalid version bundle "%s">
-
-(F) A version number that is used to specify an import bundle during a
-C<use builtin ...> statement must be formatted as C<:MAJOR.MINOR> with an
-optional third component, which is ignored.  Each component must be a number
-of 1 to 3 digits. No other characters are permitted.  The value that was
-specified does not conform to these rules.
-
-=back
-
-=head1 Testing
-
-Tests were added and changed to reflect the other additions and changes
-in this release.
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item VMS
-
-Fixed the configure "installation prefix" prompt to accept a string rather than
-yes/no.
-
-Fixed compilation by defining proper value for
-C<perl_lc_all_category_positions_init>.
-
-Increased buffer size when reading F<config_H.SH> to fix compilation under
-clang.
+A new function is now available to C<XS> code, L<perlapi/sv_langinfo>.
+This provides the same information as the existing
+L<perlapi/Perl_langinfo8>, but returns an SV instead of a S<C<char *>>,
+so that programmers don't have to concern themselves with the UTF-8ness
+of the result.  This new function is now the preferred interface for
+C<XS> code to the L<nl_langinfo(3)> C<libc> function.  From Perl space,
+this information continues to be provided by the L<I18N::Langinfo>
+module.
 
 =back
 
-=head1 Internal Changes
+=head1 Known Problems
 
 =over 4
 
 =item *
 
-C<PERL_VERSION_LE> has been fixed to properly check for "less than or equal"
-rather than "less than".
+none
 
 =back
 
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-Lexical names from the enclosing scope in a lexical sub or closure
-weren't visible to code executed by calling C<eval EXPR;> from the
-C<DB> package.  This was introduced in 5.18 in an attempt to prevent
-subs from retaining a reference to their outer scope, but this broke
-the special behaviour of C<eval EXPR;> in package DB.
-
-This incidentally fixed a TODO test for C<B::Deparse>.
-[L<GH #19370|https://github.com/Perl/perl5/pull/19370>]
-
-=item *
-
-Optionally support an argument stack over 2**32 entries on 64-bit
-platforms.  This requires 32GB of memory just for the argument stack
-pointers itself, so you will require a significantly more memory to
-take advantage of this.
-
-To enable this add C<-Accflags=-DPERL_STACK_OFFSET_SSIZET> or
-equivalent to the C<Configure> command-line.
-
-[L<GH #20917|https://github.com/Perl/perl5/issues/20917>]
-[L<GH #21523|https://github.com/Perl/perl5/issues/21523>]
-
-=item *
-
-Fixed various problems with join() where modifications to the
-separator could be handled inconsistently, or could access released
-memory.  Changes to the separator from magic or overloading for values
-in the C<LIST> no longer have an effect on the resulting joined
-string.
-[L<GH #21458|https://github.com/Perl/perl5/issues/21458>]
-
-=item *
-
-Don't clear the integer flag C<IOK> from lines in the C<<
-@{"_<$sourcefile"} >> array when a C<dbstate> op is removed for that
-line.  This was broken when fixing
-[L<GH #19198|https://github.com/Perl/perl5/issues/19198>].
-[L<GH #21564|https://github.com/Perl/perl5/issues/21564>]
-
-=item *
-
-Many bug fixes have been made for using locales under threads and in
-embedded perls.  And workarounds for libc bugs have been added.  As a
-result thread-safe locale handling is now the default under OpenBSD, and
-MingW when compiled with UCRT.
-
-However, testing has shown that Darwin's implementation of thread-safe
-locale handling has bugs.  So now Perl doesn't attempt to use the
-thread-safe operations when compiled on Darwin.
-
-As before, you can check to see if your program is running with
-thread-safe locales by checking if the value of C<${^SAFE_LOCALES}> is
-1.
-
-=item *
-
-Various bugs have been fixed when perl is configured with
-C<-Accflags=-DNO_LOCALE_NUMERIC> or any other locale category (or
-categories).
-
-=item *
-
-Not all locale categories need be set to the same locale.  Perl now
-works around bugs in the libc implementations of locale handling on some
-platforms that previously could result in mojibake.
-
-=item *
+=head1 Acknowledgements
 
-C<LC_ALL> is represented in one of two ways when not all locale
-categories are set to the same locale.  On some platforms, such as Linux
-and Windows, the representation is of the form of a series of
-C<'category=locale-name'> pairs.  On other platforms, such as *BSD, the
-representation is positional like S<C<I<name1> / I<name2> / ... >>.
-I<name1> is always for a particular category as defined by the platform,
-as are the other names.  The sequence that separates the names
-(the S<C< / >> above) also varies by platform.  Previously, perl had
-problems with platforms that used the positional notation.  This is now
-fixed.
+Perl 5.39.7 represents approximately 3 weeks of development since Perl
+5.39.6 and contains approximately 7,300 lines of changes across 160 files
+from 16 authors.
 
-=item *
+Excluding auto-generated files, documentation and release tools, there were
+approximately 5,600 lines of changes to 79 .pm, .t, .c and .h files.
 
-A bug has been fixed in the regexp engine with an optimisation that applies
-to the C<+> quantifier where it was followed by a C<(*SKIP)> pattern.
+Perl continues to flourish into its fourth decade thanks to a vibrant
+community of users and developers. The following people are known to have
+contributed the improvements that became Perl 5.39.7:
 
-[L<GH #21534|https://github.com/Perl/perl5/issues/21534>]
+Craig A. Berry, Dagfinn Ilmari Mannsåker, David Mitchell, Elvin Aslanov,
+H.Merijn Brand, James E Keenan, Karen Etheridge, Karl Williamson, Mathias
+Kende, Max Maischein, Peter John Acklam, Philippe Bruhat (BooK), Todd
+Rinaldo, Tony Cook, Yves Orton, Дилян Палаузов.
 
-=back
-
-=head1 Acknowledgements
+The list above is almost certainly incomplete as it is automatically
+generated from version control history. In particular, it does not include
+the names of the (very much appreciated) contributors who reported issues to
+the Perl bug tracker.
 
-XXX Generate this with:
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
 
-  perl Porting/acknowledgements.pl v5.39.3..HEAD
+For a more complete list of all of Perl's historical contributors, please
+see the F<AUTHORS> file in the Perl source distribution.
 
 =head1 Reporting Bugs