Update the z/OS situation.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 42e5dbf..aa08dce 100644 (file)
@@ -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<fields> pragma interface will remain
 available.  The I<restricted hashes> interface is expected to
-be the replacement interface (see L<Hash::Util>).
+be the replacement interface (see L<Hash::Util>).  If your existing
+programs depends on the underlying implementation, consider using
+L<Class::PseudoHash> 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<open>
+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<KID_PS> filehandle.  See L<perlipc>.
+
+=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</utf-?8/i>),
-your STDIN, STDOUT, STDERR handles and the default open discipline
+your STDIN, STDOUT, STDERR handles and the default open layer
 (see L<open>) 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<perlmod>
 
 =item *
 
-C<Attribute::Handlers> allows a class to define attribute handlers.
+C<Attribute::Handlers>, 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<Digest::MD5>.
 NOTE: the C<MD5> backward compatibility module is deliberately not
 included since its further use is discouraged.
 
+See also L<PerlIO::via::QuotedPrint>.
+
 =item *
 
 C<Encode>, originally by Nick Ing-Simmons and now maintained by Dan
@@ -959,13 +992,7 @@ in quoted-printable encoding, as defined in RFC 2045 - I<MIME
 
     print $encoded, "\n"; # "Smiley in Unicode: =263A"
 
-MIME::QuotedPrint has been enhanced to provide the basic methods
-necessary to use it with PerlIO::Via as in :
-
-    use MIME::QuotedPrint;
-    open($fh,">Via(MIME::QuotedPrint)",$path);
-
-See L<MIME::QuotedPrint>.
+See also L<PerlIO::via::QuotedPrint>.
 
 =item *
 
@@ -974,27 +1001,32 @@ See L<NEXT>.
 
 =item *
 
-C<open> is a new pragma for setting the default I/O disciplines
+C<open> is a new pragma for setting the default I/O layers
 for open().
 
 =item *
 
-C<PerlIO::Scalar>, by Nick Ing-Simmons, provides the implementation
+C<PerlIO::scalar>, 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<PerlIO::Scalar>.
+include PerlIO::Array and PerlIO::Code.  See L<PerlIO::scalar>.
 
 =item *
 
-C<PerlIO::Via>, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
+C<PerlIO::via>, 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<PerlIO::via::QuotedPrint>, by Elizabeth Mattijsen, is an example
+of a C<PerlIO::via> class:
+
+    use PerlIO::via::QuotedPrint;
+    open($fh,">:via(QuotedPrint)",$path);
 
-This will automatically convert everything output to C<$fh>
-to Quoted-Printable.  See L<PerlIO::Via>.
+This will automatically convert everything output to C<$fh> to
+Quoted-Printable.  See L<PerlIO::via> and L<PerlIO::via::QuotedPrint>.
 
 =item *
 
@@ -1022,7 +1054,7 @@ C<sort> is a new pragma for controlling the behaviour of sort().
 C<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.  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<ExtUtils::MakeMaker>
+for more details.
+
+=item *
+
 ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
 leads to better portability.
 
@@ -1938,8 +1984,8 @@ See L<perldgux>.
 
 =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<d> 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<kill> implementation based on C<sys$sigprc> that allows
 older VMS systems (pre-7.0) to use C<kill> 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<d> 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<lib> and F<ext>
-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<lib> and
+F<ext> 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<perlthrtut> for more information.
 This is a known bug in FreeBSD's readdir_r() (see L<perlfreebsd>
 (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<PerlIO::Scalar> and C<PerlIO::Via> (capitalised) were renamed as
+C<PerlIO::scalar> and C<PerlIO::via> (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<PerlIO::via::QuotedPrint>.
+
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles