This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlebcdic: Rmv obsolete text about 'use encoding'
[perl5.git] / pod / perldelta.pod
index f49a5f1..b828b0d 100644 (file)
@@ -5,15 +5,19 @@
 [ 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.25.7
+perldelta - what is new for perl v5.25.9
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.25.6 release and the 5.25.7
+This document describes differences between the 5.25.8 release and the 5.25.9
 release.
 
-If you are upgrading from an earlier release such as 5.25.5, first read
-L<perl5256delta>, which describes differences between 5.25.5 and 5.25.6.
+If you are upgrading from an earlier release such as 5.25.7, first read
+L<perl5258delta>, which describes differences between 5.25.7 and 5.25.8.
+
+=head1 Notice
+
+XXX Any important notices here
 
 =head1 Core Enhancements
 
@@ -21,92 +25,14 @@ 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 ]
-
-=head2 Indented Here-documents
-
-This adds a new modifier '~' to here-docs that tells the parser
-that it should look for /^\s*$DELIM\n/ as the closing delimiter.
-
-These syntaxes are all supported:
-
-    <<~EOF;
-    <<~\EOF;
-    <<~'EOF';
-    <<~"EOF";
-    <<~`EOF`;
-    <<~ 'EOF';
-    <<~ "EOF";
-    <<~ `EOF`;
-
-The '~' modifier will strip, from each line in the here-doc, the
-same whitespace that appears before the delimiter.
-
-Newlines will be copied as is, and lines that don't include the
-proper beginning whitespace will cause perl to croak.
-
-For example:
-
-    if (1) {
-      print <<~EOF;
-        Hello there
-        EOF
-    }
-
-prints "Hello there\n" with no leading whitespace.
-
-=head2 '.' and @INC
-
-Perl now provides a way to build perl without C<.> in @INC by default. If you
-want this feature, you can build with -Ddefault_inc_excludes_dot
-
-Because the testing / make process for perl modules do not function well with
-C<.> missing from @INC, Perl now supports the environment variable
-PERL_USE_UNSAFE_INC=1 which makes Perl behave as it previously did, returning
-C<.> to @INC in all child processes.
-
-WARNING: PERL_USE_UNSAFE_INC has been provided during the perl 5.25 development
-cycle and is not guaranteed to function in perl 5.26.
-
-=head2 create a safer utf8_hop() called utf8_hop_safe()
+=head2 New regular expression modifier C</xx>
 
-Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or after
-the end of the supplied buffer.
-
-=head2 Fix taint handling in list assignment
-
-commit v5.25.6-79-gb09ed99 reworked list assignment, and
-accidentally broke taint handling at the same time.
-
-=head2 @{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL}
-
-@{^CAPTURE} exposes the capture buffers of the last match as an array. So $1 is
-${^CAPTURE}[0].
-
-%{^CAPTURE} is the equivalent to %+ (ie named captures)
-
-%{^CAPTURE_ALL} is the equivalent to %- (ie all named captures).
-
-=head2 hv.h: rework HEK_FLAGS to a proper member in struct hek
-
-Move the store of HEK_FLAGS off the end of the allocated hek_key into the hek
-struct, simplifying access and providing clarity to the code.
-
-=head2 op.c: silence compiler warning in fold_constants()
-
-    op.c: In function ‘S_fold_constants’:
-    op.c:4374:28: warning: argument ‘o’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
-     S_fold_constants(pTHX_ OP *o)
-                                ^
-
-This warning has been silenced.
-
-=head2 White space changed to avoid C++ deprecation warning
-
-C++11 requires space between the end of a string literal and a macro, so that a
-feature can unambiguously be added to the language.  Starting in g++ 6.2, the
-compiler emits a warning when there isn't a space (presumably so that future
-versions can support C++11)
+Specifying two C<x> characters to modify a regular expression pattern
+does everything that a single one does, but additionally TAB and SPACE
+characters within a bracketed character class are generally ignored and
+can be added to improve readability, like
+S<C</[ ^ A-Z d-f p-x ]/xx>>.  Details are at
+L<perlre/E<sol>x and E<sol>xx>.
 
 =head1 Security
 
