This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Note the Devel::SelfStubber upgrade in perldelta
[perl5.git] / pod / perldelta.pod
index f44f836..b604683 100644 (file)
@@ -9,12 +9,14 @@ perldelta - what is new for perl v5.14.0
 This document describes differences between the 5.12.0 release and
 the 5.14.0 release.
 
+If you are upgrading from an earlier release such as 5.10.0, first read
+L<perl5120delta>, which describes differences between 5.10.0 and
+5.12.0.
+
 Some of the bug fixes in this release have been backported to subsequent
 releases of 5.12.x. Those are indicated with the 5.12.x version in
 parentheses.
 
-XXX Go through the perl512*delta files and do that.
-
 =head1 Notice
 
 XXX Any important notices here
@@ -30,8 +32,7 @@ L<Corrigendum #8|http://www.unicode.org/versions/corrigendum8.html>,
 with one exception noted below.
 See L<http://unicode.org/versions/Unicode6.0.0> for details on the new
 release.  Perl does not support any Unicode provisional properties,
-including the new ones for this release, but their database files are
-packaged with Perl.
+including the new ones for this release.
 
 Unicode 6.0 has chosen to use the name C<BELL> for the character at U+1F514,
 which is a symbol that looks like a bell, and is used in Japanese cell
@@ -109,12 +110,23 @@ point.
 
 See L<charnames> for details on all these changes.
 
+=head3 New warnings categories for problematic (non-)Unicode code points.
+
+Three new warnings subcategories of "utf8" have been added.  These
+allow you to turn off some "utf8" warnings, while allowing
+others warnings to remain on.  The three categories are:
+C<surrogate> when UTF-16 surrogates are encountered;
+C<nonchar> when Unicode non-character code points are encountered;
+and C<non_unicode> when code points that are above the legal Unicode
+maximum of 0x10FFFF are encountered.
+
 =head3 Any unsigned value can be encoded as a character
 
 With this release, Perl is adopting a model that any unsigned value can
 be treated as a code point and encoded internally (as utf8) without
 warnings - not just the code points that are legal in Unicode.
-However, unless utf8 warnings have been
+However, unless utf8 or the corresponding sub-category (see previous
+item) warnings have been
 explicitly lexically turned off, outputting or performing a
 Unicode-defined operation (such as upper-casing) on such a code point
 will generate a warning.  Attempting to input these using strict rules
@@ -126,15 +138,13 @@ standard, are now always legal internally.  But inputting or outputting
 them will work the same as for the non-legal Unicode code points, as the
 Unicode standard says they are illegal for "open interchange".
 
-=head3 New warnings categories for problematic (non-)Unicode code points.
+=head3 Unicode database files not installed
 
-Three new warnings subcategories of "utf8" have been added.  These
-allow you to turn off some "utf8" warnings, while allowing
-others warnings to remain on.  The three categories are:
-C<surrogate> when UTF-16 surrogates are encountered;
-C<nonchar> when Unicode non-character code points are encountered;
-and C<non_unicode> when code points that are above the legal Unicode
-maximum of 0x10FFFF are encountered.
+The Unicode database files are no longer installed with Perl.  This
+doesn't affect any functionality in Perl and saves significant disk
+space.  If you previously were explicitly opening and reading those
+files, you can download them from
+L<http://www.unicode.org/Public/zipped/6.0.0/>.
 
 =head2 Regular Expressions
 
@@ -170,7 +180,7 @@ C<use feature "unicode_strings"> pragmas that are in effect at the time
 of compiling the regular expression.
 
 The C</a> regular expression modifier restricts C<\s>, C<\d> and C<\w> and
-the Posix (C<[[:posix:]]>) character classes to the ASCII range.  The
+the Posix (C<[[:posix:]]>) character classes to the ASCII range.  Their
 complements and C<\b> and C<\B> are correspondingly
 affected.  Otherwise, C</a> behaves like the C</u> modifier, in that
 case-insensitive matching uses Unicode semantics.
@@ -494,13 +504,6 @@ In addition to the sections that follow, see L</C API Changes>.
 
 =head2 Regular Expressions and String Escapes
 
-=head3 C<\cI<X>>
-
-The backslash-c construct was designed as a way of specifying
-non-printable characters, but there were no restrictions (on ASCII
-platforms) on what the character following the C<c> could be.  Now, that
-character must be one of the ASCII characters.
-
 =head3 \400-\777
 
 Use of C<\400>-C<\777> in regexes in certain circumstances has given
@@ -524,20 +527,16 @@ example
  m/\p{ASCII_Hex_Digit}+/i
 
 could previously match non-ASCII characters because of the Unicode
-matching rules.  There were a number of bugs in this feature until an
-earlier release in the 5.13 series.  Now this release reverts, and
-removes the feature completely except for the few properties where
-people have come to expect it, namely the ones where casing is an
-integral part of their functionality, such as C<m/\p{Uppercase}/i> and
-C<m/\p{Lowercase}/i>, both of which match the exact same code points,
-namely those matched by C<m/\p{Cased}/i>.  Details are in
-L<perlrecharclass/Unicode Properties>.
-
-XXX The mention of ‘until an earlier release in the 5.13 series’ needs to
-change, but I do not fully understand what happened here.
+matching rules (although there were a number of bugs with this).  Now
+matching under C</i> gives the same results as non-C</i> matching except
+for those few properties where people have come to expect differences,
+namely the ones where casing is an integral part of their meaning, such
+as C<m/\p{Uppercase}/i> and C<m/\p{Lowercase}/i>, both of which match
+the exact same code points, namely those matched by C<m/\p{Cased}/i>.
+Details are in L<perlrecharclass/Unicode Properties>.
 
 User-defined property handlers that need to match differently under
-C</i> must change to read the new boolean parameter passed to it which is
+C</i> must change to read the new boolean parameter passed to them which is
 non-zero if case-insensitive matching is in effect or 0 otherwise.  See
 L<perluniprops/User-Defined Character Properties>.
 
@@ -545,7 +544,7 @@ L<perluniprops/User-Defined Character Properties>.
 
 Now, a Unicode property match specified in the pattern will indicate
 that the pattern is meant for matching according to Unicode rules, the way
-C<\x{}> does.
+C<\N{}> does.
 
 =head3 Regular expressions retain their localeness when interpolated
 
@@ -647,9 +646,9 @@ assign C<\@some_array> to C<$glob>.
 
 To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms)
 has been modified to make a new immutable glob if its operand is a glob
