Tiny tweaks.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 11e022f..67806a9 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,15 @@ source code level, this shouldn't be that drastic a change.
 
 =item *
 
+The PerlIO C<:raw> discipline (as described in Camel III) is deprecated
+because its definition (as either the discipline version of C<binmode(FH)>
+or as the opposite of C<:crlf>) didn't really work: most importantly
+because turning off "clrfness" is not enough to make a stream truly
+binary.  Instead of C<:raw> use one of the following: C<open(..., ':bytes')>,
+C<binmode(FH)>, C<sysopen()> + C<sysread()>.
+
+=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
@@ -323,6 +336,17 @@ of PerlIO on your architecture name.
 
 =item *
 
+If your platform supports fork(), you can use the list form of C<open>
+for pipes:
+
+    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.
+
+=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" :
 
@@ -340,7 +364,9 @@ 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
-(see L<open>) are marked as UTF-8.
+(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.)
 
 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
@@ -735,7 +761,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;
@@ -1224,6 +1251,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 insalled.  See L<ExtUtils::MakeMaker>
+for more details.
+
+=item *
+
 ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
 leads to better portability.
 
@@ -2069,13 +2110,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]
@@ -2578,7 +2612,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
@@ -2596,13 +2631,32 @@ Windows
 
 =item *
 
-accept() no longer leaks memory. [561]
+Signal handling now works better than it used to.  It is now implemented
+using a Windows message loop, and is therefore less prone to random
+crashes.
 
 =item *
 
-Borland C++ v5.5 is now a supported compiler that can build Perl.
-However, the generated binaries continue to be incompatible with those
-generated by the other supported compilers (GCC and Visual C++). [561]
+fork() emulation is now more robust, but still continues to have a few
+esoteric bugs and caveats.  See L<perlfork> for details. [561+]
+
+=item *
+
+A failed (pseudo)fork now returns undef and sets errno to EAGAIN. [561]
+
+=item *
+
+The following modules now work on Windows:
+
+    ExtUtils::Embed         [561]
+    IO::Pipe
+    IO::Poll
+    Net::Ping
+
+=item *
+
+IO::File::new_tmpfile() is no longer limited to 32767 invocations
+per-process.
 
 =item *
 
@@ -2610,71 +2664,91 @@ Better chdir() return value for a non-existent directory.
 
 =item *
 
-Duping socket handles with open(F, ">&MYSOCK") now works under Windows
-9x. [561]
+Compiling perl using the 64-bit Platform SDK tools is now supported.
 
 =item *
 
-New %ENV entries now propagate to subprocesses. [561]
+The Win32::SetChildShowWindow() builtin can be used to control the
+visibility of windows created by child processes.  See L<Win32> for
+details.
 
 =item *
 
-Current directory entries in %ENV are now correctly propagated to child
-processes. [561]
+Non-blocking waits for child processes (or pseudo-processes) are
+supported via C<waitpid($pid, &POSIX::WNOHANG)>.
 
 =item *
 
-$ENV{LIB} now used to search for libs under Visual C.
+The behavior of system() with multiple arguments has been rationalized.
+Each unquoted argument will be automatically quoted to protect whitespace,
+and any existing whitespace in the arguments will be preserved.  This
+improves the portability of system(@args) by avoiding the need for
+Windows C<cmd> shell specific quoting in perl programs.
+
+Note that this means that some scripts that may have relied on earlier
+buggy behavior may no longer work correctly.  For example,
+C<system("nmake /nologo", @args)> will now attempt to run the file
+C<nmake /nologo> and will fail when such a file isn't found.
+On the other hand, perl will now execute code such as
+C<system("c:/Program Files/MyApp/foo.exe", @args)> correctly.
 
 =item *
 
-fork() emulation has been improved in various ways, but still continues
-to be experimental.  See L<perlfork> for known bugs and caveats. [561+]
+The perl header files no longer suppress common warnings from the
+Microsoft Visual C++ compiler.  This means that additional warnings may
+now show up when compiling XS code.
 
 =item *
 
-A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
+Borland C++ v5.5 is now a supported compiler that can build Perl.
+However, the generated binaries continue to be incompatible with those
+generated by the other supported compilers (GCC and Visual C++). [561]
 
 =item *
 
-Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
-Other bugs in chdir() and Cwd::cwd() have also been fixed. [561]
+Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
+[561]
+
+=item *
+
+Current directory entries in %ENV are now correctly propagated to child
+processes. [561]
 
 =item *
 
-HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html
+New %ENV entries now propagate to subprocesses. [561]
 
 =item *
 
-The makefiles now provide a single switch to bulk-enable all the
-features enabled in ActiveState ActivePerl (a popular Win32 binary
-distribution). [561]
+Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
+Other bugs in chdir() and Cwd::cwd() have also been fixed. [561]
 
 =item *
 
-Allow REG_EXPAND_SZ keys in the registry.
+The makefiles now default to the features enabled in ActiveState ActivePerl
+(a popular Win32 binary distribution). [561]
 
 =item *
 
-Can now send() from all threads, not just the first one. [561]
+HTML files will now be installed in c:\perl\html instead of
+c:\perl\lib\pod\html
 
 =item *
 
-ExtUtils::MakeMaker now uses $ENV{LIB} to search for libraries.
+REG_EXPAND_SZ keys are now allowed in registry settings used by perl. [561]
 
 =item *
 
-Fake signal handling reenabled, bugs and all.
+Can now send() from all threads, not just the first one. [561]
 
 =item *
 
-%SIG has been enabled under USE_ITHREADS, but its use is completely
-unsupported under all configurations. [561]
+ExtUtils::MakeMaker now uses $ENV{LIB} to search for libraries. [561]
 
 =item *
 
 Less stack reserved per thread so that more threads can run
-concurrently. (Still 16M per thread.)
+concurrently. (Still 16M per thread.) [561]
 
 =item *
 
@@ -2692,16 +2766,7 @@ under Windows 9x. [561]
 
 =item *
 
-Non-blocking waits for child processes (or pseudo-processes) are
-supported via C<waitpid($pid, &POSIX::WNOHANG)>.
-
-=item *
-
-Win64 compilation is now supported.
-
-=item *
-
-winsock handle leak fixed. [561]
+A socket handle leak in accept() has been fixed. [561]
 
 =back
 
@@ -2744,6 +2809,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.
@@ -2879,6 +2951,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
+sooner 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
@@ -3015,12 +3089,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
 
@@ -3092,6 +3168,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.
@@ -3112,6 +3207,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:
@@ -3133,6 +3236,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.
@@ -3177,15 +3284,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
 
@@ -3305,6 +3415,15 @@ behaviour may be fixed at a later date.
 
 Self-tying of scalars and IO thingies works.
 
+=head2 Tied/Magical Array/Hash Elements Do Not Autovivify
+
+For normal arrays C<$foo = \$bar[1]> will assign C<undef> to
+C<$bar[1]> (assuming that it didn't exist before), but for
+tied/magical arrays and hashes such autovivification does not happen
+because there is currently no way to catch the reference creation.
+The same problem affects slicing over non-existent indices/keys of
+a tied/magical array/hash.
+
 =head2 Building Extensions Can Fail Because Of Largefiles
 
 Some extensions like mod_perl are known to have issues with