@@ -126,44 +52,17 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
-=head2 Eliminate OPpRUNTIME private PMOP flag
-
-This flag was added in 5.004 and even then it didn't seem to be used for
-anything. It gets set and unset in various places, but is never tested.
-
-=head2 Eliminate SVpbm_VALID flag
-
-This flag is set on an SV to indicate that it has PERL_MAGIC_bm (fast
-Boyer-Moore) magic attached. Instead just directly check whether it has such
-magic.
-
-=head2 Eliminate SVpbm_TAIL/SvTAIL_on()/SvTAIL_off()
-
-This flag is only set on SVs that have Boyer-Moore magic attached. Such SVs
-already re-purpose the unused IVX slot of that  SV to store BmUSEFUL. This
-commit repurposes the unused NVX slot to store this boolean value instead.
-
-=head2 Eliminate SVrepl_EVAL and SvEVALED()
-
-This flag is only used to indicate that the SV holding the text of the
-replacement part of a s/// has seen at least one /e.  Instead, set the IVX
-field in the SV to a true value. (We already set the NVX field on that SV to
-indicate a multi-src-line substitution).
-
-=head2 metaconfig.h
-
-Document that symbols should be removed from metaconfig.h
-
-Remove almost-all symbols from metaconfig.h
-
-=head2 Change hv_fetch(…, "…", …, …) to hv_fetchs(…, "…", …)
-
-The dual-life dists all use Devel::PPPort, so they can use this function even
-though it was only added in 5.10.
-
 =head1 Deprecations
 
-XXX Any deprecated features, syntax, modules etc. should be listed here.
+=head2 String delimiters that aren't stand-alone graphemes are now
+deprecated
+
+In order for Perl to eventually allow string delimiters to be Unicode
+grapheme clusters (which look like a single character, but may be
+a sequence of several ones), we have to stop allowing a single char
+delimiter that isn't a grapheme by itself.  These are unlikely to exist
+in actual code, as they would typically display as attached to the
+character in front of them.
 
 =head2 Module removals
 
@@ -205,40 +104,12 @@ There may well be none in a stable release.
 
 =item *
 
-Reduce cost of SvVALID().
-
-=item *
-
-C<$ref1 = $ref2> has been optimized.
-
-=item *
-
-Array and hash assignment are now faster, e.g.
-
-    (..., @a) = (...);
-    (..., %h) = (...);
-
-especially when the RHS is empty.
-
-=item *
-
-Reduce the number of odd special cases for the SvSCREAM flag.
-
-=item *
-
-Aavoid sv_catpvn() in do_vop() when unneeded.
-
-=item *
-
-Enhancements in Regex concat COW implementation.
-
-=item *
-
-Speed up AV and HV clearing/undeffing.
+A hash in boolean context is now sometimes faster, e.g.
 
-=item *
+    if (!%h) { ... }
 
-Better optimise array and hash assignment
+This was already special-cased, but some cases were missed, and even the
+ones which weren't have been improved.
 
 =back
 
@@ -268,86 +139,115 @@ XXX
 
 =item *
 
-L<Time::HiRes> has been updated to use clockid_t.
+L<XXX> has been upgraded from version A.xx to B.yy.
+
+=item *
+
+L<re> has been upgraded from version 0.33 to 0.34;
+
+This adds support for the new L<C</xx>|perlre/E<sol>x and E<sol>xx>
+regular expression pattern modifier, and a change to the L<S<C<use re
+'strict'>>|re/'strict' mode> experimental feature.  When S<C<re
+'strict'>> is enabled, a warning now will be generated for all
+unescaped uses of the two characters C<}> and C<]> in regular
+expression patterns (outside bracketed character classes) that are taken
+literally.  This brings them more in line with the C<)> character which
+is always a metacharacter unless escaped.  Being a metacharacter only
+sometimes, depending on action at a distance, can lead to silently
+having the pattern mean something quite different than was intended,
+which the S<C<re 'strict'>> mode is intended to minimize.
+
+=item *
+
+L<B::Xref> has been upgraded from version 1.05 to 1.06.
 
 =item *
 
-L<Data::Dumper> the XS implementation now supports Deparse.
+L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.070.
 
 =item *
 
-L<Unicode::Normalize> is now maintained by p5p and has been moved to dist/
+L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.070.
 
 =item *
 
-L<Errno> Document that using C<%!> loads Errno for you.
+L<DB_File> has been upgraded from version 1.838 to 1.840.
 
 =item *
 
