Commit 0745d930dc for perl

commit 0745d930dc83f5ce0b9da9fcf87e6bc7860bfaca
Author: Philippe Bruhat (BooK) <book@cpan.org>
Date:   Thu Sep 24 09:54:49 2026 +0200

    Archive perldelta 5.45.3

diff --git a/MANIFEST b/MANIFEST
index 561f8b90d0..178d7090c7 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5872,6 +5872,7 @@ pod/perl5423delta.pod			Perl changes in version 5.42.3
 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/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 d8c8082868..2aca35a26b 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -633,7 +633,7 @@ esac

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

-perltoc_pod_prereqs = extra.pods pod/perl5453delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5454delta.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/perl5453delta.pod: pod/perldelta.pod
-	$(RMS) pod/perl5453delta.pod
-	$(LNS) perldelta.pod pod/perl5453delta.pod
+pod/perl5454delta.pod: pod/perldelta.pod
+	$(RMS) pod/perl5454delta.pod
+	$(LNS) perldelta.pod pod/perl5454delta.pod

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

 # generated
-/perl5453delta.pod
+/perl5454delta.pod
 /perlapi.pod
 /perlintern.pod
 /perlmodlib.pod
diff --git a/pod/perl.pod b/pod/perl.pod
index 0a4e0a5f2f..51d447145f 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
+    perl5453delta       Perl changes in version 5.45.3
     perl5452delta       Perl changes in version 5.45.2
     perl5451delta       Perl changes in version 5.45.1
     perl5440delta       Perl changes in version 5.44.0
