X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldelta.pod;h=aa08dce7de3c546038df7496aacb4a72aa1f778a;hb=9497474043a29ae84d941e84594160f022e3f31c;hp=42e5dbf25038e3f60b2f4587fed3208713c8d6ec;hpb=58122748fa6aa7e7bdd6f66fdd58e4e6f37e79f1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 42e5dbf..aa08dce 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -28,11 +28,11 @@ Better Unicode support =item * -New Thread Implementation +New IO Implementation =item * -Many New Modules +New Thread Implementation =item * @@ -44,6 +44,10 @@ Safe Signals =item * +Many New Modules + +=item * + More Extensive Regression Testing =back @@ -233,6 +237,19 @@ source code level, this shouldn't be that drastic a change. =item * +Previous versions of perl and some readings of some sections of Camel III +implied that the C<:raw> "discipline" was the inverse of C<:crlf>. +Turning off "clrfness" is no longer enough to make a stream truly +binary. So the PerlIO C<:raw> layer (or "discipline", to use the +Camel book's older terminology) is now formally defined as being +equivalent to binmode(FH) - which is in turn defined as doing whatever +is necessary to pass each byte as-is without any translation. +In particular binmode(FH) - and hence C<:raw> - will now turn off both CRLF +and UTF-8 translation and remove other layers (e.g. :encoding()) which +would modify byte stream. + +=item * + The current user-visible implementation of pseudo-hashes (the weird use of the first array element) is deprecated starting from Perl 5.8.0 and will be removed in Perl 5.10.0, and the feature will be @@ -240,7 +257,9 @@ implemented differently. Not only is the current interface rather ugly, but the current implementation slows down normal array and hash use quite noticeably. The C pragma interface will remain available. The I interface is expected to -be the replacement interface (see L). +be the replacement interface (see L). If your existing +programs depends on the underlying implementation, consider using +L from CPAN. =item * @@ -323,6 +342,17 @@ of PerlIO on your architecture name. =item * +If your platform supports fork(), you can use the list form of C +for pipes. For example: + + open KID_PS, "-|", "ps", "aux" or die $!; + +forks the ps(1) command (without spawning a shell, as there are more +than three arguments to open()), and reads its standard output via the +C filehandle. See L. + +=item * + File handles can be marked as accepting Perl's internal encoding of Unicode (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" : @@ -339,10 +369,10 @@ for more information about UTF-8. If your environment variables (LC_ALL, LC_CTYPE, LANG, LANGUAGE) look like you want to use UTF-8 (any of the the variables match C), -your STDIN, STDOUT, STDERR handles and the default open discipline +your STDIN, STDOUT, STDERR handles and the default open layer (see L) are marked as UTF-8. (This feature, like other new features that combine Unicode and I/O, work only if you are using -PerlIO, but that's is the default.) +PerlIO, but that's the default.) Note that after this Perl really does assume that everything is UTF-8: for example if some input handle is not, Perl will probably very soon @@ -737,7 +767,8 @@ See L =item * -C allows a class to define attribute handlers. +C, originally by Damian Conway and now maintained +by Arthur Bergman, allows a class to define attribute handlers. package MyPack; use Attribute::Handlers; @@ -801,6 +832,8 @@ RFC 1321, from Gisle Aas, has been added. See L. NOTE: the C backward compatibility module is deliberately not included since its further use is discouraged. +See also L. + =item * C, originally by Nick Ing-Simmons and now maintained by Dan @@ -959,13 +992,7 @@ in quoted-printable encoding, as defined in RFC 2045 - IVia(MIME::QuotedPrint)",$path); - -See L. +See also L. =item * @@ -974,27 +1001,32 @@ See L. =item * -C is a new pragma for setting the default I/O disciplines +C is a new pragma for setting the default I/O layers for open(). =item * -C, by Nick Ing-Simmons, provides the implementation +C, by Nick Ing-Simmons, provides the implementation of IO to "in memory" Perl scalars as discussed above. It also serves as an example of a loadable PerlIO layer. Other future possibilities -include PerlIO::Array and PerlIO::Code. See L. +include PerlIO::Array and PerlIO::Code. See L. =item * -C, by Nick Ing-Simmons, acts as a PerlIO layer and wraps +C, by Nick Ing-Simmons, acts as a PerlIO layer and wraps PerlIO layer functionality provided by a class (typically implemented -in perl code). +in Perl code). - use MIME::QuotedPrint; - open($fh,">Via(MIME::QuotedPrint)",$path); +=item * + +C, by Elizabeth Mattijsen, is an example +of a C class: + + use PerlIO::via::QuotedPrint; + open($fh,">:via(QuotedPrint)",$path); -This will automatically convert everything output to C<$fh> -to Quoted-Printable. See L. +This will automatically convert everything output to C<$fh> to +Quoted-Printable. See L and L. =item * @@ -1022,7 +1054,7 @@ C is a new pragma for controlling the behaviour of sort(). C 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. Because in effect Storable does serialisation -of Perl data structues, with it you can also clone deep, hierarchical +of Perl data structures, with it you can also clone deep, hierarchical datastructures. Storable was originally created by Raphael Manfredi, but it is now maintained by Abhijit Menon-Sen. Storable has been enhanced to understand the two new hash features, Unicode keys and @@ -1226,6 +1258,20 @@ C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. =item * +ExtUtils::MakeMaker has been significantly cleaned up and fixed. +The enhanced version has also been backported to earlier releases +of Perl and submitted to CPAN so that the earlier releases can +enjoy the fixes. + +=item * + +The arguments of WriteMakefile() in Makefile.PL are now checked +for sanity much more carefully than before. This may cause new +warnings when modules are being installed. See L +for more details. + +=item * + ExtUtils::MakeMaker now uses File::Spec internally, which hopefully leads to better portability. @@ -1938,8 +1984,8 @@ See L. =item * -The DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near -osvers 4.5.2. +The DYNIX/ptx platform (also known as dynixptx) is supported at or +near osvers 4.5.2. =item * @@ -2071,13 +2117,6 @@ The order of DESTROYs has been made more predictable. =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, C<$.> no longer gets corrupted, and all debugger output -now goes correctly to the socket if RemotePort is set. [561] - -=item * - Perl 5.6.0 could emit spurious warnings about redefinition of dl_error() when statically building extensions into perl. This has been corrected. [561] @@ -2580,7 +2619,8 @@ functionality and better error handling. [561] File access tests now use current process privileges rather than the user's default privileges, which could sometimes result in a mismatch -between reported access and actual access. +between reported access and actual access. This improvement is only +available on VMS v6.0 and later. There is a new C implementation based on C that allows older VMS systems (pre-7.0) to use C to send signals rather than @@ -2776,6 +2816,13 @@ respectively. =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, C<$.> no longer gets corrupted, and all debugger output +now goes correctly to the socket if RemotePort is set. [561] + +=item * + The debugger (perl5db.pl) has been modified to present a more consistent commands interface, via (CommandSet=580). perl5db.t was also added to test the changes, and as a placeholder for further tests. @@ -2911,6 +2958,8 @@ There are now several profiling make targets. =head1 Security Vulnerability Closed [561] (This change was already made in 5.7.0 but bears repeating here.) +(5.7.0 came out before 5.6.1: the development branch 5.7 released +earlier than the maintenance branch 5.6) A potential security vulnerability in the optional suidperl component of Perl was identified in August 2000. suidperl is neither built nor @@ -2940,12 +2989,13 @@ such as sudo ( see http://www.courtesan.com/sudo/ ). =head1 New Tests -Several new tests have been added, especially for the F and F -subsections. There are now about 65 000 individual tests (spread over -about 700 test scripts), in the regression suite (5.6.1 has about -11700 tests, in 258 test scripts) Many of the new tests are of course -introduced by the new modules, but still in general Perl is now more -thoroughly tested. +Several new tests have been added, especially for the F and +F subsections. There are now about 69 000 individual tests +(spread over about 700 test scripts), in the regression suite (5.6.1 +has about 11 700 tests, in 258 test scripts) The exact numbers depend +on the platform and Perl configuration used. Many of the new tests +are of course introduced by the new modules, but still in general Perl +is now more thoroughly tested. Because of the large number of tests, running the regression suite will take considerably longer time than it used to: expect the suite @@ -3024,6 +3074,8 @@ The following tests fail on 5.8.0 Perl in BeOS Personal 5.03: t/op/lfs............................FAILED at test 17 t/op/magic..........................FAILED at test 24 + ext/Fcntl/t/syslfs..................FAILED at test 17 + ext/File/Glob/t/basic...............FAILED at test 3 ext/POSIX/t/sigaction...............FAILED at test 13 ext/POSIX/t/waitpid.................FAILED at test 1 @@ -3036,6 +3088,11 @@ you may get an error message saying "unable to remap". This is known problem with Cygwin, and a workaround is detailed in here: http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html +=head2 Cygwin ndbm tests fail on FAT + +One can build but not install (or test the build of) the NDBM_File +on FAT filesystems. Installation (or build) on NTFS works fine. + =head2 ext/threads/t/libc If this test fails, it indicates that your libc (C library) is not @@ -3047,12 +3104,14 @@ find out whether it is threadsafe. See L for more information. This is a known bug in FreeBSD's readdir_r() (see L (README.freebsd)), which hopefully will be fixed in FreeBSD 4.6. -=head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales +=head2 FreeBSD Failing locale Test 117 For ISO 8859-15 Locales -The ISO8859-15 locales may fail the locale test 117 in FreeBSD. +The ISO 8859-15 locales may fail the locale test 117 in FreeBSD. This is caused by the characters \xFF (y with diaeresis) and \xBE (Y with diaeresis) not behaving correctly when being matched -case-insensitively. +case-insensitively. Apparently this problem has been fixed in +the latest FreeBSD releases. +( http://www.freebsd.org/cgi/query-pr.cgi?pr=34308 ) =head2 IRIX fails ext/List/Util/t/shuffle.t @@ -3124,6 +3183,25 @@ this is not Perl's fault-- the libc of Mac OS X is not threadsafe (in this particular test, the localtime() call is found to be threadunsafe.) +=head2 OS/2 Test Failures + +The following tests are known to fail on OS/2 (for clarity +only the failures are shown, not the full error messages): + + t/io/utf8............................FAILED at test 19 + t/op/grent...........................FAILED at test 2 + t/op/pwent...........................FAILED at test 1 + t/lib/os2_base.......................FAILED at test 13 + t/lib/os2_process....................FAILED at test 10 + t/lib/os2_process_kid................FAILED at test 10 + t/lib/rx_cmprt.......................FAILED at test 16 + ext/DB_File/t/db-btree...............FAILED at test 0 + ext/DB_File/t/db-hash................FAILED at test 0 + ext/DB_File/t/db-recno...............FAILED at test 0 + lib/ExtUtils/t/basic.................FAILED at test 14 + lib/ExtUtils/t/Constant..............FAILED at test 4 + lib/Memoize/t/errors.................FAILED at test 4 + =head2 op/sprintf tests 91, 129, and 130 The op/sprintf tests 91, 129, and 130 are known to fail on some platforms. @@ -3144,6 +3222,14 @@ In case you are still using Solaris 2.5 (aka SunOS 5.5), you may experience failures (the test core dumping) in lib/locale.t. The suggested cure is to upgrade your Solaris. +=head2 Solaris x86 Fails Tests With -Duse64bitint + +The following tests are known to fail in Solaris x86 with Perl +configured to use 64 bit integers: + + ext/Data/Dumper/t/dumper.............FAILED at test 268 + ext/Devel/Peek/Peek..................FAILED at test 7 + =head2 SUPER-UX (NEC SX) The following tests are known to fail on SUPER-UX: @@ -3165,6 +3251,10 @@ is serious but as of yet unsolved. It points at some problems with the signedness handling of the C compiler, as do the 64bitint, arith, and pow failures. Most of the rest point at problems with SysV IPC. +=head2 PDL failing some tests + +Use PDL 2.3.4 or later. + =head2 Term::ReadKey not working on Win32 Use Term::ReadKey 2.20 or later. @@ -3209,15 +3299,18 @@ In case of failure please try running them manually, for example ./perl -Ilib ext/Time/HiRes/HiRes.t -=head2 UNICOS +=head2 Unicode in package/class and subroutine names does not work - ../lib/Math/Trig.t 26 1 3.85% 25 - ../lib/warnings.t 470 1 0.21% 429 +One can have Unicode in identifier names, but not in package/class or +subroutine names. While some limited functionality towards this does +exist as of Perl 5.8.0, that is more accidental than designed; use of +Unicode for the said purposes is unsupported. -The Trig.t failure is caused by the slighly differing (from IEEE) -floating point implementation of UNICOS. The warnings.t failure is -also related: the test assumes a certain floating point output format; -this assumption fails in UNICOS. +One reason of this unfinishedness is its (currently) inherent +unportability: since both package names and subroutine names may +need to be mapped to file and directory names, the Unicode capability +of the filesystem becomes important-- and there unfortunately aren't +portable answers. =head2 UNICOS/mk @@ -3293,25 +3386,46 @@ tests have been added. --------------------------------------------------------------------------- ../ext/Data/Dumper/t/dumper.t 357 8 2.24% 311 314 325 327 331 333 337 339 + ../ext/IO/lib/IO/t/io_pipe.t 10 2 20.00% 1 3 ../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5 ../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79 110-111 150 161 ../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48 ../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9 - op/pat.t 910 7 0.77% 665 776 785 832- - 834 845 + ../lib/strict.t 97 67 69.07% 2-10 15-17 20-21 + ... + ../lib/warnings.t 478 404 84.52% 1-11 13-20 22 24- + ... + op/anonsub.t 5 5 100.00% 1-5 + op/closure.t 171 150 87.72% 22-171 + op/fork.t 18 18 100.00% 1-18 + op/goto.t 22 1 4.55% 3 + op/magic.t 0 13 46 44 95.65% 3-46 + op/pat.t 0 11 922 283 30.69% 640-922 + op/runlevel.t 21 20 95.24% 1-14 16-21 + op/split.t 46 1 2.17% 11 op/sprintf.t 224 3 1.34% 98 100 136 + op/stat.t 73 2 2.74% 41-42 + op/subst.t 122 2 1.64% 91-92 + op/subst_wamp.t 122 2 1.64% 91-92 + op/taint.t 203 4 1.97% 1 3 31 37 op/tr.t 97 5 5.15% 63 71-74 + run/fresh_perl.t 97 1 1.03% 11 + run/runenv.t 11 11 100.00% 1-11 uni/fold.t 780 6 0.77% 61 169 196 661 710-711 The failures in dumper.t and downgrade.t are problems in the tests, -those in io_unix and sprintf are problems in the USS (UDP sockets -and printf formats). The pat, tr, and fold failures are genuine Perl +those in io_unix and sprintf are problems in the USS (UDP sockets and +printf formats). The pat, tr, and fold failures are genuine Perl problems caused by EBCDIC (and in the pat and fold cases, combining -that with Unicode). The Constant and Embed are probably problems -in the tests (since they test Perl's ability to build extensions, -and that seems to be working reasonably well.) +that with Unicode). The Constant and Embed are probably problems in +the tests (since they test Perl's ability to build extensions, and +that seems to be working reasonably well.) The rest of the failures +are mostly problems in Perl trying to show a warning through STDERR +but the test harness for some as of yet unknown reason failing to see +the warning (especially the numerous warnings.t failures are of this +kind). =head2 Localising Tied Arrays and Hashes Is Broken @@ -3399,6 +3513,12 @@ developers available, we could not get this fixed and tested in time for 5.8.0. Perl 5.6.1 still works for AmigaOS (as does the the 5.7.2 development release). +The C and C (capitalised) were renamed as +C and C (all lowercase) just before 5.8.0. +The main rationale was to have all core IO layers to have all +lowercase names. The "plugins" are named as usual, for example +C. + =head1 Reporting Bugs If you find what you think is a bug, you might check the articles