Regen toc.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 9ae5970..a9e501f 100644 (file)
@@ -1,4 +1,4 @@
-=head1 NAME
+.=head1 NAME
 
 perldelta - what is new for perl v5.8.0
 
@@ -54,10 +54,11 @@ B<You have to recompile your XS modules.>
 
 (Pure Perl modules should continue to work.)
 
-The major reason for the discontinity is the new IO architecture
-called PerlIO.  PerlIO is the default configuration because
-without it many new features of Perl 5.8 cannot be used.  In other
-words: you just have to recompile your modules, sorry about that.
+The major reason for the discontinuity is the new IO architecture
+called PerlIO.  PerlIO is the default configuration because without
+it many new features of Perl 5.8 cannot be used.  In other words:
+you just have to recompile your modules containing XS code, sorry
+about that.
 
 In future releases of Perl, non-PerlIO aware XS modules may become
 completely unsupported.  This shouldn't be too difficult for module
@@ -261,9 +262,16 @@ functionality, see pack('U0', ...) and pack('C0', ...).
 =item *
 
 Earlier Perls treated "sub foo (@bar)" as equivalent to "sub foo (@)".
-The prototypes are now checked at compile-time for invalid characters.
-An optional warning is generated ("Illegal character in prototype...")
-but this may be upgraded to a fatal error in a future release.
+The prototypes are now checked better at compile-time for invalid
+syntax.  An optional warning is generated ("Illegal character in
+prototype...")  but this may be upgraded to a fatal error in a future
+release.
+
+=item *
+
+The existing behaviour when localising tied arrays and hashes is wrong,
+and will be changed in a future release, so do not rely on the existing
+behaviour. See L<"Localising Tied Arrays and Hashes Is Broken">.
 
 =back
 
@@ -389,7 +397,7 @@ to Unicode 3.2.0.  For more information, see http://www.unicode.org/ .
 
 For developers interested in enhancing Perl's Unicode capabilities:
 almost all the UCD files are included with the Perl distribution in
-the F<lib/unicore subdirectory>.  The most notable omission, for space
+the F<lib/unicore> subdirectory.  The most notable omission, for space
 considerations, is the Unihan database.
 
 =item *
@@ -431,6 +439,18 @@ to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value.
 
 =item *
 
+The $Config{byteorder} (and corresponding BYTEORDER in config.h) was
+previously wrong in platforms if sizeof(long) was 4, but sizeof(IV)
+was 8.  The byteorder was only sizeof(long) bytes long (1234 or 4321),
+but now it is correctly sizeof(IV) bytes long, (12345678 or 87654321).
+(This problem didn't affect Windows platforms.)
+
+Also, $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, and when cross-compiling.
+
+=item *
+
 C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
 in multiple arguments.)
 
@@ -513,6 +533,12 @@ my __PACKAGE__ $obj now works.
 
 =item *
 
+POSIX::sleep() now returns the number of I<unslept> seconds
+(as the POSIX standard says), as opposed to CORE::sleep() which
+returns the number of slept seconds.
+
+=item *
+
 The printf() and sprintf() now support parameter reordering using the
 C<%\d+\$> and C<*\d+\$> syntaxes.  For example
 
@@ -898,8 +924,8 @@ 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
-datastructures.  Storable was created by Raphael Manfredi but it is
-now maintained by the Perl development team.  Storable has been
+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
 restricted hashes.  See L<Storable>.
 
@@ -1050,6 +1076,10 @@ is called with an array/hash element as the B<sole> argument.
 
 =item *
 
+The return value of Cwd::fastcwd() is now tainted.
+
+=item *
+
 Data::Dumper has now an option to sort hashes.
 
 =item *
@@ -1064,6 +1094,12 @@ other improvements.
 
 =item *
 
+Devel::Peek now has an interface for the Perl memory statistics
+(this works only if you are using perl's malloc, and if you have
+compiled with debugging).
+
+=item *
+
 The English module can now be used without the infamous performance
 hit by saying
 
@@ -1075,6 +1111,11 @@ C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
 
 =item *
 
+ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
+leads into better portability.
+
+=item *
+
 Fcntl, Socket, and Sys::Syslog have been rewritten to use the
 new-style constant dispatch section (see L<ExtUtils::Constant>).
 This means that they will be more robust and hopefully faster.
@@ -1111,12 +1152,6 @@ the returned list of filenames.
 
 =item *
 
-Devel::Peek now has an interface for the Perl memory statistics
-(this works only if you are using perl's malloc, and if you have
-compiled with debugging).
-
-=item *
-
 IPC::Open3 now allows the use of numeric file descriptors.
 
 =item *
@@ -1143,11 +1178,6 @@ with 'no lib' now works.
 
 =item *
 
-ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
-leads into better portability.
-
-=item *
-
 Math::BigFloat and Math::BigInt have undergone a full rewrite.
 They are now magnitudes faster, and they support various
 bignum libraries such as GMP and PARI as their backends.
@@ -1285,6 +1315,8 @@ perl.org, not perl.com.
 C<perlcc> has been rewritten and its user interface (that is,
 command line) is much more like that of the UNIX C compiler, cc.
 (The perlbc tools has been removed.  Use C<perlcc -B> instead.)
+B<Note that perlcc is still considered very experimental and
+unsupported.>
 
 =item *
 
@@ -1583,8 +1615,9 @@ warning that there may be trouble ahead.
 
 =item *
 
-If binary compatibility with the 5.005 release is not wanted, Configure
-no longer suggests including the 5.005 modules in @INC.
+Since Perl 5.8 is not binary-compatible with previous releases
+of Perl, Configure no longer suggests including the 5.005
+modules in @INC.
 
 =item *
 
@@ -1605,12 +1638,6 @@ installperl now outputs everything to STDERR.
 
 =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.)
