(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
=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
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 *
=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.)
=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
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 *
=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
=item *
C<*foo{FORMAT}> now works.
+
=item *
Infinity is now recognized as a number.
{ 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.
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 *
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.
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
=item *
-C<File::Spec->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 *
=item *
+Win64 compilation is now supported.
+
+=item *
+
winsock handle leak fixed.
=item *
=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
=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/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
+ lib/Tie/File/t/16_handle............FAILED at test 39
+
+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
14.5.0 and GNU C++/GNU Tools 2.0.1, all attempted tests either
pass or result in TODO (ignored) failures.
-=head Term::ReadKey not working on Win32
+=head2 Term::ReadKey not working on Win32
Use Term::ReadKey 2.20 or later.
=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
local %tied_array;
-doesn't work as one would expect: the old value is restored
-incorrectly.
+doesn't work as one would expect: the old value is restored incorrectly.
+This will be fixed in a future release, but note that doing so will break
+existing code that relies on the broken semantics. It is important
+that you check and alter any such code now. In the future release,
+localising a tied array or hash will convert that variable into a new,
+empty, and B<untied> array or hash. At the end of the block, the variable
+will be repointed at the original tied thingy. Note that no tied methods
+will be called at any point during this process. (With the existing
+behaviour, the variable remains tied while localised.)
=head2 Self-tying of Arrays and Hashes Is Forbidden