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
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
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
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
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.
=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
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>.
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
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.
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
=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
=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
=back
-=head2 Selected Module and Pragma Updates
+=head2 Updated Modules and Pragma
=over 4
=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.
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].
=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
=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:
=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.
=item *
+C<DB_File> has been upgraded from version 1.820 to 1.821.
+
+=item *
+
C<Devel::DProf> has been upgraded from version 20080331.00 to 20110228.00.
Merely loading C<Devel::DProf> now no longer triggers profiling to start.
=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
=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.
=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.
=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>
=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
=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
=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
=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.
=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
=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
=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
=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].
=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
=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.
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 *
=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
=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.
=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
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]:
=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> has been removed from the Perl core. Prior version was 1.02.
-=item C<Pod::Plainer>
+=item *
-=item C<Switch>
+C<Switch> has been removed from the Perl core. Prior version was 2.16.
=back
=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
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>
=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
=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>
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>
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>.
+F<README.aix> has been updated with information about the XL C/C++ V11 compiler
+suite (5.12.2).
-=item *
-
-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>.
-
-=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
+=head3 IRIX
Conversion of strings to floating-point numbers is now more accurate on
IRIX systems [perl #32380].
=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
=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,
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 *
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
=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
=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.
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
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
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 *
=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 *
=item *
C<when(scalar){...}> no longer crashes, but produces a syntax error
-[perl #74114].
+[perl #74114] (5.12.1).
=item *
=item *
The C<no 5.13.2;> form of C<no> no longer tries to turn on features or
-pragmata (i.e., strict) [perl #70075].
+pragmata (i.e., strict) [perl #70075] (5.12.2).
=item *
=item *
-Lvalue subroutines are again able to return copy-on-write scalars. This
-had been broken since version 5.10.0 [perl #75656].
-
-=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> [perl #85508].
+fixed. C<$x> will now be C<undef> [perl #85508] (5.12.2).
=item *
=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].
-
-=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
*d = *a; print $d[0];
undef *d; print $d[0];
+=item *
+
+The C<-C> command line option, when used on the shebang line, can now be
+followed by other options [perl #72434].
+
+=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.
+
=back
=head2 Stashes, Globs and Method Lookup
=item *
+We fixed a bug that could cause \N{} constructs followed by a single . to
+be parsed incorrectly [perl #74978] (5.12.1).
+
+=item *
+
C<chop> now correctly handles characters above "\x{7fffffff}"
[perl #73246].
C<splice> now calls set-magic (so changes made
by C<splice @ISA> are respected by method calls) [perl #78400].
+=item *
+
+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 *
DESTROY methods of objects implementing ties are no longer able to crash by
accessing the tied variable through a weak reference [perl #86328].
+=item *
+
+Fixed a regression of kill() when a match variable is used for the
+process ID to kill [perl #75812].
+
+=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 *
+
+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 *
+
+utf8::is_utf8 now respects get-magic (e.g. $1) (5.12.1).
+
=back
=head2 The Debugger
=item *
A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
-C<@DB::args> has been fixed.
+C<@DB::args> has been fixed (5.12.2).
=item *
=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 *
[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
+
+=head2 Memory Corruption and Crashes
-The C<-C> command line option can now be followed by other options
-[perl #72434].
+=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 *
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 *
=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.
+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).
-=item *
+=back
-Some numeric operators were converting integers to floating point,
-resulting in loss of precision on 64-bit platforms [perl #77456].
+=head2 Fixes to Various Perl Operators
-=item *
-
-[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
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 *
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 *
=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.