This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta, perlguts: Fix typos
[perl5.git] / pod / perldelta.pod
index c210865..9543fb6 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.23.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.23.8
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.23.3 release and the 5.23.4
+This document describes differences between the 5.23.7 release and the 5.23.8
 release.
 
-If you are upgrading from an earlier release such as 5.23.2, first read
-L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
+If you are upgrading from an earlier release such as 5.23.6, first read
+L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
 
-=head1 Incompatible Changes
+=head1 Notice
 
-=head2 Lexical $_ has been removed
+XXX Any important notices here
 
-C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
-with no obvious solution.  In Perl 5.18.0, it was made experimental on the
-theory that it would either be removed or redesigned in a less confusing (but
-backward-incompatible) way.  Over the following years, no alternatives were
-proposed.  The feature has now been removed and will fail to compile.
+=head1 Core Enhancements
 
-=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
+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.
 
-The experimental Extended Bracketed Character Classes can contain regular
-bracketed character classes within them.  These differ from regular ones in
-that white space is generally ignored, unless escaped by preceding it with a
-backslash.  The white space that is ignored is now limited to just tab C<\t>
-and SPACE characters.  Previously, it was any white space.  See
-L<perlrecharclass/Extended Bracketed Character Classes>.
+[ List each enhancement as a =head2 entry ]
 
-=head1 Performance Enhancements
+=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
 
-=over 4
+When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
+C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
+included in the hash passed to the handler, if supported by the
+platform.
 
-=item *
+=head1 Security
 
-C</fixed-substr/> has been made much faster.
+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.
 
-On platforms with a libc memchr() implementation which makes good use of
-underlying hardware support, patterns which include fixed substrings will now
-often be much faster; for example with glibc on a recent x86_64 CPU, this:
+[ List each security issue as a =head2 entry ]
 
-    $s = "a" x 1000 . "wxyz";
-    $s =~ /wxyz/ for 1..30000
+=head1 Incompatible Changes
 
-is now about 7 times faster.  On systems with slow memchr(), e.g. 32-bit ARM
-Raspberry Pi, there will be a small or little speedup.  Conversely, some
-pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
-times slower on the rPi, 1.5x slower on x86_64.
+XXX For a release on a stable branch, this section aspires to be:
 
-=back
+    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.
 
-=head1 Modules and Pragmata
+[ List each incompatible change as a =head2 entry ]
 
-=head2 Updated Modules and Pragmata
+=head1 Deprecations
 
-=over 4
+XXX Any deprecated features, syntax, modules etc. should be listed here.
 
-=item *
+=head2 Module removals
 
-L<B> has been upgraded from version 1.59 to 1.60.
+XXX Remove this section if inapplicable.
 
-=item *
+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<bignum> has been upgraded from version 0.40 to 0.41.
+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.
 
-=item *
+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.
 
-L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
+=over
 
-=item *
+=item XXX
 
-L<Compress::Raw::Zlib> has been upgraded from version 2.068_01 to 2.069.
+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<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
+[ List each other deprecation as a =head2 entry ]
 
-=item *
+=head1 Performance Enhancements
 
-L<DynaLoader> has been upgraded from version 1.34 to 1.35.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
 
-=item *
+[ List each enhancement as a =item entry ]
 
-L<Encode> has been upgraded from version 2.77 to 2.78.
+=over 4
 
 =item *
 
-L<experimental> has been upgraded from version 0.014 to 0.016.
+The overhead of scope entry and exit has been considerably reduced, so
+for example subroutine calls, loops and basic blocks are all faster now.
+This empty function call now takes about a third less time to execute:
 
-=item *
+    sub f{} f();
 
-L<ExtUtils::CBuilder> has been upgraded from version 0.280223 to 0.280224.
+=back
 
-=item *
+=head1 Modules and Pragmata
 
-L<File::Path> has been upgraded from version 2.11 to 2.12.
+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.
 
-=item *
+[ Within each section, list entries as a =item entry ]
 
-L<if> has been upgraded from version 0.0605 to 0.0606.
+=head2 New Modules and Pragmata
+
+=over 4
 
 =item *
 
-L<IO> has been upgraded from version 1.35 to 1.36.
+XXX
 
