summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man1/perl5101delta.1
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man1/perl5101delta.1
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/mageia-cauldron/man1/perl5101delta.1')
-rw-r--r--upstream/mageia-cauldron/man1/perl5101delta.11550
1 files changed, 1550 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perl5101delta.1 b/upstream/mageia-cauldron/man1/perl5101delta.1
new file mode 100644
index 00000000..4da61f10
--- /dev/null
+++ b/upstream/mageia-cauldron/man1/perl5101delta.1
@@ -0,0 +1,1550 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "PERL5101DELTA 1"
+.TH PERL5101DELTA 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+perl5101delta \- what is new for perl v5.10.1
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+This document describes differences between the 5.10.0 release and
+the 5.10.1 release.
+.PP
+If you are upgrading from an earlier release such as 5.8.8, first read
+the perl5100delta, which describes differences between 5.8.8 and
+5.10.0
+.SH "Incompatible Changes"
+.IX Header "Incompatible Changes"
+.SS "Switch statement changes"
+.IX Subsection "Switch statement changes"
+The handling of complex expressions by the \f(CW\*(C`given\*(C'\fR/\f(CW\*(C`when\*(C'\fR switch
+statement has been enhanced. There are two new cases where \f(CW\*(C`when\*(C'\fR now
+interprets its argument as a boolean, instead of an expression to be used
+in a smart match:
+.IP "flip-flop operators" 4
+.IX Item "flip-flop operators"
+The \f(CW\*(C`..\*(C'\fR and \f(CW\*(C`...\*(C'\fR flip-flop operators are now evaluated in boolean
+context, following their usual semantics; see "Range Operators" in perlop.
+.Sp
+Note that, as in perl 5.10.0, \f(CW\*(C`when (1..10)\*(C'\fR will not work to test
+whether a given value is an integer between 1 and 10; you should use
+\&\f(CW\*(C`when ([1..10])\*(C'\fR instead (note the array reference).
+.Sp
+However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
+context ensures it can now be useful in a \f(CWwhen()\fR, notably for
+implementing bistable conditions, like in:
+.Sp
+.Vb 3
+\& when (/^=begin/ .. /^=end/) {
+\& # do something
+\& }
+.Ve
+.IP "defined-or operator" 4
+.IX Item "defined-or operator"
+A compound expression involving the defined-or operator, as in
+\&\f(CW\*(C`when (expr1 // expr2)\*(C'\fR, will be treated as boolean if the first
+expression is boolean. (This just extends the existing rule that applies
+to the regular or operator, as in \f(CW\*(C`when (expr1 || expr2)\*(C'\fR.)
+.PP
+The next section details more changes brought to the semantics to
+the smart match operator, that naturally also modify the behaviour
+of the switch statements where smart matching is implicitly used.
+.SS "Smart match changes"
+.IX Subsection "Smart match changes"
+\fIChanges to type-based dispatch\fR
+.IX Subsection "Changes to type-based dispatch"
+.PP
+The smart match operator \f(CW\*(C`~~\*(C'\fR is no longer commutative. The behaviour of
+a smart match now depends primarily on the type of its right hand
+argument. Moreover, its semantics have been adjusted for greater
+consistency or usefulness in several cases. While the general backwards
+compatibility is maintained, several changes must be noted:
+.IP \(bu 4
+Code references with an empty prototype are no longer treated specially.
+They are passed an argument like the other code references (even if they
+choose to ignore it).
+.IP \(bu 4
+\&\f(CW\*(C`%hash ~~ sub {}\*(C'\fR and \f(CW\*(C`@array ~~ sub {}\*(C'\fR now test that the subroutine
+returns a true value for each key of the hash (or element of the
+array), instead of passing the whole hash or array as a reference to
+the subroutine.
+.IP \(bu 4
+Due to the commutativity breakage, code references are no longer
+treated specially when appearing on the left of the \f(CW\*(C`~~\*(C'\fR operator,
+but like any vulgar scalar.
+.IP \(bu 4
+\&\f(CW\*(C`undef ~~ %hash\*(C'\fR is always false (since \f(CW\*(C`undef\*(C'\fR can't be a key in a
+hash). No implicit conversion to \f(CW""\fR is done (as was the case in perl
+5.10.0).
+.IP \(bu 4
+\&\f(CW\*(C`$scalar ~~ @array\*(C'\fR now always distributes the smart match across the
+elements of the array. It's true if one element in \f(CW@array\fR verifies
+\&\f(CW\*(C`$scalar ~~ $element\*(C'\fR. This is a generalization of the old behaviour
+that tested whether the array contained the scalar.
+.PP
+The full dispatch table for the smart match operator is given in
+"Smart matching in detail" in perlsyn.
+.PP
+\fISmart match and overloading\fR
+.IX Subsection "Smart match and overloading"
+.PP
+According to the rule of dispatch based on the rightmost argument type,
+when an object overloading \f(CW\*(C`~~\*(C'\fR appears on the right side of the
+operator, the overload routine will always be called (with a 3rd argument
+set to a true value, see overload.) However, when the object will
+appear on the left, the overload routine will be called only when the
+rightmost argument is a simple scalar. This way distributivity of smart match
+across arrays is not broken, as well as the other behaviours with complex
+types (coderefs, hashes, regexes). Thus, writers of overloading routines
+for smart match mostly need to worry only with comparing against a scalar,
+and possibly with stringification overloading; the other common cases
+will be automatically handled consistently.
+.PP
+\&\f(CW\*(C`~~\*(C'\fR will now refuse to work on objects that do not overload it (in order
+to avoid relying on the object's underlying structure). (However, if the
+object overloads the stringification or the numification operators, and
+if overload fallback is active, it will be used instead, as usual.)
+.SS "Other incompatible changes"
+.IX Subsection "Other incompatible changes"
+.IP \(bu 4
+The semantics of \f(CW\*(C`use feature :5.10*\*(C'\fR have changed slightly.
+See "Modules and Pragmata" for more information.
+.IP \(bu 4
+It is now a run-time error to use the smart match operator \f(CW\*(C`~~\*(C'\fR
+with an object that has no overload defined for it. (This way
+\&\f(CW\*(C`~~\*(C'\fR will not break encapsulation by matching against the
+object's internal representation as a reference.)
+.IP \(bu 4
+The version control system used for the development of the perl
+interpreter has been switched from Perforce to git. This is mainly an
+internal issue that only affects people actively working on the perl core;
+but it may have minor external visibility, for example in some of details
+of the output of \f(CW\*(C`perl \-V\*(C'\fR. See perlrepository for more information.
+.IP \(bu 4
+The internal structure of the \f(CW\*(C`ext/\*(C'\fR directory in the perl source has
+been reorganised. In general, a module \f(CW\*(C`Foo::Bar\*(C'\fR whose source was
+stored under \fIext/Foo/Bar/\fR is now located under \fIext/Foo\-Bar/\fR. Also,
+some modules have been moved from \fIlib/\fR to \fIext/\fR. This is purely a
+source tarball change, and should make no difference to the compilation or
+installation of perl, unless you have a very customised build process that
+explicitly relies on this structure, or which hard-codes the \f(CW\*(C`nonxs_ext\*(C'\fR
+\&\fIConfigure\fR parameter. Specifically, this change does not by default
+alter the location of any files in the final installation.
+.IP \(bu 4
+As part of the \f(CW\*(C`Test::Harness\*(C'\fR 2.x to 3.x upgrade, the experimental
+\&\f(CW\*(C`Test::Harness::Straps\*(C'\fR module has been removed.
+See "Updated Modules" for more details.
+.IP \(bu 4
+As part of the \f(CW\*(C`ExtUtils::MakeMaker\*(C'\fR upgrade, the
+\&\f(CW\*(C`ExtUtils::MakeMaker::bytes\*(C'\fR and \f(CW\*(C`ExtUtils::MakeMaker::vmsish\*(C'\fR modules
+have been removed from this distribution.
+.IP \(bu 4
+\&\f(CW\*(C`Module::CoreList\*(C'\fR no longer contains the \f(CW%:patchlevel\fR hash.
+.IP \(bu 4
+This one is actually a change introduced in 5.10.0, but it was missed
+from that release's perldelta, so it is mentioned here instead.
+.Sp
+A bugfix related to the handling of the \f(CW\*(C`/m\*(C'\fR modifier and \f(CW\*(C`qr\*(C'\fR resulted
+in a change of behaviour between 5.8.x and 5.10.0:
+.Sp
+.Vb 2
+\& # matches in 5.8.x, doesn\*(Aqt match in 5.10.0
+\& $re = qr/^bar/; "foo\enbar" =~ /$re/m;
+.Ve
+.SH "Core Enhancements"
+.IX Header "Core Enhancements"
+.SS "Unicode Character Database 5.1.0"
+.IX Subsection "Unicode Character Database 5.1.0"
+The copy of the Unicode Character Database included in Perl 5.10.1 has
+been updated to 5.1.0 from 5.0.0. See
+<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
+notable changes.
+.SS "A proper interface for pluggable Method Resolution Orders"
+.IX Subsection "A proper interface for pluggable Method Resolution Orders"
+As of Perl 5.10.1 there is a new interface for plugging and using method
+resolution orders other than the default (linear depth first search).
+The C3 method resolution order added in 5.10.0 has been re-implemented as
+a plugin, without changing its Perl-space interface. See perlmroapi for
+more information.
+.ie n .SS "The ""overloading"" pragma"
+.el .SS "The \f(CWoverloading\fP pragma"
+.IX Subsection "The overloading pragma"
+This pragma allows you to lexically disable or enable overloading
+for some or all operations. (Yuval Kogman)
+.SS "Parallel tests"
+.IX Subsection "Parallel tests"
+The core distribution can now run its regression tests in parallel on
+Unix-like platforms. Instead of running \f(CW\*(C`make test\*(C'\fR, set \f(CW\*(C`TEST_JOBS\*(C'\fR in
+your environment to the number of tests to run in parallel, and run
+\&\f(CW\*(C`make test_harness\*(C'\fR. On a Bourne-like shell, this can be done as
+.PP
+.Vb 1
+\& TEST_JOBS=3 make test_harness # Run 3 tests in parallel
+.Ve
+.PP
+An environment variable is used, rather than parallel make itself, because
+TAP::Harness needs to be able to schedule individual non-conflicting test
+scripts itself, and there is no standard interface to \f(CW\*(C`make\*(C'\fR utilities to
+interact with their job schedulers.
+.PP
+Note that currently some test scripts may fail when run in parallel (most
+notably \f(CW\*(C`ext/IO/t/io_dir.t\*(C'\fR). If necessary run just the failing scripts
+again sequentially and see if the failures go away.
+.SS "DTrace support"
+.IX Subsection "DTrace support"
+Some support for DTrace has been added. See "DTrace support" in \fIINSTALL\fR.
+.ie n .SS "Support for ""configure_requires"" in CPAN module metadata"
+.el .SS "Support for \f(CWconfigure_requires\fP in CPAN module metadata"
+.IX Subsection "Support for configure_requires in CPAN module metadata"
+Both \f(CW\*(C`CPAN\*(C'\fR and \f(CW\*(C`CPANPLUS\*(C'\fR now support the \f(CW\*(C`configure_requires\*(C'\fR keyword
+in the \f(CW\*(C`META.yml\*(C'\fR metadata file included in most recent CPAN distributions.
+This allows distribution authors to specify configuration prerequisites that
+must be installed before running \fIMakefile.PL\fR or \fIBuild.PL\fR.
+.PP
+See the documentation for \f(CW\*(C`ExtUtils::MakeMaker\*(C'\fR or \f(CW\*(C`Module::Build\*(C'\fR for more
+on how to specify \f(CW\*(C`configure_requires\*(C'\fR when creating a distribution for CPAN.
+.SH "Modules and Pragmata"
+.IX Header "Modules and Pragmata"
+.SS "New Modules and Pragmata"
+.IX Subsection "New Modules and Pragmata"
+.ie n .IP """autodie""" 4
+.el .IP \f(CWautodie\fR 4
+.IX Item "autodie"
+This is a new lexically-scoped alternative for the \f(CW\*(C`Fatal\*(C'\fR module.
+The bundled version is 2.06_01. Note that in this release, using a string
+eval when \f(CW\*(C`autodie\*(C'\fR is in effect can cause the autodie behaviour to leak
+into the surrounding scope. See "BUGS" in autodie for more details.
+.ie n .IP """Compress::Raw::Bzip2""" 4
+.el .IP \f(CWCompress::Raw::Bzip2\fR 4
+.IX Item "Compress::Raw::Bzip2"
+This has been added to the core (version 2.020).
+.ie n .IP """parent""" 4
+.el .IP \f(CWparent\fR 4
+.IX Item "parent"
+This pragma establishes an ISA relationship with base classes at compile
+time. It provides the key feature of \f(CW\*(C`base\*(C'\fR without the feature creep.
+.ie n .IP """Parse::CPAN::Meta""" 4
+.el .IP \f(CWParse::CPAN::Meta\fR 4
+.IX Item "Parse::CPAN::Meta"
+This has been added to the core (version 1.39).
+.SS "Pragmata Changes"
+.IX Subsection "Pragmata Changes"
+.ie n .IP """attributes""" 4
+.el .IP \f(CWattributes\fR 4
+.IX Item "attributes"
+Upgraded from version 0.08 to 0.09.
+.ie n .IP """attrs""" 4
+.el .IP \f(CWattrs\fR 4
+.IX Item "attrs"
+Upgraded from version 1.02 to 1.03.
+.ie n .IP """base""" 4
+.el .IP \f(CWbase\fR 4
+.IX Item "base"
+Upgraded from version 2.13 to 2.14. See parent for a replacement.
+.ie n .IP """bigint""" 4
+.el .IP \f(CWbigint\fR 4
+.IX Item "bigint"
+Upgraded from version 0.22 to 0.23.
+.ie n .IP """bignum""" 4
+.el .IP \f(CWbignum\fR 4
+.IX Item "bignum"
+Upgraded from version 0.22 to 0.23.
+.ie n .IP """bigrat""" 4
+.el .IP \f(CWbigrat\fR 4
+.IX Item "bigrat"
+Upgraded from version 0.22 to 0.23.
+.ie n .IP """charnames""" 4
+.el .IP \f(CWcharnames\fR 4
+.IX Item "charnames"
+Upgraded from version 1.06 to 1.07.
+.Sp
+The Unicode \fINameAliases.txt\fR database file has been added. This has the
+effect of adding some extra \f(CW\*(C`\eN\*(C'\fR character names that formerly wouldn't
+have been recognised; for example, \f(CW"\eN{LATIN CAPITAL LETTER GHA}"\fR.
+.ie n .IP """constant""" 4
+.el .IP \f(CWconstant\fR 4
+.IX Item "constant"
+Upgraded from version 1.13 to 1.17.
+.ie n .IP """feature""" 4
+.el .IP \f(CWfeature\fR 4
+.IX Item "feature"
+The meaning of the \f(CW\*(C`:5.10\*(C'\fR and \f(CW\*(C`:5.10.X\*(C'\fR feature bundles has
+changed slightly. The last component, if any (i.e. \f(CW\*(C`X\*(C'\fR) is simply ignored.
+This is predicated on the assumption that new features will not, in
+general, be added to maintenance releases. So \f(CW\*(C`:5.10\*(C'\fR and \f(CW\*(C`:5.10.X\*(C'\fR
+have identical effect. This is a change to the behaviour documented for
+5.10.0.
+.ie n .IP """fields""" 4
+.el .IP \f(CWfields\fR 4
+.IX Item "fields"
+Upgraded from version 2.13 to 2.14 (this was just a version bump; there
+were no functional changes).
+.ie n .IP """lib""" 4
+.el .IP \f(CWlib\fR 4
+.IX Item "lib"
+Upgraded from version 0.5565 to 0.62.
+.ie n .IP """open""" 4
+.el .IP \f(CWopen\fR 4
+.IX Item "open"
+Upgraded from version 1.06 to 1.07.
+.ie n .IP """overload""" 4
+.el .IP \f(CWoverload\fR 4
+.IX Item "overload"
+Upgraded from version 1.06 to 1.07.
+.ie n .IP """overloading""" 4
+.el .IP \f(CWoverloading\fR 4
+.IX Item "overloading"
+See "The \f(CW\*(C`overloading\*(C'\fR pragma" above.
+.ie n .IP """version""" 4
+.el .IP \f(CWversion\fR 4
+.IX Item "version"
+Upgraded from version 0.74 to 0.77.
+.SS "Updated Modules"
+.IX Subsection "Updated Modules"
+.ie n .IP """Archive::Extract""" 4
+.el .IP \f(CWArchive::Extract\fR 4
+.IX Item "Archive::Extract"
+Upgraded from version 0.24 to 0.34.
+.ie n .IP """Archive::Tar""" 4
+.el .IP \f(CWArchive::Tar\fR 4
+.IX Item "Archive::Tar"
+Upgraded from version 1.38 to 1.52.
+.ie n .IP """Attribute::Handlers""" 4
+.el .IP \f(CWAttribute::Handlers\fR 4
+.IX Item "Attribute::Handlers"
+Upgraded from version 0.79 to 0.85.
+.ie n .IP """AutoLoader""" 4
+.el .IP \f(CWAutoLoader\fR 4
+.IX Item "AutoLoader"
+Upgraded from version 5.63 to 5.68.
+.ie n .IP """AutoSplit""" 4
+.el .IP \f(CWAutoSplit\fR 4
+.IX Item "AutoSplit"
+Upgraded from version 1.05 to 1.06.
+.ie n .IP """B""" 4
+.el .IP \f(CWB\fR 4
+.IX Item "B"
+Upgraded from version 1.17 to 1.22.
+.ie n .IP """B::Debug""" 4
+.el .IP \f(CWB::Debug\fR 4
+.IX Item "B::Debug"
+Upgraded from version 1.05 to 1.11.
+.ie n .IP """B::Deparse""" 4
+.el .IP \f(CWB::Deparse\fR 4
+.IX Item "B::Deparse"
+Upgraded from version 0.83 to 0.89.
+.ie n .IP """B::Lint""" 4
+.el .IP \f(CWB::Lint\fR 4
+.IX Item "B::Lint"
+Upgraded from version 1.09 to 1.11.
+.ie n .IP """B::Xref""" 4
+.el .IP \f(CWB::Xref\fR 4
+.IX Item "B::Xref"
+Upgraded from version 1.01 to 1.02.
+.ie n .IP """Benchmark""" 4
+.el .IP \f(CWBenchmark\fR 4
+.IX Item "Benchmark"
+Upgraded from version 1.10 to 1.11.
+.ie n .IP """Carp""" 4
+.el .IP \f(CWCarp\fR 4
+.IX Item "Carp"
+Upgraded from version 1.08 to 1.11.
+.ie n .IP """CGI""" 4
+.el .IP \f(CWCGI\fR 4
+.IX Item "CGI"
+Upgraded from version 3.29 to 3.43.
+(also includes the "default_value for \fBpopup_menu()\fR" fix from 3.45).
+.ie n .IP """Compress::Zlib""" 4
+.el .IP \f(CWCompress::Zlib\fR 4
+.IX Item "Compress::Zlib"
+Upgraded from version 2.008 to 2.020.
+.ie n .IP """CPAN""" 4
+.el .IP \f(CWCPAN\fR 4
+.IX Item "CPAN"
+Upgraded from version 1.9205 to 1.9402. \f(CW\*(C`CPAN::FTP\*(C'\fR has a local fix to
+stop it being too verbose on download failure.
+.ie n .IP """CPANPLUS""" 4
+.el .IP \f(CWCPANPLUS\fR 4
+.IX Item "CPANPLUS"
+Upgraded from version 0.84 to 0.88.
+.ie n .IP """CPANPLUS::Dist::Build""" 4
+.el .IP \f(CWCPANPLUS::Dist::Build\fR 4
+.IX Item "CPANPLUS::Dist::Build"
+Upgraded from version 0.06_02 to 0.36.
+.ie n .IP """Cwd""" 4
+.el .IP \f(CWCwd\fR 4
+.IX Item "Cwd"
+Upgraded from version 3.25_01 to 3.30.
+.ie n .IP """Data::Dumper""" 4
+.el .IP \f(CWData::Dumper\fR 4
+.IX Item "Data::Dumper"
+Upgraded from version 2.121_14 to 2.124.
+.ie n .IP """DB""" 4
+.el .IP \f(CWDB\fR 4
+.IX Item "DB"
+Upgraded from version 1.01 to 1.02.
+.ie n .IP """DB_File""" 4
+.el .IP \f(CWDB_File\fR 4
+.IX Item "DB_File"
+Upgraded from version 1.816_1 to 1.820.
+.ie n .IP """Devel::PPPort""" 4
+.el .IP \f(CWDevel::PPPort\fR 4
+.IX Item "Devel::PPPort"
+Upgraded from version 3.13 to 3.19.
+.ie n .IP """Digest::MD5""" 4
+.el .IP \f(CWDigest::MD5\fR 4
+.IX Item "Digest::MD5"
+Upgraded from version 2.36_01 to 2.39.
+.ie n .IP """Digest::SHA""" 4
+.el .IP \f(CWDigest::SHA\fR 4
+.IX Item "Digest::SHA"
+Upgraded from version 5.45 to 5.47.
+.ie n .IP """DirHandle""" 4
+.el .IP \f(CWDirHandle\fR 4
+.IX Item "DirHandle"
+Upgraded from version 1.01 to 1.03.
+.ie n .IP """Dumpvalue""" 4
+.el .IP \f(CWDumpvalue\fR 4
+.IX Item "Dumpvalue"
+Upgraded from version 1.12 to 1.13.
+.ie n .IP """DynaLoader""" 4
+.el .IP \f(CWDynaLoader\fR 4
+.IX Item "DynaLoader"
+Upgraded from version 1.08 to 1.10.
+.ie n .IP """Encode""" 4
+.el .IP \f(CWEncode\fR 4
+.IX Item "Encode"
+Upgraded from version 2.23 to 2.35.
+.ie n .IP """Errno""" 4
+.el .IP \f(CWErrno\fR 4
+.IX Item "Errno"
+Upgraded from version 1.10 to 1.11.
+.ie n .IP """Exporter""" 4
+.el .IP \f(CWExporter\fR 4
+.IX Item "Exporter"
+Upgraded from version 5.62 to 5.63.
+.ie n .IP """ExtUtils::CBuilder""" 4
+.el .IP \f(CWExtUtils::CBuilder\fR 4
+.IX Item "ExtUtils::CBuilder"
+Upgraded from version 0.21 to 0.2602.
+.ie n .IP """ExtUtils::Command""" 4
+.el .IP \f(CWExtUtils::Command\fR 4
+.IX Item "ExtUtils::Command"
+Upgraded from version 1.13 to 1.16.
+.ie n .IP """ExtUtils::Constant""" 4
+.el .IP \f(CWExtUtils::Constant\fR 4
+.IX Item "ExtUtils::Constant"
+Upgraded from 0.20 to 0.22. (Note that neither of these versions are
+available on CPAN.)
+.ie n .IP """ExtUtils::Embed""" 4
+.el .IP \f(CWExtUtils::Embed\fR 4
+.IX Item "ExtUtils::Embed"
+Upgraded from version 1.27 to 1.28.
+.ie n .IP """ExtUtils::Install""" 4
+.el .IP \f(CWExtUtils::Install\fR 4
+.IX Item "ExtUtils::Install"
+Upgraded from version 1.44 to 1.54.
+.ie n .IP """ExtUtils::MakeMaker""" 4
+.el .IP \f(CWExtUtils::MakeMaker\fR 4
+.IX Item "ExtUtils::MakeMaker"
+Upgraded from version 6.42 to 6.55_02.
+.Sp
+Note that \f(CW\*(C`ExtUtils::MakeMaker::bytes\*(C'\fR and \f(CW\*(C`ExtUtils::MakeMaker::vmsish\*(C'\fR
+have been removed from this distribution.
+.ie n .IP """ExtUtils::Manifest""" 4
+.el .IP \f(CWExtUtils::Manifest\fR 4
+.IX Item "ExtUtils::Manifest"
+Upgraded from version 1.51_01 to 1.56.
+.ie n .IP """ExtUtils::ParseXS""" 4
+.el .IP \f(CWExtUtils::ParseXS\fR 4
+.IX Item "ExtUtils::ParseXS"
+Upgraded from version 2.18_02 to 2.2002.
+.ie n .IP """Fatal""" 4
+.el .IP \f(CWFatal\fR 4
+.IX Item "Fatal"
+Upgraded from version 1.05 to 2.06_01. See also the new pragma \f(CW\*(C`autodie\*(C'\fR.
+.ie n .IP """File::Basename""" 4
+.el .IP \f(CWFile::Basename\fR 4
+.IX Item "File::Basename"
+Upgraded from version 2.76 to 2.77.
+.ie n .IP """File::Compare""" 4
+.el .IP \f(CWFile::Compare\fR 4
+.IX Item "File::Compare"
+Upgraded from version 1.1005 to 1.1006.
+.ie n .IP """File::Copy""" 4
+.el .IP \f(CWFile::Copy\fR 4
+.IX Item "File::Copy"
+Upgraded from version 2.11 to 2.14.
+.ie n .IP """File::Fetch""" 4
+.el .IP \f(CWFile::Fetch\fR 4
+.IX Item "File::Fetch"
+Upgraded from version 0.14 to 0.20.
+.ie n .IP """File::Find""" 4
+.el .IP \f(CWFile::Find\fR 4
+.IX Item "File::Find"
+Upgraded from version 1.12 to 1.14.
+.ie n .IP """File::Path""" 4
+.el .IP \f(CWFile::Path\fR 4
+.IX Item "File::Path"
+Upgraded from version 2.04 to 2.07_03.
+.ie n .IP """File::Spec""" 4
+.el .IP \f(CWFile::Spec\fR 4
+.IX Item "File::Spec"
+Upgraded from version 3.2501 to 3.30.
+.ie n .IP """File::stat""" 4
+.el .IP \f(CWFile::stat\fR 4
+.IX Item "File::stat"
+Upgraded from version 1.00 to 1.01.
+.ie n .IP """File::Temp""" 4
+.el .IP \f(CWFile::Temp\fR 4
+.IX Item "File::Temp"
+Upgraded from version 0.18 to 0.22.
+.ie n .IP """FileCache""" 4
+.el .IP \f(CWFileCache\fR 4
+.IX Item "FileCache"
+Upgraded from version 1.07 to 1.08.
+.ie n .IP """FileHandle""" 4
+.el .IP \f(CWFileHandle\fR 4
+.IX Item "FileHandle"
+Upgraded from version 2.01 to 2.02.
+.ie n .IP """Filter::Simple""" 4
+.el .IP \f(CWFilter::Simple\fR 4
+.IX Item "Filter::Simple"
+Upgraded from version 0.82 to 0.84.
+.ie n .IP """Filter::Util::Call""" 4
+.el .IP \f(CWFilter::Util::Call\fR 4
+.IX Item "Filter::Util::Call"
+Upgraded from version 1.07 to 1.08.
+.ie n .IP """FindBin""" 4
+.el .IP \f(CWFindBin\fR 4
+.IX Item "FindBin"
+Upgraded from version 1.49 to 1.50.
+.ie n .IP """GDBM_File""" 4
+.el .IP \f(CWGDBM_File\fR 4
+.IX Item "GDBM_File"
+Upgraded from version 1.08 to 1.09.
+.ie n .IP """Getopt::Long""" 4
+.el .IP \f(CWGetopt::Long\fR 4
+.IX Item "Getopt::Long"
+Upgraded from version 2.37 to 2.38.
+.ie n .IP """Hash::Util::FieldHash""" 4
+.el .IP \f(CWHash::Util::FieldHash\fR 4
+.IX Item "Hash::Util::FieldHash"
+Upgraded from version 1.03 to 1.04. This fixes a memory leak.
+.ie n .IP """I18N::Collate""" 4
+.el .IP \f(CWI18N::Collate\fR 4
+.IX Item "I18N::Collate"
+Upgraded from version 1.00 to 1.01.
+.ie n .IP """IO""" 4
+.el .IP \f(CWIO\fR 4
+.IX Item "IO"
+Upgraded from version 1.23_01 to 1.25.
+.Sp
+This makes non-blocking mode work on Windows in \f(CW\*(C`IO::Socket::INET\*(C'\fR
+[CPAN #43573].
+.ie n .IP """IO::Compress::*""" 4
+.el .IP \f(CWIO::Compress::*\fR 4
+.IX Item "IO::Compress::*"
+Upgraded from version 2.008 to 2.020.
+.ie n .IP """IO::Dir""" 4
+.el .IP \f(CWIO::Dir\fR 4
+.IX Item "IO::Dir"
+Upgraded from version 1.06 to 1.07.
+.ie n .IP """IO::Handle""" 4
+.el .IP \f(CWIO::Handle\fR 4
+.IX Item "IO::Handle"
+Upgraded from version 1.27 to 1.28.
+.ie n .IP """IO::Socket""" 4
+.el .IP \f(CWIO::Socket\fR 4
+.IX Item "IO::Socket"
+Upgraded from version 1.30_01 to 1.31.
+.ie n .IP """IO::Zlib""" 4
+.el .IP \f(CWIO::Zlib\fR 4
+.IX Item "IO::Zlib"
+Upgraded from version 1.07 to 1.09.
+.ie n .IP """IPC::Cmd""" 4
+.el .IP \f(CWIPC::Cmd\fR 4
+.IX Item "IPC::Cmd"
+Upgraded from version 0.40_1 to 0.46.
+.ie n .IP """IPC::Open3""" 4
+.el .IP \f(CWIPC::Open3\fR 4
+.IX Item "IPC::Open3"
+Upgraded from version 1.02 to 1.04.
+.ie n .IP """IPC::SysV""" 4
+.el .IP \f(CWIPC::SysV\fR 4
+.IX Item "IPC::SysV"
+Upgraded from version 1.05 to 2.01.
+.ie n .IP """lib""" 4
+.el .IP \f(CWlib\fR 4
+.IX Item "lib"
+Upgraded from version 0.5565 to 0.62.
+.ie n .IP """List::Util""" 4
+.el .IP \f(CWList::Util\fR 4
+.IX Item "List::Util"
+Upgraded from version 1.19 to 1.21.
+.ie n .IP """Locale::MakeText""" 4
+.el .IP \f(CWLocale::MakeText\fR 4
+.IX Item "Locale::MakeText"
+Upgraded from version 1.12 to 1.13.
+.ie n .IP """Log::Message""" 4
+.el .IP \f(CWLog::Message\fR 4
+.IX Item "Log::Message"
+Upgraded from version 0.01 to 0.02.
+.ie n .IP """Math::BigFloat""" 4
+.el .IP \f(CWMath::BigFloat\fR 4
+.IX Item "Math::BigFloat"
+Upgraded from version 1.59 to 1.60.
+.ie n .IP """Math::BigInt""" 4
+.el .IP \f(CWMath::BigInt\fR 4
+.IX Item "Math::BigInt"
+Upgraded from version 1.88 to 1.89.
+.ie n .IP """Math::BigInt::FastCalc""" 4
+.el .IP \f(CWMath::BigInt::FastCalc\fR 4
+.IX Item "Math::BigInt::FastCalc"
+Upgraded from version 0.16 to 0.19.
+.ie n .IP """Math::BigRat""" 4
+.el .IP \f(CWMath::BigRat\fR 4
+.IX Item "Math::BigRat"
+Upgraded from version 0.21 to 0.22.
+.ie n .IP """Math::Complex""" 4
+.el .IP \f(CWMath::Complex\fR 4
+.IX Item "Math::Complex"
+Upgraded from version 1.37 to 1.56.
+.ie n .IP """Math::Trig""" 4
+.el .IP \f(CWMath::Trig\fR 4
+.IX Item "Math::Trig"
+Upgraded from version 1.04 to 1.20.
+.ie n .IP """Memoize""" 4
+.el .IP \f(CWMemoize\fR 4
+.IX Item "Memoize"
+Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation
+change).
+.ie n .IP """Module::Build""" 4
+.el .IP \f(CWModule::Build\fR 4
+.IX Item "Module::Build"
+Upgraded from version 0.2808_01 to 0.34_02.
+.ie n .IP """Module::CoreList""" 4
+.el .IP \f(CWModule::CoreList\fR 4
+.IX Item "Module::CoreList"
+Upgraded from version 2.13 to 2.18. This release no longer contains the
+\&\f(CW%Module::CoreList::patchlevel\fR hash.
+.ie n .IP """Module::Load""" 4
+.el .IP \f(CWModule::Load\fR 4
+.IX Item "Module::Load"
+Upgraded from version 0.12 to 0.16.
+.ie n .IP """Module::Load::Conditional""" 4
+.el .IP \f(CWModule::Load::Conditional\fR 4
+.IX Item "Module::Load::Conditional"
+Upgraded from version 0.22 to 0.30.
+.ie n .IP """Module::Loaded""" 4
+.el .IP \f(CWModule::Loaded\fR 4
+.IX Item "Module::Loaded"
+Upgraded from version 0.01 to 0.02.
+.ie n .IP """Module::Pluggable""" 4
+.el .IP \f(CWModule::Pluggable\fR 4
+.IX Item "Module::Pluggable"
+Upgraded from version 3.6 to 3.9.
+.ie n .IP """NDBM_File""" 4
+.el .IP \f(CWNDBM_File\fR 4
+.IX Item "NDBM_File"
+Upgraded from version 1.07 to 1.08.
+.ie n .IP """Net::Ping""" 4
+.el .IP \f(CWNet::Ping\fR 4
+.IX Item "Net::Ping"
+Upgraded from version 2.33 to 2.36.
+.ie n .IP """NEXT""" 4
+.el .IP \f(CWNEXT\fR 4
+.IX Item "NEXT"
+Upgraded from version 0.60_01 to 0.64.
+.ie n .IP """Object::Accessor""" 4
+.el .IP \f(CWObject::Accessor\fR 4
+.IX Item "Object::Accessor"
+Upgraded from version 0.32 to 0.34.
+.ie n .IP """OS2::REXX""" 4
+.el .IP \f(CWOS2::REXX\fR 4
+.IX Item "OS2::REXX"
+Upgraded from version 1.03 to 1.04.
+.ie n .IP """Package::Constants""" 4
+.el .IP \f(CWPackage::Constants\fR 4
+.IX Item "Package::Constants"
+Upgraded from version 0.01 to 0.02.
+.ie n .IP """PerlIO""" 4
+.el .IP \f(CWPerlIO\fR 4
+.IX Item "PerlIO"
+Upgraded from version 1.04 to 1.06.
+.ie n .IP """PerlIO::via""" 4
+.el .IP \f(CWPerlIO::via\fR 4
+.IX Item "PerlIO::via"
+Upgraded from version 0.04 to 0.07.
+.ie n .IP """Pod::Man""" 4
+.el .IP \f(CWPod::Man\fR 4
+.IX Item "Pod::Man"
+Upgraded from version 2.16 to 2.22.
+.ie n .IP """Pod::Parser""" 4
+.el .IP \f(CWPod::Parser\fR 4
+.IX Item "Pod::Parser"
+Upgraded from version 1.35 to 1.37.
+.ie n .IP """Pod::Simple""" 4
+.el .IP \f(CWPod::Simple\fR 4
+.IX Item "Pod::Simple"
+Upgraded from version 3.05 to 3.07.
+.ie n .IP """Pod::Text""" 4
+.el .IP \f(CWPod::Text\fR 4
+.IX Item "Pod::Text"
+Upgraded from version 3.08 to 3.13.
+.ie n .IP """POSIX""" 4
+.el .IP \f(CWPOSIX\fR 4
+.IX Item "POSIX"
+Upgraded from version 1.13 to 1.17.
+.ie n .IP """Safe""" 4
+.el .IP \f(CWSafe\fR 4
+.IX Item "Safe"
+Upgraded from 2.12 to 2.18.
+.ie n .IP """Scalar::Util""" 4
+.el .IP \f(CWScalar::Util\fR 4
+.IX Item "Scalar::Util"
+Upgraded from version 1.19 to 1.21.
+.ie n .IP """SelectSaver""" 4
+.el .IP \f(CWSelectSaver\fR 4
+.IX Item "SelectSaver"
+Upgraded from 1.01 to 1.02.
+.ie n .IP """SelfLoader""" 4
+.el .IP \f(CWSelfLoader\fR 4
+.IX Item "SelfLoader"
+Upgraded from 1.11 to 1.17.
+.ie n .IP """Socket""" 4
+.el .IP \f(CWSocket\fR 4
+.IX Item "Socket"
+Upgraded from 1.80 to 1.82.
+.ie n .IP """Storable""" 4
+.el .IP \f(CWStorable\fR 4
+.IX Item "Storable"
+Upgraded from 2.18 to 2.20.
+.ie n .IP """Switch""" 4
+.el .IP \f(CWSwitch\fR 4
+.IX Item "Switch"
+Upgraded from version 2.13 to 2.14. Please see "Deprecations".
+.ie n .IP """Symbol""" 4
+.el .IP \f(CWSymbol\fR 4
+.IX Item "Symbol"
+Upgraded from version 1.06 to 1.07.
+.ie n .IP """Sys::Syslog""" 4
+.el .IP \f(CWSys::Syslog\fR 4
+.IX Item "Sys::Syslog"
+Upgraded from version 0.22 to 0.27.
+.ie n .IP """Term::ANSIColor""" 4
+.el .IP \f(CWTerm::ANSIColor\fR 4
+.IX Item "Term::ANSIColor"
+Upgraded from version 1.12 to 2.00.
+.ie n .IP """Term::ReadLine""" 4
+.el .IP \f(CWTerm::ReadLine\fR 4
+.IX Item "Term::ReadLine"
+Upgraded from version 1.03 to 1.04.
+.ie n .IP """Term::UI""" 4
+.el .IP \f(CWTerm::UI\fR 4
+.IX Item "Term::UI"
+Upgraded from version 0.18 to 0.20.
+.ie n .IP """Test::Harness""" 4
+.el .IP \f(CWTest::Harness\fR 4
+.IX Item "Test::Harness"
+Upgraded from version 2.64 to 3.17.
+.Sp
+Note that one side-effect of the 2.x to 3.x upgrade is that the
+experimental \f(CW\*(C`Test::Harness::Straps\*(C'\fR module (and its supporting
+\&\f(CW\*(C`Assert\*(C'\fR, \f(CW\*(C`Iterator\*(C'\fR, \f(CW\*(C`Point\*(C'\fR and \f(CW\*(C`Results\*(C'\fR modules) have been
+removed. If you still need this, then they are available in the
+(unmaintained) \f(CW\*(C`Test\-Harness\-Straps\*(C'\fR distribution on CPAN.
+.ie n .IP """Test::Simple""" 4
+.el .IP \f(CWTest::Simple\fR 4
+.IX Item "Test::Simple"
+Upgraded from version 0.72 to 0.92.
+.ie n .IP """Text::ParseWords""" 4
+.el .IP \f(CWText::ParseWords\fR 4
+.IX Item "Text::ParseWords"
+Upgraded from version 3.26 to 3.27.
+.ie n .IP """Text::Tabs""" 4
+.el .IP \f(CWText::Tabs\fR 4
+.IX Item "Text::Tabs"
+Upgraded from version 2007.1117 to 2009.0305.
+.ie n .IP """Text::Wrap""" 4
+.el .IP \f(CWText::Wrap\fR 4
+.IX Item "Text::Wrap"
+Upgraded from version 2006.1117 to 2009.0305.
+.ie n .IP """Thread::Queue""" 4
+.el .IP \f(CWThread::Queue\fR 4
+.IX Item "Thread::Queue"
+Upgraded from version 2.00 to 2.11.
+.ie n .IP """Thread::Semaphore""" 4
+.el .IP \f(CWThread::Semaphore\fR 4
+.IX Item "Thread::Semaphore"
+Upgraded from version 2.01 to 2.09.
+.ie n .IP """threads""" 4
+.el .IP \f(CWthreads\fR 4
+.IX Item "threads"
+Upgraded from version 1.67 to 1.72.
+.ie n .IP """threads::shared""" 4
+.el .IP \f(CWthreads::shared\fR 4
+.IX Item "threads::shared"
+Upgraded from version 1.14 to 1.29.
+.ie n .IP """Tie::RefHash""" 4
+.el .IP \f(CWTie::RefHash\fR 4
+.IX Item "Tie::RefHash"
+Upgraded from version 1.37 to 1.38.
+.ie n .IP """Tie::StdHandle""" 4
+.el .IP \f(CWTie::StdHandle\fR 4
+.IX Item "Tie::StdHandle"
+This has documentation changes, and has been assigned a version for the
+first time: version 4.2.
+.ie n .IP """Time::HiRes""" 4
+.el .IP \f(CWTime::HiRes\fR 4
+.IX Item "Time::HiRes"
+Upgraded from version 1.9711 to 1.9719.
+.ie n .IP """Time::Local""" 4
+.el .IP \f(CWTime::Local\fR 4
+.IX Item "Time::Local"
+Upgraded from version 1.18 to 1.1901.
+.ie n .IP """Time::Piece""" 4
+.el .IP \f(CWTime::Piece\fR 4
+.IX Item "Time::Piece"
+Upgraded from version 1.12 to 1.15.
+.ie n .IP """Unicode::Normalize""" 4
+.el .IP \f(CWUnicode::Normalize\fR 4
+.IX Item "Unicode::Normalize"
+Upgraded from version 1.02 to 1.03.
+.ie n .IP """Unicode::UCD""" 4
+.el .IP \f(CWUnicode::UCD\fR 4
+.IX Item "Unicode::UCD"
+Upgraded from version 0.25 to 0.27.
+.Sp
+\&\f(CWcharinfo()\fR now works on Unified CJK code points added to later versions
+of Unicode.
+.Sp
+\&\f(CWcasefold()\fR has new fields returned to provide both a simpler interface
+and previously missing information. The old fields are retained for
+backwards compatibility. Information about Turkic-specific code points is
+now returned.
+.Sp
+The documentation has been corrected and expanded.
+.ie n .IP """UNIVERSAL""" 4
+.el .IP \f(CWUNIVERSAL\fR 4
+.IX Item "UNIVERSAL"
+Upgraded from version 1.04 to 1.05.
+.ie n .IP """Win32""" 4
+.el .IP \f(CWWin32\fR 4
+.IX Item "Win32"
+Upgraded from version 0.34 to 0.39.
+.ie n .IP """Win32API::File""" 4
+.el .IP \f(CWWin32API::File\fR 4
+.IX Item "Win32API::File"
+Upgraded from version 0.1001_01 to 0.1101.
+.ie n .IP """XSLoader""" 4
+.el .IP \f(CWXSLoader\fR 4
+.IX Item "XSLoader"
+Upgraded from version 0.08 to 0.10.
+.SH "Utility Changes"
+.IX Header "Utility Changes"
+.IP \fIh2ph\fR 4
+.IX Item "h2ph"
+Now looks in \f(CW\*(C`include\-fixed\*(C'\fR too, which is a recent addition to gcc's
+search path.
+.IP \fIh2xs\fR 4
+.IX Item "h2xs"
+No longer incorrectly treats enum values like macros (Daniel Burr).
+.Sp
+Now handles C++ style constants (\f(CW\*(C`//\*(C'\fR) properly in enums. (A patch from
+Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
+.IP \fIperl5db.pl\fR 4
+.IX Item "perl5db.pl"
+\&\f(CW\*(C`LVALUE\*(C'\fR subroutines now work under the debugger.
+.Sp
+The debugger now correctly handles proxy constant subroutines, and
+subroutine stubs.
+.IP \fIperlthanks\fR 4
+.IX Item "perlthanks"
+Perl 5.10.1 adds a new utility \fIperlthanks\fR, which is a variant of
+\&\fIperlbug\fR, but for sending non-bug-reports to the authors and maintainers
+of Perl. Getting nothing but bug reports can become a bit demoralising:
+we'll see if this changes things.
+.SH "New Documentation"
+.IX Header "New Documentation"
+.IP perlhaiku 4
+.IX Item "perlhaiku"
+This contains instructions on how to build perl for the Haiku platform.
+.IP perlmroapi 4
+.IX Item "perlmroapi"
+This describes the new interface for pluggable Method Resolution Orders.
+.IP perlperf 4
+.IX Item "perlperf"
+This document, by Richard Foley, provides an introduction to the use of
+performance and optimization techniques which can be used with particular
+reference to perl programs.
+.IP perlrepository 4
+.IX Item "perlrepository"
+This describes how to access the perl source using the \fIgit\fR version
+control system.
+.IP perlthanks 4
+.IX Item "perlthanks"
+This describes the new \fIperlthanks\fR utility.
+.SH "Changes to Existing Documentation"
+.IX Header "Changes to Existing Documentation"
+The various large \f(CW\*(C`Changes*\*(C'\fR files (which listed every change made to perl
+over the last 18 years) have been removed, and replaced by a small file,
+also called \f(CW\*(C`Changes\*(C'\fR, which just explains how that same information may
+be extracted from the git version control system.
+.PP
+The file \fIPorting/patching.pod\fR has been deleted, as it mainly described
+interacting with the old Perforce-based repository, which is now obsolete.
+Information still relevant has been moved to perlrepository.
+.PP
+perlapi, perlintern, perlmodlib and perltoc are now all
+generated at build time, rather than being shipped as part of the release.
+.SH "Performance Enhancements"
+.IX Header "Performance Enhancements"
+.IP \(bu 4
+A new internal cache means that \f(CWisa()\fR will often be faster.
+.IP \(bu 4
+Under \f(CW\*(C`use locale\*(C'\fR, the locale-relevant information is now cached on
+read-only values, such as the list returned by \f(CW\*(C`keys %hash\*(C'\fR. This makes
+operations such as \f(CW\*(C`sort keys %hash\*(C'\fR in the scope of \f(CW\*(C`use locale\*(C'\fR much
+faster.
+.IP \(bu 4
+Empty \f(CW\*(C`DESTROY\*(C'\fR methods are no longer called.
+.SH "Installation and Configuration Improvements"
+.IX Header "Installation and Configuration Improvements"
+.SS "\fIext/\fP reorganisation"
+.IX Subsection "ext/ reorganisation"
+The layout of directories in \fIext\fR has been revised. Specifically, all
+extensions are now flat, and at the top level, with \f(CW\*(C`/\*(C'\fR in pathnames
+replaced by \f(CW\*(C`\-\*(C'\fR, so that \fIext/Data/Dumper/\fR is now \fIext/Data\-Dumper/\fR,
+etc. The names of the extensions as specified to \fIConfigure\fR, and as
+reported by \f(CW%Config::Config\fR under the keys \f(CW\*(C`dynamic_ext\*(C'\fR,
+\&\f(CW\*(C`known_extensions\*(C'\fR, \f(CW\*(C`nonxs_ext\*(C'\fR and \f(CW\*(C`static_ext\*(C'\fR have not changed, and
+still use \f(CW\*(C`/\*(C'\fR. Hence this change will not have any affect once perl is
+installed. However, \f(CW\*(C`Attribute::Handlers\*(C'\fR, \f(CW\*(C`Safe\*(C'\fR and \f(CW\*(C`mro\*(C'\fR have now
+become extensions in their own right, so if you run \fIConfigure\fR with
+options to specify an exact list of extensions to build, you will need to
+change it to account for this.
+.PP
+For 5.10.2, it is planned that many dual-life modules will have been moved
+from \fIlib\fR to \fIext\fR; again this will have no effect on an installed
+perl, but will matter if you invoke \fIConfigure\fR with a pre-canned list of
+extensions to build.
+.SS "Configuration improvements"
+.IX Subsection "Configuration improvements"
+If \f(CW\*(C`vendorlib\*(C'\fR and \f(CW\*(C`vendorarch\*(C'\fR are the same, then they are only added to
+\&\f(CW@INC\fR once.
+.PP
+\&\f(CW$Config{usedevel}\fR and the C\-level \f(CW\*(C`PERL_USE_DEVEL\*(C'\fR are now defined if
+perl is built with \f(CW\*(C`\-Dusedevel\*(C'\fR.
+.PP
+\&\fIConfigure\fR will enable use of \f(CW\*(C`\-fstack\-protector\*(C'\fR, to provide protection
+against stack-smashing attacks, if the compiler supports it.
+.PP
+\&\fIConfigure\fR will now determine the correct prototypes for re-entrant
+functions, and for \f(CW\*(C`gconvert\*(C'\fR, if you are using a C++ compiler rather
+than a C compiler.
+.PP
+On Unix, if you build from a tree containing a git repository, the
+configuration process will note the commit hash you have checked out, for
+display in the output of \f(CW\*(C`perl \-v\*(C'\fR and \f(CW\*(C`perl \-V\*(C'\fR. Unpushed local commits
+are automatically added to the list of local patches displayed by
+\&\f(CW\*(C`perl \-V\*(C'\fR.
+.SS "Compilation improvements"
+.IX Subsection "Compilation improvements"
+As part of the flattening of \fIext\fR, all extensions on all platforms are
+built by \fImake_ext.pl\fR. This replaces the Unix-specific
+\&\fIext/util/make_ext\fR, VMS-specific \fImake_ext.com\fR and Win32\-specific
+\&\fIwin32/buildext.pl\fR.
+.SS "Platform Specific Changes"
+.IX Subsection "Platform Specific Changes"
+.IP AIX 4
+.IX Item "AIX"
+Removed \fIlibbsd\fR for AIX 5L and 6.1. Only \fBflock()\fR was used from \fIlibbsd\fR.
+.Sp
+Removed \fIlibgdbm\fR for AIX 5L and 6.1. The \fIlibgdbm\fR is delivered as an
+optional package with the AIX Toolbox. Unfortunately the 64 bit version
+is broken.
+.Sp
+Hints changes mean that AIX 4.2 should work again.
+.IP Cygwin 4
+.IX Item "Cygwin"
+On Cygwin we now strip the last number from the DLL. This has been the
+behaviour in the cygwin.com build for years. The hints files have been
+updated.
+.IP FreeBSD 4
+.IX Item "FreeBSD"
+The hints files now identify the correct threading libraries on FreeBSD 7
+and later.
+.IP Irix 4
+.IX Item "Irix"
+We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
+\&\f(CW\*(C`cc \-E \-\*(C'\fR unfortunately goes into K&R mode, but \f(CW\*(C`cc \-E file.c\*(C'\fR doesn't.
+.IP Haiku 4
+.IX Item "Haiku"
+Patches from the Haiku maintainers have been merged in. Perl should now
+build on Haiku.
+.IP "MirOS BSD" 4
+.IX Item "MirOS BSD"
+Perl should now build on MirOS BSD.
+.IP NetBSD 4
+.IX Item "NetBSD"
+Hints now supports versions 5.*.
+.IP "Stratus VOS" 4
+.IX Item "Stratus VOS"
+Various changes from Stratus have been merged in.
+.IP Symbian 4
+.IX Item "Symbian"
+There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
+.IP Win32 4
+.IX Item "Win32"
+Improved message window handling means that \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`kill\*(C'\fR messages
+will no longer be dropped under race conditions.
+.IP VMS 4
+.IX Item "VMS"
+Reads from the in-memory temporary files of \f(CW\*(C`PerlIO::scalar\*(C'\fR used to fail
+if \f(CW$/\fR was set to a numeric reference (to indicate record-style reads).
+This is now fixed.
+.Sp
+VMS now supports \f(CW\*(C`getgrgid\*(C'\fR.
+.Sp
+Many improvements and cleanups have been made to the VMS file name handling
+and conversion code.
+.Sp
+Enabling the \f(CW\*(C`PERL_VMS_POSIX_EXIT\*(C'\fR logical name now encodes a POSIX exit
+status in a VMS condition value for better interaction with GNV's bash
+shell and other utilities that depend on POSIX exit values. See
+"$?" in perlvms for details.
+.SH "Selected Bug Fixes"
+.IX Header "Selected Bug Fixes"
+.IP \(bu 4
+5.10.0 inadvertently disabled an optimisation, which caused a measurable
+performance drop in list assignment, such as is often used to assign
+function parameters from \f(CW@_\fR. The optimisation has been re-instated, and
+the performance regression fixed.
+.IP \(bu 4
+Fixed memory leak on \f(CW\*(C`while (1) { map 1, 1 }\*(C'\fR [RT #53038].
+.IP \(bu 4
+Some potential coredumps in PerlIO fixed [RT #57322,54828].
+.IP \(bu 4
+The debugger now works with lvalue subroutines.
+.IP \(bu 4
+The debugger's \f(CW\*(C`m\*(C'\fR command was broken on modules that defined constants
+[RT #61222].
+.IP \(bu 4
+\&\f(CWcrypt()\fR and string complement could return tainted values for untainted
+arguments [RT #59998].
+.IP \(bu 4
+The \f(CW\*(C`\-i.suffix\*(C'\fR command-line switch now recreates the file using
+restricted permissions, before changing its mode to match the original
+file. This eliminates a potential race condition [RT #60904].
+.IP \(bu 4
+On some Unix systems, the value in \f(CW$?\fR would not have the top bit set
+(\f(CW\*(C`$? & 128\*(C'\fR) even if the child core dumped.
+.IP \(bu 4
+Under some circumstances, $^R could incorrectly become undefined
+[RT #57042].
+.IP \(bu 4
+(XS) In various hash functions, passing a pre-computed hash to when the
+key is UTF\-8 might result in an incorrect lookup.
+.IP \(bu 4
+(XS) Including \fIXSUB.h\fR before \fIperl.h\fR gave a compile-time error
+[RT #57176].
+.IP \(bu 4
+\&\f(CW\*(C`$object\->isa(\*(AqFoo\*(Aq)\*(C'\fR would report false if the package \f(CW\*(C`Foo\*(C'\fR didn't
+exist, even if the object's \f(CW@ISA\fR contained \f(CW\*(C`Foo\*(C'\fR.
+.IP \(bu 4
+Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
+\&\f(CW@ISA\fR, have been found and fixed.
+.IP \(bu 4
+Bitwise operations on references could crash the interpreter, e.g.
+\&\f(CW\*(C`$x=\e$y; $x |= "foo"\*(C'\fR [RT #54956].
+.IP \(bu 4
+Patterns including alternation might be sensitive to the internal UTF\-8
+representation, e.g.
+.Sp
+.Vb 3
+\& my $byte = chr(192);
+\& my $utf8 = chr(192); utf8::upgrade($utf8);
+\& $utf8 =~ /$byte|X}/i; # failed in 5.10.0
+.Ve
+.IP \(bu 4
+Within UTF8\-encoded Perl source files (i.e. where \f(CW\*(C`use utf8\*(C'\fR is in
+effect), double-quoted literal strings could be corrupted where a \f(CW\*(C`\exNN\*(C'\fR,
+\&\f(CW\*(C`\e0NNN\*(C'\fR or \f(CW\*(C`\eN{}\*(C'\fR is followed by a literal character with ordinal value
+greater than 255 [RT #59908].
+.IP \(bu 4
+\&\f(CW\*(C`B::Deparse\*(C'\fR failed to correctly deparse various constructs:
+\&\f(CW\*(C`readpipe STRING\*(C'\fR [RT #62428], \f(CWCORE::require(STRING)\fR [RT #62488],
+\&\f(CW\*(C`sub foo(_)\*(C'\fR [RT #62484].
+.IP \(bu 4
+Using \f(CWsetpgrp()\fR with no arguments could corrupt the perl stack.
+.IP \(bu 4
+The block form of \f(CW\*(C`eval\*(C'\fR is now specifically trappable by \f(CW\*(C`Safe\*(C'\fR and
+\&\f(CW\*(C`ops\*(C'\fR. Previously it was erroneously treated like string \f(CW\*(C`eval\*(C'\fR.
+.IP \(bu 4
+In 5.10.0, the two characters \f(CW\*(C`[~\*(C'\fR were sometimes parsed as the smart
+match operator (\f(CW\*(C`~~\*(C'\fR) [RT #63854].
+.IP \(bu 4
+In 5.10.0, the \f(CW\*(C`*\*(C'\fR quantifier in patterns was sometimes treated as
+\&\f(CW\*(C`{0,32767}\*(C'\fR [RT #60034, #60464]. For example, this match would fail:
+.Sp
+.Vb 1
+\& ("ab" x 32768) =~ /^(ab)*$/
+.Ve
+.IP \(bu 4
+\&\f(CW\*(C`shmget\*(C'\fR was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
+.IP \(bu 4
+Using \f(CW\*(C`next\*(C'\fR or \f(CW\*(C`last\*(C'\fR to exit a \f(CW\*(C`given\*(C'\fR block no longer produces a
+spurious warning like the following:
+.Sp
+.Vb 1
+\& Exiting given via last at foo.pl line 123
+.Ve
+.IP \(bu 4
+On Windows, \f(CW\*(Aq.\efoo\*(Aq\fR and \f(CW\*(Aq..\efoo\*(Aq\fR were treated differently than
+\&\f(CW\*(Aq./foo\*(Aq\fR and \f(CW\*(Aq../foo\*(Aq\fR by \f(CW\*(C`do\*(C'\fR and \f(CW\*(C`require\*(C'\fR [RT #63492].
+.IP \(bu 4
+Assigning a format to a glob could corrupt the format; e.g.:
+.Sp
+.Vb 1
+\& *bar=*foo{FORMAT}; # foo format now bad
+.Ve
+.IP \(bu 4
+Attempting to coerce a typeglob to a string or number could cause an
+assertion failure. The correct error message is now generated,
+\&\f(CW\*(C`Can\*(Aqt coerce GLOB to \fR\f(CI$type\fR\f(CW\*(C'\fR.
+.IP \(bu 4
+Under \f(CW\*(C`use filetest \*(Aqaccess\*(Aq\*(C'\fR, \f(CW\*(C`\-x\*(C'\fR was using the wrong access mode. This
+has been fixed [RT #49003].
+.IP \(bu 4
+\&\f(CW\*(C`length\*(C'\fR on a tied scalar that returned a Unicode value would not be
+correct the first time. This has been fixed.
+.IP \(bu 4
+Using an array \f(CW\*(C`tie\*(C'\fR inside in array \f(CW\*(C`tie\*(C'\fR could SEGV. This has been
+fixed. [RT #51636]
+.IP \(bu 4
+A race condition inside \f(CWPerlIOStdio_close()\fR has been identified and
+fixed. This used to cause various threading issues, including SEGVs.
+.IP \(bu 4
+In \f(CW\*(C`unpack\*(C'\fR, the use of \f(CW\*(C`()\*(C'\fR groups in scalar context was internally
+placing a list on the interpreter's stack, which manifested in various
+ways, including SEGVs. This is now fixed [RT #50256].
+.IP \(bu 4
+Magic was called twice in \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`\e&$x\*(C'\fR, \f(CW\*(C`tie $x, $m\*(C'\fR and \f(CW\*(C`chop\*(C'\fR.
+These have all been fixed.
+.IP \(bu 4
+A 5.10.0 optimisation to clear the temporary stack within the implicit
+loop of \f(CW\*(C`s///ge\*(C'\fR has been reverted, as it turned out to be the cause of
+obscure bugs in seemingly unrelated parts of the interpreter [commit
+ef0d4e17921ee3de].
+.IP \(bu 4
+The line numbers for warnings inside \f(CW\*(C`elsif\*(C'\fR are now correct.
+.IP \(bu 4
+The \f(CW\*(C`..\*(C'\fR operator now works correctly with ranges whose ends are at or
+close to the values of the smallest and largest integers.
+.IP \(bu 4
+\&\f(CW\*(C`binmode STDIN, \*(Aq:raw\*(Aq\*(C'\fR could lead to segmentation faults on some platforms.
+This has been fixed [RT #54828].
+.IP \(bu 4
+An off-by-one error meant that \f(CW\*(C`index $str, ...\*(C'\fR was effectively being
+executed as \f(CW\*(C`index "$str\e0", ...\*(C'\fR. This has been fixed [RT #53746].
+.IP \(bu 4
+Various leaks associated with named captures in regexes have been fixed
+[RT #57024].
+.IP \(bu 4
+A weak reference to a hash would leak. This was affecting \f(CW\*(C`DBI\*(C'\fR
+[RT #56908].
+.IP \(bu 4
+Using (?|) in a regex could cause a segfault [RT #59734].
+.IP \(bu 4
+Use of a UTF\-8 \f(CW\*(C`tr//\*(C'\fR within a closure could cause a segfault [RT #61520].
+.IP \(bu 4
+Calling \f(CWsv_chop()\fR or otherwise upgrading an SV could result in an
+unaligned 64\-bit access on the SPARC architecture [RT #60574].
+.IP \(bu 4
+In the 5.10.0 release, \f(CW\*(C`inc_version_list\*(C'\fR would incorrectly list
+\&\f(CW\*(C`5.10.*\*(C'\fR after \f(CW\*(C`5.8.*\*(C'\fR; this affected the \f(CW@INC\fR search order
+[RT #67628].
+.IP \(bu 4
+In 5.10.0, \f(CW\*(C`pack "a*", $tainted_value\*(C'\fR returned a non-tainted value
+[RT #52552].
+.IP \(bu 4
+In 5.10.0, \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`sprintf\*(C'\fR could produce the fatal error
+\&\f(CW\*(C`panic: utf8_mg_pos_cache_update\*(C'\fR when printing UTF\-8 strings
+[RT #62666].
+.IP \(bu 4
+In the 5.10.0 release, a dynamically created \f(CW\*(C`AUTOLOAD\*(C'\fR method might be
+missed (method cache issue) [RT #60220,60232].
+.IP \(bu 4
+In the 5.10.0 release, a combination of \f(CW\*(C`use feature\*(C'\fR and \f(CW\*(C`//ee\*(C'\fR could
+cause a memory leak [RT #63110].
+.IP \(bu 4
+\&\f(CW\*(C`\-C\*(C'\fR on the shebang (\f(CW\*(C`#!\*(C'\fR) line is once more permitted if it is also
+specified on the command line. \f(CW\*(C`\-C\*(C'\fR on the shebang line used to be a
+silent no-op \fIif\fR it was not also on the command line, so perl 5.10.0
+disallowed it, which broke some scripts. Now perl checks whether it is
+also on the command line and only dies if it is not [RT #67880].
+.IP \(bu 4
+In 5.10.0, certain types of re-entrant regular expression could crash,
+or cause the following assertion failure [RT #60508]:
+.Sp
+.Vb 1
+\& Assertion rx\->sublen >= (s \- rx\->subbeg) + i failed
+.Ve
+.SH "New or Changed Diagnostics"
+.IX Header "New or Changed Diagnostics"
+.ie n .IP """panic: sv_chop %s""" 4
+.el .IP "\f(CWpanic: sv_chop %s\fR" 4
+.IX Item "panic: sv_chop %s"
+This new fatal error occurs when the C routine \f(CWPerl_sv_chop()\fR was
+passed a position that is not within the scalar's string buffer. This
+could be caused by buggy XS code, and at this point recovery is not
+possible.
+.ie n .IP """Can\*(Aqt locate package %s for the parents of %s""" 4
+.el .IP "\f(CWCan\*(Aqt locate package %s for the parents of %s\fR" 4
+.IX Item "Cant locate package %s for the parents of %s"
+This warning has been removed. In general, it only got produced in
+conjunction with other warnings, and removing it allowed an ISA lookup
+optimisation to be added.
+.ie n .IP """v\-string in use/require is non\-portable""" 4
+.el .IP "\f(CWv\-string in use/require is non\-portable\fR" 4
+.IX Item "v-string in use/require is non-portable"
+This warning has been removed.
+.ie n .IP """Deep recursion on subroutine ""%s""""" 4
+.el .IP "\f(CWDeep recursion on subroutine ""%s""\fR" 4
+.IX Item "Deep recursion on subroutine ""%s"""
+It is now possible to change the depth threshold for this warning from the
+default of 100, by recompiling the \fIperl\fR binary, setting the C
+pre-processor macro \f(CW\*(C`PERL_SUB_DEPTH_WARN\*(C'\fR to the desired value.
+.SH "Changed Internals"
+.IX Header "Changed Internals"
+.IP \(bu 4
+The J.R.R. Tolkien quotes at the head of C source file have been checked and
+proper citations added, thanks to a patch from Tom Christiansen.
+.IP \(bu 4
+\&\f(CWvcroak()\fR now accepts a null first argument. In addition, a full audit
+was made of the "not NULL" compiler annotations, and those for several
+other internal functions were corrected.
+.IP \(bu 4
+New macros \f(CW\*(C`dSAVEDERRNO\*(C'\fR, \f(CW\*(C`dSAVE_ERRNO\*(C'\fR, \f(CW\*(C`SAVE_ERRNO\*(C'\fR, \f(CW\*(C`RESTORE_ERRNO\*(C'\fR
+have been added to formalise the temporary saving of the \f(CW\*(C`errno\*(C'\fR
+variable.
+.IP \(bu 4
+The function \f(CW\*(C`Perl_sv_insert_flags\*(C'\fR has been added to augment
+\&\f(CW\*(C`Perl_sv_insert\*(C'\fR.
+.IP \(bu 4
+The function \f(CWPerl_newSV_type(type)\fR has been added, equivalent to
+\&\f(CWPerl_newSV()\fR followed by \f(CWPerl_sv_upgrade(type)\fR.
+.IP \(bu 4
+The function \f(CWPerl_newSVpvn_flags()\fR has been added, equivalent to
+\&\f(CWPerl_newSVpvn()\fR and then performing the action relevant to the flag.
+.Sp
+Two flag bits are currently supported.
+.RS 4
+.ie n .IP """SVf_UTF8""" 4
+.el .IP \f(CWSVf_UTF8\fR 4
+.IX Item "SVf_UTF8"
+This will call \f(CWSvUTF8_on()\fR for you. (Note that this does not convert an
+sequence of ISO 8859\-1 characters to UTF\-8). A wrapper, \f(CWnewSVpvn_utf8()\fR
+is available for this.
+.ie n .IP """SVs_TEMP""" 4
+.el .IP \f(CWSVs_TEMP\fR 4
+.IX Item "SVs_TEMP"
+Call \f(CWsv_2mortal()\fR on the new SV.
+.RE
+.RS 4
+.Sp
+There is also a wrapper that takes constant strings, \f(CWnewSVpvs_flags()\fR.
+.RE
+.IP \(bu 4
+The function \f(CW\*(C`Perl_croak_xs_usage\*(C'\fR has been added as a wrapper to
+\&\f(CW\*(C`Perl_croak\*(C'\fR.
+.IP \(bu 4
+The functions \f(CW\*(C`PerlIO_find_layer\*(C'\fR and \f(CW\*(C`PerlIO_list_alloc\*(C'\fR are now
+exported.
+.IP \(bu 4
+\&\f(CW\*(C`PL_na\*(C'\fR has been exterminated from the core code, replaced by local STRLEN
+temporaries, or \f(CW*_nolen()\fR calls. Either approach is faster than \f(CW\*(C`PL_na\*(C'\fR,
+which is a pointer deference into the interpreter structure under ithreads,
+and a global variable otherwise.
+.IP \(bu 4
+\&\f(CWPerl_mg_free()\fR used to leave freed memory accessible via \fBSvMAGIC()\fR on
+the scalar. It now updates the linked list to remove each piece of magic
+as it is freed.
+.IP \(bu 4
+Under ithreads, the regex in \f(CW\*(C`PL_reg_curpm\*(C'\fR is now reference counted. This
+eliminates a lot of hackish workarounds to cope with it not being reference
+counted.
+.IP \(bu 4
+\&\f(CWPerl_mg_magical()\fR would sometimes incorrectly turn on \f(CWSvRMAGICAL()\fR.
+This has been fixed.
+.IP \(bu 4
+The \fIpublic\fR IV and NV flags are now not set if the string value has
+trailing "garbage". This behaviour is consistent with not setting the
+public IV or NV flags if the value is out of range for the type.
+.IP \(bu 4
+SV allocation tracing has been added to the diagnostics enabled by \f(CW\*(C`\-Dm\*(C'\fR.
+The tracing can alternatively output via the \f(CW\*(C`PERL_MEM_LOG\*(C'\fR mechanism, if
+that was enabled when the \fIperl\fR binary was compiled.
+.IP \(bu 4
+Uses of \f(CW\*(C`Nullav\*(C'\fR, \f(CW\*(C`Nullcv\*(C'\fR, \f(CW\*(C`Nullhv\*(C'\fR, \f(CW\*(C`Nullop\*(C'\fR, \f(CW\*(C`Nullsv\*(C'\fR etc have been
+replaced by \f(CW\*(C`NULL\*(C'\fR in the core code, and non-dual-life modules, as \f(CW\*(C`NULL\*(C'\fR
+is clearer to those unfamiliar with the core code.
+.IP \(bu 4
+A macro \f(CWMUTABLE_PTR(p)\fR has been added, which on (non-pedantic) gcc will
+not cast away \f(CW\*(C`const\*(C'\fR, returning a \f(CW\*(C`void *\*(C'\fR. Macros \f(CWMUTABLE_SV(av)\fR,
+\&\f(CWMUTABLE_SV(cv)\fR etc build on this, casting to \f(CW\*(C`AV *\*(C'\fR etc without
+casting away \f(CW\*(C`const\*(C'\fR. This allows proper compile-time auditing of
+\&\f(CW\*(C`const\*(C'\fR correctness in the core, and helped picked up some errors (now
+fixed).
+.IP \(bu 4
+Macros \f(CWmPUSHs()\fR and \f(CWmXPUSHs()\fR have been added, for pushing SVs on the
+stack and mortalizing them.
+.IP \(bu 4
+Use of the private structure \f(CW\*(C`mro_meta\*(C'\fR has changed slightly. Nothing
+outside the core should be accessing this directly anyway.
+.IP \(bu 4
+A new tool, \f(CW\*(C`Porting/expand\-macro.pl\*(C'\fR has been added, that allows you
+to view how a C preprocessor macro would be expanded when compiled.
+This is handy when trying to decode the macro hell that is the perl
+guts.
+.SH "New Tests"
+.IX Header "New Tests"
+Many modules updated from CPAN incorporate new tests.
+.PP
+Several tests that have the potential to hang forever if they fail now
+incorporate a "watchdog" functionality that will kill them after a timeout,
+which helps ensure that \f(CW\*(C`make test\*(C'\fR and \f(CW\*(C`make test_harness\*(C'\fR run to
+completion automatically. (Jerry Hedden).
+.PP
+Some core-specific tests have been added:
+.IP t/comp/retainedlines.t 4
+.IX Item "t/comp/retainedlines.t"
+Check that the debugger can retain source lines from \f(CW\*(C`eval\*(C'\fR.
+.IP t/io/perlio_fail.t 4
+.IX Item "t/io/perlio_fail.t"
+Check that bad layers fail.
+.IP t/io/perlio_leaks.t 4
+.IX Item "t/io/perlio_leaks.t"
+Check that PerlIO layers are not leaking.
+.IP t/io/perlio_open.t 4
+.IX Item "t/io/perlio_open.t"
+Check that certain special forms of open work.
+.IP t/io/perlio.t 4
+.IX Item "t/io/perlio.t"
+General PerlIO tests.
+.IP t/io/pvbm.t 4
+.IX Item "t/io/pvbm.t"
+Check that there is no unexpected interaction between the internal types
+\&\f(CW\*(C`PVBM\*(C'\fR and \f(CW\*(C`PVGV\*(C'\fR.
+.IP t/mro/package_aliases.t 4
+.IX Item "t/mro/package_aliases.t"
+Check that mro works properly in the presence of aliased packages.
+.IP t/op/dbm.t 4
+.IX Item "t/op/dbm.t"
+Tests for \f(CW\*(C`dbmopen\*(C'\fR and \f(CW\*(C`dbmclose\*(C'\fR.
+.IP t/op/index_thr.t 4
+.IX Item "t/op/index_thr.t"
+Tests for the interaction of \f(CW\*(C`index\*(C'\fR and threads.
+.IP t/op/pat_thr.t 4
+.IX Item "t/op/pat_thr.t"
+Tests for the interaction of esoteric patterns and threads.
+.IP t/op/qr_gc.t 4
+.IX Item "t/op/qr_gc.t"
+Test that \f(CW\*(C`qr\*(C'\fR doesn't leak.
+.IP t/op/reg_email_thr.t 4
+.IX Item "t/op/reg_email_thr.t"
+Tests for the interaction of regex recursion and threads.
+.IP t/op/regexp_qr_embed_thr.t 4
+.IX Item "t/op/regexp_qr_embed_thr.t"
+Tests for the interaction of patterns with embedded \f(CW\*(C`qr//\*(C'\fR and threads.
+.IP t/op/regexp_unicode_prop.t 4
+.IX Item "t/op/regexp_unicode_prop.t"
+Tests for Unicode properties in regular expressions.
+.IP t/op/regexp_unicode_prop_thr.t 4
+.IX Item "t/op/regexp_unicode_prop_thr.t"
+Tests for the interaction of Unicode properties and threads.
+.IP t/op/reg_nc_tie.t 4
+.IX Item "t/op/reg_nc_tie.t"
+Test the tied methods of \f(CW\*(C`Tie::Hash::NamedCapture\*(C'\fR.
+.IP t/op/reg_posixcc.t 4
+.IX Item "t/op/reg_posixcc.t"
+Check that POSIX character classes behave consistently.
+.IP t/op/re.t 4
+.IX Item "t/op/re.t"
+Check that exportable \f(CW\*(C`re\*(C'\fR functions in \fIuniversal.c\fR work.
+.IP t/op/setpgrpstack.t 4
+.IX Item "t/op/setpgrpstack.t"
+Check that \f(CW\*(C`setpgrp\*(C'\fR works.
+.IP t/op/substr_thr.t 4
+.IX Item "t/op/substr_thr.t"
+Tests for the interaction of \f(CW\*(C`substr\*(C'\fR and threads.
+.IP t/op/upgrade.t 4
+.IX Item "t/op/upgrade.t"
+Check that upgrading and assigning scalars works.
+.IP t/uni/lex_utf8.t 4
+.IX Item "t/uni/lex_utf8.t"
+Check that Unicode in the lexer works.
+.IP t/uni/tie.t 4
+.IX Item "t/uni/tie.t"
+Check that Unicode and \f(CW\*(C`tie\*(C'\fR work.
+.SH "Known Problems"
+.IX Header "Known Problems"
+This is a list of some significant unfixed bugs, which are regressions
+from either 5.10.0 or 5.8.x.
+.IP \(bu 4
+\&\f(CW\*(C`List::Util::first\*(C'\fR misbehaves in the presence of a lexical \f(CW$_\fR
+(typically introduced by \f(CW\*(C`my $_\*(C'\fR or implicitly by \f(CW\*(C`given\*(C'\fR). The variable
+which gets set for each iteration is the package variable \f(CW$_\fR, not the
+lexical \f(CW$_\fR [RT #67694].
+.Sp
+A similar issue may occur in other modules that provide functions which
+take a block as their first argument, like
+.Sp
+.Vb 1
+\& foo { ... $_ ...} list
+.Ve
+.IP \(bu 4
+The \f(CW\*(C`charnames\*(C'\fR pragma may generate a run-time error when a regex is
+interpolated [RT #56444]:
+.Sp
+.Vb 4
+\& use charnames \*(Aq:full\*(Aq;
+\& my $r1 = qr/\eN{THAI CHARACTER SARA I}/;
+\& "foo" =~ $r1; # okay
+\& "foo" =~ /$r1+/; # runtime error
+.Ve
+.Sp
+A workaround is to generate the character outside of the regex:
+.Sp
+.Vb 2
+\& my $a = "\eN{THAI CHARACTER SARA I}";
+\& my $r1 = qr/$a/;
+.Ve
+.IP \(bu 4
+Some regexes may run much more slowly when run in a child thread compared
+with the thread the pattern was compiled into [RT #55600].
+.SH Deprecations
+.IX Header "Deprecations"
+The following items are now deprecated.
+.IP \(bu 4
+\&\f(CW\*(C`Switch\*(C'\fR is buggy and should be avoided. From perl 5.11.0 onwards, it is
+intended that any use of the core version of this module will emit a
+warning, and that the module will eventually be removed from the core
+(probably in perl 5.14.0). See "Switch statements" in perlsyn for its
+replacement.
+.IP \(bu 4
+\&\f(CW\*(C`suidperl\*(C'\fR will be removed in 5.12.0. This provides a mechanism to
+emulate setuid permission bits on systems that don't support it properly.
+.SH Acknowledgements
+.IX Header "Acknowledgements"
+Some of the work in this release was funded by a TPF grant.
+.PP
+Nicholas Clark officially retired from maintenance pumpking duty at the
+end of 2008; however in reality he has put much effort in since then to
+help get 5.10.1 into a fit state to be released, including writing a
+considerable chunk of this perldelta.
+.PP
+Steffen Mueller and David Golden in particular helped getting CPAN modules
+polished and synchronised with their in-core equivalents.
+.PP
+Craig Berry was tireless in getting maint to run under VMS, no matter how
+many times we broke it for him.
+.PP
+The other core committers contributed most of the changes, and applied most
+of the patches sent in by the hundreds of contributors listed in \fIAUTHORS\fR.
+.PP
+(Sorry to all the people I haven't mentioned by name).
+.PP
+Finally, thanks to Larry Wall, without whom none of this would be
+necessary.
+.SH "Reporting Bugs"
+.IX Header "Reporting Bugs"
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+.PP
+If you believe you have an unreported bug, please run the \fBperlbug\fR
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+.PP
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send
+it to perl5\-security\-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes
+all the core committers, who will be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+The \fIChanges\fR file for an explanation of how to view exhaustive details
+on what changed.
+.PP
+The \fIINSTALL\fR file for how to build Perl.
+.PP
+The \fIREADME\fR file for general stuff.
+.PP
+The \fIArtistic\fR and \fICopying\fR files for copyright information.