This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: c56ed9f deserves no mention
[perl5.git] / pod / perldelta.pod
index edfd90f..29d346a 100644 (file)
@@ -1,19 +1,27 @@
 =encoding utf8
 
+=for comment
+Stuff that needs to be done still:
+70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
+88b3a46 PATCH (partial) [perl #107816] Performance regression since 0abd0d78
+eb40d2c [perl #2726] Prototype is not applied until BLOCK is defined
+8fe3c67 fix 114884 positive GPOS lookbehind regex substitution failure
+d8fe30a Avoid read-after-free in S_scan_heredoc() if the terminator line has no "\n".
+
 =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.2
+perldelta - what is new for perl v5.19.3
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.19.1 release and the 5.19.2
+This document describes differences between the 5.19.2 release and the 5.19.3
 release.
 
-If you are upgrading from an earlier release such as 5.19.0, first read
-L<perl5191delta>, which describes differences between 5.19.0 and 5.19.1.
+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
 
@@ -25,20 +33,15 @@ 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.
 
-=head2 More consistent prototype parsing
+[ List each enhancement as a =head2 entry ]
+
+=head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
 
-Multiple semicolons in subroutine prototypes have long been tolerated and
-treated as a single semicolon.  There was one case where this did not
-happen.  A subroutine whose prototype begins with "*" or ";*" can affect
-whether a bareword is considered a method name or sub call.  This now
-applies also to ";;;*".
+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.
 
-Whitespace has long been allowed inside subroutine prototypes, so
-C<sub( $ $ )> is equivalent to C<sub($$)>.  But it was stripped when the
-subroutine was parse.  Hence, whitespace was I<not> allowed in prototypes
-set by C<Scalar::Util::set_prototype>.  Now it is permitted, and the parser
-no longer strips whitespace.  This means C<prototype &mysub> returns the
-original prototype, whitespace and all.
+You can still use B<-p> for its extra behaviour. [perl #116190]
 
 =head1 Security
 
@@ -132,42 +135,260 @@ XXX
 
 =item *
 
-L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.31
+L<B> has been upgraded from version 1.44 to 1.45.
+
+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]
+
+Added the C<NAME_HEK> method to return the name of a lexical sub.
+
+=item *
+
+L<bignum> has been upgraded from version 0.35 to 0.36.
+
+L<bigrat> wasn't correctly updating an internal variable when C<use>d with a
+C<lib> option.
+
+=item *
+
+L<Carp> has been upgraded from 1.30 to 1.31
+
+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]
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
+
+XXX: TODO
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
+
+XXX: TODO
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
+
+XXX: TODO
+
+=item *
+
+L<constant> has been upgraded from version 1.27 to 1.28.
+
+Note that list constants will be inlined and may be read-only in future Perl
+versions.
+
+=item *
+
+L<CPAN::Meta> has been upgraded from version 2.131560 to 2.132140.
+
+Some documentation typos have been fixed.
+
+=item *
+
+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<DB> has been upgraded from 1.41 to 1.42.
+
+The Perl debugger no longer crashes with C<PERLDB_OPTS="noTTY frame=2">.
+
+=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<diagnostics> has been upgraded from version 1.31 to 1.32.
+
+Wrapped links are no longer truncated.
+
+=item *
+
+L<DynaLoader> has been upgraded from version 1.18 to 1.19.
 
-The generated C<C> code now incorporates bug fixes present in
-F<miniperlmain.c>, and has whitespace changes. It now uses
-C<#include "..."> for header files instead of C<< #include <...> >>.
-This should not make any difference, unless programs embedding C<libperl>
-happen to have local and incompatible files named F<EXTERN.h>, F<XSUB.h> or
-F<perl.h>, as these will now be picked up instead of the installed Perl
-headers.
+The $dl_dlext variable is now documented.
 
 =item *
 
-L<ExtUtils::Miniperl> has been upgraded and given a version of 1.
-Previously it did not have a version number.
+L<Encode> has been upgraded from version 2.51 to 2.52.
 
-C<writemain()> now takes an optional first argument. A reference to a scalar
-is treated as a filename to be opened and written to. Any other reference is
-used as the filehandle to write to. Otherwise the existing default remains,
-to write to C<STDOUT>.
+Encoding "0" with MIME-Headers no longer gets a blank string.
 
-C<writemain()> has been refactored to use functions from L<ExtUtils::Embed>,
-reducing code size and duplication. The internal function C<canon()> has been
-deleted.
+=item *
+
+L<English> has been upgraded from version 1.07 to 1.08.
+
+The documentation of a performance fix has been corrected.
+
+=item *
+
+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<File::Spec> has been upgraded from 3.41 to 3.44.
+
+The module is now partly implemented in XS, for performance.
+
+=item *
+
+L<ExtUtils::MakeMaker> has been upgraded from 6.68 to 6.72.
+
+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<ExtUtils::ParseXS> has been upgraded from version 3.18 to 3.21.
+
+XXX: TODO
+
+=item *
+
+L<Getopt::Std> has been upgraded from version 1.09 to 1.10.
+
+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.
+
+XXX: TODO
 
 =item *
 
-L<POSIX> has been upgraded from version 1.33 to 1.34.
+L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
 
-C<POSIX::AUTOLOAD> will no longer infinitely recurse if the shared
-object fails to load.
+C<run_forked> has various fixes/improvements, L<Socket> is only used where
+needed and a regression introduced in 0.78 has been fixed.
 
 =item *
 
-L<Storable> has been upgraded from version 2.43 to 2.44.
+L<IPC::Open3> has been upgradded from version 1.14 to 1.15.
 
-Calling C<STORABLE_attach> hooks no longer leaks memory. [perl #118829]
+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.
+
+XXX: TODO
+
+=item *
+
+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
+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.
+
+XXX: TODO
+
+=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.
+
+XXX: TODO
+
+=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.
+
+Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
+structures due to embedded sun_len. [cpan #86613]
+
+=item *
+
+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]
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726.
+
+Now provides an C<lstat> function.
+Various bugs fixed.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.21 to 1.22.
+
+XXX: TODO
+
+=item *
+
+L<utf8> has been upgraded from version 1.12 to 1.13.
+
+A minor clarification has been made in the documentation.
 
 =back
 
@@ -200,27 +421,40 @@ 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<perlexperiment>
+=head3 L<perlopentut>
 
 =over 4
 
 =item *
 
-Code in regular expressions, regular expression backtracking verbs,
-and lvalue subroutines are no longer listed as experimental.  (This
-also affects L<perlre> and L<perlsub>.)
+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 L<perlopentut>.  A "more than
+you ever wanted to know about C<open>" document may follow in subsequent
+versions of perl.
 
 =back
 
-=head3 L<perlfunc>
+=head3 L<perlre>
 
 =over 4
 
 =item *
 
-Since Perl v5.10, it has been possible for subroutines in @INC to return
-a reference to a scalar holding initial source code to prepend to the file.
-This is now documented.
+The C</r> modifier (for non-destructive substitution) is now documented. [perl
+#119151]
+
+=back
+
+=head3 L<perlxs>
+
+=over 4
+
+=item *
+
+Several problems in the C<MY_CXT> example have been fixed.
 
 =back
 
@@ -254,11 +488,12 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-L<Missing ']' in prototype for %s : %s|perldiag/"Missing ']' in prototype
-for %s : %s">
+L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
+as 0 in increment (++)">
 
-(W illegalproto) A grouping was started with C<[> but never closed with
-C<]>.
+(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.
 
 =back
 
@@ -270,34 +505,7 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-Under rare circumstances, one could get a "Can't coerce readonly REF to
-string" instead of the customary "Modification of a read-only value".  This
-alternate error message has been removed.
-
-=item *
-
-"Ambiguous use of * resolved as operator *": This and similar warnings
-about "%" and "&" used to occur in some circumstances where there was no
-operator of the type cited, so the warning was completely wrong.  This has
-been fixed [perl #117535, #76910].
-
-=item *
-
-Warnings about malformed subroutine prototypes are now more consistent in
-how the prototypes are rendered.  Some of these warnings would truncate
-prototypes containing nulls.  In other cases one warning would suppress
-another.  The warning about illegal characters in prototypes no longer says
-"after '_'" if the bad character came before the underscore.
-
-=item *
-
-L<"Perl folding rules are not up-to-date for 0x%X; please use the perlbug
-utility to report; in regex; marked by <-- HERE in m/%s/"|perldiag/"Perl
-folding rules are not up-to-date for 0x%X; please use the perlbug utility
-to report; in regex; marked by <-- HERE in m/%s/">:
-
-This message is now only in the regexp category, and not in the deprecated
-category.  It is still a default (i.e., severe) warning [perl #89648].
+XXX Describe change here
 
 =back
 
@@ -333,32 +541,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-F<installperl> and F<installman>'s option handling has been refactored to use
-L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and
-are not installed, so these changes are only likely to affect custom
-installation scripts.
-
-=over 4
-
-=item *
-
-single letter options now also have long names
-
-=item *
-
-invalid options are now rejected
-
-=item *
-
-command line arguments that are not options are now rejected
-
-=item *
-
-Each now has a C<--help> option to display the usage message.
-
-=back
-
-The behaviour for all valid documented invocations is unchanged.
+XXX
 
 =back
 
@@ -423,12 +606,9 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item MidnightBSD
+=item XXX-some-platform
 
-C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been
-deprecated on earlier versions.  This caused the build environment to be
-erroneously configured for C<a.out> rather than C<elf>.  This has been now
-been corrected.
+XXX
 
 =back
 
@@ -444,167 +624,176 @@ well.
 
 =item *
 
-The Makefile shortcut targets for many rarely (or never) used testing and
-profiling targets have been removed, or merged into the only other Makefile
-target that uses them.  Specifically, these targets are gone, along with
-documentation that referenced them or explained how to use them:
+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<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]
 
-    check.third check.utf16 check.utf8 coretest minitest.prep
-    minitest.utf16 perl.config.dashg perl.config.dashpg
-    perl.config.gcov perl.gcov perl.gprof perl.gprof.config
-    perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
-    perl.third perl.third.config perl.valgrind.config purecovperl
-    pureperl quantperl test.deparse test.taintwarn test.third
-    test.torture test.utf16 test.utf8 test_notty.deparse
-    test_notty.third test_notty.valgrind test_prep.third
-    test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
-    ucheck.valgrind utest utest.third utest.utf16 utest.valgrind
+=item *
 
-It's still possible to run the relevant commands by "hand" - no underlying
-functionality has been removed.
+On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1.
+[perl #72766]
 
 =item *
 
-It is now possible to keep Perl from initializing locale handling.
-For the most part, Perl doesn't pay attention to locale.  (See
-L<perllocale>.)  Nonetheless, until now, on startup, it has always
-initialized locale handling to the system default, just in case the
-program being executed ends up using locales.  (This is one of the first
-things a locale-aware program should do, long before Perl knows if it
-will actually be needed or not.)  This works well except when Perl is
-embedded in another application which wants a locale that isn't the
-system default.  Now, if the environment variable
-C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this
-initialization step is skipped.  Prior to this, on Windows platforms,
-the only workaround for this deficiency was to use a hacked-up copy of
-internal Perl code.  Applications that need to use older Perls can
-discover if the embedded Perl they are using needs the workaround by
-testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not
-defined.  (RT #38193)
+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]
 
 =item *
 
-C<BmRARE> and C<BmPREVIOUS> have been removed.  They were not used anywhere
-and are not part of the API.  For XS modules, they are now #defined as 0.
+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 *
 
-C<sv_force_normal>, which usually croaks on read-only values, used to allow
-read-only values to be modified at compile time.  This has been changed to
-croak on read-only values regardless.  This change uncovered several core
-bugs.
+Constant folding and subroutine inlining no longer cause operations that would
+normally return new modifiable scalars to return read-only values instead.
 
-=back
+=item *
 
-=head1 Selected Bug Fixes
+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]
 
-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>.
+=item *
 
-[ List each fix as a =item entry ]
+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.
 
-=over 4
+=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.
+
+=item *
+
+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<#>
+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]
 
 =item *
 
-There have been several fixes related to Perl's handling of locales.  perl
-#38193 was described above in L</Internal Changes>.
-Also fixed is #112208 in which the error string in C<$!> displayed as
-garbage in many UTF-8 locales;
-#118197, where the radix (decimal point) character had to be an ASCII
-character (which doesn't work for some non-Western languages);
-and #115808, in which C<POSIX::setlocale()> on failure returned an
-C<undef> which didn't warn about not being defined even if those
-warnings were enabled.
+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 *
 
-The dtrace sub-entry probe now works with lexical subs, instead of
-crashing [perl #118305].
+Enabling "used once" warnings no longer causes crashes on stash circularities
+created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
 
 =item *
 
-Compiling a C<split> operator whose third argument is a named constant
-evaulating to 0 no longer causes the constant's value to change.
+Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
+longer produce "uninitialized" warnings at compile time.
 
 =item *
 
-A named constant used as the second argument to C<index> no longer gets
-coerced to a string if it is a reference, regular expression, dualvar, etc.
+Modifying a substitution target inside the substitution replacement no longer
+causes crashes.
 
 =item *
 
-A named constant evaluating to the undefined value used as the second
-argument to C<index> no longer produces "uninitialized" warnings at compile
-time.  It will still produce them at run time.
+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 *
 
-When a scalar was returned from a subroutine in @INC, the referenced scalar
-was magically converted into an IO thingy, possibly resulting in "Bizarre
-copy" errors if that scalar continued to be used elsewhere.  Now Perl uses
-an internal copy of the scalar instead.
+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.
 
 =item *
 
-Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef
-&foo>) would result in a crash if warnings were turned on.
+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.
 
 =item *
 
-Certain uses of the C<sort> operator are optimised to modify an array in
-place, such as C<@a = sort @a>.  During the sorting, the array is made
-read-only.  If a sort block should happen to die, then the array remained
-read-only even outside the C<sort>.  This has been fixed.
+Perl 5.18.0 inadvertently made dereferenced regular expressions
+S<(C<${ qr// }>)> false as booleans.  This has been fixed.
 
 =item *
 
-C<$a> and C<$b> inside a sort block are aliased to the actual arguments to
-C<sort>, so they can be modified through those two variables.  This did not
-always work, e.g., for lvalue subs and C<$#ary>, and probably many other
-operators.  It works now.
+Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular
+expressions, and stopped C<++> from flattening vstrings.
 
 =item *
 
-The arguments to C<sort> are now all in list context.  If the C<sort>
-itself were called in void or scalar context, then I<some>, but not all, of
-the arguments used to be in void or scalar context.
+C<bless> no longer dies with "Can't bless non-reference value" if its first
+argument is a tied reference.
 
 =item *
 
-Subroutine prototypes with Unicode characters above U+00FF were getting
-mangled during closure cloning.  This would happen with subroutines closing
-over lexical variables declared outside, and with lexical subs.
+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 *
 
-In regular expressions containing multiple code blocks, the values of
-C<$1>, C<$2>, etc., set by nested regular expression calls would leak from
-one block to the next.  Now these variables always refer to the outer
-regular expression at the start of an embedded block [perl #117917].
+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<UNIVERSAL::can> now treats its first argument the same way that method
-calls do: Typeglobs and glob references with non-empty IO slots are treated
-as handles, and strings are treated as filehandles, rather than packages,
-if a handle with that name exists [perl #113932].
+C<ucfirst> and C<lcfirst> were not respecting the bytes pragma.  This was a
+regression from v5.12. [perl #117355]
 
 =item *
 
-Method calls on typeglobs (e.g., C<< *ARGV->getline >>) used to stringify
-the typeglob and then look it up again.  Combined with changes in Perl
-5.18.0, this allowed C<< *foo->bar >> to call methods on the "foo" package
-(like C<< foo->bar >>).  In some cases it could cause the method to be
-called on the wrong handle.  Now a typeglob argument is treated as a
-handle (just like C<< (\*foo)->bar >>), or, if its IO slot is empty, an
-error is raised.
+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 *
 
-Under copy-on-write builds (the default as of 5.19.1) C<${'_<-e'}[0]> no
-longer gets mangled.  This is the first line of input saved for the
-debugger's use for one-liners [perl #118627].
+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 5.18.0.
 
 =back
 
@@ -633,7 +822,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.19.1..HEAD
+  perl Porting/acknowledgements.pl v5.19.2..HEAD
 
 =head1 Reporting Bugs