1635 lines
25 KiB
Plaintext
1635 lines
25 KiB
Plaintext
=encoding utf8
|
|
|
|
=head1 NAME
|
|
|
|
perl588delta - what is new for perl v5.8.8
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This document describes differences between the 5.8.7 release and
|
|
the 5.8.8 release.
|
|
|
|
=head1 Incompatible Changes
|
|
|
|
There are no changes intentionally incompatible with 5.8.7. If any exist,
|
|
they are bugs and reports are welcome.
|
|
|
|
=head1 Core Enhancements
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as
|
|
filenames, if the system supports respectively C<fchdir>, C<fchmod> and
|
|
C<fchown>, thanks to a patch provided by Gisle Aas.
|
|
|
|
=back
|
|
|
|
=head1 Modules and Pragmata
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<Attribute::Handlers> upgraded to version 0.78_02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fix
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<attrs> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup only
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<autouse> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Simplified implementation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<B> upgraded to version 1.09_01
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
The inheritance hierarchy of the C<B::> modules has been corrected;
|
|
C<B::NV> now inherits from C<B::SV> (instead of C<B::IV>).
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<blib> upgraded to version 1.03
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fix
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<ByteLoader> upgraded to version 0.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<CGI> upgraded to version 3.15
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Extraneous "?" from C<self_url()> removed
|
|
|
|
=item *
|
|
|
|
C<scrolling_list()> select attribute fixed
|
|
|
|
=item *
|
|
|
|
C<virtual_port> now works properly with the https protocol
|
|
|
|
=item *
|
|
|
|
C<upload_hook()> and C<append()> now works in function-oriented mode
|
|
|
|
=item *
|
|
|
|
C<POST_MAX> doesn't cause the client to hang any more
|
|
|
|
=item *
|
|
|
|
Automatic tab indexes are now disabled and new C<-tabindex> pragma has
|
|
been added to turn automatic indexes back on
|
|
|
|
=item *
|
|
|
|
C<end_form()> doesn't emit empty (and non-validating) C<< <div> >>
|
|
|
|
=item *
|
|
|
|
C<CGI::Carp> works better in certain mod_perl configurations
|
|
|
|
=item *
|
|
|
|
Setting C<$CGI::TMPDIRECTORY> is now effective
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<charnames> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<viacode()> now accept hex strings and has been optimized.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<CPAN> upgraded to version 1.76_02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
1 minor bug fix for Win32
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Cwd> upgraded to version 3.12
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<canonpath()> on Win32 now collapses F<foo\..> sections correctly.
|
|
|
|
=item *
|
|
|
|
Improved behaviour on Symbian OS.
|
|
|
|
=item *
|
|
|
|
Enhanced documentation and typo fixes
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Data::Dumper> upgraded to version 2.121_08
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
A problem where C<Data::Dumper> would sometimes update the iterator state
|
|
of hashes has been fixed
|
|
|
|
=item *
|
|
|
|
Numeric labels now work
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<DB> upgraded to version 1.01
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
A problem where the state of the regexp engine would sometimes get clobbered when running
|
|
under the debugger has been fixed.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<DB_File> upgraded to version 1.814
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Adds support for Berkeley DB 4.4.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Devel::DProf> upgraded to version 20050603.00
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Devel::Peek> upgraded to version 1.03
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Devel::PPPort> upgraded to version 3.06_01
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<--compat-version> argument checking has been improved
|
|
|
|
=item *
|
|
|
|
Files passed on the command line are filtered by default
|
|
|
|
=item *
|
|
|
|
C<--nofilter> option to override the filtering has been added
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<diagnostics> upgraded to version 1.15
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fix
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Digest> upgraded to version 1.14
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
The constructor now knows which module implements SHA-224
|
|
|
|
=item *
|
|
|
|
Documentation tweaks and typo fixes
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Digest::MD5> upgraded to version 2.36
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<XSLoader> is now used for faster loading
|
|
|
|
=item *
|
|
|
|
Enhanced documentation including MD5 weaknesses discovered lately
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Dumpvalue> upgraded to version 1.12
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation fix
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<DynaLoader> upgraded but unfortunately we're not able to increment its version number :-(
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Implements C<dl_unload_file> on Win32
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=item *
|
|
|
|
C<XSLoader> 0.06 incorporated; small optimisation for calling
|
|
C<bootstrap_inherit()> and documentation enhancements.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Encode> upgraded to version 2.12
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
A coderef is now acceptable for C<CHECK>!
|
|
|
|
=item *
|
|
|
|
3 new characters added to the ISO-8859-7 encoding
|
|
|
|
=item *
|
|
|
|
New encoding C<MIME-Header-ISO_2022_JP> added
|
|
|
|
=item *
|
|
|
|
Problem with partial characters and C<< encoding(utf-8-strict) >> fixed.
|
|
|
|
=item *
|
|
|
|
Documentation enhancements and typo fixes
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<English> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
the C<< $COMPILING >> variable has been added
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<ExtUtils::Constant> upgraded to version 0.17
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Improved compatibility with older versions of perl
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<ExtUtils::MakeMaker> upgraded to version 6.30 (was 6.17)
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Too much to list here; see L<http://search.cpan.org/dist/ExtUtils-MakeMaker/Changes>
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Basename> upgraded to version 2.74, with changes contributed by Michael Schwern.
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation clarified and errors corrected.
|
|
|
|
=item *
|
|
|
|
C<basename> now strips trailing path separators before processing the name.
|
|
|
|
=item *
|
|
|
|
C<basename> now returns C</> for parameter C</>, to make C<basename>
|
|
consistent with the shell utility of the same name.
|
|
|
|
=item *
|
|
|
|
The suffix is no longer stripped if it is identical to the remaining characters
|
|
in the name, again for consistency with the shell utility.
|
|
|
|
=item *
|
|
|
|
Some internal code cleanup.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Copy> upgraded to version 2.09
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Copying a file onto itself used to fail.
|
|
|
|
=item *
|
|
|
|
Moving a file between file systems now preserves the access and
|
|
modification time stamps
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Find> upgraded to version 1.10
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Win32 portability fixes
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Glob> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Path> upgraded to version 1.08
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<mkpath> now preserves C<errno> when C<mkdir> fails
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<File::Spec> upgraded to version 3.12
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<< File::Spec->rootdir() >> now returns C<\> on Win32, instead of C</>
|
|
|
|
=item *
|
|
|
|
C<$^O> could sometimes become tainted. This has been fixed.
|
|
|
|
=item *
|
|
|
|
C<canonpath> on Win32 now collapses C<foo/..> (or C<foo\..>) sections
|
|
correctly, rather than doing the "misguided" work it was previously doing.
|
|
Note that C<canonpath> on Unix still does B<not> collapse these sections, as
|
|
doing so would be incorrect.
|
|
|
|
=item *
|
|
|
|
Some documentation improvements
|
|
|
|
=item *
|
|
|
|
Some internal code cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<FileCache> upgraded to version 1.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
POD formatting errors in the documentation fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Filter::Simple> upgraded to version 0.82
|
|
|
|
=item *
|
|
|
|
C<FindBin> upgraded to version 1.47
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Now works better with directories where access rights are more
|
|
restrictive than usual.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<GDBM_File> upgraded to version 1.08
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Getopt::Long> upgraded to version 2.35
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<prefix_pattern> has now been complemented by a new configuration
|
|
option C<long_prefix_pattern> that allows the user to specify what
|
|
prefix patterns should have long option style semantics applied.
|
|
|
|
=item *
|
|
|
|
Options can now take multiple values at once (experimental)
|
|
|
|
=item *
|
|
|
|
Various bug fixes
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<if> upgraded to version 0.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Give more meaningful error messages from C<if> when invoked with a
|
|
condition in list context.
|
|
|
|
=item *
|
|
|
|
Restore backwards compatibility with earlier versions of perl
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<IO> upgraded to version 1.22
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<IPC::Open2> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<IPC::Open3> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<List::Util> upgraded to version 1.18 (was 1.14)
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Fix pure-perl version of C<refaddr> to avoid blessing an un-blessed reference
|
|
|
|
=item *
|
|
|
|
Use C<XSLoader> for faster loading
|
|
|
|
=item *
|
|
|
|
Fixed various memory leaks
|
|
|
|
=item *
|
|
|
|
Internal cleanup and portability fixes
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Math::Complex> upgraded to version 1.35
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<atan2(0, i)> now works, as do all the (computable) complex argument cases
|
|
|
|
=item *
|
|
|
|
Fixes for certain bugs in C<make> and C<emake>
|
|
|
|
=item *
|
|
|
|
Support returning the I<k>th root directly
|
|
|
|
=item *
|
|
|
|
Support C<[2,-3pi/8]> in C<emake>
|
|
|
|
=item *
|
|
|
|
Support C<inf> for C<make>/C<emake>
|
|
|
|
=item *
|
|
|
|
Document C<make>/C<emake> more visibly
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Math::Trig> upgraded to version 1.03
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Add more great circle routines: C<great_circle_waypoint> and
|
|
C<great_circle_destination>
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<MIME::Base64> upgraded to version 3.07
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Use C<XSLoader> for faster loading
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<NDBM_File> upgraded to version 1.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<ODBM_File> upgraded to version 1.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fixed
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Opcode> upgraded to version 1.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<open> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<overload> upgraded to version 1.04
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<PerlIO> upgraded to version 1.04
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<PerlIO::via> iterate over layers properly now
|
|
|
|
=item *
|
|
|
|
C<PerlIO::scalar> understands C<< $/ = "" >> now
|
|
|
|
=item *
|
|
|
|
C<encoding(utf-8-strict)> with partial characters now works
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Pod::Functions> upgraded to version 1.03
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Pod::Html> upgraded to version 1.0504
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
HTML output will now correctly link
|
|
to C<=item>s on the same page, and should be valid XHTML.
|
|
|
|
=item *
|
|
|
|
Variable names are recognized as intended
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Pod::Parser> upgraded to version 1.32
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Allow files that start with C<=head> on the first line
|
|
|
|
=item *
|
|
|
|
Win32 portability fix
|
|
|
|
=item *
|
|
|
|
Exit status of C<pod2usage> fixed
|
|
|
|
=item *
|
|
|
|
New C<-noperldoc> switch for C<pod2usage>
|
|
|
|
=item *
|
|
|
|
Arbitrary URL schemes now allowed
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<POSIX> upgraded to version 1.09
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<re> upgraded to version 0.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Safe> upgraded to version 2.12
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Minor documentation enhancement
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<SDBM_File> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fixed
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Socket> upgraded to version 1.78
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Storable> upgraded to version 2.15
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
This includes the C<STORABLE_attach> hook functionality added by
|
|
Adam Kennedy, and more frugal memory requirements when storing under C<ithreads>, by
|
|
using the C<ithreads> cloning tracking code.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Switch> upgraded to version 2.10_01
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Sys::Syslog> upgraded to version 0.13
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Now provides numeric macros and meaningful C<Exporter> tags.
|
|
|
|
=item *
|
|
|
|
No longer uses C<Sys::Hostname> as it may provide useless values in
|
|
unconfigured network environments, so instead uses C<INADDR_LOOPBACK> directly.
|
|
|
|
=item *
|
|
|
|
C<syslog()> now uses local timestamp.
|
|
|
|
=item *
|
|
|
|
C<setlogmask()> now behaves like its C counterpart.
|
|
|
|
=item *
|
|
|
|
C<setlogsock()> will now C<croak()> as documented.
|
|
|
|
=item *
|
|
|
|
Improved error and warnings messages.
|
|
|
|
=item *
|
|
|
|
Improved documentation.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Term::ANSIColor> upgraded to version 1.10
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Fixes a bug in C<colored> when C<$EACHLINE> is set that caused it to not color
|
|
lines consisting solely of 0 (literal zero).
|
|
|
|
=item *
|
|
|
|
Improved tests.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Term::ReadLine> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation tweaks
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Test::Harness> upgraded to version 2.56 (was 2.48)
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
The C<Test::Harness> timer is now off by default.
|
|
|
|
=item *
|
|
|
|
Now shows elapsed time in milliseconds.
|
|
|
|
=item *
|
|
|
|
Various bug fixes
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Test::Simple> upgraded to version 0.62 (was 0.54)
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<is_deeply()> no longer fails to work for many cases
|
|
|
|
=item *
|
|
|
|
Various minor bug fixes
|
|
|
|
=item *
|
|
|
|
Documentation enhancements
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Text::Tabs> upgraded to version 2005.0824
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Provides a faster implementation of C<expand>
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Text::Wrap> upgraded to version 2005.082401
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Adds C<$Text::Wrap::separator2>, which allows you to preserve existing newlines
|
|
but add line-breaks with some other string.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<threads> upgraded to version 1.07
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<threads> will now honour C<no warnings 'threads'>
|
|
|
|
=item *
|
|
|
|
A thread's interpreter is now freed after C<< $t->join() >> rather than after
|
|
C<undef $t>, which should fix some C<ithreads> memory leaks. (Fixed by Dave
|
|
Mitchell)
|
|
|
|
=item *
|
|
|
|
Some documentation typo fixes.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<threads::shared> upgraded to version 0.94
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation changes only
|
|
|
|
=item *
|
|
|
|
Note: An improved implementation of C<threads::shared> is available on
|
|
CPAN - this will be merged into 5.8.9 if it proves stable.
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Tie::Hash> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Time::HiRes> upgraded to version 1.86 (was 1.66)
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
C<clock_nanosleep()> and C<clock()> functions added
|
|
|
|
=item *
|
|
|
|
Support for the POSIX C<clock_gettime()> and C<clock_getres()> has been added
|
|
|
|
=item *
|
|
|
|
Return C<undef> or an empty list if the C C<gettimeofday()> function fails
|
|
|
|
=item *
|
|
|
|
Improved C<nanosleep> detection
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Unicode::Collate> upgraded to version 0.52
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Now implements UCA Revision 14 (based on Unicode 4.1.0).
|
|
|
|
=item *
|
|
|
|
C<< Unicode::Collate->new >> method no longer overwrites user's C<$_>
|
|
|
|
=item *
|
|
|
|
Enhanced documentation
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Unicode::UCD> upgraded to version 0.24
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<User::grent> upgraded to version 1.01
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typo fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<utf8> upgraded to version 1.06
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<vmsish> upgraded to version 1.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Documentation typos fixed
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<warnings> upgraded to version 1.05
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Gentler messing with C<Carp::> internals
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=item *
|
|
|
|
Documentation update
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<Win32> upgraded to version 0.2601
|
|
|
|
=for cynics And how many perl 5.8.x versions can I release ahead of Vista?
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Provides Windows Vista support to C<Win32::GetOSName>
|
|
|
|
=item *
|
|
|
|
Documentation enhancements
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
C<XS::Typemap> upgraded to version 0.02
|
|
|
|
=over
|
|
|
|
=item *
|
|
|
|
Internal cleanup
|
|
|
|
=back
|
|
|
|
=back
|
|
|
|
=head1 Utility Changes
|
|
|
|
=head2 C<h2xs> enhancements
|
|
|
|
C<h2xs> implements new option C<--use-xsloader> to force use of
|
|
C<XSLoader> even in backwards compatible modules.
|
|
|
|
The handling of authors' names that had apostrophes has been fixed.
|
|
|
|
Any enums with negative values are now skipped.
|
|
|
|
=head2 C<perlivp> enhancements
|
|
|
|
C<perlivp> implements new option C<-a> and will not check for F<*.ph>
|
|
files by default any more. Use the C<-a> option to run I<all> tests.
|
|
|
|
=head1 New Documentation
|
|
|
|
The L<perlglossary> manpage is a glossary of terms used in the Perl
|
|
documentation, technical and otherwise, kindly provided by O'Reilly Media,
|
|
inc.
|
|
|
|
=head1 Performance Enhancements
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of
|
|
Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only
|
|
happens at program exit, it may be skipped completely.
|
|
|
|
=item *
|
|
|
|
Salvador Fandiño provided improvements to reduce the memory usage of C<sort>
|
|
and to speed up some cases.
|
|
|
|
=item *
|
|
|
|
Jarkko Hietaniemi and Andy Lester worked to mark as much data as possible in
|
|
the C source files as C<static>, to increase the proportion of the executable
|
|
file that the operating system can share between process, and thus reduce
|
|
real memory usage on multi-user systems.
|
|
|
|
=back
|
|
|
|
=head1 Installation and Configuration Improvements
|
|
|
|
Parallel makes should work properly now, although there may still be problems
|
|
if C<make test> is instructed to run in parallel.
|
|
|
|
Building with Borland's compilers on Win32 should work more smoothly. In
|
|
particular Steve Hay has worked to side step many warnings emitted by their
|
|
compilers and at least one C compiler internal error.
|
|
|
|
C<Configure> will now detect C<clearenv> and C<unsetenv>, thanks to a patch
|
|
from Alan Burlison. It will also probe for C<futimes> and whether C<sprintf>
|
|
correctly returns the length of the formatted string, which will both be used
|
|
in perl 5.8.9.
|
|
|
|
There are improved hints for next-3.0, vmesa, IX, Darwin, Solaris, Linux,
|
|
DEC/OSF, HP-UX and MPE/iX
|
|
|
|
Perl extensions on Windows now can be statically built into the Perl DLL,
|
|
thanks to a work by Vadim Konovalov. (This improvement was actually in 5.8.7,
|
|
but was accidentally omitted from L<perl587delta>).
|
|
|
|
=head1 Selected Bug Fixes
|
|
|
|
=head2 no warnings 'category' works correctly with -w
|
|
|
|
Previously when running with warnings enabled globally via C<-w>, selective
|
|
disabling of specific warning categories would actually turn off all warnings.
|
|
This is now fixed; now C<no warnings 'io';> will only turn off warnings in the
|
|
C<io> class. Previously it would erroneously turn off all warnings.
|
|
|
|
This bug fix may cause some programs to start correctly issuing warnings.
|
|
|
|
=head2 Remove over-optimisation
|
|
|
|
Perl 5.8.4 introduced a change so that assignments of C<undef> to a
|
|
scalar, or of an empty list to an array or a hash, were optimised away. As
|
|
this could cause problems when C<goto> jumps were involved, this change
|
|
has been backed out.
|
|
|
|
=head2 sprintf() fixes
|
|
|
|
Using the sprintf() function with some formats could lead to a buffer
|
|
overflow in some specific cases. This has been fixed, along with several
|
|
other bugs, notably in bounds checking.
|
|
|
|
In related fixes, it was possible for badly written code that did not follow
|
|
the documentation of C<Sys::Syslog> to have formatting vulnerabilities.
|
|
C<Sys::Syslog> has been changed to protect people from poor quality third
|
|
party code.
|
|
|
|
=head2 Debugger and Unicode slowdown
|
|
|
|
It had been reported that running under perl's debugger when processing
|
|
Unicode data could cause unexpectedly large slowdowns. The most likely cause
|
|
of this was identified and fixed by Nicholas Clark.
|
|
|
|
=head2 Smaller fixes
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
C<FindBin> now works better with directories where access rights are more
|
|
restrictive than usual.
|
|
|
|
=item *
|
|
|
|
Several memory leaks in ithreads were closed. An improved implementation of
|
|
C<threads::shared> is available on CPAN - this will be merged into 5.8.9 if
|
|
it proves stable.
|
|
|
|
=item *
|
|
|
|
Trailing spaces are now trimmed from C<$!> and C<$^E>.
|
|
|
|
=item *
|
|
|
|
Operations that require perl to read a process's list of groups, such as reads
|
|
of C<$(> and C<$)>, now dynamically allocate memory rather than using a
|
|
fixed sized array. The fixed size array could cause C stack exhaustion on
|
|
systems configured to use large numbers of groups.
|
|
|
|
=item *
|
|
|
|
C<PerlIO::scalar> now works better with non-default C<$/> settings.
|
|
|
|
=item *
|
|
|
|
You can now use the C<x> operator to repeat a C<qw//> list. This used
|
|
to raise a syntax error.
|
|
|
|
=item *
|
|
|
|
The debugger now traces correctly execution in eval("")uated code that
|
|
contains #line directives.
|
|
|
|
=item *
|
|
|
|
The value of the C<open> pragma is no longer ignored for three-argument
|
|
opens.
|
|
|
|
=item *
|
|
|
|
The optimisation of C<for (reverse @a)> introduced in perl 5.8.6 could
|
|
misbehave when the array had undefined elements and was used in LVALUE
|
|
context. Dave Mitchell provided a fix.
|
|
|
|
=item *
|
|
|
|
Some case insensitive matches between UTF-8 encoded data and 8 bit regexps,
|
|
and vice versa, could give malformed character warnings. These have been
|
|
fixed by Dave Mitchell and Yves Orton.
|
|
|
|
=item *
|
|
|
|
C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where
|
|
the length UTF-8 encoding of the string in lower case, upper case or title
|
|
case differed. This was fixed by Nicholas Clark.
|
|
|
|
=item *
|
|
|
|
Perl will now use the C library calls C<unsetenv> and C<clearenv> if present
|
|
to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch
|
|
from Alan Burlison.
|
|
|
|
=back
|
|
|
|
=head1 New or Changed Diagnostics
|
|
|
|
=head2 Attempt to set length of freed array
|
|
|
|
This is a new warning, produced in situations such as this:
|
|
|
|
$r = do {my @a; \$#a};
|
|
$$r = 503;
|
|
|
|
=head2 Non-string passed as bitmask
|
|
|
|
This is a new warning, produced when number has been passed as an argument to
|
|
select(), instead of a bitmask.
|
|
|
|
# Wrong, will now warn
|
|
$rin = fileno(STDIN);
|
|
($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
|
|
|
|
# Should be
|
|
$rin = '';
|
|
vec($rin,fileno(STDIN),1) = 1;
|
|
($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
|
|
|
|
=head2 Search pattern not terminated or ternary operator parsed as search pattern
|
|
|
|
This syntax error indicates that the lexer couldn't find the final
|
|
delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
|
|
this error message makes it easier to diagnose syntax errors.
|
|
|
|
=head1 Changed Internals
|
|
|
|
There has been a fair amount of refactoring of the C<C> source code, partly to
|
|
make it tidier and more maintainable. The resulting object code and the
|
|
C<perl> binary may well be smaller than 5.8.7, in particular due to a change
|
|
contributed by Dave Mitchell which reworked the warnings code to be
|
|
significantly smaller. Apart from being smaller and possibly faster, there
|
|
should be no user-detectable changes.
|
|
|
|
Andy Lester supplied many improvements to determine which function
|
|
parameters and local variables could actually be declared C<const> to the C
|
|
compiler. Steve Peters provided new C<*_set> macros and reworked the core to
|
|
use these rather than assigning to macros in LVALUE context.
|
|
|
|
Dave Mitchell improved the lexer debugging output under C<-DT>
|
|
|
|
Nicholas Clark changed the string buffer allocation so that it is now rounded
|
|
up to the next multiple of 4 (or 8 on platforms with 64 bit pointers). This
|
|
should reduce the number of calls to C<realloc> without actually using any
|
|
extra memory.
|
|
|
|
The C<HV>'s array of C<HE*>s is now allocated at the correct (minimal) size,
|
|
thanks to another change by Nicholas Clark. Compile with
|
|
C<-DPERL_USE_LARGE_HV_ALLOC> to use the old, sloppier, default.
|
|
|
|
For XS or embedding debugging purposes, if perl is compiled with
|
|
C<-DDEBUG_LEAKING_SCALARS_FORK_DUMP> in addition to
|
|
C<-DDEBUG_LEAKING_SCALARS> then a child process is C<fork>ed just before
|
|
global destruction, which is used to display the values of any scalars
|
|
found to have leaked at the end of global destruction. Without this, the
|
|
scalars have already been freed sufficiently at the point of detection that
|
|
it is impossible to produce any meaningful dump of their contents. This
|
|
feature was implemented by the indefatigable Nicholas Clark, based on an idea
|
|
by Mike Giroux.
|
|
|
|
=head1 Platform Specific Problems
|
|
|
|
The optimiser on HP-UX 11.23 (Itanium 2) is currently partly disabled (scaled
|
|
down to +O1) when using HP C-ANSI-C; the cause of problems at higher
|
|
optimisation levels is still unclear.
|
|
|
|
There are a handful of remaining test failures on VMS, mostly due to
|
|
test fixes and minor module tweaks with too many dependencies to
|
|
integrate into this release from the development stream, where they have
|
|
all been corrected. The following is a list of expected failures with
|
|
the patch number of the fix where that is known:
|
|
|
|
ext/Devel/PPPort/t/ppphtest.t #26913
|
|
ext/List/Util/t/p_tainted.t #26912
|
|
lib/ExtUtils/t/PL_FILES.t #26813
|
|
lib/ExtUtils/t/basic.t #26813
|
|
t/io/fs.t
|
|
t/op/cmp.t
|
|
|
|
=head1 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.
|
|
|
|
If you believe you have an unreported bug, please run the B<perlbug>
|
|
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 C<perl -V>, 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/
|
|
|
|
=head1 SEE ALSO
|
|
|
|
The F<Changes> file for exhaustive details on what changed.
|
|
|
|
The F<INSTALL> file for how to build Perl.
|
|
|
|
The F<README> file for general stuff.
|
|
|
|
The F<Artistic> and F<Copying> files for copyright information.
|
|
|
|
=cut
|