X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldelta.pod;h=ad438e750edd7727b59bb91322254f23a53b807e;hb=562628a3426d58cb10566f7b16d85fd2f25ab028;hp=605ff3f137b270bb1feb5c13e9e8bfaf71c134cb;hpb=53080bb1a87e1ecc3a481b766e27fdfe51f4f2ae;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 605ff3f..ad438e7 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -7,766 +7,366 @@ perldelta - what's new for perl v5.7.0 This document describes differences between the 5.6.0 release and the 5.7.0 release. -=head1 Core Enhancements - -=over 4 - -=item * - -C now works (previously one couldn't pass -in multiple arguments.) - -=item * - -Infinity (in numerical context, for example as "Inf", the exact string -representation is platform-dependent) doesn't cause "not a number" -warnings. - -=item * - -my __PACKAGE__ now works. - -=item * - -no Module; now works even if there is no "sub unimport" in the Module. - -=item * - -The numerical comparison <=> now returns C if either operand is a NaN. -Previously the behaviour was unspecified. - -=item * - -C can now be used to force the string to UTF8. - -=item * - -prototype(\&) is now available. - -=item * - -sort() is now re-entrant (sort() can call sort(), in other words) - -=back - -=head1 Modules and Pragmata - -=head2 New Modules - -The Storable extnesion, version 0.7.2, released the 14th of August -2000, has been added to the Perl distribution. Storable gives -persistence to Perl data structures by allowing to store and retrieve -Perl data to and from files in fast and compact binary format. - -=head2 Updated And Improved Modules and Pragmata - -=over 4 - -=item * - -The attributes::reftype() now works on tied arguments. - -=item * - -AutoLoader can now be `stopped' by - - no AutoLoader; - -=item * - -B::Deparse now understands sub attributes. - -=item * - -Data::Dumper now works on negative number on 32-bit platforms where IV -(the Perl's integer datatype) is greater than 32 bits. Also, large -unsigned numbers are now dumped as such, not as large negative numbers. - -=item * - -CGI has been updated to version 2.72, released -the 20th of August 2000. - -=item * - -CPAN has been updated to version 1.57, released -the 16th of August 2000. - -=item * - -DB_File has been updated to version 1.73, released the -27th of April 2000. - -=item * - -The English module can now be used without the infamous performance -hit by saying - - use English '-no_performance_hit'; - -(Assuming, of course, that one doesn't need the troublesome variables -C<$`>, C<$&>, or C<$'>.) Also, introduce C<@LAST_MATCH_START> and -C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. - -=item * - -File::Find now has pre- and postprocessing callbacks. -It also correctly changes directories when chasing symbolic links. -Callbacks doing (naughtily) "next;" instead of "return;" now work. - -=item * - -File::Glob::globI() rename to File::Glob::bsd_glob() to avoid -prototype mismatch with CORE::glob(). - -=item * - -File::Spec has been updated to version 0.82, released the -1st of July 2000. +=head1 Security Vulnerability Closed -=item * - -File::Temp has been updated to version 0.10 (unpublished as the 20th -of August 2000). - -=item * - -Getopt::Long has been updated to version 2.23_05, released the 2nd of -August 2000. - -=item * - -IO::Poll has been thoroughly fixed. - -=item * - -IO::Socket::INET now works when given an unknown service name with -a port number. - -=item * - -IPC::Open3 now allows the use of numeric filedescriptors. - -=item * - -use lib now works identically to @INC. Removing directories -with 'no lib' now works. - -=item * - -Math::BigFloat now more robust (less "uninitialized" warnings). - -=item * - -Math::Complex now handles extreme values (e.g. 1E20-1E30i more) more -gracefully. - -=item * - -The podlators bundle has been updated to version 1.02, released the -25th of April 2000. It contains the modules Pod::Man 1.04, Pod::Text -2.04, and modules Pod::Text::Color and Pod::Text::Termcap (no version -numbers). - -=item * - -Pod::LaTeX has been updated to version 0.52, released the 15th -of May 2000. - -=item * - -Pod::Parser has been updated to version 1.17, released the 25th of -July 2000. It contains the modules Pod::Checker 1.20, Pod::Find 0.21, -Pod::InputObjects 1.13, Pod::ParseUtils 0.22, Pod::Parser 1.12, -Pod::Select 1.13, and Pod::Usage 1.13. - -=item * - -The subpragma 'debug' of the 're' pragma now produces cleaner output. - -=item * - -C<%INC> now localized in a Safe compartment so that use/require work. - -=item * - -SelfLoader no more loses C<$@> in AUTOLOAD. - -=item * - -The Shell module now has an OO interface. - -=item * - -Sys::Syslog now works on domain sockets. Also, a forked child -now exits correctly if it fails to open /dev/console. - -=item * - -Term::ANSIColor has been updated to version 1.03, released the 6th of -August 2000. - -=item * - -The Test module has been updated to version 1.14, released the 21st of June -1999. This is for all practical purposes identical to the previous release -of Test included with the Perl distribution, 1.13, but upgrading the module -stops the CPAN module from suggesting an upgrade. - -=item * - -Test::Harness output now prettier on failed test. - -=item * - -Text::Wrap::wtbrap now handles multiline strings properly. - -=item * - -UNIVERSAL::isa no more caches methods incorrectly. - -=back - -=head1 Utility Changes - -=head2 cperl-mode version 4.31 - -The Emacs perl mode (emacs/cperl-mode.el) has been updated to version 4.31. - -=head2 perlbug - -Perlbug is now much more robust. It also sends the bug report to perl.org, -not perl.com. - -=head2 perlcc now more cc-like and more robust - -The perlcc utility has been rewritten and its user interface (that is, -command line) is much more like that of the UNIX C compiler, cc. +A potential security vulnerability in the optional suidperl component +of Perl has been identified. suidperl is neither built nor installed +by default. As of August the 20th, 2000, the only known vulnerable +platform is Linux, most likely all Linux distributions. CERT and +various vendors have been alerted about the vulnerability. -=head2 xsubpp now understands embedded pod +The problem was caused by Perl trying to report a suspected security +exploit attempt using an external program, /bin/mail. On Linux +platforms the /bin/mail program had an undocumented feature which gave +access to a root shell, resulting in a serious compromise instead of +reporting the exploit attempt. If you don't have /bin/mail, or if you +have 'safe setuid scripts', or if suidperl is not installed, you +are safe. -The xsubpp utility for extension writers now understands POD -documentation embedded in the *.xs files. +The exploit attempt reporting feature has been completely removed from +the Perl 5.7.0 release, so that particular vulnerability isn't there +anymore. However, further security vulnerabilities are, +unfortunately, always possible. The suidperl code is being reviewed +and if deemed too risky to continue to be supported, it may be +completely removed from future releases. In any case, suidperl should +only be used by security experts who know exactly what they are doing +and why they are using suidperl instead of some other solution such as +sudo (see http://www.courtesan.com/sudo/). -=head1 Improved Documentation +=head1 Incompatible Changes =over 4 =item * -In many places say "alphanumeric characters" instead of "word -characters" because that was what was meant. - -=item * - -Eradicate "array context" from the documentation and diagnostics. - -=item * - -The return values of a failing backtick (`, qx{}) are now documented -in perlop. - -=item * - -caller() return values now better documented. - -=item * - -SDBM_File, NDBM_File, ODBM_File, now tell about tying instead of -glossing over. - -=item * - -Document that the C<$(> special variable does not interpolate -in regular expressions. - -=item * - -Add an URL for FSF in README. - -=item * - -The timeout unit of IO::Select is now documented to be identical -to the timeout unit of the 4-arg select(), that is, (optionally -fractional) seconds, or an undef to wait indefinitely. - -=item * - -Document the C and C magic types. - -=item * - -The ordering of PODs in perl.pod is now more sensical. - -=item * - -perlbook now only mentions the Camel III, all other book references -have been moved to perlfaq2, some good known books added. - -=item * - -Numerous missing warning/error messages added to perldiag. - -=item * - -Tell what's perl6 in perlfaq1. - -=item * - -perlhack much extended. - -=item * - -perltrap cleaned up. - -=item * - -Add perlxstut example for passing/returning refs to arrays. - -=item * - -POSIX module documentation embellished. - -=item * - -Clarify the status of shadow password support. - -=item * - -Remind that preprocessors and source filters can alter -your code before Perl sees it and therefore debugging -can be somewhat surprising. ("I didn't write *that*!") +Arrays now always interpolate into double-quoted strings: +constructs like "foo@bar" now always assume C<@bar> is an array, +whether or not the compiler has seen use of C<@bar>. =item * -Remove incorrect documentation about implicit split to @_ -in list context, which never really worked in Perl 5 anyway. - -=item * - -Tell that split /^/ is split /^/m. +The semantics of bless(REF, REF) were unclear and until someone proves +it to make some sense, it is forbidden. =item * -Many more sprintf() examples in perlfunc. +The very dusty examples in the eg/ directory have been removed. +Suggestions for new shiny examples welcome but the main issue is that +the examples need to be documented, tested and (most importantly) +maintained. =item * -Document the handling of negative indices to tied arrays. +The obsolete chat2 library that should never have been allowed +to escape the laboratory has been decommissioned. =item * -The C<$yday> in localtime()/gmtime() is 0..364, not 1..365. +The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still +recognised but now cause fatal errors. The previous behaviour of +ignoring them by default and warning if requested was unacceptable +since it, in a way, falsely promised that the features could be used. =item * -Document that tr() is not tr(1): that is, do not expect regular expressions. +lstat(FILEHANDLE) now gives a warning because the operation makes no sense. +In future releases this may become a fatal error. =item * -Warn about the vagaries of UDP. +The long deprecated uppercase aliases for the string comparison +operators (EQ, NE, LT, LE, GE, GT) have now been removed. =item * -The uninitialized variable warnings now say "concat or string" or -"join or string" instead of just "concat" or "join" since many users -found the "concat" a bit surprising when they were doing "just" -variable interpolation. +The regular expression captured submatches ($1, $2, ...) are now +more consistently unset if the match fails, instead of leaving false +data lying around in them. =item * -Document that the values() are copies, not aliases. +The tr///C and tr///U features have been removed and will not return; +the interface was a mistake. Sorry about that. For similar +functionality, see pack('U0', ...) and pack('C0', ...). =back -=head2 New Documentation +=head1 Core Enhancements =over 4 =item * -perl56delta details the changes between the 5.005 release and the -release 5.6.0. - -=item * - -perl56delta is a Perl debugging tutorial. - -=item * - -perlebcdic contains considerations for running Perl on EBCDIC platforms. -Note that unfortunately EBCDIC platforms that used to supported back in -Perl 5.005 are still unsupported by Perl 5.7; the plan, however, is to -bring them back to the fold. - -=item * - -perlnewmod tells about writing and submitting a new module. - -=item * - -perlposix-bc explains using Perl on the POSIX-BC platform -(a mainframe platform). - -=item * - -perlretut is a regular expression tutorial. - -=item * - -perlrequick is regular expressions quick-start guide. -Yes, much quicker than perlretut. - -=item * - -perlutil explains the command line utilities packaged with the Perl -distribution. - -=back - -=head1 Security Vulnerability - -A potential security vulnerability in the optional suidperl component -of Perl has been identified. The suidperl is neither built nor -installed by default. As of August the 20th 2000 the only known -vulnerable platform is Linux, most likely all Linux distributions. -The CERT and various vendors have been alerted about the vulnerability. - -The problem was caused by Perl trying to report a suspected security -exploit attempt using an external program, /bin/mail. In Linux -platforms the /bin/mail program had an undocumented feature which gave -access to a root shell, resulting in a serious compromise, instead of -reporting the exploit attempt. If you don't have /bin/mail or if you -have 'safe suid scripts' or if you haven't installed the suidperl, you -are safe. - -The exploit attempt reporting feature has been completely removed from -the Perl 5.7.0 release, so that particular vulnerability isn't there -anymore. However, further security vulnerabilities are, -unfortunately, always possible. The suidperl code is being reviewed -and if deemed too risky to continue being supported, in the extreme -case it may be completely removed in future releases. In any case, -suidperl should only be used by security experts who know exactly what -they are doing and why are they using suidperl instead of some other solution. -A good tool for similar needs is sudo: http://www.courtesan.com/sudo/ - -=head1 Performance Enhancements - -map() that changes the size of the list should now work faster. - -=head1 Installation and Configuration Improvements - -=head2 INSTALL now explains 64-bit configuration. - -In some platforms Perl can be configured to use 64-bit integers, -allowing 4 billion times better...sorry, switched accidentally to -marketdroid mode for a moment in there. (In platforms which are -natively 64-bit this makes no difference.) - -=head2 Policy.sh policy change - -If you are reusing a Policy.sh file (see INSTALL) and you use -Configure -Dprefix=/foo/bar and in the old Policy $prefix eq -$siteprefix and $prefix eq $vendorprefix, all of them will now -be changed to the new prefix, /foo/bar. (Previously only $prefix -did change.) If you do not like this new behaviour, specify -prefix, siteprefix, and vendorprefix explicitly. - -=head2 Additional Library Locations - -A new optional location for Perl libraries, otherlibdirs, is available. -It can be used for example for vendor add-ons without disturbing Perl's -own library directories. - -=head2 gcc automatically tried if 'cc' does not seem to be working - -In many platforms the vendor-supplied 'cc' is too stripped-down to -build Perl (basically, the 'cc' doesn't do ANSI C). If this seems -to be the case and the 'cc' does not seem to be the GNU C compiler -'gcc', an automatic attempt is made to find and use 'gcc' instead. - -=head2 If gcc seems to be from from a different operating system release ... - -gcc needs to closely track the operating system release because gcc -wants to have its own versions of the operating system header files -fixed to be clean enough for gcc's tastes. Therefore using a gcc -compiled for a different release of the operating system is often a -bad idea. If Configure can find out the operating system release that -was used to compile the gcc and that release is different from the one -being used now, gcc gives a clearly visible warning that trouble may -lie ahead. - -=head2 If no binary compatibilty with 5.005 wanted, no 5.005 modules, either - -If no binary compatibility with the 5.005 release is wanted, Configure -does not suggest including the 5.005 modules in the @INC. - -=head2 Configuration and Installation fixes - -=over 4 +C now works (previously one couldn't pass +in multiple arguments.) =item * -Configure C<-S> can now run non-interactively +my __PACKAGE__ now works. =item * -configure.gnu now works with options with whitespace in them +C now works even if there is no "sub unimport" in the Module. =item * -installperl now outputs everything to STDERR +The numerical comparison operators return C if either operand +is a NaN. Previously the behaviour was unspecified. =item * -$Config{byteorder} is now computed dynamically (this is more robust -with "fat binaries" where an executable image contains binaries for -more than one binary platform.) - -=back - -=head1 Platform Specific Changes and Fixes - -=head2 BSDI 4.* - -Perl now works on post-4.0 BSD/OSes. - -=head2 All BSDs - -Setting the C<$0> now works (as much as possible, see perlvar for details). - -=head2 Cygwin - -=over 4 +C can now be used to force a string to UTF8. =item * -Numerous updates; currently synchronized with Cygwin 1.1.4. +prototype(\&) is now available. =back -=head2 EPOC - -EPOC update after Perl 5.6.0. The EPOC port home page is at -http://members.linuxstart.com/~oflebbe/perl/perl5.html - -=head2 FreeBSD 3.* - -Perl now works on post-3.0 FreeBSDs. +=head1 Modules and Pragmata -=head2 HP-UX +=head2 New Modules =over 4 =item * -Document that the C causes problems if one uses C -(because the HP C compiler does funny things to that // thinking it -to be C++), document also the workaround. +File::Temp allows one to create temporary files and directories in an +easy, portable, and secure way. =item * -C now almost works (one failing test). +Storable gives persistence to Perl data structures by allowing the +storage and retrieval of Perl data to and from files in a fast and +compact binary format. =back -=head2 IRIX +=head2 Updated And Improved Modules and Pragmata =over 4 =item * -Numerous compilation flag and hint enhancements. +The following independently supported modules have been updated to +newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long, +the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test. =item * -Accidental mixing of 32-bit and 64-bit libraries (a doomed attempt) -made much harder. +Bug fixes and minor enhancements have been applied to B::Deparse, +Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat, Math::Complex, +re, SelfLoader, Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL. -=back - -=head2 Linux +=item * -=over 4 +The attributes::reftype() now works on tied arguments. =item * -Long doubles should now work (see INSTALL). +AutoLoader can now be disabled with C, -=back +=item * -=head2 MacOS Classic +The English module can now be used without the infamous performance +hit by saying -=over 4 + use English '-no_performance_hit'; + +(Assuming, of course, that one doesn't need the troublesome variables +C<$`>, C<$&>, or C<$'>.) Also, introduce C<@LAST_MATCH_START> and +C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. =item * -Compilation of the standard Perl distribution in MacOS Classic should -now work--assuming you have the Metrowerks development environment and -the missing Mac-specific toolkit bits, contact the macperl mailing -list for details. +File::Find now has pre- and post-processing callbacks. It also +correctly changes directories when chasing symbolic links. Callbacks +(naughtily) exiting with "next;" instead of "return;" now work. -=back +=item * -=head2 MPE/iX +File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid +prototype mismatch with CORE::glob(). -MPE/iX update after Perl 5.6.0. The Perl/iX home page is at -http://www.bixby.org/mark/perlix.html +=item * -=head2 NetBSD/sparc +IPC::Open3 now allows the use of numeric file descriptors. -Perl now works on NetBSD/sparc. +=item * -=head2 OS/2 +use lib now works identically to @INC. Removing directories +with 'no lib' now works. -=over 4 +=item * + +C<%INC> now localised in a Safe compartment so that use/require work. =item * -Now works with usethreads (see INSTALL). +The Shell module now has an OO interface. =back -=head2 Solaris +=head1 Utility Changes =over 4 =item * -64-bitness using the Sun Workshop compiler now works. +The Emacs perl mode (emacs/cperl-mode.el) has been updated to version 4.31. -=back +=item * -=head2 Tru64 (aka Digital UNIX, aka DEC OSF/1) +The long-dormant perl bytecompiler has been added to the list of +installed utilities since the bytecompiler backend has been improved. +The bytecompiler is still very much experimental, though. -=over 4 +=item * + +Perlbug is now much more robust. It also sends the bug report to perl.org, +not perl.com. =item * -Allow compiling with gcc (previously explicitly forbidden). Compiling -with gcc still not recommended because buggy code results, even with -gcc 2.95.2. +The perlcc utility has been rewritten and its user interface (that is, +command line) is much more like that of the UNIX C compiler, cc. =item * -The operating system version letter now recorded in $Config{osvers}. +The xsubpp utility for extension writers now understands POD +documentation embedded in the *.xs files. =back -=head2 Unicos +=head1 New Documentation =over 4 =item * -Fixed various alignment problems that lead into core dumps either -during build or later. +perl56delta details the changes between the 5.005 release and the +5.6.0 release. =item * -No more dying on math errors in runtime. +perldebtut is a Perl debugging tutorial. =item * -Now using full quad integers (64 bits), previously was using -only 43 bit integers for speed. +perlebcdic contains considerations for running Perl on EBCDIC platforms. +Note that unfortunately EBCDIC platforms that used to supported back in +Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to +bring them back to the fold. -=back +=item * -=head2 VMS +perlnewmod tells about writing and submitting a new module. -=over 4 +=item * + +perlposix-bc explains using Perl on the POSIX-BC platform +(an EBCDIC mainframe platform). =item * -chdir() now works better despite a CRT bug. +perlretut is a regular expression tutorial. =item * -Now works with MULTIPLICITY (see INSTALL). +perlrequick is a regular expressions quick-start guide. +Yes, much quicker than perlretut. =item * -Now works with Perl's malloc. +perlutil explains the command line utilities packaged with the Perl +distribution. =back -=head2 Windows +=head1 Performance Enhancements =over 4 =item * -accept() no more leaks memory. +map() that changes the size of the list should now work faster. -=item * +=back -Better chdir() return value for a non-existent directory. +=head1 Installation and Configuration Improvements -=item * +=head2 Generic Improvements -New %ENV entries now propagate to subprocesses. +=over 4 =item * -$ENV{LIB} now used to search for libs under Visual C. +INSTALL now explains how you can configure perl to use 64-bit +integers even on non-64-bit platforms. =item * -A failed (pseudo)fork now returns undef and sets errno to EAGAIN. +Policy.sh policy change: if you are reusing a Policy.sh file (see +INSTALL) and you use Configure -Dprefix=/foo/bar and in the old +Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of +them will now be changed to the new prefix, /foo/bar. (Previously +only $prefix changed.) If you do not like this new behaviour, +specify prefix, siteprefix, and vendorprefix explicitly. =item * -Allow REG_EXPAND_SZ keys in the registry. +A new optional location for Perl libraries, otherlibdirs, is available. +It can be used for example for vendor add-ons without disturbing Perl's +own library directories. =item * -Can now send() from all threads, not just the first one. +In many platforms the vendor-supplied 'cc' is too stripped-down to +build Perl (basically, 'cc' doesn't do ANSI C). If this seems +to be the case and 'cc' does not seem to be the GNU C compiler +'gcc', an automatic attempt is made to find and use 'gcc' instead. =item * -Fake signal handling reenabled, bugs and all. +gcc needs to closely track the operating system release to avoid +build problems. If Configure finds that gcc was built for a different +operating system release than is running, it now gives a clearly visible +warning that there may be trouble ahead. =item * -Less stack reserved per thread so that more threads can run -concurrently. (still 16M perl thread) +If binary compatibility with the 5.005 release is not wanted, Configure +no longer suggests including the 5.005 modules in @INC. =item * -Ctmpdir()> now prefers C:/temp over /tmp -(works better when perl running as service). +Configure C<-S> can now run non-interactively. =item * -Better UNC path handling under ithreads. +configure.gnu now works with options with whitespace in them. =item * -wait() and waitpid() now work much better. +installperl now outputs everything to STDERR. =item * -winsock handle leak fixed. +$Config{byteorder} is now computed dynamically (this is more robust +with "fat binaries" where an executable image contains binaries for +more than one binary platform.) =back =head1 Selected Bug Fixes -The following is by no means a comprehensive list of all the -numerous bug fixes. - =over 4 =item * -Redefining constant subroutines using eval (again) warns. - -=item * - Several debugger fixes: exit code now reflects the script exit code, condition C<"0"> now treated correctly, the C command now checks -line number, the C<$.> no more gets corrupted, all debugger output now +line number, the C<$.> no longer gets corrupted, all debugger output now goes correctly to the socket if RemotePort is set. =item * @@ -783,33 +383,25 @@ Line renumbering with eval and C<#line> now works. =item * -Module name now mandatory after the C<-M> switch. - -=item * - Fixed numerous memory leaks, especially in eval "". =item * -Moduli of unsigned numbers now works (4063328477 % 65535 used to +Modulus of unsigned numbers now works (4063328477 % 65535 used to return 27406, instead of 27047). =item * -msgrcv() no more warns about uninitialized input scalar. - -=item * - -Some "not a number" warnings introduce in 5.6.0 eliminated to be -more compatible with 5.005. +Some "not a number" warnings introduced in 5.6.0 eliminated to be +more compatible with 5.005. Infinity is now recognised as a number. =item * -out() variables will not cause "will not stay shared" warnings +our() variables will not cause "will not stay shared" warnings. =item * -The pack "Z" now correctly terminates the string with an "\0". +pack "Z" now correctly terminates the string with "\0". =item * @@ -818,25 +410,16 @@ Fix password routines which in some shadow password platforms =item * -POSIX::STDERR_FILENO (not POSIX::STRERR_FILENO). +printf() no longer resets the numeric locale to "C". =item * -printf() no more resets the numeric locale to "C". +C now parses correctly as C<'a\\b'>. =item * -C now parses as C<'a\\b'>. - -=item * - -In quad (64-bit) platforms numbers now stay integers longer -(as opposed to converting automatically to floating point numbers). - -=item * - -Printing quads (64-bit integers) with printfs/sprintf works now -without q L ll prefixes (assuming you are on a quad-capable platform). +Printing quads (64-bit integers) with printf/sprintf now works +without the q L ll prefixes (assuming you are on a quad-capable platform). =item * @@ -844,289 +427,308 @@ Regular expressions on references and overloaded scalars now work. =item * -Multiline matching of C<"a\nxb\n" =~ /(?!\A)x/m> now works. - -=item * - -C now works. - -=item * - -C now works. - -=item * - -scalar() now doesn't force scalar context when used in void context. - -=item * - -All the documented examples Shell.pm now work. +scalar() now forces scalar context even when used in void context. =item * sort() arguments are now compiled in the right wantarray context -(were accidentally using the context of the sort() itself). +(they were accidentally using the context of the sort() itself). =item * Changed the POSIX character class C<[[:space:]]> to include the (very -rare) vertical tabulator character. Added a new POSIX-ish character -class C<[[:blank:]] which stands for horizontal whitespace (currently, -the space and the tabulator). - -=item * - -sprintf() format specs like C<%v-*d> now work. +rare) vertical tab character. Added a new POSIX-ish character class +C<[[:blank:]]> which stands for horizontal whitespace (currently, +the space and the tab). =item * -The (nonsensical) C<%#p> format made illegal. +$AUTOLOAD, sort(), lock(), and spawning subprocesses +in multiple threads simultaneously are now thread-safe. =item * -C<${$1}> now works (again). +Allow read-only string on left hand side of non-modifying tr///. =item * -$AUTOLOAD, sort(), lock(), and spawning subprocesses -in multiple thread simultaneously are now thread-safe. - -=item * +Several Unicode fixes (but still not perfect). -Allow non-variable as left-handside of non-updating tr///. +=over 8 =item * -Several Unicode fixes (but still not perfect). - BOMs (byte order marks) in the beginning of Perl files (scripts, modules) should now be transparently skipped. +UTF16 encoded Perl files should now be read correctly. + +=item * The character tables have been updated to new Unicode 3.0 features. +=item * + chr() for values greater than 127 now create utf8 when under use utf8. +=item * + Comparing with utf8 data does not magically upgrade non-utf8 data into utf8. +=item * + C, C, and C now match titlecase. +=item * + Concatenation with the C<.> operator or via variable interpolation, C, C, C, C, the C operator, substitution with C, single-quoted UTF8, should now work--in theory. +=item * + The C operator now works I better but is still rather broken. Note that the C functionality has been removed (but -see pack('U0', ...). - -Zero entries were missing from the Unicode classes like C. +see pack('U0', ...)). =item * -Unsignedness could disappear from a scalar causing later numeric -comparisons to fail. +Zero entries were missing from the Unicode classes like C. + +=back =item * -vec() now drops numericalness. +UNIVERSAL::isa no longer caches methods incorrectly. (This broke +the Tk extension with 5.6.0.) =back -=head1 New or Changed Diagnostics +=head2 Platform Specific Changes and Fixes -All regular expression compilation error messages are now hopefully -easier to understand both because the error message now comes before -the failed regex and because the point of failure is now clearly -marked. +=over 4 -The various "opened only for", "on closed", "never opened" warnings -drop the C prefix for filehandles in the C
package, -for example C instead of . +=item * -=over 4 +BSDI 4.* + +Perl now works on post-4.0 BSD/OSes. =item * -(perhaps you forgot to load "%s"?) +All BSDs -(F) This is an educated guess made in conjunction with the message -"Can't locate object method \"%s\" via package \"%s\"". It often means -that a method requires a package that has not been loaded. +Setting C<$0> now works (as much as possible; see perlvar for details). =item * -Ambiguous range in transliteration operator +Cygwin -(F) You wrote something like C which doesn't mean anything at -all. To include a C<-> character in a transliteration, put it either -first or last. (In the past, C was synonymous with -C, which was probably not what you would have expected.) +Numerous updates; currently synchronised with Cygwin 1.1.4. =item * -The "Unrecgonized escape" warning has been extended to include C<\8>, -C<\9>, and C<\_>. There is no need to espace any of the C<\w> characters. +EPOC -=back +EPOC update after Perl 5.6.0. See README.epoc. -=head1 New tests +=item * -=over 4 +FreeBSD 3.* + +Perl now works on post-3.0 FreeBSDs. =item * -lib/b tests the various compiler backends (see L). +HP-UX + +README.hpux updated; C now almost works. =item * -lib/cgi-pretty tests CGI pretty printing. +IRIX + +Numerous compilation flag and hint enhancements; accidental mixing +of 32-bit and 64-bit libraries (a doomed attempt) made much harder. =item * -lib/ftmp-*.t test File::Temp. +Linux + +Long doubles should now work (see INSTALL). =item * -lib/gol-oo tests Getopt::Long objected-oriented interface. +MacOS Classic + +Compilation of the standard Perl distribution in MacOS Classic should +now work if you have the Metrowerks development environment and +the missing Mac-specific toolkit bits. Contact the macperl mailing +list for details. =item * -lib/peek tests Devel::Peek. +MPE/iX + +MPE/iX update after Perl 5.6.0. See README.mpeix. =item * -lib/selfloader tests SelfLoader. +NetBSD/sparc + +Perl now works on NetBSD/sparc. =item * -lib/syslog tests Sys::Syslog. +OS/2 + +Now works with usethreads (see INSTALL). =item * -op/bless tests bless(). +Solaris + +64-bitness using the Sun Workshop compiler now works. =item * -op/stash tests the "my Package ..." feature. +Tru64 (aka Digital UNIX, aka DEC OSF/1) + +The operating system version letter now recorded in $Config{osvers}. +Allow compiling with gcc (previously explicitly forbidden). Compiling +with gcc still not recommended because buggy code results, even with +gcc 2.95.2. =item * -op/regmesg exercises all various regex errors. +Unicos + +Fixed various alignment problems that lead into core dumps either +during build or later; no longer dies on math errors at runtime; +now using full quad integers (64 bits), previously was using +only 46 bit integers for speed. =item * -pod/find tests Pod::Find. +VMS -=back +chdir() now works better despite a CRT bug; now works with MULTIPLICITY +(see INSTALL); now works with Perl's malloc. -=head2 Improved Tests +=item * -=over 4 +Windows + +=over 8 + +=item * + +accept() no longer leaks memory. =item * -op/sprintf coverage is now of much more comprehensive. +Better chdir() return value for a non-existent directory. =item * -op/taint now continues on failed shmget(). +New %ENV entries now propagate to subprocesses. =item * -lib/*lfs.t now continues even if SIXFSZ happens. +$ENV{LIB} now used to search for libs under Visual C. =item * -lib/syslog.t now works without sockets. +A failed (pseudo)fork now returns undef and sets errno to EAGAIN. -=back +=item * -=head1 Incompatible Changes +Allow REG_EXPAND_SZ keys in the registry. -=head2 Arrays Now Always Interpolate Into Double-Quoted Strings +=item * -Constructs like "foo@bar" now always assume the C<@bar> to be an array, -and not dependent on whether it is known whether that is an array or not. +Can now send() from all threads, not just the first one. -=head2 bless(REF, REF) is now a fatal error +=item * -The semantics of bless(REF, REF) were unclear and until someone proves -it to make some sense, it is forbidden. +Fake signal handling reenabled, bugs and all. -=head2 The eg/* Directory Removed +=item * -The very dusty examples in the eg/ directory have been removed. -Suggestions for new shiny examples welcome but the main issue is that -the examples need to be documented, tested, and most importantly maintained. +Less stack reserved per thread so that more threads can run +concurrently. (still 16M perl thread) -=head2 The lib/chat2.pl +=item * -The obsolete chat2 library that should never have been allowed -to escape the laboratory has been decommissioned. +Ctmpdir()> now prefers C:/temp over /tmp +(works better when perl running as service). -=head2 The Unimplemented (But Recognized) POSIX Regex Features Now Fatal +=item * -The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are -recognized as before but now cause fatal runtime errors. The previous -behaviour of ignoring them by default and warning if requested was -unacceptable since it in a way falsely promised that the features -can be used. +Better UNC path handling under ithreads. -=head2 lstat(FILEHANDLE) now warns +=item * -lstat(FILEHANDLE) now gives a warning because the operation makes no sense. -In future releases this may become a fatal error. +wait() and waitpid() now work much better. -=head2 Obsolete String Comparison Operators Removed +=item * -The long since deprecated uppercase aliases for the string comparison -operators (EQ, NE, LT, LE, GE, GT) have now been removed. +winsock handle leak fixed. + +=back -=head2 The Regular Expression Submatches Are Now Unset When Backtracking +=head1 New or Changed Diagnostics -The regular expression captured submatches ($1, $2, ...) are now -consistently unset if the match fails, instead of leaving false -data lying around in them. +All regular expression compilation error messages are now hopefully +easier to understand both because the error message now comes before +the failed regex and because the point of failure is now clearly +marked. -=head2 tr///CU Removed, Not To Return +The various "opened only for", "on closed", "never opened" warnings +drop the C prefix for filehandles in the C
package, +for example C instead of . -The tr///C and tr///U features have been removed and will not return, -the interface was a mistake. Sorry about that. For similar -functionality, see pack('U0', ...) and pack('C0', ...). +The "Unrecognized escape" warning has been extended to include C<\8>, +C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters. =head1 Changed Internals -=head2 apidoc +=over 4 + +=item * -The perlapi.pod now attempts to document the internal API -(a companion to perlguts). +perlapi.pod (a companion to perlguts) now attempts to document the +internal API. -=head2 microperl +=item * -There is now a way to build really minimal perl called microperl. -Building does not require even running Configure, C -should be enough. Beware: microperl makes many assumptions, some of -which may be too bold, the resulting executable may crash or -otherwise misbehave in wondrous ways. For careful hackers only. +You can now build a really minimal perl called microperl. +Building microperl does not require even running Configure; +C should be enough. Beware: microperl makes +many assumptions, some of which may be too bold; the resulting +executable may crash or otherwise misbehave in wondrous ways. For +careful hackers only. -=head2 Publicize More Functions +=item * -Added rsignal(), whichsig(), do_join() to the publicized API. +Added rsignal(), whichsig(), do_join() to the publicised API. -=head2 Propagating Exception Objects via Perl_croak() IN XS code +=item * -Made possible to propagate customized exceptions via croak()ing. +Made possible to propagate customised exceptions via croak()ing. -=head2 UTF8 Interfaces +=item * Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes(). -=head2 xsub attributes +=item * Now xsubs can have attributes just like subs. +=back + =head1 Known Problems =head2 Unicode Support Still Far From Perfect @@ -1140,28 +742,41 @@ The plan is to bring them back. =head2 Building Extensions Can Fail Because Of Largefiles Certain extensions like mod_perl and BSD::Resource are known to have -issues with `largefiles', a change brought by Perl 5.6.0 in where file -offsets are by default 64 bits wide (assuming the platform supports -such large files). Modules may fail to compile at all or compile and -work incorrectly. Currently there is no good solution for the problem -but Configure now stores the flags and libraries that effect the -largefileness to the %Config hash, the extensions that are having +issues with `largefiles', a change brought by Perl 5.6.0 in which file +offsets default to 64 bits wide where supported. Modules may fail to +compile at all or compile and work incorrectly. Currently there is no +good solution for the problem, but Configure now stores the relevant +flags and libraries in the %Config hash so the extensions that are having problems can try configuring themselves without the largefileness. This is admittedly not a clean solution. -=head1 Obsolete Diagnostics +=over 4 + +=item In string, @%s now must be written as \@%s + +(F) It used to be that Perl would try to guess whether you wanted an +array interpolated or a literal @. It did this when the string was +first used at runtime. Now strings are parsed at compile time, and +ambiguous instances of @ must be disambiguated, either by prepending a +backslash to indicate a literal, or by declaring (or using) the array +within the program before the string (lexically). (I) + +=back + +That day has arrived. =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. -There may also be information at http://www.perl.com/perl/, the Perl -Home Page. +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.com/perl/, the Perl Home Page. If you believe you have an unreported bug, please run the B 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, will be sent off to perlbug@perl.com to be +output of C, will be sent off to perlbug@perl.org to be analysed by the Perl porting team. =head1 SEE ALSO @@ -1179,6 +794,6 @@ The F and F files for copyright information. Written by Jarkko Hietaniemi >, with many contributions from The Perl Porters and Perl Users submitting feedback and patches. -Send omissions or corrections to >. +Send omissions or corrections to >. =cut