summaryrefslogtreecommitdiffstats
path: root/upstream/debian-bookworm/man1/perl589delta.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-bookworm/man1/perl589delta.1')
-rw-r--r--upstream/debian-bookworm/man1/perl589delta.11672
1 files changed, 1672 insertions, 0 deletions
diff --git a/upstream/debian-bookworm/man1/perl589delta.1 b/upstream/debian-bookworm/man1/perl589delta.1
new file mode 100644
index 00000000..52591966
--- /dev/null
+++ b/upstream/debian-bookworm/man1/perl589delta.1
@@ -0,0 +1,1672 @@
+.\" Automatically generated by Pod::Man 4.14 (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
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. 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 "PERL589DELTA 1"
+.TH PERL589DELTA 1 "2023-11-25" "perl v5.36.0" "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"
+perl589delta \- what is new for perl v5.8.9
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This document describes differences between the 5.8.8 release and
+the 5.8.9 release.
+.SH "Notice"
+.IX Header "Notice"
+The 5.8.9 release will be the last significant release of the 5.8.x
+series. Any future releases of 5.8.x will likely only be to deal with
+security issues, and platform build failures. Hence you should look to
+migrating to 5.10.x, if you have not started already.
+See \*(L"Known Problems\*(R" for more information.
+.SH "Incompatible Changes"
+.IX Header "Incompatible Changes"
+A particular construction in the source code of extensions written in \*(C+
+may need changing. See \*(L"Changed Internals\*(R" for more details. All
+extensions written in C, most written in \*(C+, and all existing compiled
+extensions are unaffected. This was necessary to improve \*(C+ support.
+.PP
+Other than this, there are no changes intentionally incompatible with 5.8.8.
+If any exist, they are bugs and reports are welcome.
+.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.8 has
+been updated to 5.1.0 from 4.1.0. See
+<http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges> for the
+notable changes.
+.SS "stat and \-X on directory handles"
+.IX Subsection "stat and -X on directory handles"
+It is now possible to call \f(CW\*(C`stat\*(C'\fR and the \f(CW\*(C`\-X\*(C'\fR filestat operators on
+directory handles. As both directory and file handles are barewords, there
+can be ambiguities over which was intended. In these situations the file
+handle semantics are preferred. Both also treat \f(CW*FILE{IO}\fR filehandles
+like \f(CW*FILE\fR filehandles.
+.ie n .SS "Source filters in @INC"
+.el .SS "Source filters in \f(CW@INC\fP"
+.IX Subsection "Source filters in @INC"
+It's possible to enhance the mechanism of subroutine hooks in \f(CW@INC\fR by
+adding a source filter on top of the filehandle opened and returned by the
+hook. This feature was planned a long time ago, but wasn't quite working
+until now. See \*(L"require\*(R" in perlfunc for details. (Nicholas Clark)
+.SS "Exceptions in constant folding"
+.IX Subsection "Exceptions in constant folding"
+The constant folding routine is now wrapped in an exception handler, and
+if folding throws an exception (such as attempting to evaluate 0/0), perl
+now retains the current optree, rather than aborting the whole program.
+Without this change, programs would not compile if they had expressions that
+happened to generate exceptions, even though those expressions were in code
+that could never be reached at runtime. (Nicholas Clark, Dave Mitchell)
+.ie n .SS """no VERSION"""
+.el .SS "\f(CWno VERSION\fP"
+.IX Subsection "no VERSION"
+You can now use \f(CW\*(C`no\*(C'\fR followed by a version number to specify that you
+want to use a version of perl older than the specified one.
+.SS "Improved internal \s-1UTF\-8\s0 caching code"
+.IX Subsection "Improved internal UTF-8 caching code"
+The code that caches calculated \s-1UTF\-8\s0 byte offsets for character offsets for
+a string has been re-written. Several bugs have been located and eliminated,
+and the code now makes better use of the information it has, so should be
+faster. In particular, it doesn't scan to the end of a string before
+calculating an offset within the string, which should speed up some operations
+on long strings. It is now possible to disable the caching code at run time,
+to verify that it is not the cause of suspected problems.
+.SS "Runtime relocatable installations"
+.IX Subsection "Runtime relocatable installations"
+There is now \fIConfigure\fR support for creating a perl tree that is relocatable
+at run time. see \*(L"Relocatable installations\*(R".
+.SS "New internal variables"
+.IX Subsection "New internal variables"
+.ie n .IP """${^CHILD_ERROR_NATIVE}""" 4
+.el .IP "\f(CW${^CHILD_ERROR_NATIVE}\fR" 4
+.IX Item "${^CHILD_ERROR_NATIVE}"
+This variable gives the native status returned by the last pipe close,
+backtick command, successful call to \f(CW\*(C`wait\*(C'\fR or \f(CW\*(C`waitpid\*(C'\fR, or from the
+\&\f(CW\*(C`system\*(C'\fR operator. See perlvar for details. (Contributed by Gisle Aas.)
+.ie n .IP """${^UTF8CACHE}""" 4
+.el .IP "\f(CW${^UTF8CACHE}\fR" 4
+.IX Item "${^UTF8CACHE}"
+This variable controls the state of the internal \s-1UTF\-8\s0 offset caching code.
+1 for on (the default), 0 for off, \-1 to debug the caching code by checking
+all its results against linear scans, and panicking on any discrepancy.
+.ie n .SS """readpipe"" is now overridable"
+.el .SS "\f(CWreadpipe\fP is now overridable"
+.IX Subsection "readpipe is now overridable"
+The built-in function \f(CW\*(C`readpipe\*(C'\fR is now overridable. Overriding it permits
+also to override its operator counterpart, \f(CW\*(C`qx//\*(C'\fR (also known as \f(CW\*(C`\`\`\*(C'\fR).
+.SS "simple exception handling macros"
+.IX Subsection "simple exception handling macros"
+Perl 5.8.9 (and 5.10.0 onwards) now provides a couple of macros to do very
+basic exception handling in \s-1XS\s0 modules. You can use these macros if you call
+code that may \f(CW\*(C`croak\*(C'\fR, but you need to do some cleanup before giving control
+back to Perl. See \*(L"Exception Handling\*(R" in perlguts for more details.
+.SS "\-D option enhancements"
+.IX Subsection "-D option enhancements"
+.IP "\(bu" 4
+\&\f(CW\*(C`\-Dq\*(C'\fR suppresses the \fI\s-1EXECUTING...\s0\fR message when running under \f(CW\*(C`\-D\*(C'\fR
+.IP "\(bu" 4
+\&\f(CW\*(C`\-Dl\*(C'\fR logs runops loop entry and exit, and jump level popping.
+.IP "\(bu" 4
+\&\f(CW\*(C`\-Dv\*(C'\fR displays the process id as part of the trace output.
+.SS "XS-assisted \s-1SWASHGET\s0"
+.IX Subsection "XS-assisted SWASHGET"
+Some pure-perl code that the regexp engine was using to retrieve Unicode
+properties and transliteration mappings has been reimplemented in \s-1XS\s0
+for faster execution.
+(\s-1SADAHIRO\s0 Tomoyuki)
+.SS "Constant subroutines"
+.IX Subsection "Constant subroutines"
+The interpreter internals now support a far more memory efficient form of
+inlineable constants. Storing a reference to a constant value in a symbol
+table is equivalent to a full typeglob referencing a constant subroutine,
+but using about 400 bytes less memory. This proxy constant subroutine is
+automatically upgraded to a real typeglob with subroutine if necessary.
+The approach taken is analogous to the existing space optimisation for
+subroutine stub declarations, which are stored as plain scalars in place
+of the full typeglob.
+.PP
+However, to aid backwards compatibility of existing code, which (wrongly)
+does not expect anything other than typeglobs in symbol tables, nothing in
+core uses this feature, other than the regression tests.
+.PP
+Stubs for prototyped subroutines have been stored in symbol tables as plain
+strings, and stubs for unprototyped subroutines as the number \-1, since 5.005,
+so code which assumes that the core only places typeglobs in symbol tables
+has been making incorrect assumptions for over 10 years.
+.SH "New Platforms"
+.IX Header "New Platforms"
+Compile support added for:
+.IP "\(bu" 4
+DragonFlyBSD
+.IP "\(bu" 4
+MidnightBSD
+.IP "\(bu" 4
+MirOS \s-1BSD\s0
+.IP "\(bu" 4
+\&\s-1RISC OS\s0
+.IP "\(bu" 4
+Cray XT4/Catamount
+.SH "Modules and Pragmata"
+.IX Header "Modules and Pragmata"
+.SS "New Modules"
+.IX Subsection "New Modules"
+.IP "\(bu" 4
+\&\f(CW\*(C`Module::Pluggable\*(C'\fR is a simple framework to create modules that accept
+pluggable sub-modules. The bundled version is 3.8
+.IP "\(bu" 4
+\&\f(CW\*(C`Module::CoreList\*(C'\fR is a hash of hashes that is keyed on perl version as
+indicated in \f(CW$]\fR. The bundled version is 2.17
+.IP "\(bu" 4
+\&\f(CW\*(C`Win32API::File\*(C'\fR now available in core on Microsoft Windows. The bundled
+version is 0.1001_01
+.IP "\(bu" 4
+\&\f(CW\*(C`Devel::InnerPackage\*(C'\fR finds all the packages defined by a single file. It is
+part of the \f(CW\*(C`Module::Pluggable\*(C'\fR distribution. The bundled version is 0.3
+.SS "Updated Modules"
+.IX Subsection "Updated Modules"
+.IP "\(bu" 4
+\&\f(CW\*(C`attributes\*(C'\fR upgraded to version 0.09
+.IP "\(bu" 4
+\&\f(CW\*(C`AutoLoader\*(C'\fR upgraded to version 5.67
+.IP "\(bu" 4
+\&\f(CW\*(C`AutoSplit\*(C'\fR upgraded to 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`autouse\*(C'\fR upgraded to version 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`B\*(C'\fR upgraded from 1.09_01 to 1.19
+.RS 4
+.IP "\(bu" 4
+provides new pad related abstraction macros \f(CW\*(C`B::NV::COP_SEQ_RANGE_LOW\*(C'\fR,
+\&\f(CW\*(C`B::NV::COP_SEQ_RANGE_HIGH\*(C'\fR, \f(CW\*(C`B::NV::PARENT_PAD_INDEX\*(C'\fR,
+\&\f(CW\*(C`B::NV::PARENT_FAKELEX_FLAGS\*(C'\fR, which hides the difference in storage in
+5.10.0 and later.
+.IP "\(bu" 4
+provides \f(CW\*(C`B::sub_generation\*(C'\fR, which exposes \f(CW\*(C`PL_sub_generation\*(C'\fR
+.IP "\(bu" 4
+provides \f(CW\*(C`B::GV::isGV_with_GP\*(C'\fR, which on pre\-5.10 perls always returns true.
+.IP "\(bu" 4
+New type \f(CW\*(C`B::HE\*(C'\fR added with methods \f(CW\*(C`VAL\*(C'\fR, \f(CW\*(C`HASH\*(C'\fR and \f(CW\*(C`SVKEY_force\*(C'\fR
+.IP "\(bu" 4
+The \f(CW\*(C`B::GVf_IMPORTED_CV\*(C'\fR flag is now set correctly when a proxy
+constant subroutine is imported.
+.IP "\(bu" 4
+bugs fixed in the handling of \f(CW\*(C`PMOP\*(C'\fRs.
+.IP "\(bu" 4
+\&\f(CW\*(C`B::BM::PREVIOUS\*(C'\fR returns now \f(CW\*(C`U32\*(C'\fR, not \f(CW\*(C`U16\*(C'\fR.
+\&\f(CW\*(C`B::CV::START\*(C'\fR and \f(CW\*(C`B:CV::ROOT\*(C'\fR return now \f(CW\*(C`NULL\*(C'\fR on an \s-1XSUB,\s0
+\&\f(CW\*(C`B::CV::XSUB\*(C'\fR and \f(CW\*(C`B::CV::XSUBANY\*(C'\fR return 0 on a non-XSUB.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`B::C\*(C'\fR upgraded to 1.05
+.IP "\(bu" 4
+\&\f(CW\*(C`B::Concise\*(C'\fR upgraded to 0.76
+.RS 4
+.IP "\(bu" 4
+new option \f(CW\*(C`\-src\*(C'\fR causes the rendering of each statement (starting with
+the nextstate \s-1OP\s0) to be preceded by the first line of source code that
+generates it.
+.IP "\(bu" 4
+new option \f(CW\*(C`\-stash="somepackage"\*(C'\fR, \f(CW\*(C`require\*(C'\fRs \*(L"somepackage\*(R", and then renders
+each function defined in its namespace.
+.IP "\(bu" 4
+now has documentation of detailed hint symbols.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`B::Debug\*(C'\fR upgraded to version 1.05
+.IP "\(bu" 4
+\&\f(CW\*(C`B::Deparse\*(C'\fR upgraded to version 0.87
+.RS 4
+.IP "\(bu" 4
+properly deparse \f(CW\*(C`print readpipe $x, $y\*(C'\fR.
+.IP "\(bu" 4
+now handles \f(CW\*(C`\*(Aq\*(Aq\->()\*(C'\fR, \f(CW\*(C`::()\*(C'\fR, \f(CW\*(C`sub :: {}\*(C'\fR, \fIetc.\fR correctly [\s-1RT\s0 #43010].
+All bugs in parsing these kinds of syntax are now fixed:
+.Sp
+.Vb 5
+\& perl \-MO=Deparse \-e \*(Aq"my %h = "\->()\*(Aq
+\& perl \-MO=Deparse \-e \*(Aq::\->()\*(Aq
+\& perl \-MO=Deparse \-e \*(Aqsub :: {}\*(Aq
+\& perl \-MO=Deparse \-e \*(Aqpackage a; sub a::b::c {}\*(Aq
+\& perl \-MO=Deparse \-e \*(Aqsub the::main::road {}\*(Aq
+.Ve
+.IP "\(bu" 4
+does \fBnot\fR deparse \f(CW$^H{v_string}\fR, which is automatically set by the
+internals.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`B::Lint\*(C'\fR upgraded to version 1.11
+.IP "\(bu" 4
+\&\f(CW\*(C`B::Terse\*(C'\fR upgraded to version 1.05
+.IP "\(bu" 4
+\&\f(CW\*(C`base\*(C'\fR upgraded to version 2.13
+.RS 4
+.IP "\(bu" 4
+loading a module via base.pm would mask a global \f(CW$SIG{_\|_DIE_\|_}\fR in that
+module.
+.IP "\(bu" 4
+push all classes at once in \f(CW@ISA\fR
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Benchmark\*(C'\fR upgraded to version 1.10
+.IP "\(bu" 4
+\&\f(CW\*(C`bigint\*(C'\fR upgraded to 0.23
+.IP "\(bu" 4
+\&\f(CW\*(C`bignum\*(C'\fR upgraded to 0.23
+.IP "\(bu" 4
+\&\f(CW\*(C`bigrat\*(C'\fR upgraded to 0.23
+.IP "\(bu" 4
+\&\f(CW\*(C`blib\*(C'\fR upgraded to 0.04
+.IP "\(bu" 4
+\&\f(CW\*(C`Carp\*(C'\fR upgraded to version 1.10
+.Sp
+The argument backtrace code now shows \f(CW\*(C`undef\*(C'\fR as \f(CW\*(C`undef\*(C'\fR,
+instead of a string \fI\*(L"undef\*(R"\fR.
+.IP "\(bu" 4
+\&\f(CW\*(C`CGI\*(C'\fR upgraded to version 3.42
+.IP "\(bu" 4
+\&\f(CW\*(C`charnames\*(C'\fR upgraded to 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`constant\*(C'\fR upgraded to version 1.17
+.IP "\(bu" 4
+\&\f(CW\*(C`CPAN\*(C'\fR upgraded to version 1.9301
+.IP "\(bu" 4
+\&\f(CW\*(C`Cwd\*(C'\fR upgraded to version 3.29 with some platform specific
+improvements (including for \s-1VMS\s0).
+.IP "\(bu" 4
+\&\f(CW\*(C`Data::Dumper\*(C'\fR upgraded to version 2.121_17
+.RS 4
+.IP "\(bu" 4
+Fixes hash iterator current position with the pure Perl version [\s-1RT\s0 #40668]
+.IP "\(bu" 4
+Performance enhancements, which will be most evident on platforms where
+repeated calls to C's \f(CW\*(C`realloc()\*(C'\fR are slow, such as Win32.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`DB_File\*(C'\fR upgraded to version 1.817
+.IP "\(bu" 4
+\&\f(CW\*(C`DB_Filter\*(C'\fR upgraded to version 0.02
+.IP "\(bu" 4
+\&\f(CW\*(C`Devel::DProf\*(C'\fR upgraded to version 20080331.00
+.IP "\(bu" 4
+\&\f(CW\*(C`Devel::Peek\*(C'\fR upgraded to version 1.04
+.IP "\(bu" 4
+\&\f(CW\*(C`Devel::PPPort\*(C'\fR upgraded to version 3.14
+.IP "\(bu" 4
+\&\f(CW\*(C`diagnostics\*(C'\fR upgraded to version 1.16
+.IP "\(bu" 4
+\&\f(CW\*(C`Digest\*(C'\fR upgraded to version 1.15
+.IP "\(bu" 4
+\&\f(CW\*(C`Digest::MD5\*(C'\fR upgraded to version 2.37
+.IP "\(bu" 4
+\&\f(CW\*(C`DirHandle\*(C'\fR upgraded to version 1.02
+.RS 4
+.IP "\(bu" 4
+now localises \f(CW$.\fR, \f(CW$@\fR, \f(CW$!\fR, \f(CW$^E\fR, and \f(CW$?\fR before closing the
+directory handle to suppress leaking any side effects of warnings about it
+already being closed.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`DynaLoader\*(C'\fR upgraded to version 1.09
+.Sp
+\&\f(CW\*(C`DynaLoader\*(C'\fR can now dynamically load a loadable object from a file with a
+non-default file extension.
+.IP "\(bu" 4
+\&\f(CW\*(C`Encode\*(C'\fR upgraded to version 2.26
+.Sp
+\&\f(CW\*(C`Encode::Alias\*(C'\fR includes a fix for encoding \*(L"646\*(R" on Solaris (better known as
+\&\s-1ASCII\s0).
+.IP "\(bu" 4
+\&\f(CW\*(C`English\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Errno\*(C'\fR upgraded to version 1.10
+.IP "\(bu" 4
+\&\f(CW\*(C`Exporter\*(C'\fR upgraded to version 5.63
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Command\*(C'\fR upgraded to version 1.15
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Constant\*(C'\fR upgraded to version 0.21
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Embed\*(C'\fR upgraded to version 1.28
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Install\*(C'\fR upgraded to version 1.50_01
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Installed\*(C'\fR upgraded to version 1.43
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::MakeMaker\*(C'\fR upgraded to version 6.48
+.RS 4
+.IP "\(bu" 4
+support for \f(CW\*(C`INSTALLSITESCRIPT\*(C'\fR and \f(CW\*(C`INSTALLVENDORSCRIPT\*(C'\fR
+configuration.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::Manifest\*(C'\fR upgraded to version 1.55
+.IP "\(bu" 4
+\&\f(CW\*(C`ExtUtils::ParseXS\*(C'\fR upgraded to version 2.19
+.IP "\(bu" 4
+\&\f(CW\*(C`Fatal\*(C'\fR upgraded to version 1.06
+.RS 4
+.IP "\(bu" 4
+allows built-ins in \f(CW\*(C`CORE::GLOBAL\*(C'\fR to be made fatal.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Fcntl\*(C'\fR upgraded to version 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`fields\*(C'\fR upgraded to version 2.12
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Basename\*(C'\fR upgraded to version 2.77
+.IP "\(bu" 4
+\&\f(CW\*(C`FileCache\*(C'\fR upgraded to version 1.07
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Compare\*(C'\fR upgraded to 1.1005
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Copy\*(C'\fR upgraded to 2.13
+.RS 4
+.IP "\(bu" 4
+now uses 3\-arg open.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`File::DosGlob\*(C'\fR upgraded to 1.01
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Find\*(C'\fR upgraded to version 1.13
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Glob\*(C'\fR upgraded to version 1.06
+.RS 4
+.IP "\(bu" 4
+fixes spurious results with brackets inside braces.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Path\*(C'\fR upgraded to version 2.07_02
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Spec\*(C'\fR upgraded to version 3.29
+.RS 4
+.IP "\(bu" 4
+improved handling of bad arguments.
+.IP "\(bu" 4
+some platform specific improvements (including for \s-1VMS\s0 and Cygwin), with
+an optimisation on \f(CW\*(C`abs2rel\*(C'\fR when handling both relative arguments.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`File::stat\*(C'\fR upgraded to version 1.01
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Temp\*(C'\fR upgraded to version 0.20
+.IP "\(bu" 4
+\&\f(CW\*(C`filetest\*(C'\fR upgraded to version 1.02
+.IP "\(bu" 4
+\&\f(CW\*(C`Filter::Util::Call\*(C'\fR upgraded to version 1.07
+.IP "\(bu" 4
+\&\f(CW\*(C`Filter::Simple\*(C'\fR upgraded to version 0.83
+.IP "\(bu" 4
+\&\f(CW\*(C`FindBin\*(C'\fR upgraded to version 1.49
+.IP "\(bu" 4
+\&\f(CW\*(C`GDBM_File\*(C'\fR upgraded to version 1.09
+.IP "\(bu" 4
+\&\f(CW\*(C`Getopt::Long\*(C'\fR upgraded to version 2.37
+.IP "\(bu" 4
+\&\f(CW\*(C`Getopt::Std\*(C'\fR upgraded to version 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`Hash::Util\*(C'\fR upgraded to version 0.06
+.IP "\(bu" 4
+\&\f(CW\*(C`if\*(C'\fR upgraded to version 0.05
+.IP "\(bu" 4
+\&\f(CW\*(C`IO\*(C'\fR upgraded to version 1.23
+.Sp
+Reduced number of calls to \f(CW\*(C`getpeername\*(C'\fR in \f(CW\*(C`IO::Socket\*(C'\fR
+.IP "\(bu" 4
+\&\f(CW\*(C`IPC::Open\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`IPC::Open3\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`IPC::SysV\*(C'\fR upgraded to version 2.00
+.IP "\(bu" 4
+\&\f(CW\*(C`lib\*(C'\fR upgraded to version 0.61
+.RS 4
+.IP "\(bu" 4
+avoid warning about loading \fI.par\fR files.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`libnet\*(C'\fR upgraded to version 1.22
+.IP "\(bu" 4
+\&\f(CW\*(C`List::Util\*(C'\fR upgraded to 1.19
+.IP "\(bu" 4
+\&\f(CW\*(C`Locale::Maketext\*(C'\fR upgraded to 1.13
+.IP "\(bu" 4
+\&\f(CW\*(C`Math::BigFloat\*(C'\fR upgraded to version 1.60
+.IP "\(bu" 4
+\&\f(CW\*(C`Math::BigInt\*(C'\fR upgraded to version 1.89
+.IP "\(bu" 4
+\&\f(CW\*(C`Math::BigRat\*(C'\fR upgraded to version 0.22
+.RS 4
+.IP "\(bu" 4
+implements new \f(CW\*(C`as_float\*(C'\fR method.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Math::Complex\*(C'\fR upgraded to version 1.54.
+.IP "\(bu" 4
+\&\f(CW\*(C`Math::Trig\*(C'\fR upgraded to version 1.18.
+.IP "\(bu" 4
+\&\f(CW\*(C`NDBM_File\*(C'\fR upgraded to version 1.07
+.RS 4
+.IP "\(bu" 4
+improve \fIg++\fR handling for systems using \s-1GDBM\s0 compatibility headers.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Net::Ping\*(C'\fR upgraded to version 2.35
+.IP "\(bu" 4
+\&\f(CW\*(C`NEXT\*(C'\fR upgraded to version 0.61
+.RS 4
+.IP "\(bu" 4
+fix several bugs with \f(CW\*(C`NEXT\*(C'\fR when working with \f(CW\*(C`AUTOLOAD\*(C'\fR, \f(CW\*(C`eval\*(C'\fR block, and
+within overloaded stringification.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`ODBM_File\*(C'\fR upgraded to 1.07
+.IP "\(bu" 4
+\&\f(CW\*(C`open\*(C'\fR upgraded to 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`ops\*(C'\fR upgraded to 1.02
+.IP "\(bu" 4
+\&\f(CW\*(C`PerlIO::encoding\*(C'\fR upgraded to version 0.11
+.IP "\(bu" 4
+\&\f(CW\*(C`PerlIO::scalar\*(C'\fR upgraded to version 0.06
+.RS 4
+.IP "\(bu" 4
+[\s-1RT\s0 #40267] \f(CW\*(C`PerlIO::scalar\*(C'\fR doesn't respect readonly-ness.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`PerlIO::via\*(C'\fR upgraded to version 0.05
+.IP "\(bu" 4
+\&\f(CW\*(C`Pod::Html\*(C'\fR upgraded to version 1.09
+.IP "\(bu" 4
+\&\f(CW\*(C`Pod::Parser\*(C'\fR upgraded to version 1.35
+.IP "\(bu" 4
+\&\f(CW\*(C`Pod::Usage\*(C'\fR upgraded to version 1.35
+.IP "\(bu" 4
+\&\f(CW\*(C`POSIX\*(C'\fR upgraded to version 1.15
+.RS 4
+.IP "\(bu" 4
+\&\f(CW\*(C`POSIX\*(C'\fR constants that duplicate those in \f(CW\*(C`Fcntl\*(C'\fR are now imported from
+\&\f(CW\*(C`Fcntl\*(C'\fR and re-exported, rather than being duplicated by \f(CW\*(C`POSIX\*(C'\fR
+.IP "\(bu" 4
+\&\f(CW\*(C`POSIX::remove\*(C'\fR can remove empty directories.
+.IP "\(bu" 4
+\&\f(CW\*(C`POSIX::setlocale\*(C'\fR safer to call multiple times.
+.IP "\(bu" 4
+\&\f(CW\*(C`POSIX::SigRt\*(C'\fR added, which provides access to \s-1POSIX\s0 realtime signal
+functionality on systems that support it.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`re\*(C'\fR upgraded to version 0.06_01
+.IP "\(bu" 4
+\&\f(CW\*(C`Safe\*(C'\fR upgraded to version 2.16
+.IP "\(bu" 4
+\&\f(CW\*(C`Scalar::Util\*(C'\fR upgraded to 1.19
+.IP "\(bu" 4
+\&\f(CW\*(C`SDBM_File\*(C'\fR upgraded to version 1.06
+.IP "\(bu" 4
+\&\f(CW\*(C`SelfLoader\*(C'\fR upgraded to version 1.17
+.IP "\(bu" 4
+\&\f(CW\*(C`Shell\*(C'\fR upgraded to version 0.72
+.IP "\(bu" 4
+\&\f(CW\*(C`sigtrap\*(C'\fR upgraded to version 1.04
+.IP "\(bu" 4
+\&\f(CW\*(C`Socket\*(C'\fR upgraded to version 1.81
+.RS 4
+.IP "\(bu" 4
+this fixes an optimistic use of \f(CW\*(C`gethostbyname\*(C'\fR
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Storable\*(C'\fR upgraded to 2.19
+.IP "\(bu" 4
+\&\f(CW\*(C`Switch\*(C'\fR upgraded to version 2.13
+.IP "\(bu" 4
+\&\f(CW\*(C`Sys::Syslog\*(C'\fR upgraded to version 0.27
+.IP "\(bu" 4
+\&\f(CW\*(C`Term::ANSIColor\*(C'\fR upgraded to version 1.12
+.IP "\(bu" 4
+\&\f(CW\*(C`Term::Cap\*(C'\fR upgraded to version 1.12
+.IP "\(bu" 4
+\&\f(CW\*(C`Term::ReadLine\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Test::Builder\*(C'\fR upgraded to version 0.80
+.IP "\(bu" 4
+\&\f(CW\*(C`Test::Harness\*(C'\fR upgraded version to 2.64
+.RS 4
+.IP "\(bu" 4
+this makes it able to handle newlines.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Test::More\*(C'\fR upgraded to version 0.80
+.IP "\(bu" 4
+\&\f(CW\*(C`Test::Simple\*(C'\fR upgraded to version 0.80
+.IP "\(bu" 4
+\&\f(CW\*(C`Text::Balanced\*(C'\fR upgraded to version 1.98
+.IP "\(bu" 4
+\&\f(CW\*(C`Text::ParseWords\*(C'\fR upgraded to version 3.27
+.IP "\(bu" 4
+\&\f(CW\*(C`Text::Soundex\*(C'\fR upgraded to version 3.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Text::Tabs\*(C'\fR upgraded to version 2007.1117
+.IP "\(bu" 4
+\&\f(CW\*(C`Text::Wrap\*(C'\fR upgraded to version 2006.1117
+.IP "\(bu" 4
+\&\f(CW\*(C`Thread\*(C'\fR upgraded to version 2.01
+.IP "\(bu" 4
+\&\f(CW\*(C`Thread::Semaphore\*(C'\fR upgraded to version 2.09
+.IP "\(bu" 4
+\&\f(CW\*(C`Thread::Queue\*(C'\fR upgraded to version 2.11
+.RS 4
+.IP "\(bu" 4
+added capability to add complex structures (e.g., hash of hashes) to queues.
+.IP "\(bu" 4
+added capability to dequeue multiple items at once.
+.IP "\(bu" 4
+added new methods to inspect and manipulate queues: \f(CW\*(C`peek\*(C'\fR, \f(CW\*(C`insert\*(C'\fR and
+\&\f(CW\*(C`extract\*(C'\fR
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::Handle\*(C'\fR upgraded to version 4.2
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::Hash\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::Memoize\*(C'\fR upgraded to version 1.1
+.RS 4
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::Memoize::EXISTS\*(C'\fR now correctly caches its results.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::RefHash\*(C'\fR upgraded to version 1.38
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::Scalar\*(C'\fR upgraded to version 1.01
+.IP "\(bu" 4
+\&\f(CW\*(C`Tie::StdHandle\*(C'\fR upgraded to version 4.2
+.IP "\(bu" 4
+\&\f(CW\*(C`Time::gmtime\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Time::Local\*(C'\fR upgraded to version 1.1901
+.IP "\(bu" 4
+\&\f(CW\*(C`Time::HiRes\*(C'\fR upgraded to version 1.9715 with various build improvements
+(including \s-1VMS\s0) and minor platform-specific bug fixes (including
+for HP-UX 11 ia64).
+.IP "\(bu" 4
+\&\f(CW\*(C`threads\*(C'\fR upgraded to 1.71
+.RS 4
+.IP "\(bu" 4
+new thread state information methods: \f(CW\*(C`is_running\*(C'\fR, \f(CW\*(C`is_detached\*(C'\fR
+and \f(CW\*(C`is_joinable\*(C'\fR. \f(CW\*(C`list\*(C'\fR method enhanced to return running or joinable
+threads.
+.IP "\(bu" 4
+new thread signal method: \f(CW\*(C`kill\*(C'\fR
+.IP "\(bu" 4
+added capability to specify thread stack size.
+.IP "\(bu" 4
+added capability to control thread exiting behavior. Added a new \f(CW\*(C`exit\*(C'\fR
+method.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`threads::shared\*(C'\fR upgraded to version 1.27
+.RS 4
+.IP "\(bu" 4
+smaller and faster implementation that eliminates one internal structure and
+the consequent level of indirection.
+.IP "\(bu" 4
+user locks are now stored in a safer manner.
+.IP "\(bu" 4
+new function \f(CW\*(C`shared_clone\*(C'\fR creates a copy of an object leaving
+shared elements as-is and deep-cloning non-shared elements.
+.IP "\(bu" 4
+added new \f(CW\*(C`is_shared\*(C'\fR method.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`Unicode::Normalize\*(C'\fR upgraded to version 1.02
+.IP "\(bu" 4
+\&\f(CW\*(C`Unicode::UCD\*(C'\fR upgraded to version 0.25
+.IP "\(bu" 4
+\&\f(CW\*(C`warnings\*(C'\fR upgraded to version 1.05_01
+.IP "\(bu" 4
+\&\f(CW\*(C`Win32\*(C'\fR upgraded to version 0.38
+.RS 4
+.IP "\(bu" 4
+added new function \f(CW\*(C`GetCurrentProcessId\*(C'\fR which returns the regular Windows
+process identifier of the current process, even when called from within a fork.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+\&\f(CW\*(C`XSLoader\*(C'\fR upgraded to version 0.10
+.IP "\(bu" 4
+\&\f(CW\*(C`XS::APItest\*(C'\fR and \f(CW\*(C`XS::Typemap\*(C'\fR are for internal use only and hence
+no longer installed. Many more tests have been added to \f(CW\*(C`XS::APItest\*(C'\fR.
+.SH "Utility Changes"
+.IX Header "Utility Changes"
+.SS "debugger upgraded to version 1.31"
+.IX Subsection "debugger upgraded to version 1.31"
+.IP "\(bu" 4
+Andreas König contributed two functions to save and load the debugger
+history.
+.IP "\(bu" 4
+\&\f(CW\*(C`NEXT::AUTOLOAD\*(C'\fR no longer emits warnings under the debugger.
+.IP "\(bu" 4
+The debugger should now correctly find tty the device on \s-1OS X 10.5\s0 and \s-1VMS\s0
+when the program \f(CW\*(C`fork\*(C'\fRs.
+.IP "\(bu" 4
+\&\s-1LVALUE\s0 subs now work inside the debugger.
+.SS "\fIperlthanks\fP"
+.IX Subsection "perlthanks"
+Perl 5.8.9 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.
+.SS "\fIperlbug\fP"
+.IX Subsection "perlbug"
+\&\fIperlbug\fR now checks if you're reporting about a non-core module and suggests
+you report it to the \s-1CPAN\s0 author instead.
+.SS "\fIh2xs\fP"
+.IX Subsection "h2xs"
+.IP "\(bu" 4
+won't define an empty string as a constant [\s-1RT\s0 #25366]
+.IP "\(bu" 4
+has examples for \f(CW\*(C`h2xs \-X\*(C'\fR
+.SS "\fIh2ph\fP"
+.IX Subsection "h2ph"
+.IP "\(bu" 4
+now attempts to deal sensibly with the difference in path implications
+between \f(CW""\fR and \f(CW\*(C`<>\*(C'\fR quoting in \f(CW\*(C`#include\*(C'\fR statements.
+.IP "\(bu" 4
+now generates correct code for \f(CW\*(C`#if defined A || defined B\*(C'\fR
+[\s-1RT\s0 #39130]
+.SH "New Documentation"
+.IX Header "New Documentation"
+As usual, the documentation received its share of corrections, clarifications
+and other nitfixes. More \f(CW\*(C`\*(C'\fR tags were added for indexing.
+.IX Xref "..."
+.PP
+perlunitut is a tutorial written by Juerd Waalboer on Unicode-related
+terminology and how to correctly handle Unicode in Perl scripts.
+.PP
+perlunicode is updated in section user defined properties.
+.PP
+perluniintro has been updated in the example of detecting data that is not
+valid in particular encoding.
+.PP
+perlcommunity provides an overview of the Perl Community along with further
+resources.
+.PP
+\&\s-1CORE\s0 documents the pseudo-namespace for Perl's core routines.
+.SH "Changes to Existing Documentation"
+.IX Header "Changes to Existing Documentation"
+perlglossary adds \fIdeprecated modules and features\fR and \fIto be dropped modules\fR.
+.PP
+perlhack has been updated and added resources on smoke testing.
+.PP
+The Perl FAQs (\fIperlfaq1\fR..\fIperlfaq9\fR) have been updated.
+.PP
+perlcheat is updated with better details on \f(CW\*(C`\ew\*(C'\fR, \f(CW\*(C`\ed\*(C'\fR, and \f(CW\*(C`\es\*(C'\fR.
+.PP
+perldebug is updated with information on how to call the debugger.
+.PP
+perldiag documentation updated with \fIsubroutine with an ampersand\fR on the
+argument to \f(CW\*(C`exists\*(C'\fR and \f(CW\*(C`delete\*(C'\fR and also several terminology updates on
+warnings.
+.PP
+perlfork documents the limitation of \f(CW\*(C`exec\*(C'\fR inside pseudo-processes.
+.PP
+perlfunc:
+.IP "\(bu" 4
+Documentation is fixed in section \f(CW\*(C`caller\*(C'\fR and \f(CW\*(C`pop\*(C'\fR.
+.IP "\(bu" 4
+Function \f(CW\*(C`alarm\*(C'\fR now mentions \f(CW\*(C`Time::HiRes::ualarm\*(C'\fR in preference
+to \f(CW\*(C`select\*(C'\fR.
+.IP "\(bu" 4
+Regarding precedence in \f(CW\*(C`\-X\*(C'\fR, filetest operators are the same as unary
+operators, but not regarding parsing and parentheses (spotted by Eirik Berg
+Hanssen).
+.IP "\(bu" 4
+\&\f(CW\*(C`reverse\*(C'\fR function documentation received scalar context examples.
+.PP
+perllocale documentation is adjusted for number localization and
+\&\f(CW\*(C`POSIX::setlocale\*(C'\fR to fix Debian bug #379463.
+.PP
+perlmodlib is updated with \f(CW\*(C`CPAN::API::HOWTO\*(C'\fR and
+\&\f(CW\*(C`Sys::Syslog::win32::Win32\*(C'\fR
+.PP
+perlre documentation updated to reflect the differences between
+\&\f(CW\*(C`[[:xxxxx:]]\*(C'\fR and \f(CW\*(C`\ep{IsXxxxx}\*(C'\fR matches. Also added section on \f(CW\*(C`/g\*(C'\fR and
+\&\f(CW\*(C`/c\*(C'\fR modifiers.
+.PP
+perlreguts describe the internals of the regular expressions engine. It has
+been contributed by Yves Orton.
+.PP
+perlrebackslash describes all perl regular expression backslash and escape
+sequences.
+.PP
+perlrecharclass describes the syntax and use of character classes in
+Perl Regular Expressions.
+.PP
+perlrun is updated to clarify on the hash seed \fI\s-1PERL_HASH_SEED\s0\fR. Also more
+information in options \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-u\*(C'\fR.
+.PP
+perlsub example is updated to use a lexical variable for \f(CW\*(C`opendir\*(C'\fR syntax.
+.PP
+perlvar fixes confusion about real \s-1GID\s0 \f(CW$(\fR and effective \s-1GID\s0 \f(CW$)\fR.
+.PP
+Perl thread tutorial example is fixed in section
+\&\*(L"Queues: Passing Data Around\*(R" in perlthrtut and perlthrtut.
+.PP
+perlhack documentation extensively improved by Jarkko Hietaniemi and others.
+.PP
+perltoot provides information on modifying \f(CW@UNIVERSAL::ISA\fR.
+.PP
+perlport documentation extended to include different \f(CW\*(C`kill(\-9, ...)\*(C'\fR
+semantics on Windows. It also clearly states \f(CW\*(C`dump\*(C'\fR is not supported on Win32
+and cygwin.
+.PP
+\&\fI\s-1INSTALL\s0\fR has been updated and modernised.
+.SH "Performance Enhancements"
+.IX Header "Performance Enhancements"
+.IP "\(bu" 4
+The default since perl 5.000 has been for perl to create an empty scalar
+with every new typeglob. The increased use of lexical variables means that
+most are now unused. Thanks to Nicholas Clark's efforts, Perl can now be
+compiled with \f(CW\*(C`\-DPERL_DONT_CREATE_GVSV\*(C'\fR to avoid creating these empty scalars.
+This will significantly decrease the number of scalars allocated for all
+configurations, and the number of scalars that need to be copied for ithread
+creation. Whilst this option is binary compatible with existing perl
+installations, it does change a long-standing assumption about the
+internals, hence it is not enabled by default, as some third party code may
+rely on the old behaviour.
+.Sp
+We would recommend testing with this configuration on new deployments of
+perl, particularly for multi-threaded servers, to see whether all third party
+code is compatible with it, as this configuration may give useful performance
+improvements. For existing installations we would not recommend changing to
+this configuration unless thorough testing is performed before deployment.
+.IP "\(bu" 4
+\&\f(CW\*(C`diagnostics\*(C'\fR no longer uses \f(CW$&\fR, which results in large speedups
+for regexp matching in all code using it.
+.IP "\(bu" 4
+Regular expressions classes of a single character are now treated the same as
+if the character had been used as a literal, meaning that code that uses
+char-classes as an escaping mechanism will see a speedup. (Yves Orton)
+.IP "\(bu" 4
+Creating anonymous array and hash references (ie. \f(CW\*(C`[]\*(C'\fR and \f(CW\*(C`{}\*(C'\fR) now incurs
+no more overhead than creating an anonymous list or hash. Nicholas Clark
+provided changes with a saving of two ops and one stack push, which was measured
+as a slightly better than 5% improvement for these operations.
+.IP "\(bu" 4
+Many calls to \f(CW\*(C`strlen()\*(C'\fR have been eliminated, either because the length was
+already known, or by adopting or enhancing APIs that pass lengths. This has
+been aided by the adoption of a \f(CW\*(C`my_sprintf()\*(C'\fR wrapper, which returns the
+correct C89 value \- the length of the formatted string. Previously we could
+not rely on the return value of \f(CW\*(C`sprintf()\*(C'\fR, because on some ancient but
+extant platforms it still returns \f(CW\*(C`char *\*(C'\fR.
+.IP "\(bu" 4
+\&\f(CW\*(C`index\*(C'\fR is now faster if the search string is stored in \s-1UTF\-8\s0 but only contains
+characters in the Latin\-1 range.
+.IP "\(bu" 4
+The Unicode swatch cache inside the regexp engine is now used. (the lookup had
+a key mismatch, present since the initial implementation). [\s-1RT\s0 #42839]
+.SH "Installation and Configuration Improvements"
+.IX Header "Installation and Configuration Improvements"
+.SS "Relocatable installations"
+.IX Subsection "Relocatable installations"
+There is now \fIConfigure\fR support for creating a relocatable perl tree. If
+you \fIConfigure\fR with \f(CW\*(C`\-Duserelocatableinc\*(C'\fR, then the paths in \f(CW@INC\fR (and
+everything else in \f(CW%Config\fR) can be optionally located via the path of the
+\&\fIperl\fR executable.
+.PP
+At start time, if any paths in \f(CW@INC\fR or \f(CW\*(C`Config\*(C'\fR that \fIConfigure\fR marked
+as relocatable (by starting them with \f(CW".../"\fR), then they are prefixed the
+directory of \f(CW$^X\fR. This allows the relocation can be configured on a
+per-directory basis, although the default with \f(CW\*(C`\-Duserelocatableinc\*(C'\fR is that
+everything is relocated. The initial install is done to the original configured
+prefix.
+.SS "Configuration improvements"
+.IX Subsection "Configuration improvements"
+\&\fIConfigure\fR is now better at removing temporary files. Tom Callaway
+(from RedHat) also contributed patches that complete the set of flags
+passed to the compiler and the linker, in particular that \f(CW\*(C`\-fPIC\*(C'\fR is now
+enabled on Linux. It will also croak when your \fI/dev/null\fR isn't a device.
+.PP
+A new configuration variable \f(CW\*(C`d_pseudofork\*(C'\fR has been to \fIConfigure\fR, and is
+available as \f(CW$Config{d_pseudofork}\fR in the \f(CW\*(C`Config\*(C'\fR module. This
+distinguishes real \f(CW\*(C`fork\*(C'\fR support from the pseudofork emulation used on
+Windows platforms.
+.PP
+\&\fIConfig.pod\fR and \fIconfig.sh\fR are now placed correctly for cross-compilation.
+.PP
+\&\f(CW$Config{useshrplib}\fR is now 'true' rather than 'yes' when using a shared perl
+library.
+.SS "Compilation improvements"
+.IX Subsection "Compilation improvements"
+Parallel makes should work properly now, although there may still be problems
+if \f(CW\*(C`make test\*(C'\fR is instructed to run in parallel.
+.PP
+Many compilation warnings have been cleaned up. A very stubborn compiler
+warning in \f(CW\*(C`S_emulate_eaccess()\*(C'\fR was killed after six attempts.
+\&\fIg++\fR support has been tuned, especially for FreeBSD.
+.PP
+\&\fImkppport\fR has been integrated, and all \fIppport.h\fR files in the core will now
+be autogenerated at build time (and removed during cleanup).
+.SS "Installation improvements."
+.IX Subsection "Installation improvements."
+\&\fIinstallman\fR now works with \f(CW\*(C`\-Duserelocatableinc\*(C'\fR and \f(CW\*(C`DESTDIR\*(C'\fR.
+.PP
+\&\fIinstallperl\fR no longer installs:
+.IP "\(bu" 4
+static library files of statically linked extensions when a shared perl library
+is being used. (They are not needed. See \*(L"Windows\*(R" below).
+.IP "\(bu" 4
+\&\fI\s-1SIGNATURE\s0\fR and \fIPAUSE*.pub\fR (\s-1CPAN\s0 files)
+.IP "\(bu" 4
+\&\fI\s-1NOTES\s0\fR and \fI\s-1PATCHING\s0\fR (ExtUtils files)
+.IP "\(bu" 4
+\&\fIperlld\fR and \fIld2\fR (Cygwin files)
+.SS "Platform Specific Changes"
+.IX Subsection "Platform Specific Changes"
+There are improved hints for \s-1AIX,\s0 Cygwin, \s-1DEC/OSF,\s0 FreeBSD, \s-1HP/UX,\s0 Irix 6
+Linux, MachTen, NetBSD, \s-1OS/390, QNX, SCO,\s0 Solaris, SunOS, System V Release 5.x
+(UnixWare 7, OpenUNIX 8), Ultrix, \s-1UMIPS,\s0 uts and \s-1VOS.\s0
+.PP
+\fIFreeBSD\fR
+.IX Subsection "FreeBSD"
+.IP "\(bu" 4
+Drop \f(CW\*(C`\-std=c89\*(C'\fR and \f(CW\*(C`\-ansi\*(C'\fR if using \f(CW\*(C`long long\*(C'\fR as the main integral type,
+else in FreeBSD 6.2 (and perhaps other releases), system headers do not
+declare some functions required by perl.
+.PP
+\fISolaris\fR
+.IX Subsection "Solaris"
+.IP "\(bu" 4
+Starting with Solaris 10, we do not want versioned shared libraries, because
+those often indicate a private use only library. These problems could often
+be triggered when SUNWbdb (Berkeley \s-1DB\s0) was installed. Hence if Solaris 10
+is detected set \f(CW\*(C`ignore_versioned_solibs=y\*(C'\fR.
+.PP
+\fI\s-1VMS\s0\fR
+.IX Subsection "VMS"
+.IP "\(bu" 4
+Allow \s-1IEEE\s0 math to be deselected on OpenVMS I64 (but it remains the default).
+.IP "\(bu" 4
+Record \s-1IEEE\s0 usage in \f(CW\*(C`config.h\*(C'\fR
+.IP "\(bu" 4
+Help older \s-1VMS\s0 compilers by using \f(CW\*(C`ccflags\*(C'\fR when building \f(CW\*(C`munchconfig.exe\*(C'\fR.
+.IP "\(bu" 4
+Don't try to build old \f(CW\*(C`Thread\*(C'\fR extension on \s-1VMS\s0 when \f(CW\*(C`\-Duseithreads\*(C'\fR has
+been chosen.
+.IP "\(bu" 4
+Passing a raw string of \*(L"NaN\*(R" to \fInawk\fR causes a core dump \- so the string
+has been changed to \*(L"*NaN*\*(R"
+.IP "\(bu" 4
+\&\fIt/op/stat.t\fR tests will now test hard links on \s-1VMS\s0 if they are supported.
+.PP
+\fIWindows\fR
+.IX Subsection "Windows"
+.IP "\(bu" 4
+When using a shared perl library \fIinstallperl\fR no longer installs static
+library files, import library files and export library files (of statically
+linked extensions) and empty bootstrap files (of dynamically linked
+extensions). This fixes a problem building PAR-Packer on Win32 with a debug
+build of perl.
+.IP "\(bu" 4
+Various improvements to the win32 build process, including support for Visual
+\&\*(C+ 2005 Express Edition (aka Visual \*(C+ 8.x).
+.IP "\(bu" 4
+\&\fIperl.exe\fR will now have an icon if built with MinGW or Borland.
+.IP "\(bu" 4
+Improvements to the perl\-static.exe build process.
+.IP "\(bu" 4
+Add Win32 makefile option to link all extensions statically.
+.IP "\(bu" 4
+The \fIWinCE\fR directory has been merged into the \fIWin32\fR directory.
+.IP "\(bu" 4
+\&\f(CW\*(C`setlocale\*(C'\fR tests have been re-enabled for Windows \s-1XP\s0 onwards.
+.SH "Selected Bug Fixes"
+.IX Header "Selected Bug Fixes"
+.SS "Unicode"
+.IX Subsection "Unicode"
+Many many bugs related to the internal Unicode implementation (\s-1UTF\-8\s0) have
+been fixed. In particular, long standing bugs related to returning Unicode
+via \f(CW\*(C`tie\*(C'\fR, overloading or \f(CW$@\fR are now gone, some of which were never
+reported.
+.PP
+\&\f(CW\*(C`unpack\*(C'\fR will internally convert the string back from \s-1UTF\-8\s0 on numeric types.
+This is a compromise between the full consistency now in 5.10, and the current
+behaviour, which is often used as a \*(L"feature\*(R" on string types.
+.PP
+Using \f(CW\*(C`:crlf\*(C'\fR and \f(CW\*(C`UTF\-16\*(C'\fR \s-1IO\s0 layers together will now work.
+.PP
+Fixed problems with \f(CW\*(C`split\*(C'\fR, Unicode \f(CW\*(C`/\es+/\*(C'\fR and \f(CW\*(C`/ \e0/\*(C'\fR.
+.PP
+Fixed bug \s-1RT\s0 #40641 \- encoding of Unicode characters in regular expressions.
+.PP
+Fixed a bug where using certain patterns in a regexp led to a panic.
+[\s-1RT\s0 #45337]
+.PP
+Perl no longer segfaults (due to infinite internal recursion) if the locale's
+character is not \s-1UTF\-8\s0 [\s-1RT\s0 #41442]:
+.PP
+.Vb 2
+\& use open \*(Aq:locale\*(Aq;
+\& print STDERR "\ex{201e}"; # &bdquo;
+.Ve
+.SS "PerlIO"
+.IX Subsection "PerlIO"
+Inconsistencies have been fixed in the reference counting PerlIO uses to keep
+track of Unix file descriptors, and the \s-1API\s0 used by \s-1XS\s0 code to manage getting
+and releasing \f(CW\*(C`FILE *\*(C'\fRs
+.SS "Magic"
+.IX Subsection "Magic"
+Several bugs have been fixed in Magic, the internal system used to implement
+features such as \f(CW\*(C`tie\*(C'\fR, tainting and threads sharing.
+.PP
+\&\f(CW\*(C`undef @array\*(C'\fR on a tied array now correctly calls the \f(CW\*(C`CLEAR\*(C'\fR method.
+.PP
+Some of the bitwise ops were not checking whether their arguments were magical
+before using them. [\s-1RT\s0 #24816]
+.PP
+Magic is no longer invoked twice by the expression \f(CW\*(C`\e&$x\*(C'\fR
+.PP
+A bug with assigning large numbers and tainting has been resolved.
+[\s-1RT\s0 #40708]
+.PP
+A new entry has been added to the \s-1MAGIC\s0 vtable \- \f(CW\*(C`svt_local\*(C'\fR. This is used
+when copying magic to the new value during \f(CW\*(C`local\*(C'\fR, allowing certain problems
+with localising shared variables to be resolved.
+.PP
+For the implementation details, see \*(L"Magic Virtual Tables\*(R" in perlguts.
+.SS "Reblessing overloaded objects now works"
+.IX Subsection "Reblessing overloaded objects now works"
+Internally, perl object-ness is on the referent, not the reference, even
+though methods can only be called via a reference. However, the original
+implementation of overloading stored flags related to overloading on the
+reference, relying on the flags being copied when the reference was copied,
+or set at the creation of a new reference. This manifests in a bug \- if you
+rebless an object from a class that has overloading, into one that does not,
+then any other existing references think that they (still) point to an
+overloaded object, choose these C code paths, and then throw errors.
+Analogously, blessing into an overloaded class when other references exist will
+result in them not using overloading.
+.PP
+The implementation has been fixed for 5.10, but this fix changes the semantics
+of flag bits, so is not binary compatible, so can't be applied to 5.8.9.
+However, 5.8.9 has a work-around that implements the same bug fix. If the
+referent has multiple references, then all the other references are located and
+corrected. A full search is avoided whenever possible by scanning lexicals
+outwards from the current subroutine, and the argument stack.
+.PP
+A certain well known Linux vendor applied incomplete versions of this bug fix
+to their \fI/usr/bin/perl\fR and then prematurely closed bug reports about
+performance issues without consulting back upstream. This not being enough,
+they then proceeded to ignore the necessary fixes to these unreleased changes
+for 11 months, until massive pressure was applied by their long-suffering
+paying customers, catalysed by the failings being featured on a prominent blog
+and Slashdot.
+.ie n .SS """strict"" now propagates correctly into string evals"
+.el .SS "\f(CWstrict\fP now propagates correctly into string evals"
+.IX Subsection "strict now propagates correctly into string evals"
+Under 5.8.8 and earlier:
+.PP
+.Vb 3
+\& $ perl5.8.8 \-e \*(Aquse strict; eval "use foo bar" or die $@\*(Aq
+\& Can\*(Aqt locate foo.pm in @INC (@INC contains: ... .) at (eval 1) line 2.
+\& BEGIN failed\-\-compilation aborted at (eval 1) line 2.
+.Ve
+.PP
+Under 5.8.9 and later:
+.PP
+.Vb 2
+\& $ perl5.8.9 \-e \*(Aquse strict; eval "use foo bar" or die $@\*(Aq
+\& Bareword "bar" not allowed while "strict subs" in use at (eval 1) line 1.
+.Ve
+.PP
+This may cause problems with programs that parse the error message and rely
+on the buggy behaviour.
+.SS "Other fixes"
+.IX Subsection "Other fixes"
+.IP "\(bu" 4
+The tokenizer no longer treats \f(CW\*(C`=cute\*(C'\fR (and other words beginning
+with \f(CW\*(C`=cut\*(C'\fR) as a synonym for \f(CW\*(C`=cut\*(C'\fR.
+.IP "\(bu" 4
+Calling \f(CW\*(C`CORE::require\*(C'\fR
+.Sp
+\&\f(CW\*(C`CORE::require\*(C'\fR and \f(CW\*(C`CORE::do\*(C'\fR were always parsed as \f(CW\*(C`require\*(C'\fR and \f(CW\*(C`do\*(C'\fR
+when they were overridden. This is now fixed.
+.IP "\(bu" 4
+Stopped memory leak on long \fI/etc/groups\fR entries.
+.IP "\(bu" 4
+\&\f(CW\*(C`while (my $x ...) { ...; redo }\*(C'\fR shouldn't \f(CW\*(C`undef $x\*(C'\fR.
+.Sp
+In the presence of \f(CW\*(C`my\*(C'\fR in the conditional of a \f(CW\*(C`while()\*(C'\fR, \f(CW\*(C`until()\*(C'\fR,
+or \f(CW\*(C`for(;;)\*(C'\fR loop, we now add an extra scope to the body so that \f(CW\*(C`redo\*(C'\fR
+doesn't \f(CW\*(C`undef\*(C'\fR the lexical.
+.IP "\(bu" 4
+The \f(CW\*(C`encoding\*(C'\fR pragma now correctly ignores anything following an \f(CW\*(C`@\*(C'\fR
+character in the \f(CW\*(C`LC_ALL\*(C'\fR and \f(CW\*(C`LANG\*(C'\fR environment variables. [\s-1RT\s0 # 49646]
+.IP "\(bu" 4
+A segfault observed with some \fIgcc\fR 3.3 optimisations is resolved.
+.IP "\(bu" 4
+A possible segfault when \f(CW\*(C`unpack\*(C'\fR used in scalar context with \f(CW\*(C`()\*(C'\fR groups
+is resolved. [\s-1RT\s0 #50256]
+.IP "\(bu" 4
+Resolved issue where \f(CW$!\fR could be changed by a signal handler interrupting
+a \f(CW\*(C`system\*(C'\fR call.
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #37886, symbolic dereferencing was allowed in the argument of
+\&\f(CW\*(C`defined\*(C'\fR even under the influence of \f(CW\*(C`use strict \*(Aqrefs\*(Aq\*(C'\fR.
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #43207, where \f(CW\*(C`lc\*(C'\fR/\f(CW\*(C`uc\*(C'\fR inside \f(CW\*(C`sort\*(C'\fR affected the return
+value.
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #45607, where \f(CW\*(C`*{"BONK"} = \e&{"BONK"}\*(C'\fR didn't work correctly.
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #35878, croaking from a \s-1XSUB\s0 called via \f(CW\*(C`goto &xsub\*(C'\fR corrupts perl
+internals.
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #32539, \fIDynaLoader.o\fR is moved into \fIlibperl.so\fR to avoid the
+need to statically link DynaLoader into the stub perl executable. With this
+\&\fIlibperl.so\fR provides everything needed to get a functional embedded perl
+interpreter to run.
+.IP "\(bu" 4
+Fix bug \s-1RT\s0 #36267 so that assigning to a tied hash doesn't change the
+underlying hash.
+.IP "\(bu" 4
+Fix bug \s-1RT\s0 #6006, regexp replaces using large replacement variables
+fail some of the time, \fIi.e.\fR when substitution contains something
+like \f(CW\*(C`${10}\*(C'\fR (note the bracket) instead of just \f(CW$10\fR.
+.IP "\(bu" 4
+Fix bug \s-1RT\s0 #45053, \f(CW\*(C`Perl_newCONSTSUB()\*(C'\fR is now thread safe.
+.SS "Platform Specific Fixes"
+.IX Subsection "Platform Specific Fixes"
+\fIDarwin / MacOS X\fR
+.IX Subsection "Darwin / MacOS X"
+.IP "\(bu" 4
+Various improvements to 64 bit builds.
+.IP "\(bu" 4
+Mutex protection added in \f(CW\*(C`PerlIOStdio_close()\*(C'\fR to avoid race conditions.
+Hopefully this fixes failures in the threads tests \fIfree.t\fR and \fIblocks.t\fR.
+.IP "\(bu" 4
+Added forked terminal support to the debugger, with the ability to update the
+window title.
+.PP
+\fI\s-1OS/2\s0\fR
+.IX Subsection "OS/2"
+.IP "\(bu" 4
+A build problem with specifying \f(CW\*(C`USE_MULTI\*(C'\fR and \f(CW\*(C`USE_ITHREADS\*(C'\fR but without
+\&\f(CW\*(C`USE_IMP_SYS\*(C'\fR has been fixed.
+.IP "\(bu" 4
+\&\f(CW\*(C`OS2::REXX\*(C'\fR upgraded to version 1.04
+.PP
+\fITru64\fR
+.IX Subsection "Tru64"
+.IP "\(bu" 4
+Aligned floating point build policies for \fIcc\fR and \fIgcc\fR.
+.PP
+\fIRedHat Linux\fR
+.IX Subsection "RedHat Linux"
+.IP "\(bu" 4
+Revisited a patch from 5.6.1 for \s-1RH7.2\s0 for Intel's \fIicc\fR [\s-1RT\s0 #7916], added an
+additional check for \f(CW$Config{gccversion}\fR.
+.PP
+\fISolaris/i386\fR
+.IX Subsection "Solaris/i386"
+.IP "\(bu" 4
+Use \f(CW\*(C`\-DPTR_IS_LONG\*(C'\fR when using 64 bit integers
+.PP
+\fI\s-1VMS\s0\fR
+.IX Subsection "VMS"
+.IP "\(bu" 4
+Fixed \f(CW\*(C`PerlIO::Scalar\*(C'\fR in-memory file record-style reads.
+.IP "\(bu" 4
+pipe shutdown at process exit should now be more robust.
+.IP "\(bu" 4
+Bugs in \s-1VMS\s0 exit handling tickled by \f(CW\*(C`Test::Harness\*(C'\fR 2.64 have been fixed.
+.IP "\(bu" 4
+Fix \f(CW\*(C`fcntl()\*(C'\fR locking capability test in \fIconfigure.com\fR.
+.IP "\(bu" 4
+Replaced \f(CW\*(C`shrplib=\*(Aqdefine\*(Aq\*(C'\fR with \f(CW\*(C`useshrplib=\*(Aqtrue\*(Aq\*(C'\fR on \s-1VMS.\s0
+.PP
+\fIWindows\fR
+.IX Subsection "Windows"
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Find\*(C'\fR used to fail when the target directory is a bare drive letter and
+\&\f(CW\*(C`no_chdir\*(C'\fR is 1 (the default is 0). [\s-1RT\s0 #41555]
+.IP "\(bu" 4
+A build problem with specifying \f(CW\*(C`USE_MULTI\*(C'\fR and \f(CW\*(C`USE_ITHREADS\*(C'\fR but without
+\&\f(CW\*(C`USE_IMP_SYS\*(C'\fR has been fixed.
+.IP "\(bu" 4
+The process id is no longer truncated to 16 bits on some Windows platforms
+( http://bugs.activestate.com/show_bug.cgi?id=72443 )
+.IP "\(bu" 4
+Fixed bug \s-1RT\s0 #54828 in \fIperlio.c\fR where calling \f(CW\*(C`binmode\*(C'\fR on Win32 and Cygwin
+may cause a segmentation fault.
+.SS "Smaller fixes"
+.IX Subsection "Smaller fixes"
+.IP "\(bu" 4
+It is now possible to overload \f(CW\*(C`eq\*(C'\fR when using \f(CW\*(C`nomethod\*(C'\fR.
+.IP "\(bu" 4
+Various problems using \f(CW\*(C`overload\*(C'\fR with 64 bit integers corrected.
+.IP "\(bu" 4
+The reference count of \f(CW\*(C`PerlIO\*(C'\fR file descriptors is now correctly handled.
+.IP "\(bu" 4
+On \s-1VMS,\s0 escaped dots will be preserved when converted to Unix syntax.
+.IP "\(bu" 4
+\&\f(CW\*(C`keys %+\*(C'\fR no longer throws an \f(CW\*(Aqambiguous\*(Aq\fR warning.
+.IP "\(bu" 4
+Using \f(CW\*(C`#!perl \-d\*(C'\fR could trigger an assertion, which has been fixed.
+.IP "\(bu" 4
+Don't stringify tied code references in \f(CW@INC\fR when calling \f(CW\*(C`require\*(C'\fR.
+.IP "\(bu" 4
+Code references in \f(CW@INC\fR report the correct file name when \f(CW\*(C`_\|_FILE_\|_\*(C'\fR is
+used.
+.IP "\(bu" 4
+Width and precision in sprintf didn't handle characters above 255 correctly.
+[\s-1RT\s0 #40473]
+.IP "\(bu" 4
+List slices with indices out of range now work more consistently.
+[\s-1RT\s0 #39882]
+.IP "\(bu" 4
+A change introduced with perl 5.8.1 broke the parsing of arguments of the form
+\&\f(CW\*(C`\-foo=bar\*(C'\fR with the \f(CW\*(C`\-s\*(C'\fR on the <#!> line. This has been fixed. See
+http://bugs.activestate.com/show_bug.cgi?id=43483
+.IP "\(bu" 4
+\&\f(CW\*(C`tr///\*(C'\fR is now threadsafe. Previously it was storing a swash inside its \s-1OP,\s0
+rather than in a pad.
+.IP "\(bu" 4
+\&\fIpod2html\fR labels anchors more consistently and handles nested definition
+lists better.
+.IP "\(bu" 4
+\&\f(CW\*(C`threads\*(C'\fR cleanup veto has been extended to include \f(CW\*(C`perl_free()\*(C'\fR and
+\&\f(CW\*(C`perl_destruct()\*(C'\fR
+.IP "\(bu" 4
+On some systems, changes to \f(CW$ENV{TZ}\fR would not always be
+respected by the underlying calls to \f(CW\*(C`localtime_r()\*(C'\fR. Perl now
+forces the inspection of the environment on these systems.
+.IP "\(bu" 4
+The special variable \f(CW$^R\fR is now more consistently set when executing
+regexps using the \f(CW\*(C`(?{...})\*(C'\fR construct. In particular, it will still
+be set even if backreferences or optional sub-patterns \f(CW\*(C`(?:...)?\*(C'\fR are
+used.
+.SH "New or Changed Diagnostics"
+.IX Header "New or Changed Diagnostics"
+.ie n .SS "panic: sv_chop %s"
+.el .SS "panic: sv_chop \f(CW%s\fP"
+.IX Subsection "panic: sv_chop %s"
+This new fatal error occurs when the C routine \f(CW\*(C`Perl_sv_chop()\*(C'\fR was passed a
+position that is not within the scalar's string buffer. This is caused by
+buggy \s-1XS\s0 code, and at this point recovery is not possible.
+.SS "Maximal count of pending signals (%s) exceeded"
+.IX Subsection "Maximal count of pending signals (%s) exceeded"
+This new fatal error occurs when the perl process has to abort due to
+too many pending signals, which is bound to prevent perl from being
+able to handle further incoming signals safely.
+.ie n .SS "panic: attempt to call %s in %s"
+.el .SS "panic: attempt to call \f(CW%s\fP in \f(CW%s\fP"
+.IX Subsection "panic: attempt to call %s in %s"
+This new fatal error occurs when the \s-1ACL\s0 version file test operator is used
+where it is not available on the current platform. Earlier checks mean that
+it should never be possible to get this.
+.SS "\s-1FETCHSIZE\s0 returned a negative value"
+.IX Subsection "FETCHSIZE returned a negative value"
+New error indicating that a tied array has claimed to have a negative
+number of elements.
+.ie n .SS "Can't upgrade %s (%d) to %d"
+.el .SS "Can't upgrade \f(CW%s\fP (%d) to \f(CW%d\fP"
+.IX Subsection "Can't upgrade %s (%d) to %d"
+Previously the internal error from the \s-1SV\s0 upgrade code was the less informative
+\&\fICan't upgrade that kind of scalar\fR. It now reports the current internal type,
+and the new type requested.
+.ie n .SS "%s argument is not a \s-1HASH\s0 or \s-1ARRAY\s0 element or a subroutine"
+.el .SS "\f(CW%s\fP argument is not a \s-1HASH\s0 or \s-1ARRAY\s0 element or a subroutine"
+.IX Subsection "%s argument is not a HASH or ARRAY element or a subroutine"
+This error, thrown if an invalid argument is provided to \f(CW\*(C`exists\*(C'\fR now
+correctly includes \*(L"or a subroutine\*(R". [\s-1RT\s0 #38955]
+.ie n .SS "Cannot make the non-overridable builtin %s fatal"
+.el .SS "Cannot make the non-overridable builtin \f(CW%s\fP fatal"
+.IX Subsection "Cannot make the non-overridable builtin %s fatal"
+This error in \f(CW\*(C`Fatal\*(C'\fR previously did not show the name of the builtin in
+question (now represented by \f(CW%s\fR above).
+.ie n .SS "Unrecognized character '%s' in column %d"
+.el .SS "Unrecognized character '%s' in column \f(CW%d\fP"
+.IX Subsection "Unrecognized character '%s' in column %d"
+This error previously did not state the column.
+.SS "Offset outside string"
+.IX Subsection "Offset outside string"
+This can now also be generated by a \f(CW\*(C`seek\*(C'\fR on a file handle using
+\&\f(CW\*(C`PerlIO::scalar\*(C'\fR.
+.SS "Invalid escape in the specified encoding in regexp; marked by <\-\- \s-1HERE\s0 in m/%s/"
+.IX Subsection "Invalid escape in the specified encoding in regexp; marked by <-- HERE in m/%s/"
+New error, introduced as part of the fix to \s-1RT\s0 #40641 to handle encoding
+of Unicode characters in regular expression comments.
+.SS "Your machine doesn't support dump/undump."
+.IX Subsection "Your machine doesn't support dump/undump."
+A more informative fatal error issued when calling \f(CW\*(C`dump\*(C'\fR on Win32 and
+Cygwin. (Given that the purpose of \f(CW\*(C`dump\*(C'\fR is to abort with a core dump,
+and core dumps can't be produced on these platforms, this is more useful than
+silently exiting.)
+.SH "Changed Internals"
+.IX Header "Changed Internals"
+The perl sources can now be compiled with a \*(C+ compiler instead of a C
+compiler. A necessary implementation details is that under \*(C+, the macro
+\&\f(CW\*(C`XS\*(C'\fR used to define XSUBs now includes an \f(CW\*(C`extern "C"\*(C'\fR definition. A side
+effect of this is that \fB\*(C+\fR code that used the construction
+.PP
+.Vb 1
+\& typedef XS(SwigPerlWrapper);
+.Ve
+.PP
+now needs to be written
+.PP
+.Vb 1
+\& typedef XSPROTO(SwigPerlWrapper);
+.Ve
+.PP
+using the new \f(CW\*(C`XSPROTO\*(C'\fR macro, in order to compile. C extensions are
+unaffected, although C extensions are encouraged to use \f(CW\*(C`XSPROTO\*(C'\fR too.
+This change was present in the 5.10.0 release of perl, so any actively
+maintained code that happened to use this construction should already have
+been adapted. Code that needs changing will fail with a compilation error.
+.PP
+\&\f(CW\*(C`set\*(C'\fR magic on localizing/assigning to a magic variable will now only
+trigger for \fIcontainer magics\fR, i.e. it will for \f(CW%ENV\fR or \f(CW%SIG\fR
+but not for \f(CW$#array\fR.
+.PP
+The new \s-1API\s0 macro \f(CW\*(C`newSVpvs()\*(C'\fR can be used in place of constructions such as
+\&\f(CW\*(C`newSVpvn("ISA", 3)\*(C'\fR. It takes a single string constant, and at C compile
+time determines its length.
+.PP
+The new \s-1API\s0 function \f(CW\*(C`Perl_newSV_type()\*(C'\fR can be used as a more efficient
+replacement of the common idiom
+.PP
+.Vb 2
+\& sv = newSV(0);
+\& sv_upgrade(sv, type);
+.Ve
+.PP
+Similarly \f(CW\*(C`Perl_newSVpvn_flags()\*(C'\fR can be used to combine
+\&\f(CW\*(C`Perl_newSVpv()\*(C'\fR with \f(CW\*(C`Perl_sv_2mortal()\*(C'\fR or the equivalent
+\&\f(CW\*(C`Perl_sv_newmortal()\*(C'\fR with \f(CW\*(C`Perl_sv_setpvn()\*(C'\fR
+.PP
+Two new macros \f(CW\*(C`mPUSHs()\*(C'\fR and \f(CW\*(C`mXPUSHs()\*(C'\fR are added, to make it easier to
+push mortal SVs onto the stack. They were then used to fix several bugs where
+values on the stack had not been mortalised.
+.PP
+A \f(CW\*(C`Perl_signbit()\*(C'\fR function was added to test the sign of an \f(CW\*(C`NV\*(C'\fR. It
+maps to the system one when available.
+.PP
+\&\f(CW\*(C`Perl_av_reify()\*(C'\fR, \f(CW\*(C`Perl_lex_end()\*(C'\fR, \f(CW\*(C`Perl_mod()\*(C'\fR, \f(CW\*(C`Perl_op_clear()\*(C'\fR,
+\&\f(CW\*(C`Perl_pop_return()\*(C'\fR, \f(CW\*(C`Perl_qerror()\*(C'\fR, \f(CW\*(C`Perl_setdefout()\*(C'\fR,
+\&\f(CW\*(C`Perl_vivify_defelem()\*(C'\fR and \f(CW\*(C`Perl_yylex()\*(C'\fR are now visible to extensions.
+This was required to allow \f(CW\*(C`Data::Alias\*(C'\fR to work on Windows.
+.PP
+\&\f(CW\*(C`Perl_find_runcv()\*(C'\fR is now visible to perl core extensions. This was required
+to allow \f(CW\*(C`Sub::Current\*(C'\fR to work on Windows.
+.PP
+\&\f(CW\*(C`ptr_table*\*(C'\fR functions are now available in unthreaded perl. \f(CW\*(C`Storable\*(C'\fR
+takes advantage of this.
+.PP
+There have been many small cleanups made to the internals. In particular,
+\&\f(CW\*(C`Perl_sv_upgrade()\*(C'\fR has been simplified considerably, with a straight-through
+code path that uses \f(CW\*(C`memset()\*(C'\fR and \f(CW\*(C`memcpy()\*(C'\fR to initialise the new body,
+rather than assignment via multiple temporary variables. It has also
+benefited from simplification and de-duplication of the arena management
+code.
+.PP
+A lot of small improvements in the code base were made due to reports from
+the Coverity static code analyzer.
+.PP
+Corrected use and documentation of \f(CW\*(C`Perl_gv_stashpv()\*(C'\fR, \f(CW\*(C`Perl_gv_stashpvn()\*(C'\fR,
+\&\f(CW\*(C`Perl_gv_stashsv()\*(C'\fR functions (last parameter is a bitmask, not boolean).
+.PP
+\&\f(CW\*(C`PERL_SYS_INIT\*(C'\fR, \f(CW\*(C`PERL_SYS_INIT3\*(C'\fR and \f(CW\*(C`PERL_SYS_TERM\*(C'\fR macros have been
+changed into functions.
+.PP
+\&\f(CW\*(C`PERLSYS_TERM\*(C'\fR no longer requires a context. \f(CW\*(C`PerlIO_teardown()\*(C'\fR
+is now called without a context, and debugging output in this function has
+been disabled because that required that an interpreter was present, an invalid
+assumption at termination time.
+.PP
+All compile time options which affect binary compatibility have been grouped
+together into a global variable (\f(CW\*(C`PL_bincompat_options\*(C'\fR).
+.PP
+The values of \f(CW\*(C`PERL_REVISION\*(C'\fR, \f(CW\*(C`PERL_VERSION\*(C'\fR and \f(CW\*(C`PERL_SUBVERSION\*(C'\fR are
+now baked into global variables (and hence into any shared perl library).
+Additionally under \f(CW\*(C`MULTIPLICITY\*(C'\fR, the perl executable now records the size of
+the interpreter structure (total, and for this version). Coupled with
+\&\f(CW\*(C`PL_bincompat_options\*(C'\fR this will allow 5.8.10 (and later), when compiled with a
+shared perl library, to perform sanity checks in \f(CW\*(C`main()\*(C'\fR to verify that the
+shared library is indeed binary compatible.
+.PP
+Symbolic references can now have embedded NULs. The new public function
+\&\f(CW\*(C`Perl_get_cvn_flags()\*(C'\fR can be used in extensions if you have to handle them.
+.SS "Macro cleanups"
+.IX Subsection "Macro cleanups"
+The core code, and \s-1XS\s0 code in \fIext\fR that is not dual-lived on \s-1CPAN,\s0 no longer
+uses the macros \f(CW\*(C`PL_na\*(C'\fR, \f(CW\*(C`NEWSV()\*(C'\fR, \f(CW\*(C`Null()\*(C'\fR, \f(CW\*(C`Nullav\*(C'\fR, \f(CW\*(C`Nullcv\*(C'\fR,
+\&\f(CW\*(C`Nullhv\*(C'\fR, \f(CW\*(C`Nullhv\*(C'\fR \fIetc\fR. Their use is discouraged in new code,
+particularly \f(CW\*(C`PL_na\*(C'\fR, which is a small performance hit.
+.SH "New Tests"
+.IX Header "New Tests"
+Many modules updated from \s-1CPAN\s0 incorporate new tests. Some core specific
+tests have been added:
+.IP "ext/DynaLoader/t/DynaLoader.t" 4
+.IX Item "ext/DynaLoader/t/DynaLoader.t"
+Tests for the \f(CW\*(C`DynaLoader\*(C'\fR module.
+.IP "t/comp/fold.t" 4
+.IX Item "t/comp/fold.t"
+Tests for compile-time constant folding.
+.IP "t/io/pvbm.t" 4
+.IX Item "t/io/pvbm.t"
+Tests incorporated from 5.10.0 which 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/lib/proxy_constant_subs.t" 4
+.IX Item "t/lib/proxy_constant_subs.t"
+Tests for the new form of constant subroutines.
+.IP "t/op/attrhand.t" 4
+.IX Item "t/op/attrhand.t"
+Tests for \f(CW\*(C`Attribute::Handlers\*(C'\fR.
+.IP "t/op/dbm.t" 4
+.IX Item "t/op/dbm.t"
+Tests for \f(CW\*(C`dbmopen\*(C'\fR.
+.IP "t/op/inccode\-tie.t" 4
+.IX Item "t/op/inccode-tie.t"
+Calls all tests in \fIt/op/inccode.t\fR after first tying \f(CW@INC\fR.
+.IP "t/op/incfilter.t" 4
+.IX Item "t/op/incfilter.t"
+Tests for source filters returned from code references in \f(CW@INC\fR.
+.IP "t/op/kill0.t" 4
+.IX Item "t/op/kill0.t"
+Tests for \s-1RT\s0 #30970.
+.IP "t/op/qrstack.t" 4
+.IX Item "t/op/qrstack.t"
+Tests for \s-1RT\s0 #41484.
+.IP "t/op/qr.t" 4
+.IX Item "t/op/qr.t"
+Tests for the \f(CW\*(C`qr//\*(C'\fR construct.
+.IP "t/op/regexp_qr_embed.t" 4
+.IX Item "t/op/regexp_qr_embed.t"
+Tests for the \f(CW\*(C`qr//\*(C'\fR construct within another regexp.
+.IP "t/op/regexp_qr.t" 4
+.IX Item "t/op/regexp_qr.t"
+Tests for the \f(CW\*(C`qr//\*(C'\fR construct.
+.IP "t/op/rxcode.t" 4
+.IX Item "t/op/rxcode.t"
+Tests for \s-1RT\s0 #32840.
+.IP "t/op/studytied.t" 4
+.IX Item "t/op/studytied.t"
+Tests for \f(CW\*(C`study\*(C'\fR on tied scalars.
+.IP "t/op/substT.t" 4
+.IX Item "t/op/substT.t"
+Tests for \f(CW\*(C`subst\*(C'\fR run under \f(CW\*(C`\-T\*(C'\fR mode.
+.IP "t/op/symbolcache.t" 4
+.IX Item "t/op/symbolcache.t"
+Tests for \f(CW\*(C`undef\*(C'\fR and \f(CW\*(C`delete\*(C'\fR on stash entries that are bound to
+subroutines or methods.
+.IP "t/op/upgrade.t" 4
+.IX Item "t/op/upgrade.t"
+Tests for \f(CW\*(C`Perl_sv_upgrade()\*(C'\fR.
+.IP "t/mro/package_aliases.t" 4
+.IX Item "t/mro/package_aliases.t"
+\&\s-1MRO\s0 tests for \f(CW\*(C`isa\*(C'\fR and package aliases.
+.IP "t/pod/twice.t" 4
+.IX Item "t/pod/twice.t"
+Tests for calling \f(CW\*(C`Pod::Parser\*(C'\fR twice.
+.IP "t/run/cloexec.t" 4
+.IX Item "t/run/cloexec.t"
+Tests for inheriting file descriptors across \f(CW\*(C`exec\*(C'\fR (close-on-exec).
+.IP "t/uni/cache.t" 4
+.IX Item "t/uni/cache.t"
+Tests for the \s-1UTF\-8\s0 caching code.
+.IP "t/uni/chr.t" 4
+.IX Item "t/uni/chr.t"
+Test that strange encodings do not upset \f(CW\*(C`Perl_pp_chr()\*(C'\fR.
+.IP "t/uni/greek.t" 4
+.IX Item "t/uni/greek.t"
+Tests for \s-1RT\s0 #40641.
+.IP "t/uni/latin2.t" 4
+.IX Item "t/uni/latin2.t"
+Tests for \s-1RT\s0 #40641.
+.IP "t/uni/overload.t" 4
+.IX Item "t/uni/overload.t"
+Tests for returning Unicode from overloaded values.
+.IP "t/uni/tie.t" 4
+.IX Item "t/uni/tie.t"
+Tests for returning Unicode from tied variables.
+.SH "Known Problems"
+.IX Header "Known Problems"
+There are no known new bugs.
+.PP
+However, programs that rely on bugs that have been fixed will have problems.
+Also, many bug fixes present in 5.10.0 can't be back-ported to the 5.8.x
+branch, because they require changes that are binary incompatible, or because
+the code changes are too large and hence too risky to incorporate.
+.PP
+We have only limited volunteer labour, and the maintenance burden is
+getting increasingly complex. Hence this will be the last significant
+release of the 5.8.x series. Any future releases of 5.8.x will likely
+only be to deal with security issues, and platform build
+failures. Hence you should look to migrating to 5.10.x, if you have
+not started already. Alternatively, if business requirements constrain
+you to continue to use 5.8.x, you may wish to consider commercial
+support from firms such as ActiveState.
+.SH "Platform Specific Notes"
+.IX Header "Platform Specific Notes"
+.SS "Win32"
+.IX Subsection "Win32"
+\&\f(CW\*(C`readdir()\*(C'\fR, \f(CW\*(C`cwd()\*(C'\fR, \f(CW$^X\fR and \f(CW@INC\fR now use the alternate (short)
+filename if the long name is outside the current codepage (Jan Dubois).
+.PP
+\fIUpdated Modules\fR
+.IX Subsection "Updated Modules"
+.IP "\(bu" 4
+\&\f(CW\*(C`Win32\*(C'\fR upgraded to version 0.38. Now has a documented 'WinVista' response
+from \f(CW\*(C`GetOSName\*(C'\fR and support for Vista's privilege elevation in \f(CW\*(C`IsAdminUser\*(C'\fR.
+Support for Unicode characters in path names. Improved cygwin and Win64
+compatibility.
+.IP "\(bu" 4
+\&\f(CW\*(C`Win32API\*(C'\fR updated to 0.1001_01
+.IP "\(bu" 4
+\&\f(CW\*(C`killpg()\*(C'\fR support added to \f(CW\*(C`MSWin32\*(C'\fR (Jan Dubois).
+.IP "\(bu" 4
+\&\f(CW\*(C`File::Spec::Win32\*(C'\fR upgraded to version 3.2701
+.SS "\s-1OS/2\s0"
+.IX Subsection "OS/2"
+\fIUpdated Modules\fR
+.IX Subsection "Updated Modules"
+.IP "\(bu" 4
+\&\f(CW\*(C`OS2::Process\*(C'\fR upgraded to 1.03
+.Sp
+Ilya Zakharevich has added and documented several \f(CW\*(C`Window*\*(C'\fR and \f(CW\*(C`Clipbrd*\*(C'\fR
+functions.
+.IP "\(bu" 4
+\&\f(CW\*(C`OS2::REXX::DLL\*(C'\fR, \f(CW\*(C`OS2::REXX\*(C'\fR updated to version 1.03
+.SS "\s-1VMS\s0"
+.IX Subsection "VMS"
+\fIUpdated Modules\fR
+.IX Subsection "Updated Modules"
+.IP "\(bu" 4
+\&\f(CW\*(C`DCLsym\*(C'\fR upgraded to version 1.03
+.IP "\(bu" 4
+\&\f(CW\*(C`Stdio\*(C'\fR upgraded to version 2.4
+.IP "\(bu" 4
+\&\f(CW\*(C`VMS::XSSymSet\*(C'\fR upgraded to 1.1.
+.SH "Obituary"
+.IX Header "Obituary"
+Nick Ing-Simmons, long time Perl hacker, author of the \f(CW\*(C`Tk\*(C'\fR and \f(CW\*(C`Encode\*(C'\fR
+modules, \fIperlio.c\fR in the core, and 5.003_02 pumpking, died of a heart
+attack on 25th September 2006. He will be missed.
+.SH "Acknowledgements"
+.IX Header "Acknowledgements"
+Some of the work in this release was funded by a \s-1TPF\s0 grant.
+.PP
+Steve Hay worked behind the scenes working out the causes of the differences
+between core modules, their \s-1CPAN\s0 releases, and previous core releases, and
+the best way to rectify them. He doesn't want to do it again. I know this
+feeling, and I'm very glad he did it this time, instead of me.
+.PP
+Paul Fenwick assembled a team of 18 volunteers, who broke the back of writing
+this document. In particular, Bradley Dean, Eddy Tan, and Vincent Pit
+provided half the team's contribution.
+.PP
+Schwern verified the list of updated module versions, correcting quite a few
+errors that I (and everyone else) had missed, both wrongly stated module
+versions, and changed modules that had not been listed.
+.PP
+The crack Berlin-based \s-1QA\s0 team of Andreas König and Slaven Rezic
+tirelessly re-built snapshots, tested most everything \s-1CPAN\s0 against
+them, and then identified the changes responsible for any module regressions,
+ensuring that several show-stopper bugs were stomped before the first release
+candidate was cut.
+.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 \fI\s-1AUTHORS\s0\fR.
+.PP
+And obviously, Larry Wall, without whom we wouldn't have Perl.
+.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://bugs.perl.org. 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. You can browse and search
+the Perl 5 bugs at http://bugs.perl.org/
+.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 \s-1CPAN.\s0
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+The \fIChanges\fR file for exhaustive details on what changed.
+.PP
+The \fI\s-1INSTALL\s0\fR file for how to build Perl.
+.PP
+The \fI\s-1README\s0\fR file for general stuff.
+.PP
+The \fIArtistic\fR and \fICopying\fR files for copyright information.