diff --git a/pod/perl5453delta.pod b/pod/perl5453delta.pod
new file mode 100644
index 0000000000..602cc87064
--- /dev/null
+++ b/pod/perl5453delta.pod
@@ -0,0 +1,427 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5453delta - what is new for perl v5.45.3
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.45.2 release and the 5.45.3
+release.
+
+If you are upgrading from an earlier release such as 5.45.1, first read
+L<perl5452delta>, which describes differences between 5.45.1 and 5.45.2.
+
+=head1 Core Enhancements
+
+=head2 Undef-aware equality operators
+
+Four new operators have been added, which are similar to the regular equality operators except for their handling of C<undef>. Whereas the regular operators treat C<undef> as equal to the empty string or the number zero, these operators consider C<undef> to be a distinct value, equal to itself, but unequal to any defined value.
+
+    if( $x equ $y ) {
+      # $x and $y are both undef, or
+      # $x and $y are both defined and equal
+      ...
+    }
+
+This is approximately equal to the following, except that it is more efficient and avoids duplicate evaluation of operands or fetching of tied scalar values:
+
+    if( (!defined $x and !defined $y) or
+      (defined $x and defined $y and $x eq $y) ) {
+      ...
+    }
+
+For more detail, see L<perlop/Equality Operators>.
+
+=head2 Unicode 18.0 is supported
+
+Unicode's blog post about it is
+L<https://blog.unicode.org/2026/09/announcing-unicode-standard-version-180.html>.
+A more formal summary of changes is at
+L<https://www.unicode.org/versions/Unicode18.0.0>.  Some changes not
+readily visible at those places include changes to what is considered a
+grapheme in some South Asian languages, and adding support for some
+properties of historical East Asian languages.
+
+=head2 Threads may be Configured to have locale thread-safety
+
+The Perl interpreter may now be Configured to emulate thread-safety in
+locale handling on systems that lack it.  Strictly speaking, this is
+a change to L<perl's internals|/Internal Changes>, but we're
+highlighting it here as well because it increases the portability
+possibilities of your locale-aware code on multi-threaded builds of
+perl.
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Common list slices of C<caller> return values will be more efficient.
+Specifically, C<caller> will output only the required values indicated by
+slice subscript(s) with no actual slicing being necessary.
+
+This has been implemented such that the OP type of C<caller> need not
+change and with minimal modification to the function internals, but
+consequently not every conceivable slice can be optimized.
+
+The most common slices seen in core and on CPAN are supported.
+Specifically, any of the following single subscripts
+(e.g. C<(caller $depth)[3]>) or an ascending run of these subscripts
+(e.g. C<(caller $depth)[8,9,10]>) will be optimized:
+
+=over 8
+
+=item *
+
+0 - package
+
+=item *
+
+1 - filename
+
+=item *
+
+2 - line
+
+=item *
+
+3 - subroutine
+
+=item *
+
+8 - hints
+
+=item *
+
+9 - bit mask
+
+=item *
+
+10 - hint hash
+
+=back
+
+[L<GH #23369|https://github.com/Perl/perl5/issues/23369>]
+
+=item *
+
+The regular expression trie optimizer has been reworked to compile trie
+transitions as octets.  Large alternations can now avoid work that previously
+grew with both the number of alternatives and the amount of text skipped
+before a match, while preserving the existing matching semantics for native
+and UTF-8 strings.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.90 to 1.92.
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.218 to 2.224.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.222 to 2.224.
+
+=item *
+
+L<CPAN::Meta> has been upgraded from version 2.150013 to 2.150015.
+
+=item *
+
+L<Devel::PPPort> has been upgraded from version 3.73 to 3.74.
+
+=item *
+
+L<IO::Compress> has been upgraded from version 2.223 to 2.224.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20260722 to 5.20260924.
+
+=item *
+
+L<Opcode> has been upgraded from version 1.72 to 1.73.
+
+=item *
+
+L<overload> has been upgraded from version 1.40 to 1.42.
+
+=item *
+
+L<podlators> has been upgraded from version v6.1.0 to v6.1.1.
+
+=item *
+
+L<Test::Simple> has been upgraded from version 1.302222 to 1.302225.
+
+=item *
+
+L<threads> has been upgraded from version 2.46 to 2.47.
+
+=item *
+
+L<warnings> has been upgraded from version 1.78 to 1.79.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+The default hash algorithm is now SipHash-1-3 on all platforms. It used to be
+Zaphod32 on 32-bit perls built without support for 64-bit integers. If you want
+to keep using Zaphod32, configure perl with:
+
+    sh Configure -Accflags=-DPERL_HASH_FUNC_ZAPHOD32
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item MacOS (Darwin)
+
+Add support for building with Command Line Tools for Xcode 27.0
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+The regeneration targets have been expanded.  C<regen_all> (and
+C<regen-all>) now builds Perl, runs the standard, parser, keyword, Unicode,
+and metadata regeneration steps, and performs a final build.  Separate
+targets are available for keyword, inversion-list, and character-class
+generation, with platform-specific makefile support and clearer diagnostics
+from F<t/porting/regen.t>.  The regeneration scripts also accept
+C<REGEN_VERBOSE=1> as an alternative to C<-v>.
+
+=item *
+
+The Unicode table generators have been optimized, reducing the time and peak
+memory needed to regenerate Unicode data.  On a full Unicode C<mktables>
+workload, generation is approximately 23% faster and uses 17% less peak
+memory.  The MPH squeeze path is also substantially faster, at the cost of a
+small increase in the generated data size.
+
+=item *
+
+During regex compilation, C<S_reg> will attempt to flatten nested BRANCH
+structures, in an attempt to give the TRIE optimizer more alternations
+to consider. The intent is that patterns that were previously compiled
+into two or more adjacent TRIE nodes might now get compiled into a single
+(or at least, fewer) TRIE node(s).
+
+=item *
+
+Threads may be Configured to have locale thread-safety
+
+The Perl interpreter may now be Configured to emulate thread-safety in
+locale handling on systems that lack it.  To do this, pass this to
+F<Configure>:
+
+ -Accflags=-DEMULATE_THREAD_SAFE_LOCALES
+
+This option will be ignored on builds that don't have threads, and on
+platforms where perl believes that the locale handling is thread-safe
+natively.
+
+See L<perllocale/Multi-threaded operation>.
+
+=item *
+
+The regular expression compiler's TRIE implementation has been changed to use
+the octets of the UTF-8 representation of the pattern in its internal table
+structures. Previous versions used a trie based on code points, which had
+various side effects that required additional complexity, especially because
+of Unicode's potentially very large alphabet. By switching to an octet-based
+representation, a large amount of this complexity could be removed, making
+the new code faster, easier to maintain, and easier to prove correct.
+
+Most users should not notice this change, except perhaps a slight performance
+improvement.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+On Windows, C<fork()> now preserves the parent's locale settings in the
+child.  Previously, a child could use locale-specific decimal separators
+without C<use locale>, and decimal literals compiled in the child could
+lose their fractional part.  [GH #24166]
+
+=item *
+
+Since 5.28.0, the numeric value of a string would sometimes not get reset
+after the string was assigned to as part of a string concatenation. It
+required the following circumstances to all be present for the bug to
+manifest:
+
+=over
+
+=item *
+
+the string variable must be zero length and have just been used in numeric
+context, e.g. C<$s = ""; $n = $s + 1;>
+
+=item *
+
+then the variable must be the target of a string concatenation and also
+be used on the RHS, e.g.C<$s = "9$s";>
+
+=item *
+
+then if the string is used in numeric context again, the bug caused the
+old numeric value of 0 to be returned, rather than numifying the new
+string value and returning 9.
+
+=back
+
+[L<GH #24763|https://github.com/Perl/perl5/issues/24763>]
+
+=item *
+
+builtin::reftype() and builtin::refaddr() now call set magic for their
+output when their argument isn't a reference.  This would prevent
+propagation of the result if either function was called like
+C<$magical_lexical = reftype($maybe_ref)>.
+
+[L<GH #24634|https://github.com/Perl/perl5/issues/24634>]
+
+=item *
+
+Parsing an invalid signature that gives a slurpy parameter a default value no
+longer crashes when parser debugging is enabled.
+
+[L<GH #24691|https://github.com/Perl/perl5/issues/24691>]
+
+=item *
+
+Copy magic to the new elements when splice() inserts elements into a
+non-tied magical array.  In particular, assignment to an element of an
+C<@ISA> array where the element was added by splice() is now correctly
+recognized when performing method lookup.
+
+[L<GH #24659|https://github.com/Perl/perl5/issues/24659>]
+
+=item *
+
+Compilation of C<if>/C<elsif> or C<do> blocks now more reliably includes
+the construction of a new scope when C<my>, C<our>, C<state> or C<defer>
+keywords are present. Previously, a new scope might not have been correctly
+applied to very short blocks. This would have been noticeable through
+object destructors or C<defer> blocks running at the wrong time (when
+some outer scope was exited).
+
+The same logic now also applies to `else` blocks, which previously always
+introduced a new runtime scope, even if the contents of the block didn't
+need it. (That was a workaround to improve the accuracy of line number
+reporting for the first statement in the block, which should no longer
+be necessary.)
+
+[L<GH #23867|https://github.com/Perl/perl5/issues/23867>]
+
+=item *
+
+Empty C<cond_expr> (C<if>/C<elsif> and C<else>) branches will not be
+optimized away when the context of the C<stub> OP is unknown. (Usually
+when the conditional expression is immediately before an implicit
+subroutine return.) In this situation, the C<stub> OP must be retained
+so that C<&PL_sv_undef> can be pushed onto the stack, which will be
+needed if the call site has scalar context.
+
+[L<GH #23867|https://github.com/Perl/perl5/issues/23867>]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.45.3 represents approximately 5 weeks of development since Perl
+5.45.2 and contains approximately 230,000 lines of changes across 610 files
+from 25 authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 41,000 lines of changes to 400 .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.3:
+
+Branislav Zahradník, Chad Granum, David Mitchell, Dina Tagantseva, James E
+Keenan, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Nick
+Johnston, Paul Evans, Paul Marquess, Philippe Bruhat (BooK), Richard Leach,
+Russ Allbery, Scott Baker, Sevan Janiyan, Shlomi Fish, Sisyphus, TAKAI
+Kousuke, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yudai Takada, 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 9cd7197a88..9e353a802f 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,392 +2,411 @@

 =head1 NAME

-perldelta - what is new for perl v5.45.3
+[ 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.4

 =head1 DESCRIPTION

-This document describes differences between the 5.45.2 release and the 5.45.3
+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.1, first read
-L<perl5452delta>, which describes differences between 5.45.1 and 5.45.2.
+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 Notice
+
+XXX Any important notices here

 =head1 Core Enhancements

-=head2 Undef-aware equality operators
+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.

-Four new operators have been added, which are similar to the regular equality operators except for their handling of C<undef>. Whereas the regular operators treat C<undef> as equal to the empty string or the number zero, these operators consider C<undef> to be a distinct value, equal to itself, but unequal to any defined value.
+[ List each enhancement as a =head2 entry ]

-    if( $x equ $y ) {
-      # $x and $y are both undef, or
-      # $x and $y are both defined and equal
-      ...
-    }
+=head1 Security

-This is approximately equal to the following, except that it is more efficient and avoids duplicate evaluation of operands or fetching of tied scalar values:
+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.

-    if( (!defined $x and !defined $y) or
-      (defined $x and defined $y and $x eq $y) ) {
-      ...
-    }
+[ List each security issue as a =head2 entry ]

-For more detail, see L<perlop/Equality Operators>.
+=head1 Incompatible Changes

-=head2 Unicode 18.0 is supported
+XXX For a release on a stable branch, this section aspires to be:

-Unicode's blog post about it is
-L<https://blog.unicode.org/2026/09/announcing-unicode-standard-version-180.html>.
-A more formal summary of changes is at
-L<https://www.unicode.org/versions/Unicode18.0.0>.  Some changes not
-readily visible at those places include changes to what is considered a
-grapheme in some South Asian languages, and adding support for some
-properties of historical East Asian languages.
+    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.

-=head2 Threads may be Configured to have locale thread-safety
+[ List each incompatible change as a =head2 entry ]

-The Perl interpreter may now be Configured to emulate thread-safety in
-locale handling on systems that lack it.  Strictly speaking, this is
-a change to L<perl's internals|/Internal Changes>, but we're
-highlighting it here as well because it increases the portability
-possibilities of your locale-aware code on multi-threaded builds of
-perl.
+=head1 Deprecations

-=head1 Performance Enhancements
+XXX Any deprecated features, syntax, modules etc. should be listed here.

-=over 4
+=head2 Module removals

-=item *
+XXX Remove this section if not applicable.

-Common list slices of C<caller> return values will be more efficient.
-Specifically, C<caller> will output only the required values indicated by
-slice subscript(s) with no actual slicing being necessary.
+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.

-This has been implemented such that the OP type of C<caller> need not
-change and with minimal modification to the function internals, but
-consequently not every conceivable slice can be optimized.
+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.

-The most common slices seen in core and on CPAN are supported.
-Specifically, any of the following single subscripts
-(e.g. C<(caller $depth)[3]>) or an ascending run of these subscripts
-(e.g. C<(caller $depth)[8,9,10]>) will be optimized:
+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 8
+=over

-=item *
+=item XXX

-0 - package
+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

-1 - filename
+[ List each other deprecation as a =head2 entry ]

-=item *
+=head1 Performance Enhancements

-2 - line
+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 ]

-3 - subroutine
+=over 4

 =item *

-8 - hints
+XXX

-=item *
+=back

-9 - bit mask
+=head1 Modules and Pragmata

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

-10 - hint hash
+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.)

-=back
+[ Within each section, list entries as an =item entry ]
+
+=head2 New Modules and Pragmata

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

 =item *

-The regular expression trie optimizer has been reworked to compile trie
-transitions as octets.  Large alternations can now avoid work that previously
-grew with both the number of alternatives and the amount of text skipped
-before a match, while preserving the existing matching semantics for native
-and UTF-8 strings.
+XXX Remove this section if F<Porting/corelist-perldelta.pl> did not add any content here.

 =back

-=head1 Modules and Pragmata
-
 =head2 Updated Modules and Pragmata

 =over 4

 =item *

-L<B::Deparse> has been upgraded from version 1.90 to 1.92.
+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<Compress::Raw::Bzip2> has been upgraded from version 2.218 to 2.224.
+=back

-=item *
+=head2 Removed Modules and Pragmata

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

 =item *

-L<CPAN::Meta> has been upgraded from version 2.150013 to 2.150015.
+XXX Remove this section if F<Porting/corelist-perldelta.pl> did not add any content here.

-=item *
+=back

-L<Devel::PPPort> has been upgraded from version 3.73 to 3.74.
+=head1 Documentation

-=item *
+XXX Changes to files in F<pod/> go here. Consider grouping entries by
+file and be sure to link to the appropriate page, e.g. L<perlfunc>.

-L<IO::Compress> has been upgraded from version 2.223 to 2.224.
+=head2 New Documentation

-=item *
+XXX Changes which create B<new> files in F<pod/> go here.

-L<Module::CoreList> has been upgraded from version 5.20260722 to 5.20260924.
+=head3 L<XXX>

-=item *
+XXX Description of the purpose of the new file here

-L<Opcode> has been upgraded from version 1.72 to 1.73.
+=head2 Changes to Existing Documentation

-=item *
+We have attempted to update the documentation to reflect the changes
+listed in this document. If you find any we have missed, open an issue
+at L<https://github.com/Perl/perl5/issues>.

-L<overload> has been upgraded from version 1.40 to 1.42.
+XXX Changes which significantly change existing files in F<pod/> go here.
+However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
+section.

-=item *
+Additionally, the following selected changes have been made:
+
+=head3 L<XXX>

-L<podlators> has been upgraded from version v6.1.0 to v6.1.1.
+=over 4

 =item *

-L<Test::Simple> has been upgraded from version 1.302222 to 1.302225.
+XXX Description of the change here

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

-L<threads> has been upgraded from version 2.46 to 2.47.
+XXX Newly added diagnostic messages go under here, separated into L</New Errors>
+and L</New Warnings>
+
+=head3 New Errors
+
+=over 4

 =item *

-L<warnings> has been upgraded from version 1.78 to 1.79.
+XXX L<message|perldiag/"message">

 =back

-=head1 Configuration and Compilation
+=head3 New Warnings

 =over 4

 =item *

-The default hash algorithm is now SipHash-1-3 on all platforms. It used to be
-Zaphod32 on 32-bit perls built without support for 64-bit integers. If you want
-to keep using Zaphod32, configure perl with:
-
-    sh Configure -Accflags=-DPERL_HASH_FUNC_ZAPHOD32
+XXX L<message|perldiag/"message">

 =back

-=head1 Platform Support
+=head2 Changes to Existing Diagnostics

-=head2 Platform-Specific Notes
+XXX Changes (i.e. rewording) of diagnostic messages go here

 =over 4

-=item MacOS (Darwin)
+=item *

-Add support for building with Command Line Tools for Xcode 27.0
+XXX Describe change here

 =back

-=head1 Internal Changes
+=head1 Utility Changes
+
+XXX Changes to installed programs such as F<perldoc> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
+
+[ List utility changes as a =head2 entry for each utility and =item
+entries for each change
+Use F<XXX> with program names to get proper documentation linking. ]
+
+=head2 F<XXX>

 =over 4

 =item *

-The regeneration targets have been expanded.  C<regen_all> (and
-C<regen-all>) now builds Perl, runs the standard, parser, keyword, Unicode,
-and metadata regeneration steps, and performs a final build.  Separate
-targets are available for keyword, inversion-list, and character-class
-generation, with platform-specific makefile support and clearer diagnostics
-from F<t/porting/regen.t>.  The regeneration scripts also accept
-C<REGEN_VERBOSE=1> as an alternative to C<-v>.
+XXX

-=item *
+=back

-The Unicode table generators have been optimized, reducing the time and peak
-memory needed to regenerate Unicode data.  On a full Unicode C<mktables>
-workload, generation is approximately 23% faster and uses 17% less peak
-memory.  The MPH squeeze path is also substantially faster, at the cost of a
-small increase in the generated data size.
+=head1 Configuration and Compilation

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

-During regex compilation, C<S_reg> will attempt to flatten nested BRANCH
-structures, in an attempt to give the TRIE optimizer more alternations
-to consider. The intent is that patterns that were previously compiled
-into two or more adjacent TRIE nodes might now get compiled into a single
-(or at least, fewer) TRIE node(s).
+[ List changes as an =item entry ].
+
+=over 4

 =item *

-Threads may be Configured to have locale thread-safety
+XXX

-The Perl interpreter may now be Configured to emulate thread-safety in
-locale handling on systems that lack it.  To do this, pass this to
-F<Configure>:
+=back

- -Accflags=-DEMULATE_THREAD_SAFE_LOCALES
+=head1 Testing

-This option will be ignored on builds that don't have threads, and on
-platforms where perl believes that the locale handling is thread-safe
-natively.
+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.

-See L<perllocale/Multi-threaded operation>.
+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.

-The regular expression compiler's TRIE implementation has been changed to use
-the octets of the UTF-8 representation of the pattern in its internal table
-structures. Previous versions used a trie based on code points, which had
-various side effects that required additional complexity, especially because
-of Unicode's potentially very large alphabet. By switching to an octet-based
-representation, a large amount of this complexity could be removed, making
-the new code faster, easier to maintain, and easier to prove correct.
+XXX If instead there were significant changes, say this:

-Most users should not notice this change, except perhaps a slight performance
-improvement.
+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 *
+
+XXX

 =back

-=head1 Selected Bug Fixes
+=head1 Platform Support
+
+XXX Any changes to platform support should be listed in the sections below.
+
+[ Within the sections, list each platform as an =item entry with specific
+changes as paragraphs below it. ]
+
+=head2 New Platforms
+
+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.

 =over 4

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

-On Windows, C<fork()> now preserves the parent's locale settings in the
-child.  Previously, a child could use locale-specific decimal separators
-without C<use locale>, and decimal literals compiled in the child could
-lose their fractional part.  [GH #24166]
+XXX

-=item *
+=back

-Since 5.28.0, the numeric value of a string would sometimes not get reset
-after the string was assigned to as part of a string concatenation. It
-required the following circumstances to all be present for the bug to
-manifest:
+=head2 Discontinued Platforms

-=over
+XXX List any platforms that this version of perl no longer compiles on.

-=item *
+=over 4

-the string variable must be zero length and have just been used in numeric
-context, e.g. C<$s = ""; $n = $s + 1;>
+=item XXX-some-platform

-=item *
+XXX

-then the variable must be the target of a string concatenation and also
-be used on the RHS, e.g.C<$s = "9$s";>
+=back

-=item *
+=head2 Platform-Specific Notes
+
+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

-then if the string is used in numeric context again, the bug caused the
-old numeric value of 0 to be returned, rather than numifying the new
-string value and returning 9.
+=item XXX-some-platform
+
+XXX

 =back

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

-builtin::reftype() and builtin::refaddr() now call set magic for their
-output when their argument isn't a reference.  This would prevent
-propagation of the result if either function was called like
-C<$magical_lexical = reftype($maybe_ref)>.
+[ List each change as an =item entry ]

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

 =item *

-Parsing an invalid signature that gives a slurpy parameter a default value no
-longer crashes when parser debugging is enabled.
+XXX

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

-=item *
+=head1 Selected Bug Fixes

-Copy magic to the new elements when splice() inserts elements into a
-non-tied magical array.  In particular, assignment to an element of an
-C<@ISA> array where the element was added by splice() is now correctly
-recognized when performing method lookup.
+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>.

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

 =item *

-Compilation of C<if>/C<elsif> or C<do> blocks now more reliably includes
-the construction of a new scope when C<my>, C<our>, C<state> or C<defer>
-keywords are present. Previously, a new scope might not have been correctly
-applied to very short blocks. This would have been noticeable through
-object destructors or C<defer> blocks running at the wrong time (when
-some outer scope was exited).
+XXX

-The same logic now also applies to `else` blocks, which previously always
-introduced a new runtime scope, even if the contents of the block didn't
-need it. (That was a workaround to improve the accuracy of line number
-reporting for the first statement in the block, which should no longer
-be necessary.)
+=back

-[L<GH #23867|https://github.com/Perl/perl5/issues/23867>]
+=head1 Known Problems

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

-Empty C<cond_expr> (C<if>/C<elsif> and C<else>) branches will not be
-optimized away when the context of the C<stub> OP is unknown. (Usually
-when the conditional expression is immediately before an implicit
-subroutine return.) In this situation, the C<stub> OP must be retained
-so that C<&PL_sv_undef> can be pushed onto the stack, which will be
-needed if the call site has scalar context.
+[ List each fix as an =item entry ]

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

 =back

-=head1 Acknowledgements
+=head1 Errata From Previous Releases

-Perl 5.45.3 represents approximately 5 weeks of development since Perl
-5.45.2 and contains approximately 230,000 lines of changes across 610 files
-from 25 authors.
+=over 4
+
+=item *

-Excluding auto-generated files, documentation and release tools, there were
-approximately 41,000 lines of changes to 400 .pm, .t, .c and .h files.
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the F<perldelta> of a previous release.

-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.3:
+=back
+
+=head1 Obituary

-Branislav Zahradník, Chad Granum, David Mitchell, Dina Tagantseva, James E
-Keenan, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Nick
-Johnston, Paul Evans, Paul Marquess, Philippe Bruhat (BooK), Richard Leach,
-Russ Allbery, Scott Baker, Sevan Janiyan, Shlomi Fish, Sisyphus, TAKAI
-Kousuke, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yudai Takada, 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.45.3..HEAD

 =head1 Reporting Bugs

diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index e9fc0ad944..2d17ad1805 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]perl5453delta.pod
+PERLDELTA_CURRENT = [.pod]perl5454delta.pod

 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
 	Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index c1675b2267..a7e4a48739 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\perl5453delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5454delta.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 \
-	    perl5453delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5454delta.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 9eaac7204a..48a3b7c254 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\perl5453delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5454delta.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 \
-	    perl5453delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5454delta.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 2c3adc8953..e8996fdeb9 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -92,6 +92,7 @@ POD = perl.pod	\
 	perl5451delta.pod	\
 	perl5452delta.pod	\
 	perl5453delta.pod	\
+	perl5454delta.pod	\
 	perl561delta.pod	\
 	perl56delta.pod	\
 	perl581delta.pod	\
@@ -284,6 +285,7 @@ MAN = perl.man	\
 	perl5451delta.man	\
 	perl5452delta.man	\
 	perl5453delta.man	\
+	perl5454delta.man	\
 	perl561delta.man	\
 	perl56delta.man	\
 	perl581delta.man	\
@@ -476,6 +478,7 @@ HTML = perl.html	\
 	perl5451delta.html	\
 	perl5452delta.html	\
 	perl5453delta.html	\
+	perl5454delta.html	\
 	perl561delta.html	\
 	perl56delta.html	\
 	perl581delta.html	\
@@ -668,6 +671,7 @@ TEX = perl.tex	\
 	perl5451delta.tex	\
 	perl5452delta.tex	\
 	perl5453delta.tex	\
+	perl5454delta.tex	\
 	perl561delta.tex	\
 	perl56delta.tex	\
 	perl581delta.tex	\