Commit d8bf914281 for perl

commit d8bf9142816e41a90243f7daed5e25c9701e2637
Author: Eric Herman <eric@freesa.org>
Date:   Thu Oct 22 08:13:26 2026 +0000

    Archive perldelta 5.45.4

diff --git a/MANIFEST b/MANIFEST
index 194213071a..1a6a0e9013 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5872,6 +5872,7 @@ pod/perl5440delta.pod			Perl changes in version 5.44.0
 pod/perl5451delta.pod			Perl changes in version 5.45.1
 pod/perl5452delta.pod			Perl changes in version 5.45.2
 pod/perl5453delta.pod			Perl changes in version 5.45.3
+pod/perl5454delta.pod			Perl changes in version 5.45.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 6692d14a56..cd9abf6e69 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -633,7 +633,7 @@ esac

 $spitshell >>$Makefile <<'!NO!SUBS!'

-perltoc_pod_prereqs = extra.pods pod/perl5454delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5455delta.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

@@ -1142,9 +1142,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/perl5454delta.pod: pod/perldelta.pod
-	$(RMS) pod/perl5454delta.pod
-	$(LNS) perldelta.pod pod/perl5454delta.pod
+pod/perl5455delta.pod: pod/perldelta.pod
+	$(RMS) pod/perl5455delta.pod
+	$(LNS) perldelta.pod pod/perl5455delta.pod

 extra.pods: $(MINIPERL_EXE)
 	-@test ! -f extra.pods || rm -f `cat extra.pods`
diff --git a/pod/.gitignore b/pod/.gitignore
index 70cdfb8705..98dacff058 100644
--- a/pod/.gitignore
+++ b/pod/.gitignore
@@ -47,7 +47,7 @@
 /roffitall

 # generated
-/perl5454delta.pod
+/perl5455delta.pod
 /perlapi.pod
 /perlintern.pod
 /perlmodlib.pod
diff --git a/pod/perl.pod b/pod/perl.pod
index 51d447145f..947cbbc18a 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -182,6 +182,7 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp

     perlhist            Perl history records
     perldelta           Perl changes since previous version
+    perl5454delta       Perl changes in version 5.45.4
     perl5453delta       Perl changes in version 5.45.3
     perl5452delta       Perl changes in version 5.45.2
     perl5451delta       Perl changes in version 5.45.1
