| =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 a 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 |