-For an IO::Poll object C<$poll> with no file handles yet in it,
-C<$poll-E<gt>poll(10)> now sleeps for up to 10 seconds anyway instead of
-returning 0 immediately.
-L<[cpan #25049]|https://rt.cpan.org/Ticket/Display.html?id=25049>
+=back
 
-=item *
+=head2 Updated Modules and Pragmata
 
-The IO-Compress modules have been upgraded from version 2.068 to 2.069.
+=over 4
 
 =item *
 
-L<Math::BigInt> has been upgraded from version 1.999701 to 1.999704.
+L<XXX> has been upgraded from version A.xx to B.yy.
 
 =item *
 
-L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.34.
+L<POSIX> has been upgraded from version 1.59 to 1.60.
 
-=item *
+It can now export constants for the C<code> value in the hash passed to the
+L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
 
-L<Module::CoreList> has been upgraded from version 5.20150920 to 5.20151020.
+=back
 
-=item *
+=head2 Removed Modules and Pragmata
 
-L<Module::Metadata> has been upgraded from version 1.000027 to 1.000029.
+=over 4
 
 =item *
 
-L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
+XXX
 
-=item *
+=back
 
-L<PerlIO::encoding> has been upgraded from version 0.21 to 0.22.
+=head1 Documentation
 
-PerlIO::encoding objects are now properly duplicated.
-L<[perl #31923]|https://rt.perl.org/Ticket/Display.html?id=31923>
+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<POSIX> has been upgraded from version 1.57 to 1.58.
+XXX Changes which create B<new> files in F<pod/> go here.
 
-If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally
-cleared C<$!>.  This has been fixed.
-L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229>
+=head3 L<XXX>
 
-=item *
+XXX Description of the purpose of the new file here
 
-L<Socket> has been upgraded from version 2.020_01 to 2.020_02.
+=head2 Changes to Existing Documentation
 
-Various fixes have been applied to inet_pton for the benefit of MS VC++ builds
-on Windows.  In particular, this restores the build with MS VC++ 6.0.
+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 *
+=head3 L<perlguts>
 
-L<Unicode::Normalize> has been upgraded from version 1.19 to 1.21.
+=over 4
 
 =item *
 
-L<warnings> has been upgraded from version 1.33 to 1.35.
-
-The C<warnings::enabled> example now actually uses C<warnings::enabled>.
-L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051>
+A new section has been added, L<perlguts/"Dynamic Scope and the Context
+Stack">, which explains how the perl context stack works.
 
 =back
 
-=head1 Documentation
+=head1 Diagnostics
 
-=head2 Changes to Existing Documentation
+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>.
 
-=head3 L<perlapi>
+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
+
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
+
+=head3 New Errors
 
 =over 4
 
 =item *
 
-The process of using undocumented globals has been documented, namely, that one
-should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
-first to get the go-ahead for documenting and using an undocumented function or
-global variable.
+XXX L<message|perldiag/"message">
 
 =back
 
-=head3 L<perlsub>
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-Updated to note that anonymous subroutines can have signatures.
+XXX L<message|perldiag/"message">
 
 =back
 
-=head3 L<perltie>
+=head2 Changes to Existing Diagnostics
+
+XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =over 4
 
 =item *
 
-The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
+XXX Describe change here
 
 =back
 
-=head3 L<perlvar>
+=head1 Utility Changes
+
+XXX Changes to installed programs such as F<perlbug> 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 L<XXX> with program names to get proper documentation linking. ]
+
+=head2 L<XXX>
 
 =over 4
 
 =item *
 
-The specific true value of C<$!{E...}> is now documented, noting that it is
-subject to change and not guaranteed.
+XXX
 
 =back
 
-=head1 Diagnostics
+=head1 Configuration and Compilation
 
-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 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.
 
-=head2 New Diagnostics
+[ List changes as a =item entry ].
 
-=head3 New Errors
+=over 4
+
+=item *
+
+XXX
+
+=back
+
+=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.
+
+[ List each test improvement as a =item entry ]
 
 =over 4
 
 =item *
 
-L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
+XXX
 
 =item *
 
-L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
+The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
 
 =item *
 
-L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
+You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
 
 =back
 
-=head2 Changes to Existing Diagnostics
+=head1 Platform Support
 
-=over 4
+XXX Any changes to platform support should be listed in the sections below.
 
-=item *
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
 
-L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
+=head2 New Platforms
 
-This error now reports the name of the non-lvalue subroutine you attempted to
-use as an lvalue.
+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.
 
-=back
+=over 4
 
-=head1 Configuration and Compilation
+=item XXX-some-platform
 
-=over 4
+XXX
 
-=item *
+=back
 
-Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
-C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
-the interpreter, since Perl 5.17.10.  This has been fixed.
+=head2 Discontinued Platforms
 
-=item *
+XXX List any platforms that this version of perl no longer compiles on.
 
-If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
-probably broken by the AmigaOS changes in Perl 5.23.3.  This has been now
-fixed.
-L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
+=over 4
 
-=back
+=item XXX-some-platform
 
-=head1 Platform Support
+XXX
+
+=back
 
 =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
 
-=item IRIX
+=item Win32
 
-=over
+Builds using Microsoft Visual C++ 2003 and earlier no longer produce
+an "INTERNAL COMPILER ERROR" message.  [perl #126045]
 
-=item *
+=back
+
+=head1 Internal Changes
 
-Under some circumstances IRIX stdio fgetc() and fread() set the errno to
-C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
-is now cleared in such cases.
-L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
+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.
+
+[ List each change as a =item entry ]
+
+=over 4
 
 =item *
 
-Problems when multiplying long doubles by infinity have been fixed.
-L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
+The implementation of perl's context stack system, and its internal API,
+have been heavily reworked. Note that no significant changes have been
+made to any external APIs, but XS code which relies on such internal
+details may need to be fixed. The main changes are:
 
-=back
+=over 4
 
-=item MacOS X
+=item *
 
-=over
+The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
+inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
+function args rather than implicitly relying on local vars such as
+C<gimme> and C<newsp> being available. Also their functionality has
+changed: in particular, C<cx_popblock()> no longer decrements
+C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
+involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
+documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
+details on how to use them.
 
 =item *
 
-Until now OS X builds of perl have specified a link target of 10.3 (Panther,
-2003) but have not specified a compiler target.  From now on, builds of perl on
-OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
-version and specify that as the explicit build target in both compiler and
-linker flags, thus preserving binary compatibility for extensions built later
-regardless of changes in OS X, SDK, or compiler and linker versions.  To
-override the default value used in the build and preserved in the flags,
-specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
-perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
-earlier there is no change to the behavior present when those systems were
-current; the link target is still OS X 10.3 and there is no explicit compiler
-target.
+Various macros, which now consistently have a CX_ prefix, have been added:
 
-=back
+ CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
 
-=item VMS
+or renamed:
 
-=over
+ CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
 
 =item *
 
-Perl now implements its own C<killpg> by scanning for processes in the
-specified process group, which may not mean exactly the same thing as a Unix
-process group, but allows us to send a signal to a parent (or master) process
-and all of its sub-processes.  At the perl level, this means we can now send a
-negative pid like so:
+C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
+CMpp_enter*> and C<pp_leave*> no longer do
 
-    kill SIGKILL, -$pid;
+  ENTER; SAVETMPS; ....; LEAVE
 
-to signal all processes in the same group as C<$pid>.
+=item *
 
-=back
+C<cx_popblock()> now also restores C<PL_curpm>.
 
-=item Win32
+=item *
 
-=over
+In C<dounwind()> for every context type, the current savestack frame is
+now processed before each context is popped; formerly this was only done
+for sub-like context frames. This action has been removed from
+C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
+must be called before C<cx_popsub()> etc.
+
+C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
+(formerly it only did the C<cx_popsub()> etc. actions on each frame).
 
 =item *
 
-A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
-option is off by default, meaning the default is to do Windows registry
-lookups.  This option stops Perl from looking inside the registry for anything.
-For what values are looked up in the registry see L<perlwin32>.  Internally, in
-C, the name of this option is C<WIN32_NO_REGISTRY>.
+The temps stack is now freed on scope exit; previously, temps created
+during the last statement of a block wouldn't be freed until the next
+C<nextstate> following the block (apart from an existing hack that did
+this for recursive subs in scalar context); and in something like
+C<f(g())>, the temps created by the last statement in C<g()> would
+formerly not be freed until the statement following the return from
+C<f()>.
 
 =item *
 
-The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
-C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
-vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
-for entries at all times through Perl processes life time even if they did not
-exist.  For performance reasons, now, if the root key (i.e.
-C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
-not exist at process start time, it will not be checked again for C<%ENV>
-override entries for the remainder of the Perl processes life.  This more
-closely matches Unix behaviour in that the environment is copied or inherited
-on startup and changing the variable in the parent process or another process
-or editing F<.bashrc> will not change the environmental variable in other
-existing, running, processes.
+Most values that were saved on the savestack on scope entry are now
+saved in suitable new fields in the context struct, and saved and
+restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
+faster.
 
 =item *
 
-One glob fetch was removed for each C<-X> or C<stat> call whether done from
-Perl code or internally from Perl's C code.  The glob being looked up was
-C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
-C<stat> slightly faster.
+Various context struct fields have been added, removed or modified.
 
 =item *
 
-During miniperl's process startup, during the build process, 4 to 8 IO calls
-related to the process starting F<.pl> and the F<buildcustomize.pl> file were
-removed from the code opening and executing the first 1 or 2 F<.pl> files.
+The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
+considerably tidied up, including removing the C<argarray> field from the
+context struct, and extracting out some common (but rarely used) code into
+a separate function, C<clear_defarray()>. Also, useful subsets of
+C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
+gathered into the new functions C<cx_popsub_args()> and
+C<cx_popsub_common()>.
 
-=back
+=item *
 
-=back
+C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
+of the C<pp_leave*>'s to process return args.
 
-=head1 Internal Changes
+=item *
 
-=over 4
+C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
+C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
 
 =item *
 
-L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
-previously has always returned C<0> since Perl 5.000 stable but that was
-undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
-expected to be impacted since the proper API call would be through public API
-C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
-C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
-meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
+Some variables formerly declared by C<dMULTICALL> (but not documented) have
+been removed.
 
-=item *
+=back
 
-The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
-with integer truncation and wrapping.  In particular, some casts formerly used
-within the macros have been removed.  This means for example that passing an
-unsigned nitems argument is likely to raise a compiler warning now (it's always
-been documented to require a signed value; formerly int, lately SSize_t).
 
 =back
 
 =head1 Selected Bug Fixes
 
+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>.
+
+[ List each fix as a =item entry ]
+
 =over 4
 
 =item *
 
-There were places in regular expression patterns where comments (C<(?#...)>)
-weren't allowed, but should have been.  This is now fixed.
-L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
+Line numbers larger than 2**31-1 but less than 2**32 are no longer
+returned by caller() as negative numbers.  [perl #126991]
 
 =item *
 
-A regression from Perl 5.20 has been fixed, in which some syntax errors in
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
-within regular expression patterns could cause a segfault instead of a proper
-error message.
-L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
+C<< unless ( I<assignment> ) >> now properly warns when syntax
+warnings are enabled.  [perl #127122]
 
 =item *
 
-Some problems with attempting to extend the perl stack to around 2G or 4G
-entries have been fixed.  This was particularly an issue on 32-bit perls built
-to use 64-bit integers, and was easily noticeable with the list repetition
-operator, e.g.
+Setting an C<ISA> glob to an array reference now properly adds
+C<isaelem> magic to any existing elements.  Previously modifying such
+an element would not update the ISA cache, so method calls would call
+the wrong function.  Perl would also crash if the C<ISA> glob was
+destroyed, since new code added in 5.23.7 would try to release the
+C<isaelem> magic from the elements.  [perl #127351]
 
-    @a = (1) x $big_number
+=item *
 
-Formerly perl may have crashed, depending on the exact value of C<$big_number>;
-now it will typically raise an exception.
-L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
+If a here-doc was found while parsing another operator, the parser had
+already read end of file, and the here-doc was not terminated, perl
+could produce an assertion or a segmentation fault.  This now reliably
+complains about the unterminated here-doc.  [perl #125540]
 
-=item *
+=back
 
-In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
-the condition is C<(?!)> then perl failed the match outright instead of
-matching the no-pattern.  This has been fixed.
-L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
+=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.
 
-The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
-argument and set C<REGERROR>/C<REGMARK> appropriately as well.
-L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
+[ List each fix as a =item entry ]
+
+=over 4
 
 =item *
 
-Several bugs, including a segmentation fault, have been fixed with the bounds
-checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
-C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
-string; none of the C<\b{}> ones do.
-L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
+XXX
 
 =back
 
@@ -468,25 +512,21 @@ L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
 
 =item *
 
-(This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
-The way that C<OP_AASSIGN> handles assignment with potentially common values
-(e.g. C<($a,$b) = ($b, $a)> has changed.  In particular the C<OPpASSIGN_COMMON>
-flag has been replaced with three more specific flags:
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
 
-    OPpASSIGN_COMMON_AGG
-    OPpASSIGN_COMMON_RC1
-    OPpASSIGN_COMMON_SCALAR
+=back
 
-and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
-detect common elements.
+=head1 Obituary
 
-=back
+XXX If any significant core contributor has died, we've added a short obituary
+here.
 
 =head1 Acknowledgements
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.23.3..HEAD
+  perl Porting/acknowledgements.pl v5.23.7..HEAD
 
 =head1 Reporting Bugs