diff options
author | Karen Etheridge <ether@cpan.org> | 2022-09-20 17:39:53 -0700 |
---|---|---|
committer | Karen Etheridge <ether@cpan.org> | 2022-09-20 18:05:40 -0700 |
commit | c5b9df7142d75b239a04b2473c4cc384f3e1e3cd (patch) | |
tree | 8b4a0526e82a581c1c457a3e1734ccef02368c38 | |
parent | f5ea7c3c41c0e2dc40d949bbfb6a6df84a63e349 (diff) | |
download | perl-c5b9df7142d75b239a04b2473c4cc384f3e1e3cd.tar.gz |
New perldelta for 5.37.5
-rw-r--r-- | MANIFEST | 1 | ||||
-rwxr-xr-x | Makefile.SH | 8 | ||||
-rw-r--r-- | pod/.gitignore | 2 | ||||
-rw-r--r-- | pod/perl.pod | 1 | ||||
-rw-r--r-- | pod/perl5374delta.pod | 496 | ||||
-rw-r--r-- | pod/perldelta.pod | 497 | ||||
-rw-r--r-- | vms/descrip_mms.template | 2 | ||||
-rw-r--r-- | win32/GNUmakefile | 4 | ||||
-rw-r--r-- | win32/Makefile | 4 | ||||
-rw-r--r-- | win32/pod.mak | 4 |
10 files changed, 734 insertions, 285 deletions
@@ -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 \ |