This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Remove all but one XXX notices
[perl5.git] / pod / perldelta.pod
index 40f5c98..11c60a7 100644 (file)
@@ -1,19 +1,7 @@
 =encoding utf8
 
-=for comment
-Stuff that needs to be done still:
-e82485c [MERGE] refactor pp_match(), pp_subst(), regexec()
-6136213 [perl #52000] Warn/abort on attempted perl exit
-cccbbce Reap child in case where exception has been thrown
-70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
-c3923c3 reparse compile-time /(?{})/ in right scope
-aa8c2dc Fix RT #41461 (with a test).
-
 =head1 NAME
 
-[ 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.19.3
 
 =head1 DESCRIPTION
@@ -24,179 +12,190 @@ release.
 If you are upgrading from an earlier release such as 5.19.1, first read
 L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =head1 Core Enhancements
 
-XXX New core language features go here.  Summarize user-visible core language
-enhancements.  Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
-
-[ List each enhancement as a =head2 entry ]
-
 =head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
 
-Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
-B<-p> was a no-op, with this change, if you supply B<-F> then both
-B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
+Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p>
+was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n>
+are implied and if you supply B<-a> then B<-n> is implied.
 
 You can still use B<-p> for its extra behaviour. [perl #116190]
 
 =head1 Security
 
-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.
+=head2 Avoid possible read of free()d memory during parsing
 
-[ List each security issue as a =head2 entry ]
+It was possible that free()d memory could be read during parsing in the unusual
+circumstance of the Perl program ending with a heredoc and the last line of the
+file on disk having no terminating newline character.  This has now been fixed.
 
-=head1 Incompatible Changes
+=head1 Performance Enhancements
 
-XXX For a release on a stable branch, this section aspires to be:
+=over 4
 
-    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.
+=item *
 
-[ List each incompatible change as a =head2 entry ]
+A performance regression introduced in Perl 5.11.2 in non-Unicode
+case-insensitive pattern matching has been largely resolved.  In particular,
+the disabled optimization is now restored for every ASCII-range character.
+[perl #107816]
 
-=head1 Deprecations
+=back
 
-XXX Any deprecated features, syntax, modules etc. should be listed here.
+=head1 Modules and Pragmata
 
-=head2 Module removals
+=head2 Updated Modules and Pragmata
 
-XXX Remove this section if inapplicable.
+=over 4
 
-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.
+=item *
 
-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.
+L<B> has been upgraded from version 1.44 to 1.45.
 
-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.
+Calling the C<GV> method on C<B::CV> objects created from a lexical sub would
+return nonsense, possibly crashing perl.  C<GV> now returns C<undef> for
+lexical subs. [perl #118525]
 
-=over
+Added the C<NAME_HEK> method to return the name of a lexical sub.
 
-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<bignum> has been upgraded from version 0.33 to 0.36.
 
-[ List each other deprecation as a =head2 entry ]
+L<bigrat> wasn't correctly updating an internal variable when C<use>d with a
+C<lib> option.
 
-=head1 Performance Enhancements
+=item *
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
+L<Carp> has been upgraded from 1.30 to 1.31
 
-[ List each enhancement as a =item entry ]
+L<Carp> now handles objects with string overloads.  It also allows objects to
+specify how they appear in the stack dump with a C<CARP_TRACE> method, and also
+allows the user to specify their own formatter for objects without
+C<CARP_TRACE> as well as other references. [perl #92446]
 
-=over 4
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
+
+No changes have been made other than the version bump to keep in sync with
+other related modules.
 
 =item *
 
-XXX
+L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
 
-=back
+A minor typo has been fixed in the documentation.
 
-=head1 Modules and Pragmata
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
 
-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>, which prints stub
-entries to STDOUT.  Results can be pasted in place of the '=head2' entries
-below.  A paragraph summary for important changes should then be added by hand.
-In an ideal world, dual-life modules would have a F<Changes> file that could be
-cribbed.
+The list of build options has been updated.
 
-[ Within each section, list entries as a =item entry ]
+=item *
 
-=head2 New Modules and Pragmata
+L<constant> has been upgraded from version 1.27 to 1.28.
 
-=over 4
+Note that list constants will be inlined and may be read-only in future Perl
+versions.
 
 =item *
 
-XXX
+L<CPAN::Meta> has been upgraded from version 2.131560 to 2.132140.
 
-=back
+Some documentation typos have been fixed.
 
-=head2 Updated Modules and Pragmata
+=item *
 
-=over 4
+L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
+
+The compatbility of the XS implementation with the pure perl version under
+C<Useqq> has been improved. [perl #118933]
 
 =item *
 
-L<B> has been upgraded from version 1.44 to 1.45.
+L<DB> has been upgraded from 1.41 to 1.42.
 
-Calling the C<GV> method on C<B::CV> objects created from a lexical
-sub would return nonsense, possibly crashing perl. C<GV> now returns
-C<undef> for lexical subs. [perl #118525]
+The Perl debugger no longer crashes with C<PERLDB_OPTS="noTTY frame=2">.
 
-Added the C<NAME_HEK> method to return the name of a lexical sub.
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
+
+C<SvREFCNT_inc> and C<SvREFCNT_dec> have been removed and C<SvREFCNT> will now
+work on non-scalars. [perl #117793]
+
+C<Dump> now checks its arguments at compile time.  Both arguments are now
+evaluated in scalar context, with exceptions for @arrays and %hashes, allowing
+aggregates to be dumped directly.  The first argument is evaluated in rvalue
+scalar context, allowing rvalue C<pos> and C<substr> to be dumped.
+
+C<fill_mstats> no longer crashes if its argument is not already a string.
+[perl #92260]
 
 =item *
 
-L<bignum> has been upgraded from version 0.35 to 0.36.
+L<diagnostics> has been upgraded from version 1.31 to 1.32.
 
-L<bigrat> wasn't correctly updating an internal variable when C<use>d
-with a C<lib> option.
+Wrapped links are no longer truncated.
 
 =item *
 
-L<Carp> has been upgraded from 1.30 to 1.31
+L<DynaLoader> has been upgraded from version 1.18 to 1.19.
 
-L<Carp> now handles objects with string overloads. It also allows objects
-to specify how they appear in the stack dump with a C<CARP_TRACE> method,
-and also allows the user to specify their own formatter for objects without
-C<CARP_TRACE> as well as other references. [perl #92446]
+The $dl_dlext variable is now documented.
 
 =item *
 
-L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
+L<Encode> has been upgraded from version 2.51 to 2.52.
+
+Encoding "0" with MIME-Headers no longer gets a blank string.
 
 =item *
 
-L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
+L<English> has been upgraded from version 1.07 to 1.08.
+
+The documentation of a performance fix has been corrected.
 
 =item *
 
-L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
+L<Exporter> has been upgraded from version 5.68 to 5.69.
+
+L<Exporter> would ignore custom $SIG{__WARN__} handlers in C<Exporter::Heavy>.
+[perl #39739]
 
 =item *
 
-L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
+L<ExtUtils::MakeMaker> has been upgraded from 6.68 to 6.72.
 
-The compatbility of the XS implementation with the pure perl version
-under C<Useqq> has been improved. [perl #118933]
+The C<dist> target now reports the file created, an infinite loop in
+C<clean_subdirs> has been fixed, an invisible interactive question is now
+avoided when rebuilding Makefile, issues with F</cygdrive> on Cygwin have been
+resolved, C<LD> and C<OPTIMIZE> are now used in recursive F<Makefile.PL>
+invocations, C<VERSION> and C<VERSION_FROM> now handle v-strings correctly, and
+control characters are now stripped from C<ABSTRACT>.
 
 =item *
 
-L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
+L<File::Spec> has been upgraded from 3.41 to 3.44.
 
-The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
-removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
+The module is now partly implemented in XS, for performance.
 
 =item *
 
-L<Exporter> has been upgraded from version 5.68 to 5.69.
+L<Getopt::Std> has been upgraded from version 1.09 to 1.10.
 
-L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
-C<Exporter::Heavy>. [perl #39739]
+Clarified documentation of what happens when a switch is expecting an argument
+but fails to be provided with one.
 
 =item *
 
 The IO-Compress module collection has been upgraded from 2.061 to 2.062.
 
+Some documentation typos have been fixed.
+
 =item *
 
 L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
@@ -206,11 +205,27 @@ needed and a regression introduced in 0.78 has been fixed.
 
 =item *
 
+L<IPC::Open3> has been upgradded from version 1.14 to 1.15.
+
+C<open3> would leak a zombie process if the child process I/O redirection or
+C<exec> failed. [perl #114722]
+
+=item *
+
+L<IPC::SysV> has been upgraded from version 2.03 to 2.04.
+
+$EXPORT_TAGS{all} has been added and a couple of typos have been fixed.
+
+=item *
+
 The libnet module collection has been upgraded from version 1.22 to 1.23.
 
+Numerous bug fixes and documentation improvements have been made.  See the
+F<Changes> file for full details.
+
 =item *
 
-L<List::Util> has been upgraded from version 1.27 to 1.30
+L<List::Util> has been upgraded from version 1.27 to 1.31.
 
 L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
 C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
@@ -218,8 +233,42 @@ pairs.
 
 =item *
 
+L<Module::Build> has been upgraded from 0.4005 to 0.4007.
+
+The test suite has been significantly sped up, Unicode man page support has
+been enhanced and hash argument parsing in subclasses has been fixed.
+
+=item *
+
+L<Module::CoreList> has been upgraded from 2.92 to 2.97.
+
+The list of Perl versions covered has been updated.
+
+=item *
+
+L<mro> has been upgraded from version 1.12 to 1.13.
+
+A minor typo has been fixed in the documentation.
+
+=item *
+
 L<parent> has been upgraded from version 0.225 to 0.226.
 
+Internal changes only have been made to the test suite.
+
+=item *
+
+L<PerlIO> has been upgraded from version 1.07 to 1.08.
+
+Although not a security vulnerability, it was possible to inject code via
+C<PerlIO-E<gt>import()>.  This has now been fixed. [perl #119287]
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.07 to 1.08.
+
+Internal changes only have been made to the test suite.
+
 =item *
 
 L<Socket> has been upgraded from version 2.010 to 2.011.
@@ -231,44 +280,34 @@ structures due to embedded sun_len. [cpan #86613]
 
 L<Storable> has been upgraded from version 2.45 to 2.46.
 
-Avoid creating temporary objects for STORABLE_attach when they aren't
-required. [perl #118907]
+Avoid creating temporary objects for STORABLE_attach when they aren't required.
+[perl #118907]
 
 =item *
 
-L<Time::Piece> has been upgraded from version 1.21 to 1.22.
-
-=back
+L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726.
 
-=head2 Removed Modules and Pragmata
-
-=over 4
+An C<lstat> function is now provided and various bugs have been fixed.  See the
+F<Changes> file for full details.
 
 =item *
 
-XXX
-
-=back
+L<Time::Piece> has been upgraded from version 1.21 to 1.22.
 
-=head1 Documentation
+A minor documentation encoding problem has been fixed.
 
-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<utf8> has been upgraded from version 1.12 to 1.13.
 
-XXX Changes which create B<new> files in F<pod/> go here.
+A minor clarification has been made in the documentation.
 
-=head3 L<XXX>
+=back
 
-XXX Description of the purpose of the new file here
+=head1 Documentation
 
 =head2 Changes to Existing Documentation
 
-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<perlopentut>
 
 =over 4
@@ -279,268 +318,215 @@ The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
 focuses on covering only the basics, rather than providing a comprehensive
 reference to all things openable.  This rewrite came as the result of a
 vigorous discussion on perl5-porters kicked off by a set of improvements
-written by Alexander Hartmaier to the existing C<perlopentut>.  A "more than
+written by Alexander Hartmaier to the existing L<perlopentut>.  A "more than
 you ever wanted to know about C<open>" document may follow in subsequent
 versions of perl.
 
 =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
-
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
-
-=head3 New Errors
+=head3 L<perlre>
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+The C</r> modifier (for non-destructive substitution) is now documented. [perl
+#119151]
 
 =back
 
-=head3 New Warnings
+=head3 L<perlsub>
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+The need to predeclare recursive functions with prototypes in order for the
+prototype to be honoured in the recursive call is now documented. [perl #2726]
 
 =back
 
-=head2 Changes to Existing Diagnostics
-
-XXX Changes (i.e. rewording) of diagnostic messages go here
+=head3 L<perlxs>
 
 =over 4
 
 =item *
 
-XXX Describe change here
+Several problems in the C<MY_CXT> example have been fixed.
 
 =back
 
-=head1 Utility Changes
+=head1 Diagnostics
 
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
-Most of these are built within the directories F<utils> and F<x2p>.
+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>.
 
-[ List utility changes as a =head3 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
+=head2 New Diagnostics
 
-=head3 L<XXX>
+=head3 New Errors
 
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head1 Configuration and Compilation
+L<Magical list constants are not supported|perldiag/"Magical list constants are
+not supported">
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.  Any other changes to the Perl build process should be listed here.
-However, any platform-specific changes should be listed in the
-L</Platform Support> section, instead.
-
-[ List changes as a =item entry ].
-
-=over 4
-
-=item *
-
-XXX
+(F) You assigned a magical array to a stash element, and then tried to use the
+subroutine from the same slot.  You are asking Perl to do something it cannot
+do, details subject to change between Perl versions.
 
 =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 ]
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head1 Platform Support
+L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
+as 0 in increment (++)">
 
-XXX Any changes to platform support should be listed in the sections below.
+(W numeric) The indicated string was fed as an argument to the C<++> operator
+which expects either a number or a string matching C</^[a-zA-Z]*[0-9]*\z/>.
+See L<perlop/Auto-increment and Auto-decrement> for details.
 
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
+=item *
 
-=head2 New Platforms
+L<Unexpected exit %u|perldiag/"Unexpected exit %u">
 
-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.
+(S) exit() was called or the script otherwise finished gracefully when
+C<PERL_EXIT_WARN> was set in C<PL_exit_flags>.
 
-=over 4
+=item *
 
-=item XXX-some-platform
+L<Unexpected exit failure %u|perldiag/"Unexpected exit failure %u">
 
-XXX
+(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in
+C<PL_exit_flags>.
 
 =back
 
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
+=head1 Testing
 
 =over 4
 
-=item XXX-some-platform
-
-XXX
+=item *
 
-=back
+The behaviour of C<pos> on very large strings is now tested in the new test
+script F<t/bigmem/pos.t>.
 
-=head2 Platform-Specific Notes
+=item *
 
-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.
+The test script F<t/porting/ss_dup.t> has been created to test that ss_dup()
+handles all savestack items.
 
-=over 4
-
-=item XXX-some-platform
+=item *
 
-XXX
+The new behaviour of B<-F> and B<-a> (see the L</Core Enhancements> section) is
+tested in the new test script F<t/run/switchF2.t>.
 
 =back
 
 =head1 Internal Changes
 
-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.
+=over 4
 
-[ List each change as a =item entry ]
+=item *
 
-=over 4
+C<sv_pos_b2u_flags> has been added to the API.  It is similar to C<sv_pos_b2u>,
+but supports long strings on 64-bit platforms.
 
 =item *
 
-C<sv_pos_b2u_flags> has been added to the API.  It is similar to
-C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
+C<PL_exit_flags> can now be used by perl embedders or other XS code to have
+perl C<warn> or C<abort> on an attempted exit. [perl #52000]
 
 =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 *
 
-Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
-Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
-that had had a glob assigned to it.  This has been fixed [perl #119051].
+Autovivifying a subroutine stub via C<\&$glob> started causing crashes in Perl
+5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar that had
+had a glob assigned to it.  This has been fixed. [perl #119051]
 
 =item *
 
-On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
-[perl #72766].
+On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1.
+[perl #72766]
 
 =item *
 
 Perl used to leak an implementation detail when it came to referencing the
-return values of certain operators.  C<for ($a+$b) { warn \$_; warn \$_ }>
-used to display two different memory addresses, because the C<\> operator
-was copying the variable.  Under threaded builds, it would also happen for
-constants (C<for(1) { ... }>).  This has been fixed [perl #21979, #78194,
-#89188, #109746, #114838, #115388].
+return values of certain operators.  C<for ($a+$b) { warn \$_; warn \$_ }> used
+to display two different memory addresses, because the C<\> operator was
+copying the variable.  Under threaded builds, it would also happen for
+constants (C<for(1) { ... }>).  This has been fixed. [perl #21979, #78194,
+#89188, #109746, #114838, #115388]
 
 =item *
 
-The range operator C<..> was returning the same modifiable scalars with
-each call, unless it was the only thing in a C<foreach> loop header.  This
-meant that changes to values within the list returned would be visible the
-next time the operator was executed [perl #3105].
+The range operator C<..> was returning the same modifiable scalars with each
+call, unless it was the only thing in a C<foreach> loop header.  This meant
+that changes to values within the list returned would be visible the next time
+the operator was executed. [perl #3105]
 
 =item *
 
-Constant folding and subroutine inlining no longer cause operations that
-would normally return new modifiable scalars to return read-only values
-instead.
+Constant folding and subroutine inlining no longer cause operations that would
+normally return new modifiable scalars to return read-only values instead.
 
 =item *
 
 Closures of the form C<sub () { $some_variable }> are no longer inlined,
-causing changes to the variable to be ignored by callers of the subroutine
-[perl #79908].
+causing changes to the variable to be ignored by callers of the subroutine.
+[perl #79908]
 
 =item *
 
 Return values of certain operators such as C<ref> would sometimes be shared
 between recursive calls to the same subroutine, causing the inner call to
-modify the value returned by C<ref> in the outer call.  This has been
-fixed.
+modify the value returned by C<ref> in the outer call.  This has been fixed.
 
 =item *
 
 C<__PACKAGE__> and constants returning a package name or hash key are now
-consistently read-only.  In various previous Perl releases, they have
-become mutable under certain circumstances.
+consistently read-only.  In various previous Perl releases, they have become
+mutable under certain circumstances.
 
 =item *
 
-C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has
-been fixed [perl #118213].
+C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has been
+fixed. [perl #118213]
 
 =item *
 
-Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
+Starting in Perl 5.18.0, a construct like C</[#](?{})/x> would have its C<#>
 incorrectly interpreted as a comment.  The code block would be skipped,
 unparsed.  This has been corrected.
 
 =item *
 
-Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
-C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
-the variable would not interpolate.  This has been corrected [perl #45667].
+Starting in Perl 5.001, a regular expression like C</[#$a]/x> or C</[#]$a/x>
+would have its C<#> incorrectly interpreted as a comment, so the variable would
+not interpolate.  This has been corrected. [perl #45667]
 
 =item *
 
-On non-threaded builds, setting C<${"_<filename"}> to a reference or
-typeglob no longer causes C<__FILE__> and some error messages to produce a
-corrupt string, and no longer prevents C<#line> directives in string evals
-from providing the source lines to the debugger.  Threaded builds were
-unaffected.
+On non-threaded builds, setting C<${"_<filename"}> to a reference or typeglob
+no longer causes C<__FILE__> and some error messages to produce a corrupt
+string, and no longer prevents C<#line> directives in string evals from
+providing the source lines to the debugger.  Threaded builds were unaffected.
 
 =item *
 
-Enabling "used once" warnings no longer causes crashes on stash
-circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
+Enabling "used once" warnings no longer causes crashes on stash circularities
+created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
 
 =item *
 
@@ -549,43 +535,85 @@ longer produce "uninitialized" warnings at compile time.
 
 =item *
 
-Modifying a substitution target inside the substitution replacement no
-longer causes crashes.
+Modifying a substitution target inside the substitution replacement no longer
+causes crashes.
 
 =item *
 
-The first statement inside a string eval used to use the wrong pragma setting sometimes during constant folding.  C<eval 'uc chr 0xe0'> would randomly choose between Unicode, byte, and locale semantics.  This has been
-fixed.
+The first statement inside a string eval used to use the wrong pragma setting
+sometimes during constant folding.  C<eval 'uc chr 0xe0'> would randomly choose
+between Unicode, byte, and locale semantics.  This has been fixed.
 
 =item *
 
 The handling of return values of @INC filters (subroutines returned by
-subroutines in @INC) has been fixed in various ways.  Previously tied
-variables were mishandled, and setting $_ to a reference or typeglob could
-result in crashes.
+subroutines in @INC) has been fixed in various ways.  Previously tied variables
+were mishandled, and setting $_ to a reference or typeglob could result in
+crashes.
 
-=back
+=item *
 
-=head1 Known Problems
+The C<SvPVbyte> XS function has been fixed to work with tied scalars returning
+something other than a string.  It used to return utf8 in those cases where
+C<SvPV> would.
 
-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.
+=item *
 
-[ List each fix as a =item entry ]
+Perl 5.18.0 inadvertently made dereferenced regular expressions
+S<(C<${ qr// }>)> false as booleans.  This has been fixed.
 
-=over 4
+=item *
+
+Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular
+expressions, and stopped C<++> from flattening vstrings.
 
 =item *
 
-XXX
+C<bless> no longer dies with "Can't bless non-reference value" if its first
+argument is a tied reference.
 
-=back
+=item *
+
+C<reset> with an argument no longer skips copy-on-write scalars, regular
+expressions, typeglob copies, and vstrings.  Also, when encountering those or
+read-only values, it no longer skips any array or hash with the same name.
+
+=item *
+
+C<reset> with an argument now skips scalars aliased to typeglobs
+(C<for $z (*foo) { reset "z" }>).  Previously it would corrupt memory or crash.
+
+=item *
+
+C<ucfirst> and C<lcfirst> were not respecting the bytes pragma.  This was a
+regression from Perl 5.12. [perl #117355]
 
-=head1 Obituary
+=item *
 
-XXX If any significant core contributor has died, we've added a short obituary
-here.
+The use of C<\G> in regular expressions, where it's not at the start of the
+pattern, is now slightly less buggy (although it is still somewhat
+problematic).
+
+=item *
+
+Where a regular expression included code blocks (C</(?{...})/>), and where the
+use of constant overloading triggered a re-compilation of the code block, the
+second compilation didn't see its outer lexical scope.  This was a regression
+in Perl 5.18.0.
+
+=item *
+
+Changes to C<UNIVERSAL::DESTROY> now update DESTROY caches in all classes,
+instead of causing classes that have already had objects destroyed to
+continue using the old sub.  This was a regression in Perl 5.18. [perl #114864]
+
+=item *
+
+All known false-positive occurrences of the deprecation warning "Useless use of
+'\'; doesn't escape metacharacter '%c'", added in Perl 5.18.0, have been
+removed. [perl #119101]
+
+=back
 
 =head1 Acknowledgements