-L<Unicode::Collate> has been upgraded from version 1.14 to 1.18.
+L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
 
 =item *
 
-L<Math::BigInt> has been upgraded from version 1.999726(_01) to 1.999727.
+L<diagnostics> has been upgraded from version 1.35 to 1.36.
+
+=item *
 
-There have also been some core customizations.
+L<DynaLoader> has been upgraded from version 1.40 to 1.41.
 
 =item *
 
-L<podlators> has been upgraded from version 4.08 to 4.09.
+L<Errno> has been upgraded from version 1.27 to 1.28.
 
 =item *
 
-L<Archive::Tar> has been upgraded from version 2.16 to 2.18.
+L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
 
-Capture STDERR when necessary.
+=item *
 
-Several minor updates.
+L<I18N::LangTags> has been upgraded from version 0.41 to 0.42.
 
 =item *
 
-L<Net::Ping> remove sudo from 500_ping_icmp.t.
+L<lib> has been upgraded from version 0.63 to 0.64.
 
-Upgrade from version 2.51 to 2.55.
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
 
-Avoid stderr noise in tests
+=item *
 
-Check for echo in new Net::Ping tests.
+L<OS2::Process> has been upgraded from version 1.11 to 1.12.
 
 =item *
 
-L<Test::Simple> has been upgraded from version 1.302059 to 1.302062.
+L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
 
 =item *
 
-L<Term::ANSIColor> has been upgraded from version 4.05 to 4.06.
+L<Storable> has been upgraded from version 2.59 to 2.61.
 
 =item *
 
-L<Scalar::Utils> and L<List::Utils> have been customized in core.
+L<Symbol> has been upgraded from version 1.07 to 1.08.
 
 =item *
 
-L<Math::Complex> has been customized in core.
+L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
 
 =item *
 
-L<JSON::PP> Customized in core.
+L<Test> has been upgraded from version 1.29 to 1.30.
 
 =item *
 
-L<POSIX> Version Bump
+L<threads::shared> has been upgraded from version 1.52 to 1.53.
 
 =item *
 
-L<Unicode::UCD> has had its documentation updated to give a recipe for
-using it to get the information contained in F<unicore/Name.pl>.  It has
-long been deprecated to use any file from F<unicore/>, and their
-contents or even existence may change at any time without notice.
+L<Unicode::UCD> has been upgraded from version 0.67 to 0.68.
 
 =item *
 
-L<XXX> has been upgraded from version A.xx to B.yy.
+L<VMS::DCLsym> has been upgraded from version 1.07 to 1.08.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.24 to 0.26.
+
+=item *
+
+L<CPAN> has been upgraded from version 2.14_01 to 2.16.
 
 =back
 
@@ -380,200 +280,154 @@ 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.
 
-=head3 L<perlfunc>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-Defined on aggregates is no longer allowed. Perlfunc was still reporting it as
-deprecated, and that it will be deleted in the future.
+XXX Description of the change here
 
 =back
 
-=head3 L<perldata>
+=head1 Diagnostics
 
-=over 4
+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>.
 
-=item *
+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.
 
-Use of single character variables, with the variable name a non printable
-character in the range \x80-\xFF is no longer allowed. Update the docs to
-reflect this.
+=head2 New Diagnostics
 
-=back
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
 
-=head3 L<perlobj>
+=head3 New Errors
 
 =over 4
 
 =item *
 
-Added a section on calling methods using their fully qualified names.
-
-=item *
-
-Do not discourage manual @ISA.
+XXX L<message|perldiag/"message">
 
 =back
 
-=head3 L<perlop>
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-Clarify behavior single quote regexps.
+XXX L<message|perldiag/"message">
 
 =back
 
-=head3 L<perllocale>
-
-=over 4
-
-=item *
-
-Some locales aren't compatible with Perl.  Note the potential bad
-consequences of using them.
-
-=back
+=head2 Changes to Existing Diagnostics
 
-=head3 L<perldiag>
+As of Perl 5.25.9, all new deprecations will come with a version in
+which the feature will disappear. And with a few exceptions, most
+existing deprecations will state when they'll disappear. As such, most
+deprecation messages have changed.
 
 =over 4
 
 =item *
 
