Regen toc.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index e67382a..a9e501f 100644 (file)
@@ -1,4 +1,4 @@
-=head1 NAME
+.=head1 NAME
 
 perldelta - what is new for perl v5.8.0
 
@@ -55,9 +55,10 @@ B<You have to recompile your XS modules.>
 (Pure Perl modules should continue to work.)
 
 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, sorry about that.
+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
 
@@ -1289,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 *
 
@@ -1610,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
@@ -1917,6 +1939,7 @@ L<dprofpp> -R didn't work.
 =item *
 
 C<*foo{FORMAT}> now works.
+
 =item *
 
 Infinity is now recognized as a number.
@@ -1987,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.
@@ -2283,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 *
 
@@ -2387,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.
@@ -2400,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
@@ -2484,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 *
@@ -2498,6 +2529,10 @@ Windows 9x.
 
 =item *
 
+Win64 compilation is now supported.
+
+=item *
+
 winsock handle leak fixed.
 
 =item *
@@ -2711,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
@@ -2765,6 +2800,17 @@ having slightly different types for their first argument.
 
 =back
 
+=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
 
 If this test fails, it indicates that your libc (C library) is not
@@ -2801,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.
@@ -2856,6 +2907,10 @@ 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,
@@ -2879,17 +2934,13 @@ competing threads can corrupt shared global state.)
 
 =head2 UNICOS
 
- Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
- -------------------------------------------------------------------------
- ../lib/Math/Trig.t                       26    1   3.85%  25
- ../lib/warnings.t                       460    1   0.22%  425
- 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 and numconvert failures are caused by the slighly differing
-(from IEEE) floating point implementation of UNICOS.  The warnings
-failure is also related: the test assumes a certain floating point
-output format, this assumption fails in UNICOS.
+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
 
@@ -2983,15 +3034,22 @@ ability to build extensions, and that seems to be working reasonably well.)
     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
@@ -3039,7 +3097,7 @@ 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 does not unfortunately does not build anymore on AmigaOS,
+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.