5 perl588delta - what is new for perl v5.8.8
9 This document describes differences between the 5.8.7 release and
12 =head1 Incompatible Changes
14 There are no changes intentionally incompatible with 5.8.7. If any exist,
15 they are bugs and reports are welcome.
17 =head1 Core Enhancements
23 C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as
24 filenames, if the system supports respectively C<fchdir>, C<fchmod> and
25 C<fchown>, thanks to a patch provided by Gisle Aas.
29 =head1 Modules and Pragmata
35 C<Attribute::Handlers> upgraded to version 0.78_02
41 Documentation typo fix
47 C<attrs> upgraded to version 1.02
59 C<autouse> upgraded to version 1.05
65 Simplified implementation
71 C<B> upgraded to version 1.09_01
77 The inheritance hierarchy of the C<B::> modules has been corrected;
78 C<B::NV> now inherits from C<B::SV> (instead of C<B::IV>).
84 C<blib> upgraded to version 1.03
90 Documentation typo fix
96 C<ByteLoader> upgraded to version 0.06
108 C<CGI> upgraded to version 3.15
114 Extraneous "?" from C<self_url()> removed
118 C<scrolling_list()> select attribute fixed
122 C<virtual_port> now works properly with the https protocol
126 C<upload_hook()> and C<append()> now works in function-oriented mode
130 C<POST_MAX> doesn't cause the client to hang any more
134 Automatic tab indexes are now disabled and new C<-tabindex> pragma has
135 been added to turn automatic indexes back on
139 C<end_form()> doesn't emit empty (and non-validating) C<< <div> >>
143 C<CGI::Carp> works better in certain mod_perl configurations
147 Setting C<$CGI::TMPDIRECTORY> is now effective
151 Enhanced documentation
157 C<charnames> upgraded to version 1.05
163 C<viacode()> now accept hex strings and has been optimized.
169 C<CPAN> upgraded to version 1.76_02
175 1 minor bug fix for Win32
181 C<Cwd> upgraded to version 3.12
187 C<canonpath()> on Win32 now collapses F<foo\..> sections correctly.
191 Improved behaviour on Symbian OS.
195 Enhanced documentation and typo fixes
205 C<Data::Dumper> upgraded to version 2.121_08
211 A problem where C<Data::Dumper> would sometimes update the iterator state
212 of hashes has been fixed
216 Numeric labels now work
226 C<DB> upgraded to version 1.01
232 A problem where the state of the regexp engine would sometimes get clobbered when running
233 under the debugger has been fixed.
239 C<DB_File> upgraded to version 1.814
245 Adds support for Berkeley DB 4.4.
251 C<Devel::DProf> upgraded to version 20050603.00
263 C<Devel::Peek> upgraded to version 1.03
275 C<Devel::PPPort> upgraded to version 3.06_01
281 C<--compat-version> argument checking has been improved
285 Files passed on the command line are filtered by default
289 C<--nofilter> option to override the filtering has been added
293 Enhanced documentation
299 C<diagnostics> upgraded to version 1.15
305 Documentation typo fix
311 C<Digest> upgraded to version 1.14
317 The constructor now knows which module implements SHA-224
321 Documentation tweaks and typo fixes
327 C<Digest::MD5> upgraded to version 2.36
333 C<XSLoader> is now used for faster loading
337 Enhanced documentation including MD5 weaknesses discovered lately
343 C<Dumpvalue> upgraded to version 1.12
355 C<DynaLoader> upgraded but unfortunately we're not able to increment its version number :-(
361 Implements C<dl_unload_file> on Win32
369 C<XSLoader> 0.06 incorporated; small optimisation for calling
370 C<bootstrap_inherit()> and documentation enhancements.
376 C<Encode> upgraded to version 2.12
382 A coderef is now acceptable for C<CHECK>!
386 3 new characters added to the ISO-8859-7 encoding
390 New encoding C<MIME-Header-ISO_2022_JP> added
394 Problem with partial characters and C<< encoding(utf-8-strict) >> fixed.
398 Documentation enhancements and typo fixes
404 C<English> upgraded to version 1.02
410 the C<< $COMPILING >> variable has been added
416 C<ExtUtils::Constant> upgraded to version 0.17
422 Improved compatibility with older versions of perl
428 C<ExtUtils::MakeMaker> upgraded to version 6.30 (was 6.17)
434 Too much to list here; see L<http://search.cpan.org/dist/ExtUtils-MakeMaker/Changes>
440 C<File::Basename> upgraded to version 2.74, with changes contributed by Michael Schwern.
446 Documentation clarified and errors corrected.
450 C<basename> now strips trailing path separators before processing the name.
454 C<basename> now returns C</> for parameter C</>, to make C<basename>
455 consistent with the shell utility of the same name.
459 The suffix is no longer stripped if it is identical to the remaining characters
460 in the name, again for consistency with the shell utility.
464 Some internal code cleanup.
470 C<File::Copy> upgraded to version 2.09
476 Copying a file onto itself used to fail.
480 Moving a file between file systems now preserves the access and
481 modification time stamps
487 C<File::Find> upgraded to version 1.10
493 Win32 portability fixes
497 Enhanced documentation
503 C<File::Glob> upgraded to version 1.05
515 C<File::Path> upgraded to version 1.08
521 C<mkpath> now preserves C<errno> when C<mkdir> fails
527 C<File::Spec> upgraded to version 3.12
533 C<File::Spec->rootdir()> now returns C<\> on Win32, instead of C</>
537 C<$^O> could sometimes become tainted. This has been fixed.
541 C<canonpath> on Win32 now collapses C<foo/..> (or C<foo\..>) sections
542 correctly, rather than doing the "misguided" work it was previously doing.
543 Note that C<canonpath> on Unix still does B<not> collapse these sections, as
544 doing so would be incorrect.
548 Some documentation improvements
552 Some internal code cleanup
558 C<FileCache> upgraded to version 1.06
564 POD formatting errors in the documentation fixed
570 C<Filter::Simple> upgraded to version 0.82
574 C<FindBin> upgraded to version 1.47
580 Now works better with directories where access rights are more
581 restrictive than usual.
587 C<GDBM_File> upgraded to version 1.08
599 C<Getopt::Long> upgraded to version 2.35
605 C<prefix_pattern> has now been complemented by a new configuration
606 option C<long_prefix_pattern> that allows the user to specify what
607 prefix patterns should have long option style semantics applied.
611 Options can now take multiple values at once (experimental)
621 C<if> upgraded to version 0.05
627 Give more meaningful error messages from C<if> when invoked with a
628 condition in list context.
632 Restore backwards compatibility with earlier versions of perl
638 C<IO> upgraded to version 1.22
644 Enhanced documentation
654 C<IPC::Open2> upgraded to version 1.02
660 Enhanced documentation
666 C<IPC::Open3> upgraded to version 1.02
672 Enhanced documentation
678 C<List::Util> upgraded to version 1.18 (was 1.14)
684 Fix pure-perl version of C<refaddr> to avoid blessing an un-blessed reference
688 Use C<XSLoader> for faster loading
692 Fixed various memory leaks
696 Internal cleanup and portability fixes
702 C<Math::Complex> upgraded to version 1.35
708 C<atan2(0, i)> now works, as do all the (computable) complex argument cases
712 Fixes for certain bugs in C<make> and C<emake>
716 Support returning the I<k>th root directly
720 Support C<[2,-3pi/8]> in C<emake>
724 Support C<inf> for C<make>/C<emake>
728 Document C<make>/C<emake> more visibly
734 C<Math::Trig> upgraded to version 1.03
740 Add more great circle routines: C<great_circle_waypoint> and
741 C<great_circle_destination>
747 C<MIME::Base64> upgraded to version 3.07
753 Use C<XSLoader> for faster loading
757 Enhanced documentation
767 C<NDBM_File> upgraded to version 1.06
773 Enhanced documentation
779 C<ODBM_File> upgraded to version 1.06
785 Documentation typo fixed
795 C<Opcode> upgraded to version 1.06
801 Enhanced documentation
811 C<open> upgraded to version 1.05
817 Enhanced documentation
823 C<overload> upgraded to version 1.04
829 Enhanced documentation
835 C<PerlIO> upgraded to version 1.04
841 C<PerlIO::via> iterate over layers properly now
845 C<PerlIO::scalar> understands C<< $/ = "" >> now
849 C<encoding(utf-8-strict)> with partial characters now works
853 Enhanced documentation
863 C<Pod::Functions> upgraded to version 1.03
869 Documentation typos fixed
875 C<Pod::Html> upgraded to version 1.0504
881 HTML output will now correctly link
882 to C<=item>s on the same page, and should be valid XHTML.
886 Variable names are recognized as intended
890 Documentation typos fixed
896 C<Pod::Parser> upgraded to version 1.32
902 Allow files that start with C<=head> on the first line
906 Win32 portability fix
910 Exit status of C<pod2usage> fixed
914 New C<-noperldoc> switch for C<pod2usage>
918 Arbitrary URL schemes now allowed
922 Documentation typos fixed
928 C<POSIX> upgraded to version 1.09
934 Documentation typos fixed
944 C<re> upgraded to version 0.05
950 Documentation typo fixed
956 C<Safe> upgraded to version 2.12
962 Minor documentation enhancement
968 C<SDBM_File> upgraded to version 1.05
974 Documentation typo fixed
984 C<Socket> upgraded to version 1.78
996 C<Storable> upgraded to version 2.15
1002 This includes the C<STORABLE_attach> hook functionality added by
1003 Adam Kennedy, and more frugal memory requirements when storing under C<ithreads>, by
1004 using the C<ithreads> cloning tracking code.
1010 C<Switch> upgraded to version 2.10_01
1016 Documentation typos fixed
1022 C<Sys::Syslog> upgraded to version 0.13
1028 Now provides numeric macros and meaningful C<Exporter> tags.
1032 No longer uses C<Sys::Hostname> as it may provide useless values in
1033 unconfigured network environments, so instead uses C<INADDR_LOOPBACK> directly.
1037 C<syslog()> now uses local timestamp.
1041 C<setlogmask()> now behaves like its C counterpart.
1045 C<setlogsock()> will now C<croak()> as documented.
1049 Improved error and warnings messages.
1053 Improved documentation.
1059 C<Term::ANSIColor> upgraded to version 1.10
1065 Fixes a bug in C<colored> when C<$EACHLINE> is set that caused it to not color
1066 lines consisting solely of 0 (literal zero).
1076 C<Term::ReadLine> upgraded to version 1.02
1082 Documentation tweaks
1088 C<Test::Harness> upgraded to version 2.56 (was 2.48)
1094 The C<Test::Harness> timer is now off by default.
1098 Now shows elapsed time in milliseconds.
1108 C<Test::Simple> upgraded to version 0.62 (was 0.54)
1114 C<is_deeply()> no longer fails to work for many cases
1118 Various minor bug fixes
1122 Documentation enhancements
1128 C<Text::Tabs> upgraded to version 2005.0824
1134 Provides a faster implementation of C<expand>
1140 C<Text::Wrap> upgraded to version 2005.082401
1146 Adds C<$Text::Wrap::separator2>, which allows you to preserve existing newlines
1147 but add line-breaks with some other string.
1153 C<threads> upgraded to version 1.07
1159 C<threads> will now honour C<no warnings 'threads'>
1163 A thread's interpreter is now freed after C<< $t->join() >> rather than after
1164 C<undef $t>, which should fix some C<ithreads> memory leaks. (Fixed by Dave
1169 Some documentation typo fixes.
1175 C<threads::shared> upgraded to version 0.94
1181 Documentation changes only
1185 Note: An improved implementation of C<threads::shared> is available on
1186 CPAN - this will be merged into 5.8.9 if it proves stable.
1192 C<Tie::Hash> upgraded to version 1.02
1198 Documentation typo fixed
1204 C<Time::HiRes> upgraded to version 1.86 (was 1.66)
1210 C<clock_nanosleep()> and C<clock()> functions added
1214 Support for the POSIX C<clock_gettime()> and C<clock_getres()> has been added
1218 Return C<undef> or an empty list if the C C<gettimeofday()> function fails
1222 Improved C<nanosleep> detection
1230 Enhanced documentation
1236 C<Unicode::Collate> upgraded to version 0.52
1242 Now implements UCA Revision 14 (based on Unicode 4.1.0).
1246 C<Unicode::Collate->new> method no longer overwrites user's C<$_>
1250 Enhanced documentation
1256 C<Unicode::UCD> upgraded to version 0.24
1262 Documentation typos fixed
1268 C<User::grent> upgraded to version 1.01
1274 Documentation typo fixed
1280 C<utf8> upgraded to version 1.06
1286 Documentation typos fixed
1292 C<vmsish> upgraded to version 1.02
1298 Documentation typos fixed
1304 C<warnings> upgraded to version 1.05
1310 Gentler messing with C<Carp::> internals
1318 Documentation update
1324 C<Win32> upgraded to version 0.2601
1326 =for cynics And how many perl 5.8.x versions can I release ahead of Vista?
1332 Provides Windows Vista support to C<Win32::GetOSName>
1336 Documentation enhancements
1342 C<XS::Typemap> upgraded to version 0.02
1354 =head1 Utility Changes
1356 =head2 C<h2xs> enhancements
1358 C<h2xs> implements new option C<--use-xsloader> to force use of
1359 C<XSLoader> even in backwards compatible modules.
1361 The handling of authors' names that had apostrophes has been fixed.
1363 Any enums with negative values are now skipped.
1365 =head2 C<perlivp> enhancements
1367 C<perlivp> implements new option C<-a> and will not check for F<*.ph>
1368 files by default any more. Use the C<-a> option to run I<all> tests.
1370 =head1 New Documentation
1372 The L<perlglossary> manpage is a glossary of terms used in the Perl
1373 documentation, technical and otherwise, kindly provided by O'Reilly Media,
1376 =head1 Performance Enhancements
1382 Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of
1383 Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only
1384 happens at program exit, it may be skipped completely.
1388 Salvador FandiƱo provided improvements to reduce the memory usage of C<sort>
1389 and to speed up some cases.
1393 Jarkko Hietaniemi and Andy Lester worked to mark as much data as possible in
1394 the C source files as C<static>, to increase the proportion of the executable
1395 file that the operating system can share between process, and thus reduce
1396 real memory usage on multi-user systems.
1400 =head1 Installation and Configuration Improvements
1402 Parallel makes should work properly now, although there may still be problems
1403 if C<make test> is instructed to run in parallel.
1405 Building with Borland's compilers on Win32 should work more smoothly. In
1406 particular Steve Hay has worked to side step many warnings emitted by their
1407 compilers and at least one C compiler internal error.
1409 C<Configure> will now detect C<clearenv> and C<unsetenv>, thanks to a patch
1410 from Alan Burlison. It will also probe for C<futimes> and whether C<sprintf>
1411 correctly returns the length of the formatted string, which will both be used
1414 There are improved hints for next-3.0, vmesa, IX, Darwin, Solaris, Linux,
1415 DEC/OSF, HP-UX and MPE/iX
1417 Perl extensions on Windows now can be statically built into the Perl DLL,
1418 thanks to a work by Vadim Konovalov. (This improvement was actually in 5.8.7,
1419 but was accidentally omitted from L<perl587delta>).
1421 =head1 Selected Bug Fixes
1423 =head2 no warnings 'category' works correctly with -w
1425 Previously when running with warnings enabled globally via C<-w>, selective
1426 disabling of specific warning categories would actually turn off all warnings.
1427 This is now fixed; now C<no warnings 'io';> will only turn off warnings in the
1428 C<io> class. Previously it would erroneously turn off all warnings.
1430 This bug fix may cause some programs to start correctly issuing warnings.
1432 =head2 Remove over-optimisation
1434 Perl 5.8.4 introduced a change so that assignments of C<undef> to a
1435 scalar, or of an empty list to an array or a hash, were optimised away. As
1436 this could cause problems when C<goto> jumps were involved, this change
1437 has been backed out.
1439 =head2 sprintf() fixes
1441 Using the sprintf() function with some formats could lead to a buffer
1442 overflow in some specific cases. This has been fixed, along with several
1443 other bugs, notably in bounds checking.
1445 In related fixes, it was possible for badly written code that did not follow
1446 the documentation of C<Sys::Syslog> to have formatting vulnerabilities.
1447 C<Sys::Syslog> has been changed to protect people from poor quality third
1450 =head2 Debugger and Unicode slowdown
1452 It had been reported that running under perl's debugger when processing
1453 Unicode data could cause unexpectedly large slowdowns. The most likely cause
1454 of this was identified and fixed by Nicholas Clark.
1456 =head2 Smaller fixes
1462 C<FindBin> now works better with directories where access rights are more
1463 restrictive than usual.
1467 Several memory leaks in ithreads were closed. An improved implementation of
1468 C<threads::shared> is available on CPAN - this will be merged into 5.8.9 if
1473 Trailing spaces are now trimmed from C<$!> and C<$^E>.
1477 Operations that require perl to read a process's list of groups, such as reads
1478 of C<$(> and C<$)>, now dynamically allocate memory rather than using a
1479 fixed sized array. The fixed size array could cause C stack exhaustion on
1480 systems configured to use large numbers of groups.
1484 C<PerlIO::scalar> now works better with non-default C<$/> settings.
1488 You can now use the C<x> operator to repeat a C<qw//> list. This used
1489 to raise a syntax error.
1493 The debugger now traces correctly execution in eval("")uated code that
1494 contains #line directives.
1498 The value of the C<open> pragma is no longer ignored for three-argument
1503 The optimisation of C<for (reverse @a)> introduced in perl 5.8.6 could
1504 misbehave when the array had undefined elements and was used in LVALUE
1505 context. Dave Mitchell provided a fix.
1509 Some case insensitive matches between UTF-8 encoded data and 8 bit regexps,
1510 and vice versa, could give malformed character warnings. These have been
1511 fixed by Dave Mitchell and Yves Orton.
1515 C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where
1516 the length UTF-8 encoding of the string in lower case, upper case or title
1517 case differed. This was fixed by Nicholas Clark.
1521 Perl will now use the C library calls C<unsetenv> and C<clearenv> if present
1522 to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch
1527 =head1 New or Changed Diagnostics
1529 =head2 Attempt to set length of freed array
1531 This is a new warning, produced in situations such as this:
1533 $r = do {my @a; \$#a};
1536 =head2 Non-string passed as bitmask
1538 This is a new warning, produced when number has been passed as a argument to
1539 select(), instead of a bitmask.
1541 # Wrong, will now warn
1542 $rin = fileno(STDIN);
1543 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
1547 vec($rin,fileno(STDIN),1) = 1;
1548 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
1550 =head2 Search pattern not terminated or ternary operator parsed as search pattern
1552 This syntax error indicates that the lexer couldn't find the final
1553 delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
1554 this error message makes it easier to diagnose syntax errors.
1556 =head1 Changed Internals
1558 There has been a fair amount of refactoring of the C<C> source code, partly to
1559 make it tidier and more maintainable. The resulting object code and the
1560 C<perl> binary may well be smaller than 5.8.7, in particular due to a change
1561 contributed by Dave Mitchell which reworked the warnings code to be
1562 significantly smaller. Apart from being smaller and possibly faster, there
1563 should be no user-detectable changes.
1565 Andy Lester supplied many improvements to determine which function
1566 parameters and local variables could actually be declared C<const> to the C
1567 compiler. Steve Peters provided new C<*_set> macros and reworked the core to
1568 use these rather than assigning to macros in LVALUE context.
1570 Dave Mitchell improved the lexer debugging output under C<-DT>
1572 Nicholas Clark changed the string buffer allocation so that it is now rounded
1573 up to the next multiple of 4 (or 8 on platforms with 64 bit pointers). This
1574 should reduce the number of calls to C<realloc> without actually using any
1577 The C<HV>'s array of C<HE*>s is now allocated at the correct (minimal) size,
1578 thanks to another change by Nicholas Clark. Compile with
1579 C<-DPERL_USE_LARGE_HV_ALLOC> to use the old, sloppier, default.
1581 For XS or embedding debugging purposes, if perl is compiled with
1582 C<-DDEBUG_LEAKING_SCALARS_FORK_DUMP> in addition to
1583 C<-DDEBUG_LEAKING_SCALARS> then a child process is C<fork>ed just before
1584 global destruction, which is used to display the values of any scalars
1585 found to have leaked at the end of global destruction. Without this, the
1586 scalars have already been freed sufficiently at the point of detection that
1587 it is impossible to produce any meaningful dump of their contents. This
1588 feature was implemented by the indefatigable Nicholas Clark, based on an idea
1591 =head1 Platform Specific Problems
1593 The optimiser on HP-UX 11.23 (Itanium 2) is currently partly disabled (scaled
1594 down to +O1) when using HP C-ANSI-C; the cause of problems at higher
1595 optimisation levels is still unclear.
1597 There are a handful of remaining test failures on VMS, mostly due to
1598 test fixes and minor module tweaks with too many dependencies to
1599 integrate into this release from the development stream, where they have
1600 all been corrected. The following is a list of expected failures with
1601 the patch number of the fix where that is known:
1603 ext/Devel/PPPort/t/ppphtest.t #26913
1604 ext/List/Util/t/p_tainted.t #26912
1605 lib/ExtUtils/t/PL_FILES.t #26813
1606 lib/ExtUtils/t/basic.t #26813
1610 =head1 Reporting Bugs
1612 If you find what you think is a bug, you might check the articles
1613 recently posted to the comp.lang.perl.misc newsgroup and the perl
1614 bug database at http://bugs.perl.org. There may also be
1615 information at http://www.perl.org, the Perl Home Page.
1617 If you believe you have an unreported bug, please run the B<perlbug>
1618 program included with your release. Be sure to trim your bug down
1619 to a tiny but sufficient test case. Your bug report, along with the
1620 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1621 analysed by the Perl porting team. You can browse and search
1622 the Perl 5 bugs at http://bugs.perl.org/
1626 The F<Changes> file for exhaustive details on what changed.
1628 The F<INSTALL> file for how to build Perl.
1630 The F<README> file for general stuff.
1632 The F<Artistic> and F<Copying> files for copyright information.