3 perl588delta - what is new for perl v5.8.8
7 This document describes differences between the 5.8.7 release and
10 =head1 Incompatible Changes
12 There are no changes intentionally incompatible with 5.8.7. If any exist,
13 they are bugs and reports are welcome.
15 =head1 Core Enhancements
21 C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as
22 filenames, if the system supports respectively C<fchdir>, C<fchmod> and
23 C<fchown>, thanks to a patch provided by Gisle Aas.
27 =head1 Modules and Pragmata
33 C<Attribute::Handlers> upgraded to version 0.78_02
39 Documentation typo fix
45 C<attrs> upgraded to version 1.02
57 C<autouse> upgraded to version 1.05
63 Simplified implementation
69 C<B> upgraded to version 1.09_01
75 The inheritance hierarchy of the C<B::> modules has been corrected;
76 C<B::NV> now inherits from C<B::SV> (instead of C<B::IV>).
82 C<blib> upgraded to version 1.03
88 Documentation typo fix
94 C<ByteLoader> upgraded to version 0.06
106 C<CGI> upgraded to version 3.15
112 Extraneous "?" from C<self_url()> removed
116 C<scrolling_list()> select attribute fixed
120 C<virtual_port> now works properly with the https protocol
124 C<upload_hook()> and C<append()> now works in function-oriented mode
128 C<POST_MAX> doesn't cause the client to hang any more
132 Automatic tab indexes are now disabled and new C<-tabindex> pragma has
133 been added to turn automatic indexes back on
137 C<end_form()> doesn't emit empty (and non-validating) C<< <div> >>
141 C<CGI::Carp> works better in certain mod_perl configurations
145 Setting C<$CGI::TMPDIRECTORY> is now effective
149 Enhanced documentation
155 C<charnames> upgraded to version 1.05
161 C<viacode()> now accept hex strings and has been optimized.
167 C<CPAN> upgraded to version 1.76_02
173 1 minor bug fix for Win32
179 C<Cwd> upgraded to version 3.12
185 C<canonpath()> on Win32 now collapses F<foo\..> sections correctly.
189 Improved behaviour on Symbian OS.
193 Enhanced documentation and typo fixes
203 C<Data::Dumper> upgraded to version 2.121_08
209 A problem where C<Data::Dumper> would sometimes update the iterator state
210 of hashes has been fixed
214 Numeric labels now work
224 C<DB> upgraded to version 1.01
230 A problem where the state of the regexp engine would sometimes get clobbered when running
231 under the debugger has been fixed.
237 C<DB_File> upgraded to version 1.814
243 Adds support for Berkeley DB 4.4.
249 C<Devel::DProf> upgraded to version 20050603.00
261 C<Devel::Peek> upgraded to version 1.03
273 C<Devel::PPPort> upgraded to version 3.06_01
279 C<--compat-version> argument checking has been improved
283 Files passed on the command line are filtered by default
287 C<--nofilter> option to override the filtering has been added
291 Enhanced documentation
297 C<diagnostics> upgraded to version 1.15
303 Documentation typo fix
309 C<Digest> upgraded to version 1.14
315 The constructor now knows which module implements SHA-224
319 Documentation tweaks and typo fixes
325 C<Digest::MD5> upgraded to version 2.36
331 C<XSLoader> is now used for faster loading
335 Enhanced documentation including MD5 weaknesses discovered lately
341 C<Dumpvalue> upgraded to version 1.12
353 C<DynaLoader> upgraded but unfortunately we're not able to increment its version number :-(
359 Implements C<dl_unload_file> on Win32
367 C<XSLoader> 0.06 incorporated; small optimisation for calling
368 C<bootstrap_inherit()> and documentation enhancements.
374 C<Encode> upgraded to version 2.12
380 A coderef is now acceptable for C<CHECK>!
384 3 new characters added to the ISO-8859-7 encoding
388 New encoding C<MIME-Header-ISO_2022_JP> added
392 Problem with partial characters and C<< encoding(utf-8-strict) >> fixed.
396 Documentation enhancements and typo fixes
402 C<English> upgraded to version 1.02
408 the C<< $COMPILING >> variable has been added
414 C<ExtUtils::Constant> upgraded to version 0.17
420 Improved compatibility with older versions of perl
426 C<ExtUtils::MakeMaker> upgraded to version 6.30 (was 6.17)
432 Too much to list here; see L<http://search.cpan.org/dist/ExtUtils-MakeMaker/Changes>
438 C<File::Basename> upgraded to version 2.74, with changes contributed by Michael Schwern.
444 Documentation clarified and errors corrected.
448 C<basename> now strips trailing path separators before processing the name.
452 C<basename> now returns C</> for parameter C</>, to make C<basename>
453 consistent with the shell utility of the same name.
457 The suffix is no longer stripped if it is identical to the remaining characters
458 in the name, again for consistency with the shell utility.
462 Some internal code cleanup.
468 C<File::Copy> upgraded to version 2.09
474 Copying a file onto itself used to fail.
478 Moving a file between file systems now preserves the access and
479 modification time stamps
485 C<File::Find> upgraded to version 1.10
491 Win32 portability fixes
495 Enhanced documentation
501 C<File::Glob> upgraded to version 1.05
513 C<File::Path> upgraded to version 1.08
519 C<mkpath> now preserves C<errno> when C<mkdir> fails
525 C<File::Spec> upgraded to version 3.12
531 C<File::Spec->rootdir()> now returns C<\> on Win32, instead of C</>
535 C<$^O> could sometimes become tainted. This has been fixed.
539 C<canonpath> on Win32 now collapses C<foo/..> (or C<foo\..>) sections
540 correctly, rather than doing the "misguided" work it was previously doing.
541 Note that C<canonpath> on Unix still does B<not> collapse these sections, as
542 doing so would be incorrect.
546 Some documentation improvements
550 Some internal code cleanup
556 C<FileCache> upgraded to version 1.06
562 POD formatting errors in the documentation fixed
568 C<Filter::Simple> upgraded to version 0.82
572 C<FindBin> upgraded to version 1.47
578 Now works better with directories where access rights are more
579 restrictive than usual.
585 C<GDBM_File> upgraded to version 1.08
597 C<Getopt::Long> upgraded to version 2.35
603 C<prefix_pattern> has now been complemented by a new configuration
604 option C<long_prefix_pattern> that allows the user to specify what
605 prefix patterns should have long option style semantics applied.
609 Options can now take multiple values at once (experimental)
619 C<if> upgraded to version 0.05
625 Give more meaningful error messages from C<if> when invoked with a
626 condition in list context.
630 Restore backwards compatibility with earlier versions of perl
636 C<IO> upgraded to version 1.22
642 Enhanced documentation
652 C<IPC::Open2> upgraded to version 1.02
658 Enhanced documentation
664 C<IPC::Open3> upgraded to version 1.02
670 Enhanced documentation
676 C<List::Util> upgraded to version 1.18 (was 1.14)
682 Fix pure-perl version of C<refaddr> to avoid blessing an un-blessed reference
686 Use C<XSLoader> for faster loading
690 Fixed various memory leaks
694 Internal cleanup and portability fixes
700 C<Math::Complex> upgraded to version 1.35
706 C<atan2(0, i)> now works, as do all the (computable) complex argument cases
710 Fixes for certain bugs in C<make> and C<emake>
714 Support returning the I<k>th root directly
718 Support C<[2,-3pi/8]> in C<emake>
722 Support C<inf> for C<make>/C<emake>
726 Document C<make>/C<emake> more visibly
732 C<Math::Trig> upgraded to version 1.03
738 Add more great circle routines: C<great_circle_waypoint> and
739 C<great_circle_destination>
745 C<MIME::Base64> upgraded to version 3.07
751 Use C<XSLoader> for faster loading
755 Enhanced documentation
765 C<NDBM_File> upgraded to version 1.06
771 Enhanced documentation
777 C<ODBM_File> upgraded to version 1.06
783 Documentation typo fixed
793 C<Opcode> upgraded to version 1.06
799 Enhanced documentation
809 C<open> upgraded to version 1.05
815 Enhanced documentation
821 C<overload> upgraded to version 1.04
827 Enhanced documentation
833 C<PerlIO> upgraded to version 1.04
839 C<PerlIO::via> iterate over layers properly now
843 C<PerlIO::scalar> understands C<< $/ = "" >> now
847 C<encoding(utf-8-strict)> with partial characters now works
851 Enhanced documentation
861 C<Pod::Functions> upgraded to version 1.03
867 Documentation typos fixed
873 C<Pod::Html> upgraded to version 1.0504
879 HTML output will now correctly link
880 to C<=item>s on the same page, and should be valid XHTML.
884 Variable names are recognized as intended
888 Documentation typos fixed
894 C<Pod::Parser> upgraded to version 1.32
900 Allow files that start with C<=head> on the first line
904 Win32 portability fix
908 Exit status of C<pod2usage> fixed
912 New C<-noperldoc> switch for C<pod2usage>
916 Arbitrary URL schemes now allowed
920 Documentation typos fixed
926 C<POSIX> upgraded to version 1.09
932 Documentation typos fixed
942 C<re> upgraded to version 0.05
948 Documentation typo fixed
954 C<Safe> upgraded to version 2.12
960 Minor documentation enhancement
966 C<SDBM_File> upgraded to version 1.05
972 Documentation typo fixed
982 C<Socket> upgraded to version 1.78
994 C<Storable> upgraded to version 2.15
1000 This includes the C<STORABLE_attach> hook functionality added by
1001 Adam Kennedy, and more frugal memory requirements when storing under C<ithreads>, by
1002 using the C<ithreads> cloning tracking code.
1008 C<Switch> upgraded to version 2.10_01
1014 Documentation typos fixed
1020 C<Sys::Syslog> upgraded to version 0.13
1026 Now provides numeric macros and meaningful C<Exporter> tags.
1030 No longer uses C<Sys::Hostname> as it may provide useless values in
1031 unconfigured network environments, so instead uses C<INADDR_LOOPBACK> directly.
1035 C<syslog()> now uses local timestamp.
1039 C<setlogmask()> now behaves like its C counterpart.
1043 C<setlogsock()> will now C<croak()> as documented.
1047 Improved error and warnings messages.
1051 Improved documentation.
1057 C<Term::ANSIColor> upgraded to version 1.10
1063 Fixes a bug in C<colored> when C<$EACHLINE> is set that caused it to not color
1064 lines consisting solely of 0 (literal zero).
1074 C<Term::ReadLine> upgraded to version 1.02
1080 Documentation tweaks
1086 C<Test::Harness> upgraded to version 2.56 (was 2.48)
1092 The C<Test::Harness> timer is now off by default.
1096 Now shows elapsed time in milliseconds.
1106 C<Test::Simple> upgraded to version 0.62 (was 0.54)
1112 C<is_deeply()> no longer fails to work for many cases
1116 Various minor bug fixes
1120 Documentation enhancements
1126 C<Text::Tabs> upgraded to version 2005.0824
1132 Provides a faster implementation of C<expand>
1138 C<Text::Wrap> upgraded to version 2005.082401
1144 Adds C<$Text::Wrap::separator2>, which allows you to preserve existing newlines
1145 but add line-breaks with some other string.
1151 C<threads> upgraded to version 1.07
1157 C<threads> will now honour C<no warnings 'threads'>
1161 A thread's interpreter is now freed after C<< $t->join() >> rather than after
1162 C<undef $t>, which should fix some C<ithreads> memory leaks. (Fixed by Dave
1167 Some documentation typo fixes.
1173 C<threads::shared> upgraded to version 0.94
1179 Documentation changes only
1183 Note: An improved implementation of C<threads::shared> is available on
1184 CPAN - this will be merged into 5.8.9 if it proves stable.
1190 C<Tie::Hash> upgraded to version 1.02
1196 Documentation typo fixed
1202 C<Time::HiRes> upgraded to version 1.86 (was 1.66)
1208 C<clock_nanosleep()> and C<clock()> functions added
1212 Support for the POSIX C<clock_gettime()> and C<clock_getres()> has been added
1216 Return C<undef> or an empty list if the C C<gettimeofday()> function fails
1220 Improved C<nanosleep> detection
1228 Enhanced documentation
1234 C<Unicode::Collate> upgraded to version 0.52
1240 Now implements UCA Revision 14 (based on Unicode 4.1.0).
1244 C<Unicode::Collate->new> method no longer overwrites user's C<$_>
1248 Enhanced documentation
1254 C<Unicode::UCD> upgraded to version 0.24
1260 Documentation typos fixed
1266 C<User::grent> upgraded to version 1.01
1272 Documentation typo fixed
1278 C<utf8> upgraded to version 1.06
1284 Documentation typos fixed
1290 C<vmsish> upgraded to version 1.02
1296 Documentation typos fixed
1302 C<warnings> upgraded to version 1.05
1308 Gentler messing with C<Carp::> internals
1316 Documentation update
1322 C<Win32> upgraded to version 0.2601
1324 =for cynics And how many perl 5.8.x versions can I release ahead of Vista?
1330 Provides Windows Vista support to C<Win32::GetOSName>
1334 Documentation enhancements
1340 C<XS::Typemap> upgraded to version 0.02
1352 =head1 Utility Changes
1354 =head2 C<h2xs> enhancements
1356 C<h2xs> implements new option C<--use-xsloader> to force use of
1357 C<XSLoader> even in backwards compatible modules.
1359 The handling of authors' names that had apostrophes has been fixed.
1361 Any enums with negative values are now skipped.
1363 =head2 C<perlivp> enhancements
1365 C<perlivp> implements new option C<-a> and will not check for F<*.ph>
1366 files by default any more. Use the C<-a> option to run I<all> tests.
1368 =head1 New Documentation
1370 The L<perlglossary> manpage is a glossary of terms used in the Perl
1371 documentation, technical and otherwise, kindly provided by O'Reilly Media,
1374 =head1 Performance Enhancements
1380 Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of
1381 Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only
1382 happens at program exit, it may be skipped completely.
1386 Salvador FandiƱo provided improvements to reduce the memory usage of C<sort>
1387 and to speed up some cases.
1391 Jarkko Hietaniemi and Andy Lester worked to mark as much data as possible in
1392 the C source files as C<static>, to increase the proportion of the executable
1393 file that the operating system can share between process, and thus reduce
1394 real memory usage on multi-user systems.
1398 =head1 Installation and Configuration Improvements
1400 Parallel makes should work properly now, although there may still be problems
1401 if C<make test> is instructed to run in parallel.
1403 Building with Borland's compilers on Win32 should work more smoothly. In
1404 particular Steve Hay has worked to side step many warnings emitted by their
1405 compilers and at least one C compiler internal error.
1407 C<Configure> will now detect C<clearenv> and C<unsetenv>, thanks to a patch
1408 from Alan Burlison. It will also probe for C<futimes> and whether C<sprintf>
1409 correctly returns the length of the formatted string, which will both be used
1412 There are improved hints for next-3.0, vmesa, IX, Darwin, Solaris, Linux,
1413 DEC/OSF, HP-UX and MPE/iX
1415 Perl extensions on Windows now can be statically built into the Perl DLL,
1416 thanks to a work by Vadim Konovalov. (This improvement was actually in 5.8.7,
1417 but was accidentally omitted from L<perl587delta>).
1419 =head1 Selected Bug Fixes
1421 =head2 no warnings 'category' works correctly with -w
1423 Previously when running with warnings enabled globally via C<-w>, selective
1424 disabling of specific warning categories would actually turn off all warnings.
1425 This is now fixed; now C<no warnings 'io';> will only turn off warnings in the
1426 C<io> class. Previously it would erroneously turn off all warnings.
1428 This bug fix may cause some programs to start correctly issuing warnings.
1430 =head2 Remove over-optimisation
1432 Perl 5.8.4 introduced a change so that assignments of C<undef> to a
1433 scalar, or of an empty list to an array or a hash, were optimised away. As
1434 this could cause problems when C<goto> jumps were involved, this change
1435 has been backed out.
1437 =head2 sprintf() fixes
1439 Using the sprintf() function with some formats could lead to a buffer
1440 overflow in some specific cases. This has been fixed, along with several
1441 other bugs, notably in bounds checking.
1443 In related fixes, it was possible for badly written code that did not follow
1444 the documentation of C<Sys::Syslog> to have formatting vulnerabilities.
1445 C<Sys::Syslog> has been changed to protect people from poor quality third
1448 =head2 Debugger and Unicode slowdown
1450 It had been reported that running under perl's debugger when processing
1451 Unicode data could cause unexpectedly large slowdowns. The most likely cause
1452 of this was identified and fixed by Nicholas Clark.
1454 =head2 Smaller fixes
1460 C<FindBin> now works better with directories where access rights are more
1461 restrictive than usual.
1465 Several memory leaks in ithreads were closed. An improved implementation of
1466 C<threads::shared> is available on CPAN - this will be merged into 5.8.9 if
1471 Trailing spaces are now trimmed from C<$!> and C<$^E>.
1475 Operations that require perl to read a process's list of groups, such as reads
1476 of C<$(> and C<$)>, now dynamically allocate memory rather than using a
1477 fixed sized array. The fixed size array could cause C stack exhaustion on
1478 systems configured to use large numbers of groups.
1482 C<PerlIO::scalar> now works better with non-default C<$/> settings.
1486 You can now use the C<x> operator to repeat a C<qw//> list. This used
1487 to raise a syntax error.
1491 The debugger now traces correctly execution in eval("")uated code that
1492 contains #line directives.
1496 The value of the C<open> pragma is no longer ignored for three-argument
1501 The optimisation of C<for (reverse @a)> introduced in perl 5.8.6 could
1502 misbehave when the array had undefined elements and was used in LVALUE
1503 context. Dave Mitchell provided a fix.
1507 Some case insensitive matches between UTF-8 encoded data and 8 bit regexps,
1508 and vice versa, could give malformed character warnings. These have been
1509 fixed by Dave Mitchell and Yves Orton.
1513 C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where
1514 the length UTF-8 encoding of the string in lower case, upper case or title
1515 case differed. This was fixed by Nicholas Clark.
1519 Perl will now use the C library calls C<unsetenv> and C<clearenv> if present
1520 to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch
1525 =head1 New or Changed Diagnostics
1527 =head2 Attempt to set length of freed array
1529 This is a new warning, produced in situations such as this:
1531 $r = do {my @a; \$#a};
1534 =head2 Non-string passed as bitmask
1536 This is a new warning, produced when number has been passed as a argument to
1537 select(), instead of a bitmask.
1539 # Wrong, will now warn
1540 $rin = fileno(STDIN);
1541 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
1545 vec($rin,fileno(STDIN),1) = 1;
1546 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
1548 =head2 Search pattern not terminated or ternary operator parsed as search pattern
1550 This syntax error indicates that the lexer couldn't find the final
1551 delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
1552 this error message makes it easier to diagnose syntax errors.
1554 =head1 Changed Internals
1556 There has been a fair amount of refactoring of the C<C> source code, partly to
1557 make it tidier and more maintainable. The resulting object code and the
1558 C<perl> binary may well be smaller than 5.8.7, in particular due to a change
1559 contributed by Dave Mitchell which reworked the warnings code to be
1560 significantly smaller. Apart from being smaller and possibly faster, there
1561 should be no user-detectable changes.
1563 Andy Lester supplied many improvements to determine which function
1564 parameters and local variables could actually be declared C<const> to the C
1565 compiler. Steve Peters provided new C<*_set> macros and reworked the core to
1566 use these rather than assigning to macros in LVALUE context.
1568 Dave Mitchell improved the lexer debugging output under C<-DT>
1570 Nicholas Clark changed the string buffer allocation so that it is now rounded
1571 up to the next multiple of 4 (or 8 on platforms with 64 bit pointers). This
1572 should reduce the number of calls to C<realloc> without actually using any
1575 The C<HV>'s array of C<HE*>s is now allocated at the correct (minimal) size,
1576 thanks to another change by Nicholas Clark. Compile with
1577 C<-DPERL_USE_LARGE_HV_ALLOC> to use the old, sloppier, default.
1579 For XS or embedding debugging purposes, if perl is compiled with
1580 C<-DDEBUG_LEAKING_SCALARS_FORK_DUMP> in addition to
1581 C<-DDEBUG_LEAKING_SCALARS> then a child process is C<fork>ed just before
1582 global destruction, which is used to display the values of any scalars
1583 found to have leaked at the end of global destruction. Without this, the
1584 scalars have already been freed sufficiently at the point of detection that
1585 it is impossible to produce any meaningful dump of their contents. This
1586 feature was implemented by the indefatigable Nicholas Clark, based on an idea
1589 =head1 Platform Specific Problems
1591 The optimiser on HP-UX 11.23 (Itanium 2) is currently partly disabled (scaled
1592 down to +O1) when using HP C-ANSI-C; the cause of problems at higher
1593 optimisation levels is still unclear.
1595 There are a handful of remaining test failures on VMS, mostly due to
1596 test fixes and minor module tweaks with too many dependencies to
1597 integrate into this release from the development stream, where they have
1598 all been corrected. The following is a list of expected failures with
1599 the patch number of the fix where that is known:
1601 ext/Devel/PPPort/t/ppphtest.t #26913
1602 ext/List/Util/t/p_tainted.t #26912
1603 lib/ExtUtils/t/PL_FILES.t #26813
1604 lib/ExtUtils/t/basic.t #26813
1608 =head1 Reporting Bugs
1610 If you find what you think is a bug, you might check the articles
1611 recently posted to the comp.lang.perl.misc newsgroup and the perl
1612 bug database at http://bugs.perl.org. There may also be
1613 information at http://www.perl.org, the Perl Home Page.
1615 If you believe you have an unreported bug, please run the B<perlbug>
1616 program included with your release. Be sure to trim your bug down
1617 to a tiny but sufficient test case. Your bug report, along with the
1618 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1619 analysed by the Perl porting team. You can browse and search
1620 the Perl 5 bugs at http://bugs.perl.org/
1624 The F<Changes> file for exhaustive details on what changed.
1626 The F<INSTALL> file for how to build Perl.
1628 The F<README> file for general stuff.
1630 The F<Artistic> and F<Copying> files for copyright information.