diff --git a/pod/perl5454delta.pod b/pod/perl5454delta.pod
new file mode 100644
index 0000000000..31b9b4efce
--- /dev/null
+++ b/pod/perl5454delta.pod
@@ -0,0 +1,348 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5454delta - what is new for perl v5.45.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.45.3 release and the 5.45.4
+release.
+
+If you are upgrading from an earlier release such as 5.45.2, first read
+L<perl5453delta>, which describes differences between 5.45.2 and 5.45.3.
+
+=head1 Security
+
+=head2 CVE-2026-107401 Regex engine incorrectly skipped UTF8 characters
+
+A regular expression performing a greedy match of a UTF8 character could
+have incorrectly failed if the first attempt at a match was unsuccessful.
+Instead of skipping over all consecutive instances of that I<character>
+associated with the first attempt, all consecutive characters that had
+the same first I<byte> were skipped.
+
+[L<GH #24916|https://github.com/Perl/perl5/issues/24916>]
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Changes have been made to the "super-linear cache", which is used to avoid
+excessive backtracking in some regexes which include quantifiers on
+variable-length sub-patterns, such as C<(a|bc)*> and C<(ab+){2,}>. This
+change may reduce the amount of backtracking that takes place, and may
+reduce the amount of temporary memory used for the cache.
+
+=item *
+
+C<substr()> now updates the UTF-8 position cache correctly, avoiding
+repeated scans when accessing the same part of a string. [L<GH #24531|https://github.com/Perl/perl5/issues/24531>]
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Archive::Tar> has been upgraded from version 3.12 to 3.14.
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.224 to 2.225.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.224 to 2.225.
+
+=item *
+
+L<CPAN> has been upgraded from version 2.38 to 2.41.
+
+=item *
+
+L<Devel::PPPort> has been upgraded from version 3.74 to 3.75.
+
+=item *
+
+L<ExtUtils::PL2Bat> has been upgraded from version 0.005 to 0.006.
+
+=item *
+
+L<IO::Compress> has been upgraded from version 2.224 to 2.225.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20260924 to 5.20261022.
+
+=item *
+
+L<POSIX> has been upgraded from version 2.26 to 2.27.
+
+=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 Warnings
+
+Two warnings in C<malloc.c> which were not previously documented have been
+added to L<perldiag>.
+
+=over 4
+
+=item L<Unaligned "next" pointer in the free chain 0x% at 0x%|perldiag/"Unaligned "next" pointer in the free chain 0x% at 0x%">
+
+=item L<Unaligned pointer in the free chain 0x%|perldiag/"Unaligned pointer in the free chain 0x%">
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+The C<Perl_seed> function will now use the native entropy source
+C<sys$get_entropy> when available (OpenVMS 9.2 and later).
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+Locale thread-safety is now enabled by default for the next few v5.45
+development releases.
+
+This feature, introduced with default-off in v5.45.3, is never turned on
+for builds that don't have threads, and on platforms where perl believes
+that the locale handling is natively thread-safe.
+
+Otherwise, the feature is on by default during a portion of the
+remaining 5.45 development cycle, so as to test it in the field, but the
+intention is to make it opt-in for the official 5.46 release.  To turn
+it off, pass this to F<Configure>:
+
+ -Accflags=-DNO_EMULATE_THREAD_SAFE_LOCALES
+
+See L<perllocale/Multi-threaded operation>.
+
+
+=item *
+
+The inline function C<Perl_newSV_type> now only handles the SV types most
+commonly seen at runtime. C<Perl_newSV_type_generic> has been added as
+a non-inline function that can handle all SV types. This change reduces
+binary bloating and increases the chances of C<Perl_newSV_type> being
+successfully inlined.
+
+=item *
+
+When a shifted array is unshifted, C<Perl_av_extend_guts> used to perform
+a C<(key > *maxp - 10)> check and always reallocate. That check dates from
+Perl 3.0 and the rationale for it seems to have been lost to time. (It may
+have been to encourage array growth, but the general levers for doing so
+have changed significantly over time.)
+
+Always reallocating when it is not strictly necessary could cause Perl
+applications that repeatedly perform a mixture of C<shift>/C<push> operations
+(or similar) to suffer from unnecessary allocator thrashing.
+C<Perl_av_extend_guts> will now only reallocate if the array really is out
+of space and must be extended.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+The regular expression optimizer no longer rejects valid matches when a
+positive lookahead can match an empty string. For example,
+C</\A(?=a*)[0-9]a\z/> now matches C<"0a">.
+
+[L<GH #24943|https://github.com/Perl/perl5/issues/24943>]
+
+=item *
+
+General regular expression repeats clear captures in their bodies when
+matching zero repetitions, as optimized repeats do. Adding a no-op
+C<(?{})> code block no longer changes whether a backreference to a skipped
+optional group matches.
+
+[L<GH #8267|https://github.com/Perl/perl5/issues/8267>] [L<GH #18865|https://github.com/Perl/perl5/issues/18865>]
+
+=item *
+
+Negative lookahead and lookbehind assertions restore capture buffers after
+evaluating their bodies. Captures from failed assertion attempts no longer
+appear in a successful match or affect later backreferences and conditions.
+
+[L<GH #14387|https://github.com/Perl/perl5/issues/14387>] [L<GH #24946|https://github.com/Perl/perl5/issues/24946>]
+
+=item *
+
+The regular expression optimizer no longer uses the fixed-width repeat
+optimization for a body containing captures inside nested quantifiers.
+This prevents failed or backtracked iterations from leaving incorrect
+capture values. For example, C<"aa" =~ /(?:(aa){2})*/> now leaves C<$1>
+undefined.
+
+[L<GH #24945|https://github.com/Perl/perl5/issues/24945>]
+
+=item *
+
+Line number information is stored rather than discarded when an anonymous
+subroutine is encountered during compilation. This should improve the
+accuracy of line numbers emitted by diagnostic messages and `caller()`
+for code following an anonymous subroutine declaration.
+
+Note that (i) this change could break any tests that hardcode the
+less-accurate line numbers (ii) further improvements to line number
+accuracy may follow within this development cycle.
+
+[L<GH #24396|https://github.com/Perl/perl5/issues/24396>]
+
+=item *
+
+Regular expression compilation could have mistaken the width of a
+quantified subpattern (e.g. C<b{2}>) when a potentially infinite
+qualifier (e.g. C<+>) occurred earlier in the pattern. This could lead to
+viable match candidates at the start of the target string being missed.
+
+[L<GH #24915|https://github.com/Perl/perl5/issues/24915>]
+
+=item *
+
+Following an unsuccessful earlier non-greedy match, a regular expression
+intended to perform a separate I<greedy> match could have instead
+performed a I<non-greedy> match because of skipped flag clearance.
+
+[L<GH #24926|https://github.com/Perl/perl5/issues/24926>]
+
+=item *
+
+An anchored regular expressions starting with a repeating character could
+have incorrectly skipped later instances of that character if the match
+contained a C<(*SKIP)> and was initially unsuccessful.
+
+=item *
+
+A anchored regular expression needing zero (or more) characters for a
+successful match could have failed because the search space was
+incorrectly truncated.
+
+[L<GH #24944|https://github.com/Perl/perl5/issues/24944>]
+
+=item *
+
+A regular expression performing a case insensitive match with Unicode
+rules could fail to match correctly when the ability of folding
+characters to both decrease I<minlen> and increase I<maxlen> at the
+same time was not taken into account.
+
+=item *
+
+The offset of a \K is no longer narrowed on rollback at an offset >2GiB.
+
+=item *
+
+In some cases warnings that occurred while using unpack on an invalid
+UTF-8 marked string would result in an invalid free.  [L<GH #24913|https://github.com/Perl/perl5/issues/24913>]
+
+=item *
+
+Builds with C<PERL_NO_COW> could crash when modifying or freeing boolean
+values. This has been fixed. [L<GH #19987|https://github.com/Perl/perl5/issues/19987>]
+
+=item *
+
+C<goto> within a defer block should now work more consistently. [L<GH #19240|https://github.com/Perl/perl5/issues/19240>]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.45.4 represents approximately 4 weeks of development since Perl
+5.45.3 and contains approximately 12,000 lines of changes across 210 files
+from 27 authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 5,600 lines of changes to 120 .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.45.4:
+
+Alin Iacob, Andreas König, Andrew Hewus Fresh, Brad Smith, Branislav
+Zahradník, Chris 'BinGOs' Williams, Craig A. Berry, Cyncrovee, Dan Book,
+Darafei Praliaskouski, David Mitchell, Eric Herman, Frank,
+GlobalTechStrategics, James E Keenan, Karl Williamson, Leon Timmermans,
+Lukas Mai, Paul Evans, Paul Marquess, Philippe Bruhat (BooK), Richard Leach,
+Sevan Janiyan, TAKAI Kousuke, Tigranuhy Grigoryan, 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<https://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 573a58b89c..f53ce3c50e 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,88 +2,177 @@

 =head1 NAME

-perldelta - what is new for perl v5.45.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.45.5

 =head1 DESCRIPTION

-This document describes differences between the 5.45.3 release and the 5.45.4
+This document describes differences between the 5.45.4 release and the 5.45.5
 release.

-If you are upgrading from an earlier release such as 5.45.2, first read
-L<perl5453delta>, which describes differences between 5.45.2 and 5.45.3.
+If you are upgrading from an earlier release such as 5.45.3, first read
+L<perl5454delta>, which describes differences between 5.45.3 and 5.45.4.
+
+=head1 Notice
+
+XXX Any important notices here
+
+=head1 Core Enhancements
+
+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.
+
+[ List each enhancement as a =head2 entry ]

 =head1 Security

-=head2 CVE-2026-107401 Regex engine incorrectly skipped UTF8 characters
+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.
+
+[ List each security issue as a =head2 entry ]
+
+=head1 Incompatible Changes
+
+XXX For a release on a stable branch, this section aspires to be:
+
+    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.
+
+[ List each incompatible change as a =head2 entry ]
+
+=head1 Deprecations
+
+XXX Any deprecated features, syntax, modules etc. should be listed here.
+
+=head2 Module removals
+
+XXX Remove this section if not applicable.

-A regular expression performing a greedy match of a UTF8 character could
-have incorrectly failed if the first attempt at a match was unsuccessful.
-Instead of skipping over all consecutive instances of that I<character>
-associated with the first attempt, all consecutive characters that had
-the same first I<byte> were skipped.
+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.

-[L<GH #24916|https://github.com/Perl/perl5/issues/24916>]
+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.
+
+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
+
+=item XXX
+
+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.
+
+=back
+
+[ List each other deprecation as a =head2 entry ]

 =head1 Performance Enhancements

-=over 4
+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 ]

-Changes have been made to the "super-linear cache", which is used to avoid
-excessive backtracking in some regexes which include quantifiers on
-variable-length sub-patterns, such as C<(a|bc)*> and C<(ab+){2,}>. This
-change may reduce the amount of backtracking that takes place, and may
-reduce the amount of temporary memory used for the cache.
+=over 4

 =item *

-C<substr()> now updates the UTF-8 position cache correctly, avoiding
-repeated scans when accessing the same part of a string. [L<GH #24531|https://github.com/Perl/perl5/issues/24531>]
+XXX

 =back

 =head1 Modules and Pragmata

-=head2 Updated Modules and Pragmata
+XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
+go here. If L<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.
+
+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.)
+
+[ Within each section, list entries as an =item entry ]
+
+=head2 New Modules and Pragmata

 =over 4

 =item *

-L<Archive::Tar> has been upgraded from version 3.12 to 3.14.
+XXX Remove this section if F<Porting/corelist-perldelta.pl> did not add any content here.

-=item *
+=back
+
+=head2 Updated Modules and Pragmata

-L<Compress::Raw::Bzip2> has been upgraded from version 2.224 to 2.225.
+=over 4

 =item *

-L<Compress::Raw::Zlib> has been upgraded from version 2.224 to 2.225.
+L<XXX> has been upgraded from version A.xx to B.yy.

-=item *
+XXX If there was something important to note about this change, include that here.

-L<CPAN> has been upgraded from version 2.38 to 2.41.
+=back

-=item *
+=head2 Removed Modules and Pragmata

-L<Devel::PPPort> has been upgraded from version 3.74 to 3.75.
+=over 4

 =item *

-L<ExtUtils::PL2Bat> has been upgraded from version 0.005 to 0.006.
+XXX Remove this section if F<Porting/corelist-perldelta.pl> did not add any content here.

-=item *
+=back

-L<IO::Compress> has been upgraded from version 2.224 to 2.225.
+=head1 Documentation

-=item *
+XXX Changes to files in F<pod/> go here. Consider grouping entries by
+file and be sure to link to the appropriate page, e.g. L<perlfunc>.
+
+=head2 New Documentation
+
+XXX Changes which create B<new> files in F<pod/> go here.
+
+=head3 L<XXX>
+
+XXX Description of the purpose of the new file here

-L<Module::CoreList> has been upgraded from version 5.20260924 to 5.20261022.
+=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>.
+
+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.
+
+Additionally, the following selected changes have been made:
+
+=head3 L<XXX>
+
+=over 4

 =item *

-L<POSIX> has been upgraded from version 2.26 to 2.27.
+XXX Description of the change here

 =back

@@ -93,222 +182,231 @@ 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 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.
+
 =head2 New Diagnostics

-=head3 New Warnings
+XXX Newly added diagnostic messages go under here, separated into L</New Errors>
+and L</New Warnings>

-Two warnings in C<malloc.c> which were not previously documented have been
-added to L<perldiag>.
+=head3 New Errors

 =over 4

-=item L<Unaligned "next" pointer in the free chain 0x% at 0x%|perldiag/"Unaligned "next" pointer in the free chain 0x% at 0x%">
+=item *

-=item L<Unaligned pointer in the free chain 0x%|perldiag/"Unaligned pointer in the free chain 0x%">
+XXX L<message|perldiag/"message">

 =back

-=head1 Platform Support
-
-=head2 Platform-Specific Notes
+=head3 New Warnings

 =over 4

-=item VMS
+=item *

-The C<Perl_seed> function will now use the native entropy source
-C<sys$get_entropy> when available (OpenVMS 9.2 and later).
+XXX L<message|perldiag/"message">

 =back

-=head1 Internal Changes
+=head2 Changes to Existing Diagnostics
+
+XXX Changes (i.e. rewording) of diagnostic messages go here

 =over 4

 =item *

-Locale thread-safety is now enabled by default for the next few v5.45
-development releases.
+XXX Describe change here
+
+=back

-This feature, introduced with default-off in v5.45.3, is never turned on
-for builds that don't have threads, and on platforms where perl believes
-that the locale handling is natively thread-safe.
+=head1 Utility Changes

-Otherwise, the feature is on by default during a portion of the
-remaining 5.45 development cycle, so as to test it in the field, but the
-intention is to make it opt-in for the official 5.46 release.  To turn
-it off, pass this to F<Configure>:
+XXX Changes to installed programs such as F<perldoc> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.

- -Accflags=-DNO_EMULATE_THREAD_SAFE_LOCALES
+[ List utility changes as a =head2 entry for each utility and =item
+entries for each change
+Use F<XXX> with program names to get proper documentation linking. ]

-See L<perllocale/Multi-threaded operation>.
+=head2 F<XXX>

+=over 4

 =item *

-The inline function C<Perl_newSV_type> now only handles the SV types most
-commonly seen at runtime. C<Perl_newSV_type_generic> has been added as
-a non-inline function that can handle all SV types. This change reduces
-binary bloating and increases the chances of C<Perl_newSV_type> being
-successfully inlined.
+XXX

-=item *
+=back

-When a shifted array is unshifted, C<Perl_av_extend_guts> used to perform
-a C<(key > *maxp - 10)> check and always reallocate. That check dates from
-Perl 3.0 and the rationale for it seems to have been lost to time. (It may
-have been to encourage array growth, but the general levers for doing so
-have changed significantly over time.)
+=head1 Configuration and Compilation

-Always reallocating when it is not strictly necessary could cause Perl
-applications that repeatedly perform a mixture of C<shift>/C<push> operations
-(or similar) to suffer from unnecessary allocator thrashing.
-C<Perl_av_extend_guts> will now only reallocate if the array really is out
-of space and must be extended.
+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.
+
+[ List changes as an =item entry ].
+
+=over 4
+
+=item *
+
+XXX

 =back

-=head1 Selected Bug Fixes
+=head1 Testing
+
+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.
+
+XXX If there were no significant test changes, say this:
+
+Tests were added and changed to reflect the other additions and changes
+in this release.
+
+XXX If instead there were significant changes, say this:
+
+Tests were added and changed to reflect the other additions and
+changes in this release. Furthermore, these significant changes were
+made:
+
+[ List each test improvement as an =item entry ]

 =over 4

 =item *

-The regular expression optimizer no longer rejects valid matches when a
-positive lookahead can match an empty string. For example,
-C</\A(?=a*)[0-9]a\z/> now matches C<"0a">.
+XXX

-[L<GH #24943|https://github.com/Perl/perl5/issues/24943>]
+=back

-=item *
+=head1 Platform Support

-General regular expression repeats clear captures in their bodies when
-matching zero repetitions, as optimized repeats do. Adding a no-op
-C<(?{})> code block no longer changes whether a backreference to a skipped
-optional group matches.
+XXX Any changes to platform support should be listed in the sections below.

-[L<GH #8267|https://github.com/Perl/perl5/issues/8267>] [L<GH #18865|https://github.com/Perl/perl5/issues/18865>]
+[ Within the sections, list each platform as an =item entry with specific
+changes as paragraphs below it. ]

-=item *
+=head2 New Platforms

-Negative lookahead and lookbehind assertions restore capture buffers after
-evaluating their bodies. Captures from failed assertion attempts no longer
-appear in a successful match or affect later backreferences and conditions.
+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.

-[L<GH #14387|https://github.com/Perl/perl5/issues/14387>] [L<GH #24946|https://github.com/Perl/perl5/issues/24946>]
+=over 4

-=item *
+=item XXX-some-platform

-The regular expression optimizer no longer uses the fixed-width repeat
-optimization for a body containing captures inside nested quantifiers.
-This prevents failed or backtracked iterations from leaving incorrect
-capture values. For example, C<"aa" =~ /(?:(aa){2})*/> now leaves C<$1>
-undefined.
+XXX

-[L<GH #24945|https://github.com/Perl/perl5/issues/24945>]
+=back

-=item *
+=head2 Discontinued Platforms

-Line number information is stored rather than discarded when an anonymous
-subroutine is encountered during compilation. This should improve the
-accuracy of line numbers emitted by diagnostic messages and `caller()`
-for code following an anonymous subroutine declaration.
+XXX List any platforms that this version of perl no longer compiles on.

-Note that (i) this change could break any tests that hardcode the
-less-accurate line numbers (ii) further improvements to line number
-accuracy may follow within this development cycle.
+=over 4

-[L<GH #24396|https://github.com/Perl/perl5/issues/24396>]
+=item XXX-some-platform

-=item *
+XXX
+
+=back

-Regular expression compilation could have mistaken the width of a
-quantified subpattern (e.g. C<b{2}>) when a potentially infinite
-qualifier (e.g. C<+>) occurred earlier in the pattern. This could lead to
-viable match candidates at the start of the target string being missed.
+=head2 Platform-Specific Notes

-[L<GH #24915|https://github.com/Perl/perl5/issues/24915>]
+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.

-=item *
+=over 4

-Following an unsuccessful earlier non-greedy match, a regular expression
-intended to perform a separate I<greedy> match could have instead
-performed a I<non-greedy> match because of skipped flag clearance.
+=item XXX-some-platform

-[L<GH #24926|https://github.com/Perl/perl5/issues/24926>]
+XXX

-=item *
+=back

-An anchored regular expressions starting with a repeating character could
-have incorrectly skipped later instances of that character if the match
-contained a C<(*SKIP)> and was initially unsuccessful.
+=head1 Internal Changes

-=item *
+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.

-A anchored regular expression needing zero (or more) characters for a
-successful match could have failed because the search space was
-incorrectly truncated.
+[ List each change as an =item entry ]

-[L<GH #24944|https://github.com/Perl/perl5/issues/24944>]
+=over 4

 =item *

-A regular expression performing a case insensitive match with Unicode
-rules could fail to match correctly when the ability of folding
-characters to both decrease I<minlen> and increase I<maxlen> at the
-same time was not taken into account.
+XXX

-=item *
+=back

-The offset of a \K is no longer narrowed on rollback at an offset >2GiB.
+=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>.
+
+XXX Include references to GitHub issues and PRs as: [GH #12345] and the release
+manager will later use a regex to expand these into links.
+
+[ List each fix as an =item entry ]

-In some cases warnings that occurred while using unpack on an invalid
-UTF-8 marked string would result in an invalid free.  [L<GH #24913|https://github.com/Perl/perl5/issues/24913>]
+=over 4

 =item *

-Builds with C<PERL_NO_COW> could crash when modifying or freeing boolean
-values. This has been fixed. [L<GH #19987|https://github.com/Perl/perl5/issues/19987>]
+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 *

-C<goto> within a defer block should now work more consistently. [L<GH #19240|https://github.com/Perl/perl5/issues/19240>]
+XXX

 =back

-=head1 Acknowledgements
+=head1 Errata From Previous Releases

-Perl 5.45.4 represents approximately 4 weeks of development since Perl
-5.45.3 and contains approximately 12,000 lines of changes across 210 files
-from 27 authors.
+=over 4

-Excluding auto-generated files, documentation and release tools, there were
-approximately 5,600 lines of changes to 120 .pm, .t, .c and .h files.
+=item *

-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.45.4:
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the F<perldelta> of a previous release.

-Alin Iacob, Andreas König, Andrew Hewus Fresh, Brad Smith, Branislav
-Zahradník, Chris 'BinGOs' Williams, Craig A. Berry, Cyncrovee, Dan Book,
-Darafei Praliaskouski, David Mitchell, Eric Herman, Frank,
-GlobalTechStrategics, James E Keenan, Karl Williamson, Leon Timmermans,
-Lukas Mai, Paul Evans, Paul Marquess, Philippe Bruhat (BooK), Richard Leach,
-Sevan Janiyan, TAKAI Kousuke, Tigranuhy Grigoryan, Tony Cook, Yves Orton.
+=back

-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 Obituary
+
+XXX If any significant core contributor or member of the CPAN community has
+died, add a short obituary here.
+
+=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.45.4..HEAD

 =head1 Reporting Bugs

diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index 2d17ad1805..7b14ecc234 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -293,7 +293,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
 extra.pods : miniperl
 	@ @extra_pods.com

-PERLDELTA_CURRENT = [.pod]perl5454delta.pod
+PERLDELTA_CURRENT = [.pod]perl5455delta.pod

 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
 	Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index d63c70e559..cada5fd805 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1648,7 +1648,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\perl5454delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5455delta.pod
 	$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
 	$(MINIPERL) -I..\lib ..\autodoc.pl -c "win32\$(CONFIG_H)" ..
 	$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1748,7 +1748,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 \
-	    perl5454delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5455delta.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 42ae2ee012..abde1e73d5 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1175,7 +1175,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\perl5454delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5455delta.pod
 	cd ..\win32
 	$(PERLEXE) $(PL2BAT) $(UTILS)
 	$(MINIPERL) -I..\lib ..\autodoc.pl -c "win32\$(CONFIG_H)" ..
@@ -1276,7 +1276,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 \
-	    perl5454delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5455delta.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 e8996fdeb9..1ce2d8e40c 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -93,6 +93,7 @@ POD = perl.pod	\
 	perl5452delta.pod	\
 	perl5453delta.pod	\
 	perl5454delta.pod	\
+	perl5455delta.pod	\
 	perl561delta.pod	\
 	perl56delta.pod	\
 	perl581delta.pod	\
@@ -286,6 +287,7 @@ MAN = perl.man	\
 	perl5452delta.man	\
 	perl5453delta.man	\
 	perl5454delta.man	\
+	perl5455delta.man	\
 	perl561delta.man	\
 	perl56delta.man	\
 	perl581delta.man	\
@@ -479,6 +481,7 @@ HTML = perl.html	\
 	perl5452delta.html	\
 	perl5453delta.html	\
 	perl5454delta.html	\
+	perl5455delta.html	\
 	perl561delta.html	\
 	perl56delta.html	\
 	perl581delta.html	\
@@ -672,6 +675,7 @@ TEX = perl.tex	\
 	perl5452delta.tex	\
 	perl5453delta.tex	\
 	perl5454delta.tex	\
+	perl5455delta.tex	\
 	perl561delta.tex	\
 	perl56delta.tex	\
 	perl581delta.tex	\