-
-=item *
-
 Because PerlIO is now the default on most platforms, "-perlio" doesn't
 get appended to the $Config{archname} (also known as $^O) anymore.
 Instead, if you explicitly choose not to use perlio (Configure command
@@ -1726,6 +1753,15 @@ floating-point numbers is now more picky about using sprintf %.*g
 rules for the conversion.  Some platforms that used to use gcvt may
 now resort to the slower sprintf.
 
+=item *
+
+The obsolete method of making a special (e.g., debugging) flavor
+of perl by saying
+
+       make LIBPERL=libperld.a
+
+has been removed. Use -DDEBUGGING instead.
+
 =back
 
 =head2 New Or Improved Platforms
@@ -1820,6 +1856,13 @@ in unexpected order.
 
 =item *
 
+Stratus VOS is now supported using Perl's native build method
+(Configure).  This is the recommended method to build Perl on
+VOS.  The older methods, which build miniperl, are still
+available.  See L<perlvos>.
+
+=item *
+
 Amdahl UTS UNIX mainframe platform is now supported.
 
 =item *
@@ -1849,7 +1892,9 @@ The autouse pragma didn't work for Multi::Part::Function::Names.
 =item *
 
 caller() could cause core dumps in certain situations.  Carp was sometimes
-affected by this problem.
+affected by this problem.  In particular, caller() now returns a
+subroutine name of C<(unknown)> for subroutines that have been removed
+from the symbol table.
 
 =item *
 
@@ -1894,6 +1939,7 @@ L<dprofpp> -R didn't work.
 =item *
 
 C<*foo{FORMAT}> now works.
+
 =item *
 
 Infinity is now recognized as a number.
@@ -1964,9 +2010,9 @@ exist, if that's what they were.
     # Nothing has set the FOO element so far
 
     { local $tied_hash{FOO} = 'Bar' }
-    
-    # Here the FOO element would have been C<undef>,
-    # but no more so. 
+
+    # This used to print, but not now.
+    print "exists!\n" if exists $tied_hash{FOO};
 
 As a side effect of this fix, tied hash interfaces B<must> define
 the EXISTS and DELETE methods.
@@ -2260,7 +2306,8 @@ Perl now works on post-3.0 FreeBSDs.
 
 HP-UX
 
-README.hpux updated; C<Configure -Duse64bitall> now works.
+README.hpux updated; C<Configure -Duse64bitall> now works;
+now uses HP-UX malloc instead of Perl malloc.
 
 =item *
 
@@ -2327,6 +2374,15 @@ Solaris
 
 =item *
 
+Stratus VOS
+
+The native build method requires at least VOS Release 14.5.0
+and GNU C++/GNU Tools 2.0.1 or later.  The Perl pack function
+now maps overflowed values to +infinity and underflowed values
+to -infinity.
+
+=item *
+
 Tru64 (aka Digital UNIX, aka DEC OSF/1)
 
 The operating system version letter now recorded in $Config{osvers}.
@@ -2355,8 +2411,7 @@ unimplemented.  It now works as documented.
 
 The C<waitpid> emulation has been improved.  The worst bug (now fixed)
 was that a pid of -1 would cause a wildcard search of all processes on
-the system.  The most significant enhancement is that we can now
-usually get the completion status of a terminated process.
+the system.  
 
 POSIX-style signals are now emulated much better on VMS versions prior
 to 7.0.
@@ -2368,6 +2423,14 @@ 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.
 
+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
+simply force exit.  This implementation also allows later systems to
+call C<kill> from within a signal handler.
+
+Iterative logical name translations are now limited to 10 iterations in
+imitation of SHOW LOGICAL and other OpenVMS facilities.
+
 =item *
 
 Windows
@@ -2452,7 +2515,7 @@ concurrently. (Still 16M per thread.)
 
 =item *
 
-C<File::Spec-&gt;tmpdir()> now prefers C:/temp over /tmp
+C<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp
 (works better when perl is running as service).
 
 =item *
@@ -2466,6 +2529,10 @@ Windows 9x.
 
 =item *
 
+Win64 compilation is now supported.
+
+=item *
+
 winsock handle leak fixed.
 
 =item *
@@ -2679,12 +2746,12 @@ such as sudo ( see http://www.courtesan.com/sudo/ ).
 
 =head1 New Tests
 
-Several new tests have been added, especially for the F<lib>
-subsection.  There are now about 56 000 individual tests (spread over
-about 620 test scripts), in the regression suite (5.6.1 has about
-11700 tests, in 258 test scripts) Many of the new tests are 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 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.
 
 Because of the large number of tests, running the regression suite
 will take considerably longer time than it used to: expect the suite
@@ -2733,11 +2800,22 @@ having slightly different types for their first argument.
 
 =back
 
-=head2 Amiga Perl Invoking Mystery
+=head2 BeOS
+
+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/POSIX/t/sigaction...............FAILED at test 13
+ ext/POSIX/t/waitpid.................FAILED at test 1
+
+See L<perlbeos> (README.beos) for more details.
+
+=head2 ext/threads/t/libc
 
-One cannot call Perl using the C<volume:> syntax, that is, C<perl -v>
-works, but for example C<bin:perl -v> doesn't.  The exact reason isn't
-known but the current suspect is the F<ixemul> library.
+If this test fails, it indicates that your libc (C library) is not
+threadsafe.  This particular test stress tests the localtime() call to
+find out whether it is threadsafe.  See L<perlthrtut> for more information.
 
 =head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales
 
@@ -2769,6 +2847,11 @@ subtest 10 of lib/posix may arrive before the successful result of the
 subtest 9, which confuses the test harness so much that it thinks the
 subtest 9 failed.
 
+=head2 Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint
+
+This is a known bug in the glibc 2.2.5 with long long integers.
+( http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=65612 )
+
 =head2 Linux With Sfio Fails op/misc Test 48
 
 No known fix.
@@ -2818,6 +2901,16 @@ 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 Stratus VOS
+
+When Perl is built using the native build process on VOS Release
+14.5.0 and GNU C++/GNU Tools 2.0.1, all attempted tests either
+pass or result in TODO (ignored) failures.
+
+=head2 Term::ReadKey not working on Win32
+
+Use Term::ReadKey 2.20 or later.
+
 =head2 Failure of Thread (5.005-style) tests
 
 B<Note that support for 5.005-style threading is deprecated,
@@ -2835,19 +2928,19 @@ the 5.005 threading implementation. These are not new failures--Perl
  ../lib/autouse.t                                10    1  10.00%  4
  op/flip.t                                       15    1   6.67%  15
 
-These failures are unlikely to get fixed as the 5.005-style
-threads are considered fundamentally broken.
+These failures are unlikely to get fixed as the 5.005-style threads
+are considered fundamentally broken.  (Basically what happens is that
+competing threads can corrupt shared global state.)
 
 =head2 UNICOS
 
- Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
- -------------------------------------------------------------------------
- ../ext/Socket/socketpair.t    1   256    45    1   2.22%  12
- ../lib/Math/Trig.t                       26    1   3.85%  25
- ../lib/warnings.t                       460    1   0.22%  425
- io/fs.t                                  36    1   2.78%  31
- op/numconvert.t                        1440   13   0.90%  208 509-510
- 657-658 665-666 829-830 989-990 1149-1150
+ ../lib/Math/Trig.t                          26    1   3.85%  25
+ ../lib/warnings.t                          470    1   0.21%  429
+
+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.
 
 =head2 UNICOS/mk
 
@@ -2914,38 +3007,49 @@ better than it was in 5.6.0, it's just that so many new modules and
 tests have been added.
 
  Failed Test                   Stat Wstat Total Fail  Failed  List of Failed
- -------------------------------------------------------------------------------
- ../ext/Data/Dumper/t/dumper.t              339    8   2.36%  311 314 325 327
+ ---------------------------------------------------------------------------
+ ../ext/Data/Dumper/t/dumper.t              357    8   2.24%  311 314 325 327
                                                               331 333 337 339
  ../ext/IO/lib/IO/t/io_unix.t                 5    4  80.00%  2-5
- ../ext/Storable/t/utf8hash.t    10  2560   148   10   6.76%  1 5 72 76 143-148
- ../lib/utf8.t                               94   13  13.83%  27 30-31 43 46 73
-                                                              76 79 82 85 88 91
-                                                              94
+ ../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                                   900    9   1.00%  242-243 665 776
-                                                              785 832-834 845
+ op/pat.t                                   910    7   0.77%  665 776 785 832-
+                                                              834 845
  op/sprintf.t                               224    3   1.34%  98 100 136
  op/tr.t                                     97    5   5.15%  63 71-74
- run/fresh_perl.t                            94    3   3.19%  92-94
  uni/fold.t                                 780    6   0.77%  61 169 196 661
                                                               710-711
 
+The dumper.t and downgrade.t are problems in the tests, the io_unix
+and sprintf are problems in the USS (UDP sockets and printf formats).
+The pat, tr, and fold 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.)
+
 =head2 Localising Tied Arrays and Hashes Is Broken
 
     local %tied_array;
 
 doesn't work as one would expect: the old value is restored
-incorrectly.
+incorrectly.  This will be changed in a future release, but we don't
+know yet which the new semantics will exactly be.  In any case the
+change will break existing code that relies on the current
+(ill-defined) semantics, so just avoid doing this in general.
 
-=head2 Self-tying of Arrays and Hashes Is Forbidden
+=head2 Self-tying Problems
 
 Self-tying of arrays and hashes is broken in rather deep and
 hard-to-fix ways.  As a stop-gap measure to avoid people from getting
 frustrated at the mysterious results (core dumps, most often) it is
 for now forbidden (you will get a fatal error even from an attempt).
 
+Self-tying of globs is broken, but not disabled.
+
+Self-tying of scalars and IO works.
+
 =head2 Building Extensions Can Fail Because Of Largefiles
 
 Some extensions like mod_perl are known to have issues with
@@ -2967,9 +3071,9 @@ platform-dependent.
 Though mostly working, Unicode support still has problem spots on
 EBCDIC platforms.  One such known spot are the C<\p{}> and C<\P{}>
 regular expression constructs for code points less than 256: the
-pP are testing for Unicode code points, not knowing about EBCDIC.
+C<pP> are testing for Unicode code points, not knowing about EBCDIC.
 
-=head2 The Compiler Suite Is Still Experimental
+=head2 The Compiler Suite Is Still Very Experimental
 
 The compiler suite is slowly getting better but it continues to be
 highly experimental.  Use in production environments is discouraged.
@@ -2993,6 +3097,11 @@ because it was felt that it didn't have enough value in it to be a
 core module.  It is still a useful module, though, and is available
 from the CPAN.
 
+Perl 5.8 unfortunately does not build anymore on AmigaOS,
+this broke at some point accidentally.  Since there are not that many
+Amiga developers available, we could not get this fixed and tested in
+time for 5.8.0.
+
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles