(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.)
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
{ 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 *
=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.
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