-Deprecations are to be marked with a D.
-C<"%s() is deprecated on :utf8 handles"> use a deprecation message, and as
-such, such be marked C<"(D deprecated)"> and not C<"(W deprecated)">.
-
-=back
-
-=head3 L<perlguts>
-
-=over 4
+Attribute "locked" is deprecated, and will disappear in Perl 5.28
 
 =item *
 
-add pTHX_ to magic method examples.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
+Attribute "unique" is deprecated, and will disappear in Perl 5.28
 
 =item *
 
-Document @ISA. Was documented other places, not not in perlvar.
-
-=back
-
-=head3 L<perlootut>
-
-=over 4
+"\c%c" is more clearly written simply as "%s". This will be a fatal error
+in Perl 5.28
 
 =item *
 
-Tidy the document.
+Constants from lexical variables potentially modified elsewhere are
+deprecated. This will not be allowed in Perl 5.32
 
 =item *
 
-Mention Moo more.
-
-=back
-
-=head3 L<perlhack>
-
-=over 4
+Deprecated use of my() in false conditional. This will be a fatal error
+in Perl 5.30
 
 =item *
 
-Document Tab VS Space.
-
-=back
-
-=head3 L<perlre>
-
-=over 4
+dump() better written as CORE::dump(). dump() will no longer be available 
+in Perl 5.30
 
 =item *
 
-Don't impugn the stability of all (?…) constructs.
+${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
 
 =item *
 
-Summarise full syntax for (?(cond)then|else) constructs.
+File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
+instead.
 
 =item *
 
-Minor tweaks and formatting changes.
+%s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
 
 =item *
 
-perlre: regularise list items
+$* is no longer supported. Its use will be fatal in Perl 5.30
 
 =item *
 
-Document the package for C<$REGMARK> and C<$REGERROR>.
-
-=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.
+$* is no longer supported. Its use will be fatal in Perl 5.30
 
-=head2 New Diagnostics
+=item *
 
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
+Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
 
-=head3 New Errors
+=item *
 
-=over 4
+Opening filehandle %s also as a directory. This will be a fatal
+error in Perl 5.28
 
 =item *
 
-XXX L<message|perldiag/"message">
+Setting $/ to a reference to %s as a form of slurp is deprecated,
+treating as undef. This will be fatal in Perl 5.28
 
-=back
-
-=head3 New Warnings
+=item *
 
-=over 4
+Unescaped left brace in regex is deprecated here (and will be fatal
+in Perl 5.30), passed through in regex; marked by S<<-- HERE> in m/%s/
 
 =item *
 
-XXX L<message|perldiag/"message">
+Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
 
-=back
+=item *
 
-=head2 Changes to Existing Diagnostics
+Use of bare << to mean <<"" is deprecated. Its use will be fatal in Perl 5.28
 
-XXX Changes (i.e. rewording) of diagnostic messages go here
+=item *
 
-=over 4
+Use of code point 0x%s is deprecated; the permissible max is 0x%s.
+This will be fatal in Perl 5.28
 
 =item *
 
-Improve error for missing tie() package/method. This brings the error messages
-in line with the ones used for normal method calls, despite not using
-call_method().
+Use of comma-less variable list is deprecated. Its use will be fatal
+in Perl 5.28
 
 =item *
 
-Make the sysread()/syswrite/() etc :utf8 handle warnings default. These
-warnings were under 'deprecated' previously.
+Use of inherited AUTOLOAD for non-method %s() is deprecated. This
+will be fatal in Perl 5.28
 
-=item *
+=item * 
 
-'do' errors now refer to 'do' (not 'require').
+Use of strings with code points over 0xFF as arguments to %s operator
+is deprecated. This will be a fatal error in Perl 5.28
 
 =back
 
@@ -592,35 +446,7 @@ Use L<XXX> with program names to get proper documentation linking. ]
 
 =item *
 
-Porting/pod_lib.pl
-
-Removed spurious executable bit.
-
-Account for possibility of DOS file endings.
-
-=item *
-
-perf/benchmarks
-
-Tidy file, rename some symbols.
-
-=item *
-
-Porting/checkAUTHORS.pl
-
-Replace obscure character range with \w.
-
-=item *
-
-t/porting/regen.t
-
-try to be more helpful when tests fail.
-
-=item *
-
-utils/h2xs.PL
-
-Avoid infinite loop for enums.
+XXX
 
 =back
 
