diff options
Diffstat (limited to 'upstream/debian-bookworm/man1/perl589delta.1')
-rw-r--r-- | upstream/debian-bookworm/man1/perl589delta.1 | 1672 |
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}"; # „ +.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. |