summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Etheridge <ether@cpan.org>2022-09-20 17:39:53 -0700
committerKaren Etheridge <ether@cpan.org>2022-09-20 18:05:40 -0700
commitc5b9df7142d75b239a04b2473c4cc384f3e1e3cd (patch)
tree8b4a0526e82a581c1c457a3e1734ccef02368c38
parentf5ea7c3c41c0e2dc40d949bbfb6a6df84a63e349 (diff)
downloadperl-c5b9df7142d75b239a04b2473c4cc384f3e1e3cd.tar.gz
New perldelta for 5.37.5
-rw-r--r--MANIFEST1
-rwxr-xr-xMakefile.SH8
-rw-r--r--pod/.gitignore2
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perl5374delta.pod496
-rw-r--r--pod/perldelta.pod497
-rw-r--r--vms/descrip_mms.template2
-rw-r--r--win32/GNUmakefile4
-rw-r--r--win32/Makefile4
-rw-r--r--win32/pod.mak4
10 files changed, 734 insertions, 285 deletions
diff --git a/MANIFEST b/MANIFEST
index 843072c49b..e88d56e614 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5278,6 +5278,7 @@ pod/perl5370delta.pod Perl changes in version 5.37.0
pod/perl5371delta.pod Perl changes in version 5.37.1
pod/perl5372delta.pod Perl changes in version 5.37.2
pod/perl5373delta.pod Perl changes in version 5.37.3
+pod/perl5374delta.pod Perl changes in version 5.37.4
pod/perl561delta.pod Perl changes in version 5.6.1
pod/perl56delta.pod Perl changes in version 5.6
pod/perl581delta.pod Perl changes in version 5.8.1
diff --git a/Makefile.SH b/Makefile.SH
index 9cc6d683d2..a5bdab90d8 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -613,7 +613,7 @@ esac
$spitshell >>$Makefile <<'!NO!SUBS!'
-perltoc_pod_prereqs = extra.pods pod/perl5374delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5375delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
generated_headers = uudmap.h bitcount.h mg_data.h
@@ -1130,9 +1130,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
$(MINIPERL) pod/perlmodlib.PL -q
-pod/perl5374delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5374delta.pod
- $(LNS) perldelta.pod pod/perl5374delta.pod
+pod/perl5375delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5375delta.pod
+ $(LNS) perldelta.pod pod/perl5375delta.pod
extra.pods: $(MINIPERL_EXE)
-@test ! -f extra.pods || rm -f `cat extra.pods`
diff --git a/pod/.gitignore b/pod/.gitignore
index 942d496d41..513a5b7d34 100644
--- a/pod/.gitignore
+++ b/pod/.gitignore
@@ -47,7 +47,7 @@
/roffitall
# generated
-/perl5374delta.pod
+/perl5375delta.pod
/perlapi.pod
/perlintern.pod
/perlmodlib.pod
diff --git a/pod/perl.pod b/pod/perl.pod
index 628d691bdf..bdcdbe2d4d 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -179,6 +179,7 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
perlhist Perl history records
perldelta Perl changes since previous version
+ perl5374delta Perl changes in version 5.37.4
perl5373delta Perl changes in version 5.37.3
perl5372delta Perl changes in version 5.37.2
perl5371delta Perl changes in version 5.37.1
diff --git a/pod/perl5374delta.pod b/pod/perl5374delta.pod
new file mode 100644
index 0000000000..1b10eb13c2
--- /dev/null
+++ b/pod/perl5374delta.pod
@@ -0,0 +1,496 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5374delta - what is new for perl v5.37.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.37.3 release and the 5.37.4
+release.
+
+If you are upgrading from an earlier release such as 5.37.2, first read
+L<perl5373delta>, which describes differences between 5.37.2 and 5.37.3.
+
+=head1 Incompatible Changes
+
+=head2 readline() no longer clears the stream error flag
+
+C<readline()>, also spelled C<< <> >>, would clear the handle's error
+flag after an error occurred on the stream.
+
+The error flag is now only cleared when an error occurs when reading
+from the child process for glob() in F<miniperl>. This allows it to
+correctly report errors from the child process on close().
+
+Since the error flag is no longer cleared calling close() on the
+stream may fail and if the stream was not explicitly closed, the
+implicit close of the stream may produce a warning.
+
+[L<GH #20060|https://github.com/Perl/perl5/issues/20060>]
+
+=head2 C<INIT> blocks no longer run after an C<exit()> in C<BEGIN>
+
+C<INIT> blocks will no longer run after an C<exit()> performed inside of
+a C<BEGIN>. This means that the combination of the C<-v> option and the
+C<-c> option no longer executes a compile check as well as showing the
+perl version. The C<-v> option executes an exit(0) after printing the
+version information inside of a C<BEGIN> block, and the C<-c> check is
+implemented by using C<INIT> hooks, resulting in the C<-v> option taking
+precedence.
+
+[L<GH #1537|https://github.com/Perl/perl5/issues/1537>]
+[L<GH #20181|https://github.com/Perl/perl5/issues/20181>]
+
+=head2 Syntax errors will no longer produce "phantom error messages".
+
+Generally perl will continue parsing the source code even after
+encountering a compile error. In many cases this is helpful, for
+instance with misspelled variable names it is helpful to show as many
+examples of the error as possible. But in the case of syntax errors
+continuing often produces bizarre error messages, and may even cause
+segmentation faults during the compile process. In this release the
+compiler will halt at the first syntax error encountered. This means
+that any code expecting to see the specific error messages we used to
+produce will be broken. The error that is emitted will be one of the
+diagnostics that used to be produced, but in some cases some messages
+that used to be produced will no longer be displayed.
+
+See L<Changes to Existing Diagnostics> for more details.
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Additional optree optimizations for common OP patterns. For example, multiple
+simple OPs replaced by a single streamlined OP, so as to be more efficient at
+runtime. L<[GH #19943]|https://github.com/Perl/perl5/pull/19943>,
+L<[GH #20063]|https://github.com/Perl/perl5/pull/20063>,
+L<[GH #20077]|https://github.com/Perl/perl5/pull/20077>.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.68 to 1.69.
+
+=item *
+
+L<Carp> has been upgraded from version 1.53 to 1.54.
+
+=item *
+
+L<Class::Struct> has been upgraded from version 0.66 to 0.67.
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.33 to 0.34.
+
+=item *
+
+L<Errno> has been upgraded from version 1.36 to 1.37.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.45 to 3.46.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.45 to 3.46.
+
+=item *
+
+L<feature> has been upgraded from version 1.75 to 1.76.
+
+=item *
+
+L<File::Basename> has been upgraded from version 2.85 to 2.86.
+
+=item *
+
+L<File::Copy> has been upgraded from version 2.39 to 2.40.
+
+=item *
+
+L<File::stat> has been upgraded from version 1.12 to 1.13.
+
+=item *
+
+L<FileHandle> has been upgraded from version 2.04 to 2.05.
+
+=item *
+
+L<Hash::Util> has been upgraded from version 0.29 to 0.30.
+
+=item *
+
+L<I18N::Langinfo> has been upgraded from version 0.21 to 0.22.
+
+This module uses the POSIX L<nl_langinfo(3)> function if available, and
+emulates it otherwise, such as on Windows. This new version improves
+the handling of the C<CODESET> item. Now it works completely correctly
+on Windows platforms (barring any bugs in Windows functions), and
+reliably handles C<UTF-8>, C<C>, and C<POSIX> on other emulated
+platforms
+
+=item *
+
+L<IO> has been upgraded from version 1.50 to 1.51.
+
+=item *
+
+L<Locale::Maketext> has been upgraded from version 1.31 to 1.32.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20220820 to 5.20220920.
+
+=item *
+
+L<Opcode> has been upgraded from version 1.60 to 1.61.
+
+=item *
+
+L<POSIX> has been upgraded from version 2.04 to 2.06.
+
+=item *
+
+L<Safe> has been upgraded from version 2.43 to 2.44.
+
+=item *
+
+L<Sys::Hostname> has been upgraded from version 1.24 to 1.25.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9770 to 1.9771.
+
+=item *
+
+L<User::grent> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
+L<User::pwent> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
+L<XS::APItest> has been upgraded from version 1.25 to 1.26.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.31 to 0.32.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+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:
+
+=over 4
+
+=item *
+
+Entries have been added to L<perlguts> for the new C<newAV_alloc_x>, C<newAV_alloc_xz> and
+C<*_simple> functions.
+
+=item *
+
+References to the now-defunct PrePAN service have been removed from
+L<perlcommunity> and L<perlmodstyle>.
+
+=item *
+
+A section on symbol naming has been added to L<perlhacktips>.
+
+=item *
+
+L<perlexperiment> has been edited to properly reference the warning categories
+for the defer block modifier and extra paired delimiters for quote-like
+operators.
+
+=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
+
+=over 4
+
+=item *
+
+L<Too many nested BEGIN blocks, maximum of %d allowed|perldiag/"Too many nested BEGIN blocks, maximum of %d allowed">
+
+=item *
+
+L<Execution of %s aborted due to compilation errors.|perldiag/"Execution of %s aborted due to compilation errors.">
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Locale '%s' is unsupported, and may crash the interpreter.|perldiag/"Locale '%s' is unsupported, and may crash the interpreter.">
+
+=item *
+
+L<Treating %s::INIT block as BEGIN block as workaround|perldiag/"Treating %s::INIT block as BEGIN block as workaround">
+
+=item *
+
+L<Filehandle STD%s reopened as %s only for input|perldiag/"Filehandle STD%s reopened as %s only for input">
+
+=item *
+
+L<%s on BEGIN block ignored|perldiag/"%s on BEGIN block ignored">
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+The compiler will now stop parsing on the first syntax error it
+encounters. Historically the compiler would attempt to "skip past" the
+error and continue parsing so that it could list multiple errors. For
+things like undeclared variables under strict this makes sense. For
+syntax errors however it has been found that continuing tends to result
+in a storm of unrelated or bizarre errors that mostly just obscure the
+true error. In extreme cases it can even lead to segfaults and other
+incorrect behavior.
+
+Therefore we have reformed the continuation logic so that the parse will
+stop after the first seen syntax error. Semantic errors like undeclared
+variables will not stop the parse, so you may still see multiple errors
+when compiling code. However if there is a syntax error it will be the
+last error message reported by perl and all of the errors that you see
+will be something that actually needs to be fixed.
+
+=item *
+
+Error messages that output class or package names have been modified to
+output double quoted strings with various characters escaped so as to
+make the exact value clear to a reader. The exact rules on which
+characters are escaped may change over time but currently are that
+printable ASCII codepoints, with the exception of C<"> and C<\>, and
+unicode word characters whose codepoint is over 255 are output raw, and
+any other symbols are escaped much as Data::Dumper might escape them,
+using C<\n> for newline and C<\"> for double quotes, etc. Codepoints in
+the range 128-255 are always escaped as they can cause trouble on
+unicode terminals when output raw.
+
+In older versions of perl the one liner
+
+ $ perl -le'"thing\n"->foo()'
+
+would output the following error message exactly as shown here, with
+text spread over multiple lines because the "\n" would be emitted as
+a raw newline character:
+
+ Can't locate object method "foo" via package "thing
+ " (perhaps you forgot to load "thing
+ "?) at -e line 1.
+
+As of this release we would output this instead (as one line):
+
+ Can't locate object method "foo" via package "thing\n"
+ (perhaps you forgot to load "thing\n"?) at -e line 1.
+
+Notice the newline in the package name has been quoted and escaped, and
+thus the error message is a single line. The text is shown here wrapped
+to two lines only for readability.
+
+=item *
+
+When package or class names in errors are very large the middle excess
+portion will be elided from the message. As of this release error messages
+will show only up to the first 128 characters and the last 128 characters
+in a package or class name in error messages. For example
+
+ $ perl -le'("Foo" x 1000)->new()'
+
+will output the following as one line:
+
+ Can't locate object method "new" via package "FooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFooFo"..."oFooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFoo" (perhaps you forgot to load
+ "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFo"...
+ "oFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
+ FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo"?)
+ at -e line 1.
+
+Notice the C< "prefix"..."suffix" > form of the package name in this case.
+In previous versions of perl the complete string would have been shown
+making the error message over 6k long and there was no upper limit on the
+length of the error message at all. If you accidentally used a 1MB string
+as a class name then the error message would be over 2MB long. In this perl
+the upper limit should be around 2k when eliding and escaping are taken into
+account.
+
+=back
+
+=head1 Testing
+
+Tests were added and changed to reflect the other additions and changes
+in this release.
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+A new API function L<perlapi/C<Perl_localeconv>> is added. This is the
+same as L<C<POSIX::localeconv>|POSIX/localeconv> (returning a hash of
+the C<localeconv()>> fields), but directly callable from XS code.
+
+=item *
+
+A new API function L<perlapi/C<my_strftime8>> is added. This is the
+same as plain L<perlapi/C<my_strftime>>, but with an extra parameter
+that allows the caller to simply and reliably know if the returned
+string is UTF-8.
+
+=item *
+
+A new API function, L<perlapi/C<Perl_langinfo8>> is added. This is the
+same as plain L<perlapi/C<Perl_langinfo>>, but with an extra parameter
+that allows the caller to simply and reliably know if the returned
+string is UTF-8.
+
+=item *
+
+We have introduced a limit on the number of nested C<eval EXPR>/C<BEGIN>
+blocks and C<require>/C<BEGIN> (and thus C<use> statements as well) to
+prevent C stack overflows. This variable can also be used to forbid
+C<BEGIN> blocks from executing during C<eval EXPR> compilation. The
+limit defaults to C<1000> but can be overridden by setting the
+C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> variable. The default itself can be
+changed at compile time with
+
+ -Accflags='-DPERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT=12345'
+
+Note that this value relates to the size of your C stack and if you
+choose an inappropriately large value Perl may segfault, be conservative
+about what you choose.
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+L<Variable::Magic>
+L<[RT #144052]|https://rt.cpan.org/Ticket/Display.html?id=144052>,
+and L<Devel::Caller>
+L<[RT #144051]|https://rt.cpan.org/Ticket/Display.html?id=144051>
+have not yet been updated to add awareness of new OPs introduced in
+this development cycle.
+L<[GH #20114]|https://github.com/Perl/perl5/issues/20114>. Patches have
+been submitted upstream but these have not been incorporated into new
+releases yet.
+
+L<Test::Vars>
+L<[Test-Vars/GH #47]|https://github.com/houseabsolute/p5-Test-Vars/issues/47>
+also requires updating, but since this module's own tests are not failing,
+it is harder to determine how the new OPs should be accounted for.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.37.4 represents approximately 4 weeks of development since Perl
+5.37.3 and contains approximately 20,000 lines of changes across 270 files
+from 21 authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 12,000 lines of changes to 160 .pm, .t, .c and .h files.
+
+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.37.4:
+
+Bram, Dagfinn Ilmari Mannsåker, danielnachun, E. Choroba, Ed J, Elvin
+Aslanov, H.Merijn Brand, James E Keenan, Karen Etheridge, Karl Williamson,
+Kenneth Ölwing, Leon Timmermans, Neil Bowers, Nicolas R, Paul Evans,
+Richard Leach, Sisyphus, Todd Rinaldo, Tomasz Konojacki, Tony Cook, Yves
+Orton.
+
+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.
+
+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.
+
+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
+
+If you find what you think is a bug, you might check the perl bug database
+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 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 public issue tracker, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
+
+=head1 Give Thanks
+
+If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
+you can do so by running the C<perlthanks> program:
+
+ perlthanks
+
+This will send an email to the Perl 5 Porters list with your show of thanks.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 32ec24f5a5..95cd830e62 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,461 +2,408 @@
=head1 NAME
-perldelta - what is new for perl v5.37.4
+[ 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.37.5
=head1 DESCRIPTION
-This document describes differences between the 5.37.3 release and the 5.37.4
+This document describes differences between the 5.37.4 release and the 5.37.5
release.
-If you are upgrading from an earlier release such as 5.37.2, first read
-L<perl5373delta>, which describes differences between 5.37.2 and 5.37.3.
+If you are upgrading from an earlier release such as 5.37.3, first read
+L<perl5374delta>, which describes differences between 5.37.3 and 5.37.4.
-=head1 Incompatible Changes
+=head1 Notice
-=head2 readline() no longer clears the stream error flag
+XXX Any important notices here
-C<readline()>, also spelled C<< <> >>, would clear the handle's error
-flag after an error occurred on the stream.
+=head1 Core Enhancements
-The error flag is now only cleared when an error occurs when reading
-from the child process for glob() in F<miniperl>. This allows it to
-correctly report errors from the child process on close().
+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.
-Since the error flag is no longer cleared calling close() on the
-stream may fail and if the stream was not explicitly closed, the
-implicit close of the stream may produce a warning.
+[ List each enhancement as a =head2 entry ]
-[L<GH #20060|https://github.com/Perl/perl5/issues/20060>]
+=head1 Security
-=head2 C<INIT> blocks no longer run after an C<exit()> in C<BEGIN>
+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.
-C<INIT> blocks will no longer run after an C<exit()> performed inside of
-a C<BEGIN>. This means that the combination of the C<-v> option and the
-C<-c> option no longer executes a compile check as well as showing the
-perl version. The C<-v> option executes an exit(0) after printing the
-version information inside of a C<BEGIN> block, and the C<-c> check is
-implemented by using C<INIT> hooks, resulting in the C<-v> option taking
-precedence.
+[ List each security issue as a =head2 entry ]
-[L<GH #1537|https://github.com/Perl/perl5/issues/1537>]
-[L<GH #20181|https://github.com/Perl/perl5/issues/20181>]
+=head1 Incompatible Changes
-=head2 Syntax errors will no longer produce "phantom error messages".
+XXX For a release on a stable branch, this section aspires to be:
-Generally perl will continue parsing the source code even after
-encountering a compile error. In many cases this is helpful, for
-instance with misspelled variable names it is helpful to show as many
-examples of the error as possible. But in the case of syntax errors
-continuing often produces bizarre error messages, and may even cause
-segmentation faults during the compile process. In this release the
-compiler will halt at the first syntax error encountered. This means
-that any code expecting to see the specific error messages we used to
-produce will be broken. The error that is emitted will be one of the
-diagnostics that used to be produced, but in some cases some messages
-that used to be produced will no longer be displayed.
+ 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.
-See L<Changes to Existing Diagnostics> for more details.
+[ List each incompatible change as a =head2 entry ]
-=head1 Performance Enhancements
+=head1 Deprecations
-=over 4
+XXX Any deprecated features, syntax, modules etc. should be listed here.
-=item *
+=head2 Module removals
-Additional optree optimizations for common OP patterns. For example, multiple
-simple OPs replaced by a single streamlined OP, so as to be more efficient at
-runtime. L<[GH #19943]|https://github.com/Perl/perl5/pull/19943>,
-L<[GH #20063]|https://github.com/Perl/perl5/pull/20063>,
-L<[GH #20077]|https://github.com/Perl/perl5/pull/20077>.
+XXX Remove this section if not applicable.
-=back
+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.
-=head1 Modules and Pragmata
+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.
-=head2 Updated Modules and Pragmata
+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 4
+=over
-=item *
+=item XXX
-L<B::Deparse> has been upgraded from version 1.68 to 1.69.
+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.
-=item *
+=back
-L<Carp> has been upgraded from version 1.53 to 1.54.
+[ List each other deprecation as a =head2 entry ]
-=item *
+=head1 Performance Enhancements
-L<Class::Struct> has been upgraded from version 0.66 to 0.67.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
-=item *
+[ List each enhancement as an =item entry ]
-L<Config::Perl::V> has been upgraded from version 0.33 to 0.34.
+=over 4
=item *
-L<Errno> has been upgraded from version 1.36 to 1.37.
+XXX
-=item *
+=back
-L<ExtUtils::ParseXS> has been upgraded from version 3.45 to 3.46.
+=head1 Modules and Pragmata
-=item *
+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.
-L<ExtUtils::Typemaps> has been upgraded from version 3.45 to 3.46.
+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 ]
+
+=head2 New Modules and Pragmata
-L<feature> has been upgraded from version 1.75 to 1.76.
+=over 4
=item *
-L<File::Basename> has been upgraded from version 2.85 to 2.86.
+XXX Remove this section if not applicable.
-=item *
+=back
+
+=head2 Updated Modules and Pragmata
-L<File::Copy> has been upgraded from version 2.39 to 2.40.
+=over 4
=item *
-L<File::stat> has been upgraded from version 1.12 to 1.13.
+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.
-L<FileHandle> has been upgraded from version 2.04 to 2.05.
+=back
-=item *
+=head2 Removed Modules and Pragmata
-L<Hash::Util> has been upgraded from version 0.29 to 0.30.
+=over 4
=item *
-L<I18N::Langinfo> has been upgraded from version 0.21 to 0.22.
+XXX
-This module uses the POSIX L<nl_langinfo(3)> function if available, and
-emulates it otherwise, such as on Windows. This new version improves
-the handling of the C<CODESET> item. Now it works completely correctly
-on Windows platforms (barring any bugs in Windows functions), and
-reliably handles C<UTF-8>, C<C>, and C<POSIX> on other emulated
-platforms
+=back
-=item *
+=head1 Documentation
-L<IO> has been upgraded from version 1.50 to 1.51.
+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>.
-=item *
+=head2 New Documentation
-L<Locale::Maketext> has been upgraded from version 1.31 to 1.32.
+XXX Changes which create B<new> files in F<pod/> go here.
-=item *
+=head3 L<XXX>
-L<Module::CoreList> has been upgraded from version 5.20220820 to 5.20220920.
+XXX Description of the purpose of the new file here
-=item *
+=head2 Changes to Existing Documentation
-L<Opcode> has been upgraded from version 1.60 to 1.61.
+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>.
-=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.
-L<POSIX> has been upgraded from version 2.04 to 2.06.
+Additionally, the following selected changes have been made:
-=item *
+=head3 L<XXX>
-L<Safe> has been upgraded from version 2.43 to 2.44.
+=over 4
=item *
-L<Sys::Hostname> has been upgraded from version 1.24 to 1.25.
+XXX Description of the change here
-=item *
+=back
-L<Time::HiRes> has been upgraded from version 1.9770 to 1.9771.
+=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<User::grent> has been upgraded from version 1.03 to 1.04.
+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.
-=item *
+=head2 New Diagnostics
-L<User::pwent> has been upgraded from version 1.01 to 1.02.
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
-=item *
+=head3 New Errors
-L<XS::APItest> has been upgraded from version 1.25 to 1.26.
+=over 4
=item *
-L<XSLoader> has been upgraded from version 0.31 to 0.32.
+XXX L<message|perldiag/"message">
=back
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-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 New Warnings
=over 4
=item *
-Entries have been added to L<perlguts> for the new C<newAV_alloc_x>, C<newAV_alloc_xz> and
-C<*_simple> functions.
+XXX L<message|perldiag/"message">
-=item *
+=back
-References to the now-defunct PrePAN service have been removed from
-L<perlcommunity> and L<perlmodstyle>.
+=head2 Changes to Existing Diagnostics
-=item *
+XXX Changes (i.e. rewording) of diagnostic messages go here
-A section on symbol naming has been added to L<perlhacktips>.
+=over 4
=item *
-L<perlexperiment> has been edited to properly reference the warning categories
-for the defer block modifier and extra paired delimiters for quote-like
-operators.
+XXX Describe change here
=back
-=head1 Diagnostics
+=head1 Utility Changes
-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 Changes to installed programs such as F<perldoc> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
-=head2 New Diagnostics
+[ 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. ]
-=head3 New Errors
+=head2 L<XXX>
=over 4
=item *
-L<Too many nested BEGIN blocks, maximum of %d allowed|perldiag/"Too many nested BEGIN blocks, maximum of %d allowed">
+XXX
-=item *
+=back
-L<Execution of %s aborted due to compilation errors.|perldiag/"Execution of %s aborted due to compilation errors.">
+=head1 Configuration and Compilation
-=back
+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.
-=head3 New Warnings
+[ List changes as an =item entry ].
=over 4
=item *
-L<Locale '%s' is unsupported, and may crash the interpreter.|perldiag/"Locale '%s' is unsupported, and may crash the interpreter.">
+XXX
-=item *
+=back
-L<Treating %s::INIT block as BEGIN block as workaround|perldiag/"Treating %s::INIT block as BEGIN block as workaround">
+=head1 Testing
-=item *
+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.
-L<Filehandle STD%s reopened as %s only for input|perldiag/"Filehandle STD%s reopened as %s only for input">
+XXX If there were no significant test changes, say this:
-=item *
+Tests were added and changed to reflect the other additions and changes
+in this release.
-L<%s on BEGIN block ignored|perldiag/"%s on BEGIN block ignored">
+XXX If instead there were significant changes, say this:
-=back
+Tests were added and changed to reflect the other additions and
+changes in this release. Furthermore, these significant changes were
+made:
-=head2 Changes to Existing Diagnostics
+[ List each test improvement as an =item entry ]
=over 4
=item *
-The compiler will now stop parsing on the first syntax error it
-encounters. Historically the compiler would attempt to "skip past" the
-error and continue parsing so that it could list multiple errors. For
-things like undeclared variables under strict this makes sense. For
-syntax errors however it has been found that continuing tends to result
-in a storm of unrelated or bizarre errors that mostly just obscure the
-true error. In extreme cases it can even lead to segfaults and other
-incorrect behavior.
-
-Therefore we have reformed the continuation logic so that the parse will
-stop after the first seen syntax error. Semantic errors like undeclared
-variables will not stop the parse, so you may still see multiple errors
-when compiling code. However if there is a syntax error it will be the
-last error message reported by perl and all of the errors that you see
-will be something that actually needs to be fixed.
+XXX
-=item *
+=back
-Error messages that output class or package names have been modified to
-output double quoted strings with various characters escaped so as to
-make the exact value clear to a reader. The exact rules on which
-characters are escaped may change over time but currently are that
-printable ASCII codepoints, with the exception of C<"> and C<\>, and
-unicode word characters whose codepoint is over 255 are output raw, and
-any other symbols are escaped much as Data::Dumper might escape them,
-using C<\n> for newline and C<\"> for double quotes, etc. Codepoints in
-the range 128-255 are always escaped as they can cause trouble on
-unicode terminals when output raw.
+=head1 Platform Support
-In older versions of perl the one liner
+XXX Any changes to platform support should be listed in the sections below.
- $ perl -le'"thing\n"->foo()'
+[ Within the sections, list each platform as an =item entry with specific
+changes as paragraphs below it. ]
-would output the following error message exactly as shown here, with
-text spread over multiple lines because the "\n" would be emitted as
-a raw newline character:
+=head2 New Platforms
- Can't locate object method "foo" via package "thing
- " (perhaps you forgot to load "thing
- "?) at -e line 1.
+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.
-As of this release we would output this instead (as one line):
+=over 4
- Can't locate object method "foo" via package "thing\n"
- (perhaps you forgot to load "thing\n"?) at -e line 1.
+=item XXX-some-platform
-Notice the newline in the package name has been quoted and escaped, and
-thus the error message is a single line. The text is shown here wrapped
-to two lines only for readability.
+XXX
-=item *
+=back
-When package or class names in errors are very large the middle excess
-portion will be elided from the message. As of this release error messages
-will show only up to the first 128 characters and the last 128 characters
-in a package or class name in error messages. For example
-
- $ perl -le'("Foo" x 1000)->new()'
-
-will output the following as one line:
-
- Can't locate object method "new" via package "FooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFooFo"..."oFooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFoo" (perhaps you forgot to load
- "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFo"...
- "oFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo
- FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo"?)
- at -e line 1.
-
-Notice the C< "prefix"..."suffix" > form of the package name in this case.
-In previous versions of perl the complete string would have been shown
-making the error message over 6k long and there was no upper limit on the
-length of the error message at all. If you accidentally used a 1MB string
-as a class name then the error message would be over 2MB long. In this perl
-the upper limit should be around 2k when eliding and escaping are taken into
-account.
+=head2 Discontinued Platforms
+
+XXX List any platforms that this version of perl no longer compiles on.
+
+=over 4
+
+=item XXX-some-platform
+
+XXX
=back
-=head1 Testing
+=head2 Platform-Specific Notes
-Tests were added and changed to reflect the other additions and changes
-in this release.
+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
+
+XXX
+
+=back
=head1 Internal Changes
-=over 4
+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.
-=item *
+[ List each change as an =item entry ]
-A new API function L<perlapi/C<Perl_localeconv>> is added. This is the
-same as L<C<POSIX::localeconv>|POSIX/localeconv> (returning a hash of
-the C<localeconv()>> fields), but directly callable from XS code.
+=over 4
=item *
-A new API function L<perlapi/C<my_strftime8>> is added. This is the
-same as plain L<perlapi/C<my_strftime>>, but with an extra parameter
-that allows the caller to simply and reliably know if the returned
-string is UTF-8.
+XXX
-=item *
+=back
-A new API function, L<perlapi/C<Perl_langinfo8>> is added. This is the
-same as plain L<perlapi/C<Perl_langinfo>>, but with an extra parameter
-that allows the caller to simply and reliably know if the returned
-string is UTF-8.
+=head1 Selected Bug Fixes
-=item *
+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>.
-We have introduced a limit on the number of nested C<eval EXPR>/C<BEGIN>
-blocks and C<require>/C<BEGIN> (and thus C<use> statements as well) to
-prevent C stack overflows. This variable can also be used to forbid
-C<BEGIN> blocks from executing during C<eval EXPR> compilation. The
-limit defaults to C<1000> but can be overridden by setting the
-C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> variable. The default itself can be
-changed at compile time with
+[ List each fix as an =item entry ]
- -Accflags='-DPERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT=12345'
+=over 4
+
+=item *
-Note that this value relates to the size of your C stack and if you
-choose an inappropriately large value Perl may segfault, be conservative
-about what you choose.
+XXX
=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 an =item entry ]
+
=over 4
=item *
-L<Variable::Magic>
-L<[RT #144052]|https://rt.cpan.org/Ticket/Display.html?id=144052>,
-and L<Devel::Caller>
-L<[RT #144051]|https://rt.cpan.org/Ticket/Display.html?id=144051>
-have not yet been updated to add awareness of new OPs introduced in
-this development cycle.
-L<[GH #20114]|https://github.com/Perl/perl5/issues/20114>. Patches have
-been submitted upstream but these have not been incorporated into new
-releases yet.
-
-L<Test::Vars>
-L<[Test-Vars/GH #47]|https://github.com/houseabsolute/p5-Test-Vars/issues/47>
-also requires updating, but since this module's own tests are not failing,
-it is harder to determine how the new OPs should be accounted for.
+XXX
=back
-=head1 Acknowledgements
+=head1 Errata From Previous Releases
+
+=over 4
-Perl 5.37.4 represents approximately 4 weeks of development since Perl
-5.37.3 and contains approximately 20,000 lines of changes across 270 files
-from 21 authors.
+=item *
+
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
-Excluding auto-generated files, documentation and release tools, there were
-approximately 12,000 lines of changes to 160 .pm, .t, .c and .h files.
+=back
-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.37.4:
+=head1 Obituary
-Bram, Dagfinn Ilmari Mannsåker, danielnachun, E. Choroba, Ed J, Elvin
-Aslanov, H.Merijn Brand, James E Keenan, Karen Etheridge, Karl Williamson,
-Kenneth Ölwing, Leon Timmermans, Neil Bowers, Nicolas R, Paul Evans,
-Richard Leach, Sisyphus, Todd Rinaldo, Tomasz Konojacki, Tony Cook, Yves
-Orton.
+XXX If any significant core contributor or member of the CPAN community has
+died, add a short obituary here.
-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.
+=head1 Acknowledgements
-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.
+XXX Generate this with:
-For a more complete list of all of Perl's historical contributors, please
-see the F<AUTHORS> file in the Perl source distribution.
+ perl Porting/acknowledgements.pl v5.37.4..HEAD
=head1 Reporting Bugs
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index 93d99aa04d..d9426b4153 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -313,7 +313,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
extra.pods : miniperl
@ @extra_pods.com
-PERLDELTA_CURRENT = [.pod]perl5374delta.pod
+PERLDELTA_CURRENT = [.pod]perl5375delta.pod
$(PERLDELTA_CURRENT) : [.pod]perldelta.pod
Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 594887f7fe..e15913b1ab 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1635,7 +1635,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5374delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5375delta.pod
$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1734,7 +1734,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5374delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5375delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \
perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \
perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \
diff --git a/win32/Makefile b/win32/Makefile
index db821a3271..07799d458b 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1159,7 +1159,7 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5374delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5375delta.pod
cd ..\win32
$(PERLEXE) $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1259,7 +1259,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5374delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5375delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \
perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \
perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \
diff --git a/win32/pod.mak b/win32/pod.mak
index 35301b3d94..e8016de47e 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -72,6 +72,7 @@ POD = perl.pod \
perl5372delta.pod \
perl5373delta.pod \
perl5374delta.pod \
+ perl5375delta.pod \
perl561delta.pod \
perl56delta.pod \
perl581delta.pod \
@@ -242,6 +243,7 @@ MAN = perl.man \
perl5372delta.man \
perl5373delta.man \
perl5374delta.man \
+ perl5375delta.man \
perl561delta.man \
perl56delta.man \
perl581delta.man \
@@ -412,6 +414,7 @@ HTML = perl.html \
perl5372delta.html \
perl5373delta.html \
perl5374delta.html \
+ perl5375delta.html \
perl561delta.html \
perl56delta.html \
perl581delta.html \
@@ -582,6 +585,7 @@ TEX = perl.tex \
perl5372delta.tex \
perl5373delta.tex \
perl5374delta.tex \
+ perl5375delta.tex \
perl561delta.tex \
perl56delta.tex \
perl581delta.tex \