@@ -637,31 +463,49 @@ L</Platform Support> section, instead.
 
 =item *
 
-Remove "Warning: perl appears in your path"
+The C<dtrace> build process has further changes:
+
+=over
+
+=item *
 
-This install warning is more or less obsolete, since most platforms already
-*will* have a /usr/bin/perl or similar provided by the OS.
+If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
+built within a FreeBSD jail.
 
 =item *
 
-Reduce verbosity of "make install.man"
+On systems that build a dtrace object file (FreeBSD, Solaris and
+SystemTap's dtrace emulation), copy the input objects to a separate
+directory and process them there, and use those objects in the link,
+since C<dtrace -G> also modifies these objects.
+
+=item *
 
-Previously, two progress messages were emitted for each manpage: one by
-installman itself, and one by the function in install_lib.pl that it calls to
-actually install the file. Disabling the second of those in each case saves
-over 750 lines of unhelpful output.
+Add libelf to the build on FreeBSD 10.x, since dtrace adds references
+to libelf symbols.
 
 =item *
 
-Cleanup for clang -Weverything support. [perl 129961]
+Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it.  A
+default build on Solaris generates probes from the unused inline
+functions, while they don't on FreeBSD, which causes C<dtrace -G> to
+fail.
+
+=back
+
+[perl #130108]
 
 =item *
 
-Configure: signbit scan was assuming too much, stop assuming negative 0.
+You can now disable perl's use of the PERL_HASH_SEED and
+PERL_PERTURB_KEYS environment variables by configureing perl with
+C<-Accflags=NO_PERL_HASH_ENV>.
 
 =item *
 
-Various compiler warnings have been silenced.
+You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
+variable by configuring perl with
+C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
 
 =back
 
@@ -679,11 +523,7 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XS-APItest/t/utf8.t: Several small fixes and enhancements.
-
-=item *
-
-Tests for locales were erroneously using locales incompatible with Perl.
+XXX
 
 =back
 
@@ -707,65 +547,6 @@ source tree.
 
 XXX
 
-=item Darwin
-
-don't treat -Dprefix=/usr as special, instead require an extra option
--Ddarwin_distribution to produce the same results.
-
-=item POSIX
-
-Finish removing POSIX deprecated functions.
-
-=item OS X
-
-OS X El Capitan doesn't implement the clock_gettime() or clock_getrez() APIs,
-emulate them as necessary.
-
-=item macOS
-
-Deprecated syscall(2) on macOS 10.12.
-
-=item EBCDIC
-
-Several tests have been updated to work (or be skipped) on EBCDIC platforms.
-
-=item HP-UX
-
-L<Net::Ping> UDP test is skipped on HP-UX.
-
-=item VMS
-
-Move _pDEPTH and _aDEPTH after config.h otherwise DEBUGGING may not be defined
-yet.
-
-=item VMS And Win32
-
-Fix some breakage, add 'undef' value for default_inc_excludes_dot in build
-scripts.
-
-=item Linux
-
-Drop support for Linux a.out Linux has used ELF for over twenty years.
-
-=item NetBSD-VAX
-
-Test fixes and minor updates.
-
-Account for lack of C<inf>, C<nan>, and C<-0.0> support.
-
-=item Win32
-
-fp definitions have been updated.
-
-=item OpenBSD 6
-
-OpenBSD 6 still does not support returning pid, gid or uid with SA_SIGINFO.
-Make sure this is accounted for.
-
-=item FreeBSD
-
-t/uni/overload.t: Skip hanging test on FreeBSD.
-
 =back
 
 =head2 Discontinued Platforms
@@ -774,12 +555,6 @@ XXX List any platforms that this version of perl no longer compiles on.
 
 =over 4
 
-=item VMS
-
-VAXC has not been a possibility for a good long while, and the versions of the
-DEC/Compaq/HP/VSI C compiler that report themselves as "DEC" in a listing file
-are 15 years or more out-of-date and can be safely desupported.
-
 =item XXX-some-platform
 
 XXX
@@ -813,82 +588,90 @@ well.
 
 =item *
 
-XXX
-
-=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
+New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8>  have
+been added, each with the
+suffix C<_safe>, like C<isSPACE_utf8_safe>.  These take an extra
+parameter, giving an upper limit of how far into the string it is safe
+to read.  Using the old versions could cause attempts to read beyond the
+end of the input buffer if the UTF-8 is not well-formed, and ther use
+now raises a deprecation warning.  Details are at
+L<perlapi/Character classification>.
 
 =item *
 
-Handle SvIMMORTALs in LHS of list assign. [perl #129991]
+Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
+deprecation warning since Perl v5.18.  They now die.
+Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
 
 =item *
 
-[perl #130010] a5540cf breaks texinfo
-
-This involved user-defined Unicode properties.
+Calling the functions C<utf8n_to_uvchr> and its derivatives, while
+passing a string length of 0 is now asserted against in DEBUGGING
+builds, and otherwise returns the Unicode REPLACEMENT CHARACTER.   If
+you have nothing to decode, you shouldn't call the decode function.
 
 =item *
 
-Fix error message for unclosed C<\N{> in regcomp.
-
-An unclosed C<\N{> could give the wrong error message
-C<"\N{NAME} must be resolved by the lexer">.
+The functions C<utf8n_to_uvchr> and its derivatives now return the
+Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
+malformation, and that malformation is allowed by the input parameters.
+This malformation is where the UTF-8 looks valid syntactically, but
+there is a shorter sequence that yields the same code point.  This has
+been forbidden since Unicode version 3.1.
 
 =item *
 
-List assignment in list context where the LHS contained aggregates and
-where there were not enough RHS elements, used to skip scalar lvalues.
-Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now
-it returns C<($a,$b,$d)>. C<(($a,$b,$c) = (1))> is unchanged: it still
-returns <($a,$b,$c)>. This can be seen in the following:
-
-    sub inc { $_++ for @_ }
-    inc(($a,$b,@c,$d) = (10))
+The functions C<utf8n_to_uvchr> and its derivatives now accept an input
+flag to allow the overflow malformation.  This malformation is when the
+UTF-8 may be syntactically valid, but the code point it represents is
+not capable of being represented in the word length on the platform.
+What "allowed" means in this case is that the function doesn't return an
+error, and advances the parse pointer to beyond the UTF-8 in question,
+but it returns the Unicode REPLACEMENT CHARACTER as the value of the
+code point (since the real value is not representable).
 
-Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>;
-now they are C<(11,1,1)>.
+=back
 
-=item *
+=head1 Selected Bug Fixes
 
-[perl 129903]
+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>.
 
-The basic problem is that code like this: /(?{ s!!! })/ can trigger infinite
-recursion on the C stack (not the normal perl stack) when the last successful
-pattern in scope is itself. Since the C stack overflows this manifests as an
-untrappable error/segfault, which then kills perl.
+[ List each fix as a =item entry ]
 
-We avoid the segfault by simply forbidding the use of the empty pattern when it
-would resolve to the currently executing pattern.
+=over 4
 
 =item *
 
-[perl 128997] Avoid reading beyond the end of the line buffer when there's a
-short UTF-8 character at the end.
+Under C<use utf8>, the entire Perl program is now checked that the UTF-8
+is wellformed.  This resolves [perl #126310].
 
 =item *
 
-[perl 129950] fix firstchar bitmap under utf8 with prefix optimisation.
+The range operator C<..> on strings now handles its arguments correctly when in
+the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
+feature. The previous behaviour was sufficiently unexpected that we believe no
+correct program could have made use of it.
 
 =item *
 
-[perl 129954] Carp/t/arg_string.t: be liberal in f/p formats.
+The S<split> operator did not ensure enough space was allocated for
+its return value in scalar context.  It could then write a single
+pointer immediately beyond the end of the memory block allocated for
+the stack.  [perl #130262]
 
 =item *
 
-[perl 129928] make do "a\0b" fail silently instead of throwing.
+Using a large code point with the C<W> pack template character with
+the current output position aligned at just the right point could
+cause a write a single zero byte immediately beyond the end of an
+allocated buffer.  [perl #129149]
 
 =item *
 
-[perl 129130] make chdir allocate the stack it needs.
+Supplying the form picture argument as part of the form argument list
+where the picture specifies modifying the argument could cause an
+access to the new freed compiled form.  [perl #129125]
 
 =back