-copy. Various operators that make a distinction between globs and scalars
-have been modified to treat only immutable globs as globs. (C<tie>,
-C<tied> and C<untie> has been left as they are for compatibility's sake,
+copy.  This allows operators that make a distinction between globs and
+scalars to be modified to treat only immutable globs as globs.  (C<tie>,
+C<tied> and C<untie> have been left as they are for compatibility's sake,
 but will warn. See L</Deprecations>.)
 
 This causes an incompatible change in code that assigns a glob to the
@@ -663,10 +662,6 @@ The C<*$glob> on the second line returns a new immutable glob. That new
 glob is made an alias to C<*bar>. Then it is discarded. So the second
 assignment has no effect.
 
-The upside to this incompatible change is that bugs [perl #77496],
-[perl #77502], [perl #77508], [perl #77688], and [perl #77812],
-and maybe others, too, have been fixed.
-
 See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even
 more detail.
 
@@ -847,6 +842,21 @@ its modifiers and the following word is deprecated.  For
 example, C<< m/foo/sand $bar >> will still be parsed
 as C<< m/foo/s and $bar >> but will issue a warning.
 
+=head2 C<\cI<X>>
+
+The backslash-c construct was designed as a way of specifying
+non-printable characters, but there were no restrictions (on ASCII
+platforms) on what the character following the C<c> could be.  Now,
+a deprecation warning is raised if that character isn't an ASCII character.
+Also, a deprecation warning is raised for C<"\c{"> (which is the same
+as simply saying C<";">).
+
+=head2 C<"\b{"> and C<"\B{">
+
+In regular expressions, a literal C<"{"> immediately following a C<"\b">
+(not in a bracketed character class) or a C<"\B{"> is now deprecated
+to allow for its future use by Perl itself.
+
 =head2 Deprecation warning added for deprecated-in-core .pl libs
 
 This is a mandatory warning, not obeying -X or lexical warning bits.
@@ -903,11 +913,8 @@ function is used on a handle without an explicit C<*>.
 
 This feature is being deprecated due to its many issues, as documented in
 L<perlunicode/User-Defined Case Mappings (for serious hackers only)>.
-It is planned to remove this feature in Perl 5.16.  A CPAN module
-providing improved functionality is being prepared for release by the
-time 5.14 is.
-
-XXX What module is that?
+It is planned to remove this feature in Perl 5.16.  Instead use the CPAN module
+L<Unicode::Casing>, which provides improved functionality.
 
 =head2 Deprecated modules
 
@@ -1118,7 +1125,7 @@ over time are given in C<CPAN::Meta::History>.
 
 =item *
 
-C<HTTP::Tiny> 0.010 has been added as a dual-life module.  It is a very
+C<HTTP::Tiny> 0.011 has been added as a dual-life module.  It is a very
 small, simple HTTP/1.1 client designed for simple GET requests and file
 mirroring.  It has has been added to enable CPAN.pm and CPANPLUS to
 "bootstrap" HTTP access to CPAN using pure Perl without relying on external
@@ -1131,7 +1138,7 @@ reading F<META.json> files in CPAN distributions.
 
 =item *
 
-C<Module::Metadata> 1.000003 has been added as a dual-life module.  It gathers
+C<Module::Metadata> 1.000004 has been added as a dual-life module.  It gathers
 package and POD information from Perl module files.  It is a standalone module
 based on Module::Build::ModuleInfo for use by other module installation
 toolchain components.  Module::Build::ModuleInfo has been deprecated in
@@ -1170,7 +1177,7 @@ prerequisites and version constraints as defined in the L<CPAN::Meta::Spec>.
 
 =back
 
-=head2 Selected Module and Pragma Updates
+=head2 Updated Modules and Pragma
 
 =over 4
 
@@ -1208,7 +1215,7 @@ A bug was fixed regarding the exit code of extract_archive.
 
 =item *
 
-C<ptar> has a new option to allow safe
+The C<ptar> utility has a new option to allow safe
 creation of tarballs without world-writable files on Windows, allowing those
 archives to be uploaded to CPAN.
 
@@ -1250,9 +1257,10 @@ C<B::Deparse> has been upgraded from version 0.96 to 1.02.
 The deparsing of a nextstate op has changed when it has both a
 change of package (relative to the previous nextstate), or a change of
 C<%^H> or other state, and a label.  Previously the label was emitted
-first, but now the label is emitted last.
+first, but now the label is emitted last (5.12.1).
 
-The C<no 5.13.2> or similar form is now correctly handled by B::Deparse.
+The C<no 5.13.2> or similar form is now correctly handled by B::Deparse
+(5.12.3).
 
 B::Deparse now properly handles the code that applies a conditional
 pattern match against implicit C<$_> as it was fixed in [perl #20444].
@@ -1262,17 +1270,18 @@ Deparsing of C<our> followed by a variable with funny characters
 
 =item *
 
-C<Carp> has been upgraded from version 1.18 to 1.19.
+C<Carp> has been upgraded from version 1.15 to 1.19.
 
 L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR"> overrides and
-avoids using bogus C<@DB::args>. To provide backtraces, Carp relies on
-particular behaviour of the caller built-in. Carp now detects if other code has
+avoids using bogus C<@DB::args>.  To provide backtraces,
+Carp relies on particular behaviour of the C<caller>
+built-in.  Carp now detects if other code has
 overridden this with an incomplete implementation, and modifies its backtrace
-accordingly. Previously incomplete overrides would cause incorrect values in
-backtraces (best case), or obscure fatal errors (worst case)
+accordingly.  Previously incomplete overrides would cause incorrect values
+in backtraces (best case), or obscure fatal errors (worst case).
 
 This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules
-overriding C<caller()> incorrectly.
+overriding C<caller()> incorrectly (5.12.2).
 
 It now also avoids using regular expressions that cause perl to
 load its Unicode tables, in order to avoid the 'BEGIN not safe after
@@ -1295,7 +1304,7 @@ It has been updated to use bzip2 1.0.6.
 
 =item *
 
-C<CPAN> has been upgraded from version 1.94_56 to 1.9600.-
+C<CPAN> has been upgraded from version 1.94_56 to 1.9600.
 
 Major highlights:
 
@@ -1321,7 +1330,13 @@ Major highlights:
 
 =item *
 
-C<CPANPLUS> has been upgraded from version 0.90 to 0.9102.
+C<CPANPLUS> has been upgraded from version 0.90 to 0.9103.
+
+A change to F<cpanp-run-perl>
+resolves L<RT #55964|http://rt.cpan.org/Public/Bug/Display.html?id=55964>
+and L<RT #57106|http://rt.cpan.org/Public/Bug/Display.html?id=57106>, both
+of which related to failures to install distributions that use
+C<Module::Install::DSL> (5.12.2).
 
 A dependency on Config was not recognised as a
 core module dependency.  This has been fixed.
@@ -1356,6 +1371,10 @@ profiling and reporting.
 
 =item *
 
+C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05.
+
+=item *
+
 C<diagnostics> has been upgraded from version 1.19 to 1.22.
 
 It now renders pod links slightly better, and has been taught to find
@@ -1381,7 +1400,11 @@ New SHA-512/224 and SHA-512/256 transforms (ref. NIST Draft FIPS 180-4
 
 =item *
 
-C<DynaLoader> has been upgraded from version 1.10 to 1.12.
+C<Dumpvalue> has been upgraded from version 1.13 to 1.16.
+
+=item *
+
+C<DynaLoader> has been upgraded from version 1.10 to 1.13.
 
 It fixes a buffer overflow when passed a very long file name.
 
@@ -1399,6 +1422,10 @@ disallowed; in those cases where it warned, all 66 warn.
 
 =item *
 
+C<Env> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
 C<Errno> has been upgraded from version 1.11 to 1.13.
 
 The implementation of C<Errno> has been refactored to use about 55% less memory.
@@ -1415,6 +1442,14 @@ Exporter no longer overrides C<$SIG{__WARN__}> [perl #74472]
 
 =item *
 
+C<ExtUtils::CBuilder> has been upgraded from version 0.27 to 0.280202.
+
+=item *
+
+C<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
+
+=item *
+
 C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
 
 The C<AUTOLOAD> helper code generated by C<ExtUtils::Constant::ProxySubs>
@@ -1428,7 +1463,27 @@ constants onto the package's C<@EXPORT_OK>.
 
 =item *
 
-C<File::DosGlob> has been upgraded from version 1.01 to 1.03.
+C<ExtUtils::Install> has been upgraded from version 1.55 to 1.56.
+
+=item *
+
+C<ExtUtils::MakeMaker> has been upgraded from version 6.56 to 6.57_05.
+
+=item *
+
+C<ExtUtils::Manifest> has been upgraded from version 1.57 to 1.58.
+
+=item *
+
+C<ExtUtils::ParseXS> has been upgraded from version 2.21 to 2.2209.
+
+=item *
+
+C<File::CheckTree> has been upgraded from version 4.4 to 4.41.
+
+=item *
+
+C<File::DosGlob> has been upgraded from version 1.01 to 1.04.
 
 It allows patterns containing literal parentheses (they no longer need to
 be escaped).  On Windows, it no longer
@@ -1447,41 +1502,71 @@ Dragonfly BSD for the C<http> and C<ftp> schemes.
 
 =item *
 
-C<File::Find> has been upgraded from version 1.15 to 1.18.
+C<File::Find> has been upgraded from version 1.15 to 1.19.
 
 It improves handling of backslashes on Windows, so that paths like
 F<c:\dir\/file> are no longer generated [perl #71710].
 
 =item *
 
-C<File::stat> has been upgraded from 1.02 to 1.04.
+C<File::Spec> has been upgraded from version 3.31 to 3.33.
+
+Several portability fixes were made in C<File::Spec::VMS>: a colon is now
+recognized as a delimiter in native filespecs; caret-escaped delimiters are
+recognized for better handling of extended filespecs; C<catpath()> returns
+an empty directory rather than the current directory if the input directory
+name is empty; C<abs2rel()> properly handles Unix-style input (5.12.2).
+
+=item *
+
+C<File::stat> has been upgraded from 1.02 to 1.05.
 
 The C<-x> and C<-X> file test operators now work correctly under the root
 user.
 
 =item *
 
-C<GDBM_File> has been upgraded from 1.10 to 1.13.
+C<Filter::Simple> has been upgraded from version 0.84 to 0.86.
+
+=item *
+
+C<GDBM_File> has been upgraded from 1.10 to 1.14.
 
 This fixes a memory leak when DBM filters are used.
 
 =item *
 
-C<Hash::Util> has been upgraded from 0.07 to 0.10.
+C<Hash::Util> has been upgraded from 0.07 to 0.11.
 
 Hash::Util no longer emits spurious "uninitialized" warnings when
 recursively locking hashes that have undefined values [perl #74280].
 
 =item *
 
-C<I18N::Langinfo> has been upgraded from version 0.03 to 0.07.
+C<I18N::Collate> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
+C<I18N::Langinfo> has been upgraded from version 0.03 to 0.08.
 
 C<langinfo()> now defaults to using C<$_> if there is no argument given, just
 as the documentation has always claimed.
 
 =item *
 
-C<IO::Select> has been upgraded from version 1.17 to 1.18.
+C<I18N::LangTags> has been upgraded from version 0.35 to 0.35_01.
+
+=item *
+
+C<if> has been upgraded from version 0.05 to 0.0601.
+
+=item *
+
+C<IO> has been upgraded from version 1.25_02 to 1.25_04.
+
+=item *
+
+C<IO::Select> has been upgraded from version 1.17 to 1.20.
 
 It now allows IO::Handle objects (and objects in derived classes) to be
 removed from an IO::Select set even if the underlying file descriptor is
@@ -1489,14 +1574,14 @@ closed or invalid.
 
 =item *
 
-C<IPC::Cmd> has been upgraded from version 0.54 to 0.68.
+C<IPC::Cmd> has been upgraded from version 0.54 to 0.70.
 
 Resolves an issue with splitting Win32 command lines.  An argument
 consisting of the single character "0" used to be omitted (CPAN RT #62961).
 
 =item *
 
-C<IPC::Open3> has been upgraded from 1.05 to 1.08.
+C<IPC::Open3> has been upgraded from 1.05 to 1.09.
 
 C<open3> now produces an error if the C<exec> call fails, allowing this
 condition to be distinguished from a child process that exited with a
@@ -1508,7 +1593,15 @@ descriptor now works [perl #76474].
 
 =item *
 
-C<Locale::Maketext> has been upgraded from version 1.14 to 1.17.
+C<IPC::SysV> has been upgraded from version 2.01 to 2.03.
+
+=item *
+
+C<lib> has been upgraded from version 0.62 to 0.63.
+
+=item *
+
+C<Locale::Maketext> has been upgraded from version 1.14 to 1.19.
 
 Locale::Maketext now supports external caches.
 
@@ -1521,6 +1614,14 @@ messages are not suppressed (CPAN RT #34182).
 
 =item *
 
+C<Log::Message> has been upgraded from version 0.02 to 0.04.
+
+=item *
+
+C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08.
+
+=item *
+
 C<Math::BigInt> has been upgraded from version 1.89_01 to 1.994.
 
 This fixes, among other things, incorrect results when computing binomial
@@ -1531,6 +1632,18 @@ It also prevents C<sqrt($int)> from crashing under C<use bigrat;>
 
 =item *
 
+C<Math::BigInt::FastCalc> has been upgraded from version 0.19 to 0.28.
+
+=item *
+
+C<Math::BigRat> has been upgraded from version 0.24 to 0.26_02.
+
+=item *
+
+C<Memoize> has been upgraded from version 1.01_03 to 1.02.
+
+=item *
+
 C<MIME::Base64> has been upgraded from 3.08 to 3.13.
 
 Includes new functions to calculate the length of encoded and decoded
@@ -1556,7 +1669,7 @@ still generated, as well.
 
 =item *
 
-C<Module::CoreList> has been upgraded from version 2.29 to XXX.
+C<Module::CoreList> has been upgraded from version 2.29 to 2.47.
 
 Besides listing the updated core modules of this release, it also stops listing
 the C<Filespec> module.  That module never existed in core.  The scripts
@@ -1565,14 +1678,39 @@ is a core module as of perl 5.8.7.
 
 =item *
 
-C<NDBM_File> and C<ODBM_File> have been upgraded from 1.08 to 1.11, and
-from 1.08 to 1.09, respectively.
+C<Module::Load> has been upgraded from version 0.16 to 0.18.
+
+=item *
+
+C<Module::Load::Conditional> has been upgraded from version 0.34 to 0.44.
+
+=item *
+
+C<NDBM_File> has been upgraded from version 1.08 to 1.11.
+
+This fixes a memory leak when DBM filters are used.
+
+=item *
+
+C<Net::Ping> has been upgraded from version 2.36 to 2.38.
+
+=item *
+
+C<NEXT> has been upgraded from version 0.64 to 0.65.
+
+=item *
+
+C<Object::Accessor> has been upgraded from version 0.36 to 0.38.
+
+=item *
+
+C<ODBM_File> have been upgraded from version 1.07 to 1.10.
 
 This fixes a memory leak when DBM filters are used.
 
 =item *
 
-C<overload> has been upgraded from 1.11 to 1.12.
+C<overload> has been upgraded from 1.10 to 1.12.
 
 C<overload::Method> can now handle subroutines that are themselves blessed
 into overloaded classes [perl #71998].
@@ -1581,6 +1719,14 @@ The documentation has greatly improved. See L</Documentation> below.
 
 =item *
 
+C<Params::Check> has been upgraded from version 0.26 to 0.28.
+
+=item *
+
+C<parent> has been upgraded from version 0.223 to 0.225.
+
+=item *
+
 C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
 
 The latest Parse::CPAN::Meta can now read YAML and JSON files using
@@ -1595,7 +1741,19 @@ has data to read [perl #78716].
 
 =item *
 
-C<POSIX> has been upgraded from 1.19 to 1.23.
+C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59.
+
+=item *
+
+C<Pod::Perldoc> has been upgraded from version 3.15_02 to 3.15_03.
+
+=item *
+
+C<Pod::Simple> has been upgraded from version 3.13 to 3.16.
+
+=item *
+
+C<POSIX> has been upgraded from 1.19 to 1.24.
 
 It now includes constants for POSIX signal constants.
 
@@ -1614,9 +1772,12 @@ C<regmust> no longer leaks memory.
 
 C<Safe> has been upgraded from version 2.25 to 2.29.
 
+Coderefs returned by C<reval()> and C<rdo()> are now wrapped via
+C<wrap_code_refs> (5.12.1).
+
 This fixes a possible infinite loop when looking for coderefs.
 
-It adds C<&version::vxs::VCMP> to the default share.
+It adds several version::vxs::* routines to the default share.
 
 =item *
 
@@ -1654,6 +1815,18 @@ during freezing [perl #80074].
 
 =item *
 
+C<Term::ANSIColor> has been upgraded from version 2.02 to 3.00.
+
+=item *
+
+C<Term::UI> has been upgraded from version 0.20 to 0.26.
+
+=item *
+
+C<Test::Harness> has been upgraded from version 3.17 to 3.23.
+
+=item *
+
 C<Test::Simple> has been upgraded from version 0.94 to 0.98.
 
 Among many other things, subtests without a C<plan> or C<no_plan> now have an
@@ -1668,12 +1841,40 @@ semaphores: C<down_nb> and C<down_force>.
 
 =item *
 
+C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
+
+=item *
+
+C<threads> has been upgraded from version 1.75 to 1.83.
+
+=item *
+
+C<threads::shared> has been upgraded from version 1.32 to 1.36.
+
+=item *
+
 C<Tie::Hash> has been upgraded from version 1.03 to 1.04.
 
 Calling C<< Tie::Hash-E<gt>TIEHASH() >> used to loop forever.  Now it C<croak>s.
 
 =item *
 
+C<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
+
+=item *
+
+C<Time::HiRes> has been upgraded from version 1.9719 to 1.9721_01.
+
+=item *
+
+C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
+
+=item *
+
+C<Time::Piece> has been upgraded from version 1.15_01 to 1.20_01.
+
+=item *
+
 C<Unicode::Collate> has been upgraded from version 0.52_01 to 0.73.
 
 Unicode::Collate has been updated to use Unicode 6.0.0.
@@ -1707,6 +1908,10 @@ module to the XS version.
 
 =item *
 
+C<Unicode::Normalize> has been upgraded from version 1.03 to 1.10.
+
+=item *
+
 C<Unicode::UCD> has been upgraded from version 0.27 to 0.32.
 
 A new function, C<Unicode::UCD::num()>, has been added.  This function
@@ -1766,20 +1971,27 @@ of a code point that hasn't been assigned to another one.
 C<version> has been upgraded from 0.82 to 0.88.
 
 Due to a bug, now fixed, the C<is_strict> and C<is_lax> functions did not
-work when exported.
+work when exported (5.12.1).
 
 =item *
 
-C<warnings> and C<warnings::register> have been upgraded from version 1.09
-to 1.11 and from version 1.01 to 1.02 respectively.
+C<warnings> has been upgraded from version 1.09 to 1.12.
 
 Calling C<use warnings> without arguments is now significantly more efficient.
 
+=item *
+
+C<warnings::register> have been upgraded from version 1.01 to 1.02.
+
 It is now possible to register warning categories other than the names of
 packages using C<warnings::register>.  See L<perllexwarn> for more information.
 
 =item *
 
+C<XSLoader> has been upgraded from version 0.10 to 0.13.
+
+=item *
+
 C<VMS::DCLsym> has been upgraded from version 1.03 to 1.05.
 
 Two bugs have been fixed [perl #84086]:
@@ -1811,11 +2023,17 @@ needed should be installed from CPAN instead.
 
 =over
 
-=item C<Class::ISA>
+=item *
+
+C<Class::ISA> has been removed from the Perl core. Prior version was 0.36.
 
-=item C<Pod::Plainer>
+=item *
+
+C<Pod::Plainer> has been removed from the Perl core. Prior version was 1.02.
+
+=item *
 
-=item C<Switch>
+C<Switch> has been removed from the Perl core. Prior version was 2.16.
 
 =back
 
@@ -1830,7 +2048,7 @@ warning that it was to be removed from core.
 =head3 L<perlgpl>
 
 L<perlgpl> has been updated to contain GPL version 1, as is included in the
-F<README> distributed with perl.
+F<README> distributed with perl (5.12.1).
 
 =head3 Perl 5.12.x delta files
 
@@ -1852,7 +2070,7 @@ See L</L<perlhack> and perlrepository revamp>, below.
 
 The perlmodlib page that came with Perl 5.12.0 was missing a lot of
 modules, due to a bug in the script that generates the list. This has been
-fixed [perl #74332].
+fixed [perl #74332] (5.12.1).
 
 =head3 Replace wrong tr/// table in L<perlebcdic>
 
@@ -1878,7 +2096,8 @@ one's own code's behaviour without stomping on anybody else.
 
 =head3 INSTALL explicitly states the requirement for C89
 
-This was already true but it's now Officially Stated For The Record.
+This was already true but it's now Officially Stated For The Record
+(5.12.2).
 
 =head3 Explanation of C<\xI<HH>> and C<\oI<OOO>> escapes
 
@@ -1888,12 +2107,17 @@ character escapes.
 =head3 C<-0I<NNN>> switch
 
 In L<perlrun>, the behavior of the C<-0NNN> switch for C<-0400> or higher
-has been clarified.
+has been clarified (5.12.2).
+
+=head3 Maintenance policy
+
+L<perlpolicy> now contains the policy on what patches are acceptable for
+maintenance branches (5.12.1).
 
 =head3 Deprecation policy
 
 L<perlpolicy> now contains the policy on compatibility and deprecation
-along with definitions of terms like "deprecation"
+along with definitions of terms like "deprecation" (5.12.2).
 
 =head3 New descriptions in L<perldiag>
 
@@ -2145,6 +2369,16 @@ perlbug@perl.org does not accept email with a return-path that does
 not resolve.  So the user's address is now passed to sendmail so it's
 less likely to get stuck in a mail queue somewhere [perl #82996].
 
+=item *
+
+L<perlbug> now always gives the reporter a chance to change the email
+address it guesses for them (5.12.2).
+
+=item *
+
+L<perlbug> should no longer warn about uninitialized values when using the C<-d>
+and C<-v> options (5.12.2).
+
 =back
 
 =head3 L<perl5db.pl>
@@ -2216,215 +2450,123 @@ larger value, configure with:
 where N is the desired size in bytes; it should probably be a multiple of
 your page size.
 
-=back
+=item *
 
-=head1 Testing
+An "incompatible operand types" error in ternary expressions when building
+with C<clang> has been fixed (5.12.2).
 
-XXX This section has not been cleaned up yet. Do we really need this
-section? How many people are going to find a list of new test files useful?
-Anyone hacking on the core can use
-‘git diff v5.12.0..v5.14.0 MANIFEST|grep '^[+-]t/'’.
+=item *
 
-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 summarising, although the bugs
-that they represent may be covered elsewhere.
+Perl now skips setuid C<File::Copy> tests on partitions it detects to be mounted
+as C<nosuid> (5.12.2).
 
-=over 4
+=back
 
-=item *
+=head1 Platform Support
 
-F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1)
+=head2 New Platforms
 
-=item *
+=over 4
 
-Many common testing routines were refactored into t/lib/common.pl
+=item AIX
 
-=item *
+Perl now builds on AIX 4.2 (5.12.1).
 
-Several test files have been modernized to use Test::More
+=back
 
-=item *
+=head2 Discontinued Platforms
 
-F<t/op/print.t> has been added to test implicit printing of C<$_>.
+=over 4
 
-=item *
+=item Apollo DomainOS
 
-F<t/io/errnosig.t> has been added to test for restoration of of C<$!> when
-leaving signal handlers.
+The last vestiges of support for this platform have been excised from the
+Perl distribution. It was officially discontinued in version 5.12.0. It had
+not worked for years before that.
 
-=item *
+=item MacOS Classic
 
-F<t/op/tie_fetch_count.t> has been added to see if C<FETCH> is only called once
-on tied variables.
+The last vestiges of support for this platform have been excised from the
+Perl distribution. It was officially discontinued in an earlier version.
 
-=item *
+=back
 
-F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested,
-L<Tie::ExtraHash> keeps working.
+=head2 Platform-Specific Notes
 
-=item *
+=head3 AIX
 
-F<t/re/overload.t> has been added to test against string corruption in pattern
-matches on overloaded objects. This is a TODO test.
+=over
 
 =item *
 
-The new F<t/lib/universal.t> script tests the Internal::* functions and other
-things in F<universal.c>.
-
-=item *
+F<README.aix> has been updated with information about the XL C/C++ V11 compiler
+suite (5.12.2).
 
-A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it
-from failing randomly when running tests in parallel.
+=back
 
-=item *
+=head3 ARM
 
-The new F<t/op/leaky-magic.t> script tests that magic applied to variables in
-the main packages does not affect other packages.
+=over
 
 =item *
 
-The script F<t/op/threads-dirh.t> has been added, which tests interaction
-of threads and directory handles.
-
-=item *
+The C<d_u32align> configuration probe on ARM has been fixed (5.12.2).
 
-The new F<t/mro/isa_aliases.t> has been added, which tests that
-C<*Foo::ISA = *Bar::ISA> works properly.
+=back
 
-=item *
+=head3 Cygwin
 
-F<t/mro/isarev.t> has been added, which tests that C<PL_isarev> (accessible
-at the Perl level via C<mro::get_isarev>) is updated properly.
+=over 4
 
 =item *
 
-F<t/run/switchd-78586.t> has been added, which tests that [perl #78586]
-has been fixed (related to line numbers in the debugger).
+MakeMaker has been updated to build man pages on cygwin.
 
 =item *
 
-C<lib/File/DosGlob.t> has been modernized and now uses C<Test::More>.
-
-=item *
+Improved rebase behaviour
 
-A new test script, C<t/porting/filenames.t>, makes sure that filenames and
-paths are reasonably portable.
+If a dll is updated on cygwin the old imagebase address is reused.
+This solves most rebase errors, especially when updating on core dll's.
+See L<http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README> for more information.
 
 =item *
 
-C<t/porting/diag.t> is now several orders of magnitude faster.
+Support for the standard cygwin dll prefix, which is e.g. needed for FFI's
 
 =item *
 
-C<t/porting/buildtoc.t> now tests that the documentation TOC file is current and well-formed.
+Updated build hints file
 
-=item *
+=back
 
-C<t/base/while.t> now tests the basics of a while loop with minimal dependencies.
+=head3 FreeBSD 7
 
-=item *
+=over
 
-C<t/cmd/while.t> now uses F<test.pl> for better maintainability.
+=item * 
 
-=item *
+FreeBSD 7 no longer contains F</usr/bin/objformat>. At build time,
+Perl now skips the F<objformat> check for versions 7 and higher and
+assumes ELF (5.12.1).
 
-C<t/op/split.t> now tests calls to C<split> without any pattern specified.
+=back
 
-=item *
+=head3 HP-UX
 
-F<porting/FindExt.t> now skips all tests on a static (-Uusedl) build
-of perl.
+=over 
 
 =item *
 
-F<porting/FindExt.t> now passes on non-Win32 platforms when some
-extensions are built statically.
+Perl now allows -Duse64bitint without promoting to use64bitall on HP-UX
+(5.12.1).
 
-=item *
+=back
 
-The tests for C<split /\s/> and Unicode have been moved from
-F<t/op/split.t> to the new F<t/op/split_unicode.t>.
+=head3 IRIX
 
-=item *
-
-F<t/re/re.t> has been moved to F<ext/re/t/re_funcs_u.t>.
-
-=item *
-
-The tests for [perl #72922] have been moved from F<t/re/qr.t> to the new
-F<t/re/qr-72922.t>.
-
-=item *
-
-F<t/re/reg_unsafe.t> has been deleted and its only test moved to
-F<t/re/pat_advanced.t>.
-
-=back
-
-=head1 Platform Support
-
-=head2 New Platforms
-
-=over 4
-
-=item AIX
-
-Perl now builds on AIX 4.2.
-
-=back
-
-=head2 Discontinued Platforms
-
-=over 4
-
-=item Apollo DomainOS
-
-The last vestiges of support for this platform have been excised from the
-Perl distribution. It was officially discontinued in version 5.12.0. It had
-not worked for years before that.
-
-=item MacOS Classic
-
-The last vestiges of support for this platform have been excised from the
-Perl distribution. It was officially discontinued in an earlier version.
-
-=back
-
-=head2 Platform-Specific Notes
-
-=head3 Cygwin
-
-=over 4
-
-=item *
-
-MakeMaker has been updated to build man pages on cygwin.
-
-=item *
-
-Improved rebase behaviour
-
-If a dll is updated on cygwin the old imagebase address is reused.
-This solves most rebase errors, especially when updating on core dll's.
-See L<http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README> for more information.
-
-=item *
-
-Support for the standard cygwin dll prefix, which is e.g. needed for FFI's
-
-=item *
-
-Updated build hints file
-
-=back
-
-=head3 IRIX
-
-Conversion of strings to floating-point numbers is now more accurate on
-IRIX systems [perl #32380].
+Conversion of strings to floating-point numbers is now more accurate on
+IRIX systems [perl #32380].
 
 =head3 Mac OS X
 
@@ -2457,12 +2599,12 @@ perl's malloc instead [perl #75742].
 =head3 OpenVOS
 
 perl now builds again with OpenVOS (formerly known as Stratus VOS)
-[perl #78132].
+[perl #78132] (5.12.3).
 
 =head3 Solaris
 
 DTrace is now supported on Solaris. There used to be build failures, but
-these have been fixed [perl #73630].
+these have been fixed [perl #73630] (5.12.3).
 
 =head3 VMS
 
@@ -2470,6 +2612,28 @@ these have been fixed [perl #73630].
 
 =item *
 
+It's now possible to build extensions on older (pre 7.3-2) VMS systems.
+
+DCL symbol length was limited to 1K up until about seven years or
+so ago, but there was no particularly deep reason to prevent those
+older systems from configuring and building Perl (5.12.1).
+
+=item *
+
+We fixed the previously-broken C<-Uuseperlio> build on VMS.
+
+We were checking a variable that doesn't exist in the non-default
+case of disabling perlio.  Now we only look at it when it exists (5.12.1).
+
+=item *
+
+We fixed the -Uuseperlio command-line option in configure.com.
+
+Formerly it only worked if you went through all the questions
+interactively and explicitly answered no (5.12.1).
+
+=item *
+
 C<PerlIOUnix_open> now honours the default permissions on VMS.
 
 When C<perlio> became the default and C<unixio> became the default bottom layer,
@@ -2479,7 +2643,12 @@ which has always explicitly used C<0666> as the permission mask.
 To avoid this, C<0777> is now passed as the permissions to C<open()>.  In the
 VMS CRTL, C<0777> has a special meaning over and above intersecting with the
 current umask; specifically, it allows Unix syscalls to preserve native default
-permissions.
+permissions (5.12.3).
+
+=item *
+
+Spurious record boundaries are no longer
+introduced by the PerlIO layer during output (5.12.3).
 
 =item *
 
@@ -2493,6 +2662,25 @@ Record-oriented files (record format variable or variable with fixed control)
 opened for write by the perlio layer will now be line-buffered to prevent the
 introduction of spurious line breaks whenever the perlio buffer fills up.
 
+=item *
+
+F<git_version.h> is now installed on VMS. This was an oversight in v5.12.0 which
+caused some extensions to fail to build (5.12.2).
+
+=item *
+
+Several memory leaks in L<stat()|perlfunc/"stat FILEHANDLE"> have been fixed (5.12.2).
+
+=item *
+
+A memory leak in C<Perl_rename()> due to a double allocation has been
+fixed (5.12.2).
+
+=item *
+
+A memory leak in C<vms_fid_to_name()> (used by C<realpath()> and
+C<realname()>) has been fixed (5.12.2).
+
 =back
 
 =head3 Windows
@@ -2508,6 +2696,10 @@ Fixed build process for SDK2003SP1 compilers.
 
 =item *
 
+Compilation with Visual Studio 2010 is now supported.
+
+=item *
+
 When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now
 be set in C<$Config{ccflags}>.  This improves portability when compiling
 XS extensions using new compilers, but for a perl compiled with old 32-bit
@@ -2520,6 +2712,14 @@ mingw64 compiler from L<http://mingw64.org> [perl #73754].
 
 =item *
 
+When building Perl with the mingw64 x64 cross-compiler C<incpath>,
+C<libpth>, C<ldflags>, C<lddlflags> and C<ldflags_nolargefiles> values
+in F<Config.pm> and F<Config_heavy.pl> were not previously being set
+correctly because, with that compiler, the include and lib directories
+are not immediately below C<$(CCHOME)> (5.12.2).
+
+=item *
+
 The build process proceeds more smoothly with mingw and dmake when
 F<C:\MSYS\bin> is in the PATH, due to a C<Cwd> fix.
 
@@ -2827,7 +3027,7 @@ internal storage and manipulation of code points that are problematic
 in some situations.  Hence, the default actions for these functions has
 been complemented to allow these code points.  The new flags are
 documented in L<perlapi>.  Code that requires the problematic code
-points to be rejected needs to change to use these flags.  Some flag
+points to be rejected needs to change to use the new flags.  Some flag
 names are retained for backward source compatibility, though they do
 nothing, as they are now the default.  However the flags
 C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
@@ -2837,7 +3037,8 @@ should be handled, which is now described in
 L<perlunicode/Non-character code points>.  See also L</Selected Bug Fixes>.
 
 XXX Which bugs in particular? Selected Bug Fixes is too long for this link
-to be meaningful right now.
+to be meaningful right now
+I don't see the bugs in that section currently -- khw
 
 =head2 Deprecated C APIs
 
@@ -2991,7 +3192,7 @@ release [perl #82484].
 
 The regular expression engine no longer loops when matching
 C<"\N{LATIN SMALL LIGATURE FF}" =~ /f+/i> and similar expressions
-[perl #72998].
+[perl #72998] (5.12.1).
 
 =item *
 
@@ -3011,7 +3212,7 @@ A pattern like C<(?:(o){2})?> no longer causes a "panic" error
 =item *
 
 A fatal error in regular expressions containing C<(.*?)> when processing
-UTF-8 data has been fixed [perl #75680].
+UTF-8 data has been fixed [perl #75680] (5.12.2).
 
 =item *
 
@@ -3103,7 +3304,7 @@ C</((\w+)(?{ print $2 })){2}/> from seeing the C<$2> sometimes
 =item *
 
 C<when(scalar){...}> no longer crashes, but produces a syntax error
-[perl #74114].
+[perl #74114] (5.12.1).
 
 =item *
 
@@ -3113,24 +3314,31 @@ the label to be associated also with the first statement inside the eval
 
 =item *
 
-Avoid loading feature.pm when 'no 5.13.2;' or similar is
-encountered (faee19).
+The C<no 5.13.2;> form of C<no> no longer tries to turn on features or
+pragmata (i.e., strict) [perl #70075] (5.12.2).
 
 =item *
 
-Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12
-(da8fb5d)
+C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
+identically to C<use 5.12.0;>.  Previously, C<require> in a C<BEGIN> block
+was erroneously executing the C<use feature ':5.12.0'> and
+C<use strict;> behaviour, which only C<use> was documented to
+provide [perl #69050].
 
 =item *
 
-Assignments to lvalue subroutines now honor copy-on-write behavior again, which
-has been broken since version 5.10.0 (RT#75656).
+A regression introduced in Perl 5.12.0, making
+C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
+fixed.  C<$x> will now be C<undef> [perl #85508] (5.12.2).
 
 =item *
 
-A regression introduced in Perl 5.12.0, making
-C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
-fixed.  C<$x> will now be C<undef>.
+When strict 'refs' mode is off, C<%{...}> in rvalue context returns
+C<undef> if its argument is undefined.  An optimisation introduced in perl
+5.12.0 to make C<keys %{...}> faster when used as a boolean did not take
+this into account, causing C<keys %{+undef}> (and C<keys %$foo> when
+C<$foo> is undefined) to be an error, which it should only be in strict
+mode [perl #81750].
 
 =item *
 
@@ -3152,16 +3360,19 @@ within a C<UNITCHECK> block no longer causes the interpreter to crash
 
 =item *
 
+String evals no longer fail after 2 billion scopes have been
+compiled [perl #83364].
+
+=item *
+
 The parser no longer hangs when encountering certain Unicode characters,
 such as U+387 [perl #74022].
 
 =item *
 
-C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
-identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
-was erroneously executing the C<use feature ':5.12.0'> and
-C<use strict; use warnings;> behaviour, which only C<use> was documented to
-provide [perl #69050].
+Several contexts no longer allow a Unicode character to begin a word
+that should never begin words, for an example an accent that must follow
+another character previously could precede all other characters.
 
 =item *
 
@@ -3193,58 +3404,95 @@ of the C<@>) [perl #72090].
 
 =item *
 
-C<require> no longer causes C<caller> to return the wrong file name for
-the scope that called C<require> and other scopes higher up that had the
-same file name [perl #68712].
+Accessing an element of a package array with a hard-coded number (as
+opposed to an arbitrary expression) would crash if the array did not exist.
+Usually the array would be autovivified during compilation, but typeglob
+manipulation could remove it, as in these two cases which used to crash:
+
+  *d = *a;  print $d[0];
+  undef *d; print $d[0];
 
 =item *
 
-String evals will no longer fail after 2 billion scopes have been
-compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8)
+The C<-C> command line option, when used on the shebang line, can now be
+followed by other options [perl #72434].
 
 =item *
 
-[perl #81750] When strict 'refs' mode is off,
-C<%{...}> in rvalue context returns C<undef> if
-its argument is undefined. An optimisation introduced in perl 5.12.0 to
-make C<keys %{...}> faster when used as a boolean did not take this into
-account, causing C<keys %{+undef}> (and C<keys %$foo> when C<$foo> is
-undefined) to be an error, which it should only be in strict mode.
+The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s for C<entertry> [perl #80622].
+This was due to a bug in the perl core, not in C<B> itself.
+
+=back
+
+=head2 Stashes, Globs and Method Lookup
+
+Perl 5.10.0 introduced a new internal mechanism for caching MROs (method
+resolution orders, or lists of parent classes; aka "isa" caches) to make
+method lookup faster (so @ISA arrays would not have to be searched
+repeatedly).  Unfortunately, this brought with it quite a few bugs.  Almost
+all of these have been fixed now, along with a few MRO-related bugs that
+existed before 5.10.0:
+
+=over
 
 =item *
 
-Several contexts no longer allow a Unicode character to begin a word
-that should never begin words, for an example an accent that must follow
-another character previously could precede all other characters.
+The following used to have erratic effects on method resolution, because
+the "isa" caches were not reset or otherwise ended up listing the wrong
+classes.  These have been fixed.
+
+=over
+
+=item Aliasing packages by assigning to globs [perl #77358]
+
+=item Deleting packages by deleting their containing stash elements
+
+=item Undefining the glob containing a package (C<undef *Foo::>)
+
+=item Undefining an ISA glob (C<undef *Foo::ISA>)
+
+=item Deleting an ISA stash element (C<delete $Foo::{ISA}>)
+
+=item Sharing @ISA arrays between classes (via C<*Foo::ISA = \@Bar::ISA> or
+C<*Foo::ISA = *Bar::ISA>) [perl #77238]
+
+=back
+
+C<undef *Foo::ISA> would even stop a new C<@Foo::ISA> array from updating
+caches.
 
 =item *
 
-Accessing an element of a package array with a hard-coded number (as
-opposed to an arbitrary expression) would crash if the array did not exist.
-Usually the array would be autovivified during compilation, but typeglob
-manipulation could remove it, as in these two cases which used to crash:
+Typeglob assignments would crash if the glob's stash no longer existed, so
+long as the glob assigned to was named 'ISA' or the glob on either side of
+the assignment contained a subroutine.
 
-  *d = *a;  print $d[0];
-  undef *d; print $d[0];
+=item *
+
+C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now
+updated properly when packages are deleted or removed from the C<@ISA> of
+other classes. This allows many packages to be created and deleted without
+causing a memory leak [perl #75176].
 
 =back
 
-=head2 Stashes, Globs, MROs
+In addition, various other bugs related to typeglobs and stashes have been
+fixed:
 
 =over 
 
 =item *
 
 Some work has been done on the internal pointers that link between symbol
-tables (stashes), typeglobs and subroutines. This has the effect that
+tables (stashes), typeglobs and subroutines.  This has the effect that
 various edge cases related to deleting stashes or stash entries (e.g.
 <%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
 longer crash the interpreter.
 
 =item *
 
-Assignments to glob copies now behave just like assignments to regular globs
-(RT#1804).
+Assigning a reference to a glob copy now assigns to a glob slot instead of
+overwriting the glob with a scalar [perl #1804] [perl #77508].
 
 =item *
 
@@ -3270,53 +3518,10 @@ of a tied array or hash [perl #36051].
 
 =item *
 
-Aliasing packages by assigning to globs or deleting packages by deleting
-their containing stash elements used to have erratic effects on method
-resolution, because the internal 'isa' caches were not reset. This has been
-fixed.
-
-=item *
-
-Various bugs related to typeglob dereferencing have been fixed. See
-L</Dereferencing typeglobs>, above.
-
-=item *
-
-Typeglob assignments would crash if the glob's stash no longer existed, so
-long as the glob assigned to was named 'ISA' or the glob on either side of
-the assignment contained a subroutine.
-
-=item *
-
-Creating an alias to a package when that package had been detached from the
-symbol table would result in corrupted isa caches [perl #77358].
-
-=item *
-
-C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now
-updated properly when packages are deleted or removed from the C<@ISA> of
-other classes. This allows many packages to be created and deleted without
-causing a memory leak [perl #75176].
-
-=item *
-
-C<undef *Foo::> and C<undef *Foo::ISA> and C<delete $package::{ISA}>
-used not to update the internal isa caches if the
-stash or C<@ISA> array had a reference elsewhere. In
-fact, C<undef *Foo::ISA> would stop a new C<@Foo::ISA> array from updating
-caches.
-
-=item *
-
-C<@ISA> arrays can now be shared between classes via
-C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA> [perl #77238].
-
-=item *
-
 When trying to report C<Use of uninitialized value $Foo::BAR>, crashes could
-occur if the GLOB of the global variable causing the warning has been detached
-from its original stash by, for example C<delete $::{'Foo::'}>. This has been
-fixed by disabling the reporting of variable names in the warning in those
+occur if the glob holding the global variable in question had been detached
+from its original stash by, for example, C<delete $::{'Foo::'}>.  This has
+been fixed by disabling the reporting of variable names in those
 cases.
 
 =item *
@@ -3345,22 +3550,6 @@ again and, if the entries are re-created too many times, dies with a
 
 =item *
 
-Naming a deprecated character in \N{...} will not leak memory.
-
-=item *
-
-chop now correctly handles perl's extended UTF-8 (RT #73246) (65ab92)
-
-=item *
-
-Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
-
-=item *
-
-C<warn()> and C<die()> now respect utf8-encoded scalars [perl #45549].
-
-=item *
-
 What has become known as the "Unicode Bug" is mostly resolved in this release.
 Under C<use feature 'unicode_strings'>, the internal storage format of a
 string no longer affects the external semantics.  There are two known
@@ -3380,100 +3569,109 @@ the 66 of them was known about in places.  The Unicode standard
 considers them legal, but forbids the "open interchange" of them.
 This is part of the change to allow the internal use of any code point
 (see L</Core Enhancements>).  Together, these changes resolve
-[perl #38722], [perl #51918], [perl #51936], [perl #63446]
+[perl #38722], [perl #51918], [perl #51936], [perl #63446].
 
 =item *
 
-[perl #77692] Sometimes the UTF8 length cache would not be reset on a value
-returned by substr, causing C<length(substr($uni_string,...))> to give
-wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic'
-error message, too.
+Naming a deprecated character in \N{...} no longer leaks memory.
 
-=back
+=item *
 
-=head2 Ties and Other Magic
+We fixed a bug that could cause \N{} constructs followed by a single . to
+be parsed incorrectly [perl #74978] (5.12.1).
 
-=over
+=item *
+
+C<chop> now correctly handles characters above "\x{7fffffff}"
+[perl #73246].
 
 =item *
 
-FETCH is no longer called needlessly on some tied variables.
+Passing to C<index> an offset beyond the end of the string when the string
+is encoded internally in UTF8 no longer causes panics [perl #75898].
 
 =item *
 
-Overloading now works properly in conjunction with tied
-variables. What formerly happened was that most ops checked their
-arguments for overloading I<before> checking for magic, so for example
-an overloaded object returned by a tied array access would usually be
-treated as not overloaded (RT #57012) (6f1401, ed3b9b, 6a5f8c .. 24328f).
+C<warn()> and C<die()> now respect utf8-encoded scalars [perl #45549].
 
 =item *
 
-Independently, a bug was fixed that prevented $tied-E<gt>() from
-always calling FETCH correctly (RT #8438) (7c7501)
+Sometimes the UTF8 length cache would not be reset on a value
+returned by substr, causing C<length(substr($uni_string,...))> to give
+wrong answers.  With C<${^UTF8CACHE}> set to -1, it would produce a 'panic'
+error message, too [perl #77692].
+
+=back
+
+=head2 Ties, Overloading and Other Magic
+
+=over
 
 =item *
 
-Avoids multiple FETCH/stringify on filetest ops (40c852d)
+Overloading now works properly in conjunction with tied
+variables.  What formerly happened was that most ops checked their
+arguments for overloading I<before> checking for magic, so for example
+an overloaded object returned by a tied array access would usually be
+treated as not overloaded [RT #57012].
 
 =item *
 
-Fixed issue with string C<eval> not detecting taint of overloaded/tied
-arguments (RT #75716) (895b760)
+Various cases of magic (e.g., tie methods) being called on tied variables
+too many or too few times have been fixed:
+
+=over
 
 =item *
 
-Fix potential crashes of string C<eval> when evaluating a object with
-overloaded stringification by creating a stringified copy when necessary
-(3e5c018)
+FETCH is no longer called on tied variables in void context.
 
 =item *
 
-Fixed bug where overloaded stringification could remove tainting
-(RT #75716) (a02ec77)
+C<$tied-E<gt>()> did not always call FETCH [perl #8438].
 
 =item *
 
-L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied
-arguments.
+Filetest operators and C<y///> and C<tr///> were calling FETCH too
+many times.
 
 =item *
 
-A possible string corruption when doing regular expression matches on overloaded
-objects has been fixed [perl #77084].
+The C<=> operator used to ignore magic on its right-hand side if the
+scalar happened to hold a typeglob (if a typeglob was the last thing
+returned from or assigned to a tied scalar) [perl #77498].
 
 =item *
 
-Magic applied to variables in the main package no longer affects other packages.
-See L</Magic variables outside the main package> above [perl #76138].
+Dereference operators used to ignore magic if the argument was a
+reference already (e.g., from a previous FETCH) [perl #72144].
 
 =item *
 
-The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
-method of a tie) on its left-hand side just once, not twice [perl #76814].
+C<splice> now calls set-magic (so changes made
+by C<splice @ISA> are respected by method calls) [perl #78400].
 
 =item *
 
-C<splice> now calls set-magic. This means that, for instance, changes made
-by C<splice @ISA> are respected by method calls [perl #78400].
+In-memory files created by C<open $fh, 'E<gt>' \$buffer> were not calling
+FETCH/STORE at all [perl #43789] (5.12.2).
+
+=back
 
 =item *
 
-The C<=> operator used to ignore magic (e.g., tie methods) on its
-right-hand side if the scalar happened to hold a typeglob. This could
-happen if a typeglob was the last thing returned from or assigned to a tied
-scalar [perl #77498].
+String C<eval> now detects taintedness of overloaded or tied
+arguments [perl #75716].
 
 =item *
 
-The fallback behaviour of overloading on binary operators was asymmetric
-[perl #71286].
+String C<eval> and regular expression matches against objects with string
+overloading no longer cause memory corruption or crashes [perl 77084].
 
 =item *
 
-Sometimes magic (ties, tainted, etc.) attached to variables could cause an
-object to last longer than it should, or cause a crash if a tied variable
-were freed from within a tie method. These have been fixed [perl #81230].
+L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied
+arguments.
 
 =item *
 
@@ -3482,30 +3680,58 @@ overloaded.
 
 Due to the way that 'E<lt>E<gt> as glob' was parsed differently from
 'E<lt>E<gt> as filehandle' from 5.6 onwards, something like C<< E<lt>$foo[0]E<gt> >> did
-not handle overloading, even if C<$foo[0]> was an overloaded object. This
+not handle overloading, even if C<$foo[0]> was an overloaded object.  This
 was contrary to the documentation for overload, and meant that C<< E<lt>E<gt> >>
 could not be used as a general overloaded iterator operator.
 
 =item *
 
+The fallback behaviour of overloading on binary operators was asymmetric
+[perl #71286].
+
+=item *
+
+Magic applied to variables in the main package no longer affects other packages.
+See L</Magic variables outside the main package> above [perl #76138].
+
+=item *
+
+Sometimes magic (ties, taintedness, etc.) attached to variables could cause
+an object to last longer than it should, or cause a crash if a tied
+variable were freed from within a tie method.  These have been fixed
+[perl #81230].
+
+=item *
+
 DESTROY methods of objects implementing ties are no longer able to crash by
 accessing the tied variable through a weak reference [perl #86328].
 
-=back
+=item *
 
-=head2 The Debugger
+Fixed a regression of kill() when a match variable is used for the
+process ID to kill [perl #75812].
 
-=over
+=item *
+
+C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now
+it is correctly untainted if an autoloaded method is called and the method
+name was not tainted.
 
 =item *
 
-Don't stamp on $DB::single, $DB::trace and $DB::signal if they
-already have values when $^P is assigned to (RT #72422) (4c0f30).
+C<sprintf> now dies when passed a tainted scalar for the format. It did
+already die for arbitrary expressions, but not for simple scalars
+[perl #82250].
 
 =item *
 
-A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
-C<@DB::args> has been fixed.
+utf8::is_utf8 now respects get-magic (e.g. $1) (5.12.1).
+
+=back
+
+=head2 The Debugger
+
+=over
 
 =item *
 
@@ -3513,14 +3739,24 @@ The Perl debugger now also works in taint mode [perl #76872].
 
 =item *
 
+Subroutine redefinition works once more in the debugger [perl #48332].
+
+=item *
+
 When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
-to the lines of the main program. In the past, this sometimes worked and
+to the lines of the main program.  In the past, this sometimes worked and
 sometimes did not, depending on what order things happened to be arranged
 in memory [perl #71806].
 
 =item *
 
-Subroutine redefinition works once more in the debugger [perl #48332].
+A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
+C<@DB::args> has been fixed (5.12.2).
+
+=item *
+
+Perl no longer stomps on $DB::single, $DB::trace and $DB::signal if they
+already have values when $^P is assigned to [perl #72422].
 
 =item *
 
@@ -3533,23 +3769,14 @@ the existing line number would cause the lines to be misnumbered
 
 =back
 
-=head2 Threads, Signals
+=head2 Threads
 
 =over
 
 =item *
 
-Don't accidentally clone lexicals in scope within active stack frames in
-the parent when creating a child thread (RT #73086) (05d04d).
-
-=item *
-
-Defer signal handling when shared SV locks are held to avoid
-deadlocks (RT #74868) (65c742).
-
-=item *
-
-Within signal handlers, C<$!> is now implicitly localized.
+Perl no longer accidentally clones lexicals in scope within active stack
+frames in the parent when creating a child thread [perl #73086].
 
 =item *
 
@@ -3576,136 +3803,149 @@ separator), had the wrong reference count in child threads.
 [perl #78494] When pipes are shared between threads, the C<close> function
 (and any implicit close, such as on thread exit) no longer blocks.
 
+=item *
+
+Perl now does a timely cleanup of SVs that are cloned into a new thread but
+then discovered to be orphaned (i.e., their owners are I<not> cloned). This
+eliminates several "scalars leaked" warnings when joining threads.
+
 =back
 
-=head2 Miscellaneous Memory Leaks
+=head2 Scoping and Subroutines
 
 =over
 
 =item *
 
-Timely cleanup of SVs that are cloned into a new thread but then
-discovered to be orphaned (i.e. their owners are -not- cloned) (e42956)
+Lvalue subroutines are again able to return copy-on-write scalars.  This
+had been broken since version 5.10.0 [perl #75656] (5.12.3).
 
 =item *
 
-Plugs more memory leaks in vms.c. (9e2bec0)
+C<require> no longer causes C<caller> to return the wrong file name for
+the scope that called C<require> and other scopes higher up that had the
+same file name [perl #68712].
 
 =item *
 
-Several memory leaks when loading XS modules were fixed.
+C<sort> with a ($$)-prototyped comparison routine used to cause the value
+of @_ to leak out of the sort.  Taking a reference to @_ within the
+sorting routine could cause a crash [perl #72334].
 
 =item *
 
-L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">,
-L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
-and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
-with lvalues, result in leaking the scalar value they operate on, and cause its
-destruction to happen too late. This has now been fixed.
+Match variables (e.g., C<$1>) no longer persist between calls to a sort
+subroutine [perl #76026].
 
 =item *
 
-The postincrement and postdecrement operators, C<++> and C<-->, used to cause
-leaks when being used on references.  This has now been fixed.
+Iterating with C<foreach> over an array returned by an lvalue sub now works
+[perl #23790].
 
 =item *
 
-Nested C<map> and C<grep> blocks no longer leak memory when processing
-large lists [perl #48004].
+C<$@> is now localised during calls to C<binmode> to prevent action at a
+distance [perl #78844].
 
 =item *
 
-C<use v5.8> no longer leaks memory [perl #78436].
+Calling a closure prototype (what is passed to an attribute handler for a
+closure) now results in a "Closure prototype called" error message instead
+of a crash [perl #68560].
 
 =item *
 
-C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/>
-contained characters beyond the octet range and the scalar assigned to
-happened to be encoded as UTF8 internally [perl #72246].
+Mentioning a read-only lexical variable from the enclosing scope in a
+string C<eval> no longer causes the variable to become writable
+[perl #19135].
+
+=back
+
+=head2 Signals
+
+=over
 
 =item *
 
-A signal handler called within a signal handler could cause leaks or
-double-frees. Now fixed. [perl #76248].
+Within signal handlers, C<$!> is now implicitly localized.
 
 =item *
 
-C<use 5.42> [perl #69050],
-C<use 6> and C<no 5> no longer leak memory.
+CHLD signals are no longer unblocked after a signal handler is called if
+they were blocked before by C<POSIX::sigprocmask> [perl #82040].
 
 =item *
 
-C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
+A signal handler called within a signal handler could cause leaks or
+double-frees.  Now fixed. [perl #76248].
 
 =back
 
-=head2 Miscellaneous
-
-XXX ‘Miscellaneous’ means things that have not been sorted out yet.
+=head2 Miscellaneous Memory Leaks
 
 =over
 
 =item *
 
-glob() no longer crashes when %File::Glob:: is empty and
-CORE::GLOBAL::glob isn't present (4984aa).
+Several memory leaks when loading XS modules were fixed (5.12.2).
 
 =item *
 
-Fixed readline() when interrupted by signals so it no longer returns
-the "same thing" as before or random memory
+L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">,
+L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
+and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
+with lvalues, result in leaking the scalar value they operate on, and cause its
+destruction to happen too late. This has now been fixed.
 
 =item *
 
-Fixed a regression of kill() when a match variable is used for the
-process ID to kill  (RT#75812) (8af710e)
+The postincrement and postdecrement operators, C<++> and C<-->, used to cause
+leaks when being used on references.  This has now been fixed.
 
 =item *
 
-Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
-used for sorting (RT#72334) (8f443ca)
+Nested C<map> and C<grep> blocks no longer leak memory when processing
+large lists [perl #48004].
 
 =item *
 
-Perl would segfault if the undocumented C<Internals> functions that used
-reference prototypes were called with the C<&foo()> syntax, e.g.
-C<&Internals::SvREADONLY(undef)> [perl #77776].
-
-These functions now call C<SvROK> on their arguments before dereferencing them
-with C<SvRV>, and we test for this case in F<t/lib/universal.t>.
+C<use I<VERSION>> and C<no I<VERSION>> no longer leak memory [perl #78436]
+[perl #69050].
 
 =item *
 
-When assigning a list with duplicated keys to a hash, the assignment used to
-return garbage and/or freed values:
+C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/>
+contained characters beyond the octet range and the scalar assigned to
+happened to be encoded as UTF8 internally [perl #72246].
 
-    @a = %h = (list with some duplicate keys);
+=item *
 
-This has now been fixed [perl #31865].
+C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
 
-=item *
+=back
 
-The C<-C> command line option can now be followed by other options
-[perl #72434].
+=head2 Memory Corruption and Crashes
+
+=over
 
 =item *
 
-The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments
-[perl #20661].
+glob() no longer crashes when %File::Glob:: is empty and
+CORE::GLOBAL::glob isn't present [perl #75464] (5.12.2).
 
 =item *
 
-Stringifying a scalar containing -0.0 no longer has the affect of turning
-false into true [perl #45133].
+readline() has been fixed when interrupted by signals so it no longer
+returns the "same thing" as before or random memory.
 
 =item *
 
-Malformed C<version> objects no longer cause crashes [perl #78286].
+When assigning a list with duplicated keys to a hash, the assignment used to
+return garbage and/or freed values:
 
-=item *
+    @a = %h = (list with some duplicate keys);
 
-The interpreter no longer crashes when freeing deeply-nested arrays of
-arrays. Hashes have not been fixed yet [perl #44225].
+This has now been fixed [perl #31865].
 
 =item *
 
@@ -3714,13 +3954,13 @@ pointers to freed SVs, meaning Perl users could see corrupted state
 during destruction.
 
 Perl now only frees the affected slots of the GV, rather than freeing
-the GV itself. This makes sure that there are no dangling refs or
+the GV itself.  This makes sure that there are no dangling refs or
 corrupted state during destruction.
 
 =item *
 
-C<sprintf> was ignoring locales when called with constant arguments
-[perl #78632].
+The interpreter no longer crashes when freeing deeply-nested arrays of
+arrays.  Hashes have not been fixed yet [perl #44225].
 
 =item *
 
@@ -3743,83 +3983,56 @@ The C<recv> function could crash when called with the MSG_TRUNC flag
 
 =item *
 
-Iterating with C<foreach> over an array returned by an lvalue sub now works
-[perl #23790].
-
-=item *
-
-C<$@> is now localised during calls to C<binmode> to prevent action at a
-distance [perl #78844].
-
-=item *
-
 C<formline> no longer crashes when passed a tainted format picture. It also
 taints C<$^A> now if its arguments are tainted [perl #79138].
 
 =item *
 
-Calling a closure prototype (what is passed to an attribute handler for a
-closure) now results in a "Closure prototype called" error message instead
-of a crash [perl #68560].
-
-=item *
-
-Mentioning a read-only lexical variable from the enclosing scope in a
-string C<eval> no longer causes the variable to become writable
-[perl #19135].
-
-=item *
-
-Match variables (e.g., C<$1>) no longer persist between calls to a sort
-subroutine [perl #76026].
+A bug in how we process filetest operations could cause a segfault.
+Filetests don't always expect an op on the stack, so we now use
+TOPs only if we're sure that we're not stat'ing the _ filehandle.
+This is indicated by OPf_KIDS (as checked in ck_ftst) [perl #74542]
+(5.12.1).
 
 =item *
 
-The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s for C<entertry> [perl #80622].
-This was due to a bug in the perl core, not in C<B> itself.
-
-=item *
+C<unpack()> now handles scalar context correctly for C<%32H> and C<%32u>,
+fixing a potential crash.  C<split()> would crash because the third item
+on the stack wasn't the regular expression it expected.  C<unpack("%2H",
+...)> would return both the unpacked result and the checksum on the stack,
+as would C<unpack("%2u", ...)> [perl #73814] (5.12.2).
 
-Some numeric operators were converting integers to floating point,
-resulting in loss of precision on 64-bit platforms [perl #77456].
+=back
 
-=item *
+=head2 Fixes to Various Perl Operators
 
-[perl #83194] Combining the vector (%v) flag and dynamic precision would
-cause sprintf to confuse the order of its arguments, making it treat the
-string as the precision and vice versa.
+=over
 
 =item *
 
-C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now
-it is correctly untainted if an autoloaded method is called and the method
-name was not tainted.
+The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments
+[perl #20661].
 
 =item *
 
-C<sprintf> now dies when passed a tainted scalar for the format. It did
-already die for arbitrary expressions, but not for simple scalars
-[perl #82250].
-
-=back
-
-=head2 XXX Bugs that probably belong in other sections
-
-=over
+Stringifying a scalar containing -0.0 no longer has the affect of turning
+false into true [perl #45133].
 
 =item *
 
-perlbug now always permits the sender address to be changed
-before sending - if you were having trouble sending bug reports before
-now, this should fix it, we hope (e6eb90).
+Some numeric operators were converting integers to floating point,
+resulting in loss of precision on 64-bit platforms [perl #77456].
 
 =item *
 
-Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
+C<sprintf> was ignoring locales when called with constant arguments
+[perl #78632].
 
 =item *
 
-Fix pthread include error for Time::Piece (e9f284c)
+Combining the vector (%v) flag and dynamic precision would
+cause sprintf to confuse the order of its arguments, making it treat the
+string as the precision and vice versa [perl #83194].
 
 =back
 
@@ -3831,7 +4044,7 @@ Fix pthread include error for Time::Piece (e9f284c)
 
 The C-level C<lex_stuff_pvn> function would sometimes cause a spurious
 syntax error on the last line of the file if it lacked a final semicolon
-[perl #74006].
+[perl #74006] (5.12.1).
 
 =item *
 
@@ -3862,16 +4075,59 @@ C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
 source string) if the flags passed to it do not include SV_GMAGIC. So it
 now matches the documentation.
 
+=item *
+
+C<my_strftime> no longer leaks memory.  This fixes a memory leak in
+C<POSIX::strftime> [perl #73520].
+
+=item *
+
+XSUB.h now correctly redefines fgets under PERL_IMPLICIT_SYS [perl #55049]
+(5.12.1).
+
+=item *
+
+XS code using C<fputc()> or C<fputs()>: on Windows could cause an error
+due to their arguments being swapped [perl #72704] (5.12.1).
+
+=item *
+
+A possible segfault in the C<T_PRTOBJ> default typemap has been fixed
+(5.12.2).
+
+=item *
+
+A bug that could cause "Unknown error" messages when
+C<call_sv(code, G_EVAL)> is called from an XS destructor has been fixed
+(5.12.2).
+
 =back
 
 =head1 Known Problems
 
+XXX Many of these have probably already been solved.  There are also
+unresolved BBC articles linked to #77718 that are awaiting CPAN
+releases.  These may need to be listed here.
+See also #84444.  Enbugger may also need to be listed if there is no new
+release in time (see #82152).
+JJORE/overload-eval-0.08.tar.gz appears to be broken, too.  See
+http://www.nntp.perl.org/group/perl.perl5.porters/2010/11/msg165773.html
+
 =over 4
 
 =item *
 
-Bug fixes involving CvGV reference counting break Sub::Name.  A
-patch has been sent upstream to the maintainer
+C<List::Util::first> misbehaves in the presence of a lexical C<$_>
+(typically introduced by C<my $_> or implicitly by C<given>). The variable
+which gets set for each iteration is the package variable C<$_>, not the
+lexical C<$_>.
+
+A similar issue may occur in other modules that provide functions which
+take a block as their first argument, like
+
+    foo { ... $_ ...} list
+
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=67694>
 
 =item *
 
@@ -3921,7 +4177,7 @@ Module-Install distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests
 
 =head1 Errata
 
-=head2 C<keys>, C<values> work on arrays
+=head2 C<keys>, C<values> and C<each> work on arrays
 
 You can now use the C<keys>, C<values>, C<each> builtin functions on arrays
 (previously you could only use them on hashes).  See L<perlfunc> for details.