This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 8c9d3376fbf
[perl5.git] / pod / perldelta.pod
index b1eec27..c59b99b 100644 (file)
@@ -1,27 +1,23 @@
 =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".
+To do:
+3f40aba3 Merge branch 'ebcdic' into blead
 
 =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
+perldelta - what is new for perl v5.19.4
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.19.2 release and the 5.19.3
+This document describes differences between the 5.19.3 release and the 5.19.4
 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.
+If you are upgrading from an earlier release such as 5.19.2, first read
+L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
 
 =head1 Notice
 
@@ -35,13 +31,26 @@ 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>
+=head2 rand() now uses a consistent random number generator
 
-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 perl would use a platform specific random number generator,
+varying between the libc C<rand()>, C<random()> or C<drand48()>.
 
-You can still use B<-p> for its extra behaviour. [perl #116190]
+This meant that the quality of perl's random numbers would vary from
+platform to platform, from the 15 bits of C<rand()> on Win32 to
+48-bits on POSIX platforms such as Linux with C<drand48()>.
+
+Perl now uses its own internal C<drand48()> implementation on all
+platforms.  [perl #115928]
+
+=head2 Better 64-bit support
+
+On 64-bit platforms, the internal array functions now use 64-bit offsets,
+allowing Perl arrays to hold more than 2**31 elements, if you have the
+memory available.
+
+The regular expression engine now supporst strings longer than 2**31
+characters.  [perl #112790, #116907]
 
 =head1 Security
 
@@ -53,13 +62,23 @@ L</Selected Bug Fixes> section.
 
 =head1 Incompatible Changes
 
-XXX For a release on a stable branch, this section aspires to be:
+=head2 Locale decimal point character no longer leaks outside of
+S<C<use locale>> scope (with the exception of C<$!>)
 
-    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.
+This is actually a bug fix, but some code has come to rely on the bug being
+present, so this change is listed here.  The current locale that the program is
+running under is not supposed to be visible to Perl code except within the
+scope of a S<C<use locale>>.  However, until now under certain circumstances,
+the character used for a decimal point (often a comma) leaked outside the
+scope.
 
-[ List each incompatible change as a =head2 entry ]
+This continues the work released in Perl 5.19.1.  It turns out that that did
+not catch all the leaks, including C<printf> and C<sprintf> not respecting
+S<C<use locale>>.  If your code is affected by this change, simply add a
+S<C<use locale>>.
+
+Now, the only known place where C<'use locale'> is not respected is in the
+stringification of L<$!|perlvar/$!>.
 
 =head1 Deprecations
 
@@ -94,16 +113,12 @@ as an updated module in the L</Modules and Pragmata> section.
 
 =head1 Performance Enhancements
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
-
-[ List each enhancement as a =item entry ]
-
 =over 4
 
 =item *
 
-XXX
+The trie performance enhancement for regular expressions has now been extended
+to those compiled under C</iaa>.
 
 =back
 
@@ -135,256 +150,343 @@ XXX
 
 =item *
 
-L<B> has been upgraded from version 1.44 to 1.45.
+L<autodie> has been upgraded from version 2.20 to 2.21.
 
-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]
+Numerous improvements have been made, many speed-related.  See the F<Changes>
+file in the CPAN distribution for full details.
 
-Added the C<NAME_HEK> method to return the name of a lexical sub.
+=item *
+
+L<B> has been upgraded from version 1.45 to 1.46.
+
+The fix for [perl #118525] introduced a regression in the behaviour of
+C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
+C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL>
+object in this case. [perl #119351]
 
 =item *
 
-L<bignum> has been upgraded from version 0.33 to 0.36.
+L<B::Concise> has been upgraded from version 0.98 to 0.99.
 
-L<bigrat> wasn't correctly updating an internal variable when C<use>d with a
-C<lib> option.
+The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
 
 =item *
 
-L<Carp> has been upgraded from 1.30 to 1.31
+L<Carp> has been upgraded from version 1.31 to 1.32.
 
-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.
+In stack traces, subroutine arguments that are strings are now quoted in a
+consistent manner, regardless of what characters they contain and how they're
+internally represented.
 
-No changes have been made other than the version bump to keep in sync with
-other related modules.
+=item *
+
+C<Carp> now takes care not to clobber the status variables C<$!> and
+C<$^E>.
 
 =item *
 
-L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
+C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
+C<overload> stash.
+
+=item *
 
-A minor typo has been fixed in the documentation.
+C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
+affect behaviour with current Perl.
 
 =item *
 
-L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
+C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
+message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
+expects C<Carp::Heavy> to provide subroutines.
 
-The list of build options has been updated.
+=back
 
 =item *
 
-L<constant> has been upgraded from version 1.27 to 1.28.
+L<charnames> has been upgraded from version 1.38 to 1.39.
 
-Note that list constants will be inlined and may be read-only in future Perl
-versions.
+This module now works on EBCDIC platforms.
 
 =item *
 
-L<CPAN::Meta> has been upgraded from version 2.131560 to 2.132140.
+L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
 
-Some documentation typos have been fixed.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
+L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
 
-The compatbility of the XS implementation with the pure perl version under
-C<Useqq> has been improved. [perl #118933]
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<DB> has been upgraded from 1.41 to 1.42.
+L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
 
-The Perl debugger no longer crashes with C<PERLDB_OPTS="noTTY frame=2">.
+This upgrade is part of a larger change to make the array interface 64-bit safe
+by using SSize_t instead of I32 for array indices.
+
+In addition, an EBCDIC fix has been applied.
 
 =item *
 
-L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
+L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
+
+This upgrade is part of a larger change to preserve referential identity when
+passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
+nonexistent array elements.
 
-C<SvREFCNT_inc> and C<SvREFCNT_dec> have been removed and C<SvREFCNT> will now
-work on non-scalars. [perl #117793]
+In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
+fixed.
 
-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.
+=item *
+
+L<DynaLoader> has been upgraded from version 1.19 to 1.20.
 
-C<fill_mstats> no longer crashes if its argument is not already a string.
-[perl #92260]
+The documentation now makes it clear, as has always been the case, that
+C<dl_unload_file> is only called automatically to unload all loaded shared
+objects if the perl interpreter was built with the C macro
+DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
 
 =item *
 
-L<diagnostics> has been upgraded from version 1.31 to 1.32.
+L<Encode> has been upgraded from version 2.52 to 2.55.
 
-Wrapped links are no longer truncated.
+An erroneous early return in C<decode_utf8> has been removed, and a bug in
+C<_utf8_on> under COW has been fixed.  Encode also now uses L<parent> rather
+than L<base> throughout.
 
 =item *
 
-L<DynaLoader> has been upgraded from version 1.18 to 1.19.
+L<Exporter> has been upgraded from version 5.69 to 5.70.
 
-The $dl_dlext variable is now documented.
+A number of typos have been corrected in the documentation.
 
 =item *
 
-L<Encode> has been upgraded from version 2.51 to 2.52.
+L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
 
-Encoding "0" with MIME-Headers no longer gets a blank string.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<English> has been upgraded from version 1.07 to 1.08.
+L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
 
-The documentation of a performance fix has been corrected.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<Exporter> has been upgraded from version 5.68 to 5.69.
+L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
 
-L<Exporter> would ignore custom $SIG{__WARN__} handlers in C<Exporter::Heavy>.
-[perl #39739]
+Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
+full details.
 
 =item *
 
-L<ExtUtils::MakeMaker> has been upgraded from 6.68 to 6.72.
+L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
 
-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>.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<File::Spec> has been upgraded from 3.41 to 3.44.
+L<File::Find> has been upgraded from version 1.24 to 1.25.
 
-The module is now partly implemented in XS, for performance.
+Better diagnostics are now provided in the case of a failed C<chdir>.
 
 =item *
 
-L<Getopt::Std> has been upgraded from version 1.09 to 1.10.
+L<File::Glob> has been upgraded from version 1.20 to 1.21.
 
-Clarified documentation of what happens when a switch is expecting an argument
-but fails to be provided with one.
+C<glob()> now warns in the context of C<use warnings "syscalls";> if the
+supplied pattern has an internal NUL (C<"\0">) character.
 
 =item *
 
-The IO-Compress module collection has been upgraded from 2.061 to 2.062.
+L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
 
-Some documentation typos have been fixed.
+Encoded data from C<post_form> now preserves term order if data is provided as
+an array reference.  (They are still sorted for consistency if provided as a
+hash reference.)
 
 =item *
 
-L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
+L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
 
-C<run_forked> has various fixes/improvements, L<Socket> is only used where
-needed and a regression introduced in 0.78 has been fixed.
+Bosnian has now joined Croatian and Serbian in the lists of mutually
+intelligible Slavic languages. [perl #72594]
 
 =item *
 
-L<IPC::Open3> has been upgradded from version 1.14 to 1.15.
+L<IO> has been upgraded from version 1.28 to 1.29.
 
-C<open3> would leak a zombie process if the child process I/O redirection or
-C<exec> failed. [perl #114722]
+A minor internals-only change has been made to the XS code.
 
 =item *
 
-L<IPC::SysV> has been upgraded from version 2.03 to 2.04.
+L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
 
-$EXPORT_TAGS{all} has been added and a couple of typos have been fixed.
+This upgrade is part of a larger change to preserve referential identity when
+passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
+nonexistent array elements.
 
 =item *
 
-The libnet module collection has been upgraded from version 1.22 to 1.23.
+L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
 
-Numerous bug fixes and documentation improvements have been made.  See the
-F<Changes> file for full details.
+New codes have been added and the (deprecated) set of FIPS-10 country codes has
+been removed.
 
 =item *
 
-L<List::Util> has been upgraded from version 1.27 to 1.31.
+L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
 
-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.
+Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
+consistent with other perl documentation. [perl #86686]
+
+Added a bint() method for rounding towards zero. [perl #85296]
 
 =item *
 
-L<Module::Build> has been upgraded from 0.4005 to 0.4007.
+L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
 
-The test suite has been significantly sped up, Unicode man page support has
-been enhanced and hash argument parsing in subclasses has been fixed.
+This upgrade is part of a larger change to make the array interface 64-bit safe
+by using SSize_t instead of I32 for array indices.
 
 =item *
 
-L<Module::CoreList> has been upgraded from 2.92 to 2.97.
+L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
 
 The list of Perl versions covered has been updated.
 
 =item *
 
-L<mro> has been upgraded from version 1.12 to 1.13.
+L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
+
+C<requires> has been made more robust. [cpan #83728]
+
+=item *
+
+L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
+
+The module's DESCRIPTION has been re-worded regarding safety/security to
+satisfy CVE-2013-1437.  Also, versions are now detainted if needed. [cpan
+#88576]
+
+=item *
+
+L<mro> has been upgraded from version 1.13 to 1.14.
 
-A minor typo has been fixed in the documentation.
+This upgrade is part of a larger change to make the array interface 64-bit safe
+by using SSize_t instead of I32 for array indices.
 
 =item *
 
-L<parent> has been upgraded from version 0.225 to 0.226.
+L<parent> has been upgraded from version 0.226 to 0.227.
 
-Internal changes only have been made to the test suite.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<PerlIO> has been upgraded from version 1.07 to 1.08.
+L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
 
-Although not a security vulnerability, it was possible to inject code via
-C<PerlIO-E<gt>import()>.  This has now been fixed. [perl #119287]
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<Pod::Functions> has been upgraded from version 1.07 to 1.08.
+L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
 
-Internal changes only have been made to the test suite.
+The Unix OSType 'bitrig' has been added.
 
 =item *
 
-L<Socket> has been upgraded from version 2.010 to 2.011.
+L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
 
-Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
-structures due to embedded sun_len. [cpan #86613]
+The use of C<gensym> in a number of examples has been removed, the use of C<&>
+in subroutine calls is now clarified and several new questions have been
+answered.
 
 =item *
 
-L<Storable> has been upgraded from version 2.45 to 2.46.
+L<re> has been upgraded from version 0.25 to 0.26.
 
-Avoid creating temporary objects for STORABLE_attach when they aren't required.
-[perl #118907]
+A function signature has been corrected in the XS implementation.
 
 =item *
 
-L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726.
+L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
 
-An C<lstat> function is now provided and various bugs have been fixed.  See the
-F<Changes> file for full details.
+The documentation of C<blessed> has been improved to mention the fact that
+package "0" is defined but false.
 
 =item *
 
-L<Time::Piece> has been upgraded from version 1.21 to 1.22.
+L<Socket> has been upgraded from version 2.011 to 2.012.
 
-A minor documentation encoding problem has been fixed.
+Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
 
 =item *
 
-L<utf8> has been upgraded from version 1.12 to 1.13.
+L<Storable> has been upgraded from version 2.46 to 2.47.
 
-A minor clarification has been made in the documentation.
+This upgrade is part of a larger change to preserve referential identity when
+passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
+nonexistent array elements.
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
+
+Term::ReadLine::EditLine support has been added.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.22 to 1.23.
+
+Day of year parsing (like "%y%j") has been fixed.
+
+=item *
+
+L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
+
+By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
+CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
+20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
+overridden.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
+
+This module now works on EBCDIC platforms.
+
+=item *
+
+L<version> has been upgraded from version 0.9903 to 0.9904.
+
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
+
+=item *
+
+L<warnings> has been upgraded from version 1.18 to 1.19.
+
+The C<syscalls> warnings category has been added to check for embedded NUL
+(C<"\0">) characters in pathnames and string arguments to other system calls.
+
+=item *
+
+L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
 
 =back
 
@@ -417,40 +519,13 @@ 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
-
-=item *
-
-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<perlre>
-
-=over 4
-
-=item *
-
-The C</r> modifier (for non-destructive substitution) is now documented. [perl
-#119151]
-
-=back
-
-=head3 L<perlxs>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-Several problems in the C<MY_CXT> example have been fixed.
+XXX Description of the change here
 
 =back
 
@@ -474,12 +549,7 @@ and New Warnings
 
 =item *
 
-L<Magical list constants are not supported|perldiag/"Magical list constants are
-not supported">
-
-(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.
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -489,38 +559,41 @@ do, details subject to change between Perl versions.
 
 =item *
 
-L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
-as 0 in increment (++)">
+L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
 
-(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.
+(W syscalls) Embedded \0 characters in pathnames or other system call arguments
+produce a warning as of 5.20. The parts after the \0 were formerly ignored by
+system calls.
 
-=item *
+=back
+
+=head2 Changes to Existing Diagnostics
 
-L<Unexpected exit %u|perldiag/"Unexpected exit %u">
+XXX Changes (i.e. rewording) of diagnostic messages go here
 
-(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 *
 
-L<Unexpected exit failure %u|perldiag/"Unexpected exit failure %u">
-
-(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in
-C<PL_exit_flags>.
+Warnings and errors from the regexp engine are now UTF-8 clean
 
-=back
+=item *
 
-=head2 Changes to Existing Diagnostics
+The "Unknown switch condition" error message has some slight changes.
+This error triggers when there is an unknown condition in a (?(foo))
+conditional; The error message used to read:
 
-XXX Changes (i.e. rewording) of diagnostic messages go here
+    Unknown switch condition (?(%s in regex;
 
-=over 4
+But what %s could be was mostly up to luck; For (?(foobar)), you
+might've seen "fo" or "f".  For Unicode characters, you'd generally
+get a corrupted string.
+The message was changed to read:
 
-=item *
+    Unknown switch condition (?(...)) in regex;
 
-XXX Describe change here
+And additionally, the '<-- HERE' marker in the error will now point
+to the correct spot in the regex.
 
 =back
 
@@ -533,13 +606,13 @@ Most of these are built within the directories F<utils> and F<x2p>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head3 L<XXX>
+=head3 L<find2perl>
 
 =over 4
 
 =item *
 
-XXX
+L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
 
 =back
 
@@ -556,7 +629,15 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
+avoids a race condition during parallel makes, which could cause the build to
+fail.  This is the last known parallel make problem (on *nix platforms), and
+therefore we believe that a parallel make should now always be error free.
+
+=for comment
+
+Strictly only for a build where build files such as F<Makefile.SH> have not
+been updated by C<git> in an already configured and built tree.
 
 =back
 
@@ -574,7 +655,23 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XXX
+The test script F<t/bigmem/regexp.t> has been added to test that regular
+expression matches on very large strings now succeed as expected.
+
+=item *
+
+Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
+now tested by the new test script F<t/op/rt119311.t>.
+
+=item *
+
+The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
+preserved across signal handlers by the Win32 signal emulation code.
+
+=item *
+
+The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
+program on platforms where it is practical to do so.
 
 =back
 
@@ -594,9 +691,9 @@ source tree.
 
 =over 4
 
-=item XXX-some-platform
+=item Bitrig
 
-XXX
+Compile support has been added for Bitrig, a fork of OpenBSD.
 
 =back
 
@@ -604,11 +701,16 @@ XXX
 
 XXX List any platforms that this version of perl no longer compiles on.
 
+Configure hints and conditional code for several very old platforms
+has been removed.  We have not received reports for these in many years,
+typically not since perl-5.6.0.
+
 =over 4
 
-=item XXX-some-platform
+=item AT&T 3b1
 
-XXX
+Configure support for the 3b1, also known as the AT&T Unix PC (and the
+similar AT&T 7300), has been removed.
 
 =back
 
@@ -621,9 +723,12 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item XXX-some-platform
+=item WinCE
 
-XXX
+The building of XS modules has largely been restored. Several still cannot
+(yet) be built but it is now possible to build Perl on WinCE with only a couple
+of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
+incorporated soon.
 
 =back
 
@@ -639,13 +744,19 @@ well.
 
 =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.
+The internal representation has changed for the match variables C<$1>, C<$2>
+I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
+C<${^POSTMATCH>.  It uses slightly less memory, avoids string comparisons
+and numeric conversions during lookup, and uses 23 fewer lines of C.  This
+change should not affect any external code.
 
 =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]
+Arrays now use NULL internally to represent unused slots, instead of
+C<&PL_sv_undef>.  C<&PL_sv_undef> is no longer treated as a special value,
+so C<av_store(av, 0, &PL_sv_undef)> will cause element 0 of that array to
+hold a read-only undefined scalar.  C<$array[0] = anything> will croak and
+C<\$array[0]> will compare equal to C<\undef>.
 
 =back
 
@@ -660,161 +771,135 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =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]
-
-=item *
-
-On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1.
-[perl #72766]
+The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
 
 =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]
+A lexical filehandle (as in C<open my $fh...>) is usually given a name
+based on the current package and the name of the variable; e.g.,
+"main::$fh".  Under recursion, the filehandle was losing the "$fh" part of
+the name.  This has been fixed.
 
 =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]
+Perl 5.19.3 accidentally extended the previous bug to all closures, even
+when not called recursively; i.e., lexical handles in closure would always
+be called "main::" or "MyPackage::" etc.  This has been fixed.
 
 =item *
 
-Constant folding and subroutine inlining no longer cause operations that would
-normally return new modifiable scalars to return read-only values instead.
+Uninitialized values returned by XSUBs are no longer exempt from
+uninitialized warnings.  [perl #118693]
 
 =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]
+C<elsif ("")> no longer erroneous produces a warning about void context.
+[perl #118753]
 
 =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.
+Passing C<undef> to a subroutine now causes @_ to contain the same read-only undefined scalar that C<undef> returns.  Furthermore, C<exists $_[0]> will now return true if C<undef> was the first argument.
+[perl #7508, #109726].
 
 =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.
+Passing a nonexistent array element to a subroutine does not usually
+autovivify it unless the subroutine modifies its argument.  This did not
+work correctly with negative indices and with nonexistent elements within
+the array.  The element would be vivified immediately.  The delayed
+vivification has been extended to work with those.  [perl #118691]
 
 =item *
 
-C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has been
-fixed. [perl #118213]
+Assigning references or globs to the scalar returned by C<$#foo> after the
+@foo array has been freed no longer causes assertion failures on debugging
+builds and memory leaks on regular builds.
 
 =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.
+Perl 5.19.2 threw line numbers off after some cases of line breaks
+following keywords, such as
 
-=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 *
-
-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 *
+   1 unless
+   1;
 
-Enabling "used once" warnings no longer causes crashes on stash circularities
-created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
+This has been fixed.  [perl #118931]
 
 =item *
 
-Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
-longer produce "uninitialized" warnings at compile time.
+On 64-bit platforms, large ranges like 1..1000000000000 no longer crash,
+but eat up all your memory instead.  [perl #119161]
 
 =item *
 
-Modifying a substitution target inside the substitution replacement no longer
-causes crashes.
+C<__DATA__> now puts the C<DATA> handle in the right package, even if the
+current package has been renamed through glob assignment.
 
 =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 string position set by C<pos> could shift if the string changed
+representation internally to or from utf8.  This could happen, e.g., with
+references to objects with string overloading.
 
 =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.
+Taking references to the return values of two C<pos> calls with the same
+argument, and then assigning a reference to one and C<undef> to the other,
+could result in assertion failures or memory leaks.
 
 =item *
 
-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.
+Elements of C<@-> and C<@+> now update correctly when they refer to
+nonexistent captures.  Previously, a referenced element (C<$ref = \$-[1]>) 
+could refer to the wrong match after subsequent matches.
 
 =item *
 
-Perl 5.18.0 inadvertently made dereferenced regular expressions
-S<(C<${ qr// }>)> false as booleans.  This has been fixed.
+When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the
+scope, it is possible for DESTROY recursively to call a subroutine or
+format that is currently being exited.  It that case, sometimes the lexical
+variables inside the sub would start out having values from the outer call,
+instead of being undefined as they should.  This has been fixed.
+[perl #119311].
 
 =item *
 
-Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular
-expressions, and stopped C<++> from flattening vstrings.
+C<${^MPEN>} is no longer treated as a synonym for C<${^MATCH}>.
 
 =item *
 
-C<bless> no longer dies with "Can't bless non-reference value" if its first
-argument is a tied reference.
+Perl now tries a little harder to return the correct line number in
+C<(caller)[2]>.  [perl #115768]
 
 =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.
+Line numbers inside multiline quote-like operators are now reported correctly.  [perl #3643]
 
 =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.
+C<#line> directives inside code embedded in quote-like operators are now respected.
 
 =item *
 
-C<ucfirst> and C<lcfirst> were not respecting the bytes pragma.  This was a
-regression from v5.12. [perl #117355]
+Perl 5.19.2 inadvertently stopped some lines of code from being available
+to the debugger if C<< => >> occurred at the beginning of a line and the
+previous line ended with a keyword.  This is now fixed.
 
 =item *
 
-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).
+An optimisation in Perl 5.18 made incorrect assumptions causing a bad
+interaction with the L<Devel::CallParser> CPAN module.  If the module was
+loaded, then lexical variables declared in separate statements following a C<my(...)> list might fail to be cleared on scope exit.
 
 =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 5.18.0.
+C<&xsub> and C<goto &xsub> calls now allow the called subroutine to
+autovivify elements of @_.
 
 =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 5.18. [perl #114864]
+C<&xsub> and C<goto &xsub> no longer crash if C<*_> has been undefined and
+has no ARRAY entry (i.e., @_ does not exist).
 
 =back
 
@@ -843,7 +928,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.19.2..HEAD
+  perl Porting/acknowledgements.pl v5.19.3..HEAD
 
 =head1 Reporting Bugs