Document the DJGPP status.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 79305c3..12b48cc 100644 (file)
@@ -95,7 +95,7 @@ change will probably break backward compatibility with compiled
 modules.  The change was made to make Perl more compliant with other
 applications like mod_perl which are using the AIX native interface.
 
-=head2 Attributes for C<my> variables now handled at run-time.
+=head2 Attributes for C<my> variables now handled at run-time
 
 The C<my EXPR : ATTRS> syntax now applies variable attributes at
 run-time.  (Subroutine and C<our> variables still get attributes applied
@@ -118,6 +118,24 @@ point format on OpenVMS Alpha, potentially breaking binary compatibility
 with external libraries or existing data.  G_FLOAT is still available as
 a configuration option.  The default on VAX (D_FLOAT) has not changed.
 
+=head2 New Unicode Semantics (no more C<use utf8>, almost)
+
+Previously in Perl 5.6 to use Unicode one would say "use utf8" and
+then the operations (like string concatenation) were Unicode-aware
+in that lexical scope.
+
+This was found to be an inconvenient interface, and in Perl 5.8 the
+Unicode model has completely changed: now the "Unicodeness" is bound
+to the data itself, and for most of the time "use utf8" is not needed
+at all.  The only remaining use of "use utf8" is when the Perl script
+itself has been written in the UTF-8 encoding of Unicode.  (UTF-8 has
+not been made the default since there are many Perl scripts out there
+that are using various national eight-bit character sets, which would
+be illegal in UTF-8.)
+
+See L<perluniintro> for the explanation of the current model,
+and L<utf8> for the current use of the utf8 pragma.
+
 =head2 New Unicode Properties
 
 Unicode I<scripts> are now supported. Scripts are similar to (and superior
@@ -157,6 +175,13 @@ for better use: now they stand for long double (if supported by the
 platform) and NV (Perl internal floating point type).  (They used
 to be aliases for d/f, but you never knew that.)
 
+=head2 glob() now returns filenames in alphabetical order
+
+The list of filenames from glob() (or <...>) is now by default sorted
+alphabetically to be csh-compliant (which is what happened before
+in most UNIX platforms).  (bsd_glob() does still sort platform
+natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) [561]
+
 =head2 Deprecations
 
 =over 4
@@ -193,27 +218,7 @@ any C<\w> character.
 
 =item *
 
-The list of filenames from glob() (or <...>) is now by default sorted
-alphabetically to be csh-compliant (which is what happened before
-in most UNIX platforms).  (bsd_glob() does still sort platform
-natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) [561]
-
-=item *
-
-Spurious syntax errors generated in certain situations, when glob()
-caused File::Glob to be loaded for the first time, have been fixed. [561]
-
-=item *
-
-Although "you shouldn't do that", it was possible to write code that
-depends on Perl's hashed key order (Data::Dumper does this).  The new
-algorithm "One-at-a-Time" produces a different hashed key order.
-More details are in L</"Performance Enhancements">.
-
-=item *
-
-lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
-In future releases this may become a fatal error.
+The *glob{FILEHANDLE} is deprecated, use *glob{IO} instead.
 
 =item *
 
@@ -237,16 +242,16 @@ source code level, this shouldn't be that drastic a change.
 
 =item *
 
-Previous versions of perl and some readings of some sections of Camel III
-implied that the C<:raw> "discipline" was the inverse of  C<:crlf>.
+Previous versions of perl and some readings of some sections of Camel
+III implied that the C<:raw> "discipline" was the inverse of C<:crlf>.
 Turning off "clrfness" is no longer enough to make a stream truly
-binary. So the PerlIO C<:raw> layer (or "discipline", to use the
-Camel book's older terminology) is now formally defined as being
-equivalent to binmode(FH) - which is in turn defined as doing whatever
-is necessary to pass each byte as-is without any translation.
-In particular binmode(FH) - and hence C<:raw> - will now turn off both CRLF
-and UTF-8  translation and remove other layers (e.g. :encoding()) which
-would modify byte stream.
+binary. So the PerlIO C<:raw> layer (or "discipline", to use the Camel
+book's older terminology) is now formally defined as being equivalent
+to binmode(FH) - which is in turn defined as doing whatever is
+necessary to pass each byte as-is without any translation.  In
+particular binmode(FH) - and hence C<:raw> - will now turn off both
+CRLF and UTF-8 translation and remove other layers (e.g. :encoding())
+which would modify byte stream.
 
 =item *
 
@@ -299,8 +304,8 @@ release.
 
 =item *
 
-The C<exec LIST> and C<system LIST> operations will produce fatal
-errors on tainted data in some future release.
+The C<exec LIST> and C<system LIST> operations now produce warnings on
+tainted data and in some future release they will produce fatal errors.
 
 =item *
 
@@ -312,6 +317,42 @@ behaviour. See L<"Localising Tied Arrays and Hashes Is Broken">.
 
 =head1 Core Enhancements
 
+=head2 Unicode Overhaul
+
+Unicode in general should be now much more usable than in Perl 5.6.0
+(or even in 5.6.1).  Unicode can be used in hash keys, Unicode in
+regular expressions should work now, Unicode in tr/// should work now,
+Unicode in I/O should work now.  See L<perluniintro> for introduction
+and L<perlunicode> for details.
+
+=over 4
+
+=item *
+
+The Unicode Character Database coming with Perl has been upgraded
+to Unicode 3.2.0.  For more information, see http://www.unicode.org/ .
+[561+] (5.6.1 has UCD 3.0.1.)
+
+=item *
+
+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
+considerations, is the Unihan database.
+
+=item *
+
+The properties \p{Blank} and \p{SpacePerl} have been added. "Blank" is like
+C isblank(), that is, it contains only "horizontal whitespace" (the space
+character is, the newline isn't), and the "SpacePerl" is the Unicode
+equivalent of C<\s> (\p{Space} isn't, since that includes the vertical
+tabulator character, whereas C<\s> doesn't.)
+
+See "New Unicode Properties" earlier in this document for additional
+information on changes with Unicode properties.
+
+=back
+
 =head2 PerlIO is Now The Default
 
 =over 4
@@ -405,23 +446,19 @@ Anonymous temporary files are available without need to
 
 That is a literal undef, not an undefined value.
 
-=item *
-
-The list form of C<open> is now implemented for pipes (at least on UNIX):
-
-   open($fh,"-|", 'cat', '/etc/motd')
-
-creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
-the child process.
+=back
 
-=item *
+=head2 ithreads
 
-If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
-contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
-the default encoding of your STDIN, STDOUT, and STDERR, and of
-B<any subsequent file open>, is UTF-8.
+The new interpreter threads ("ithreads" for short) implementation of
+multithreading, by Arthur Bergman, replaces the old "5.005 threads"
+implementation.  In the ithreads model any data sharing between
+threads must be explicit, as opposed to the model where data sharing
+was implicit.  See L<threads> and L<threads::shared>, and
+L<perlthrtut>.
 
-=back
+As a part of the ithreads implementation Perl will also use
+any necessary and detectable reentrant libc interfaces.
 
 =head2 Restricted Hashes
 
@@ -445,42 +482,6 @@ internal state since the current operation is always finished first,
 but the signal may take more time to get heard.  Note that breaking
 out from potentially blocking operations should still work, though.
 
-=head2 Unicode Overhaul
-
-Unicode in general should be now much more usable than in Perl 5.6.0
-(or even in 5.6.1).  Unicode can be used in hash keys, Unicode in
-regular expressions should work now, Unicode in tr/// should work now,
-Unicode in I/O should work now.  See L<perluniintro> for introduction
-and L<perlunicode> for details.
-
-=over 4
-
-=item *
-
-The Unicode Character Database coming with Perl has been upgraded
-to Unicode 3.2.0.  For more information, see http://www.unicode.org/ .
-[561+] (5.6.1 has UCD 3.0.1.)
-
-=item *
-
-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
-considerations, is the Unihan database.
-
-=item *
-
-The properties \p{Blank} and \p{SpacePerl} have been added. "Blank" is like
-C isblank(), that is, it contains only "horizontal whitespace" (the space
-character is, the newline isn't), and the "SpacePerl" is the Unicode
-equivalent of C<\s> (\p{Space} isn't, since that includes the vertical
-tabulator character, whereas C<\s> doesn't.)
-
-See "New Unicode Properties" earlier in this document for additional
-information on changes with Unicode properties.
-
-=back
-
 =head2 Understanding of Numbers
 
 In general a lot of fixing has happened in the area of Perl's
@@ -591,6 +592,23 @@ Formats now support zero-padded decimal fields.
 
 =item *
 
+Although "you shouldn't do that", it was possible to write code that
+depends on Perl's hashed key order (Data::Dumper does this).  The new
+algorithm "One-at-a-Time" produces a different hashed key order.
+More details are in L</"Performance Enhancements">.
+
+=item *
+
+lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
+In future releases this may become a fatal error.
+
+=item *
+
+Spurious syntax errors generated in certain situations, when glob()
+caused File::Glob to be loaded for the first time, have been fixed. [561]
+
+=item *
+
 Lvalue subroutines can now return C<undef> in list context.  However,
 the lvalue subroutine feature still remains experimental.  [561+]
 
@@ -1124,9 +1142,7 @@ L<threads::shared>, and L<perlthrtut>.
 =item *
 
 C<threads::shared>, by Arthur Bergman, allows data sharing for
-interpreter threads.  In the ithreads model any data sharing between
-threads must be explicit, as opposed to the old 5.005 thread model
-where data sharing was implicit.  See L<threads::shared>.
+interpreter threads.  See L<threads::shared>.
 
 =item *
 
@@ -2809,16 +2825,40 @@ A socket handle leak in accept() has been fixed. [561]
 
 =head1 New or Changed Diagnostics
 
+Please see L<perldiag> for more details.
+
 =over 4
 
 =item *
 
+Ambiguous range in the transliteration operator (like a-z-9) now
+gives a warning.
+
+=item *
+
+Two new debugging options have been added: if you have compiled your
+Perl with debugging, you can use the -DT [561] and -DR options to trace
+tokenising and to add reference counts to displaying variables,
+respectively.
+
+=item *
+
 The lexical warnings category "deprecated" is no longer a sub-category
 of the "syntax" category. It is now a top-level category in its own
 right.
 
 =item *
 
+Unadorned dump() will now give a warning suggesting to
+use explicit CORE::dump() if that's what really is meant.
+
+=item *
+
+The "Unrecognized escape" warning has been extended to include C<\8>,
+C<\9>, and C<\_>.  There is no need to escape any of the C<\w> characters.
+
+=item *
+
 All regular expression compilation error messages are now hopefully
 easier to understand both because the error message now comes before
 the failed regex and because the point of failure is now clearly
@@ -2826,21 +2866,46 @@ marked by a C<E<lt>-- HERE> marker.
 
 =item *
 
-The various "opened only for", "on closed", "never opened" warnings
-drop the C<main::> prefix for filehandles in the C<main> package,
-for example C<STDIN> instead of C<main::STDIN>.
+Various I/O (and socket) functions like binmode(), close(), and so
+forth now more consistently warn if they are used illogically either
+on a yet unopened or on an already closed filehandle (or socket).
 
 =item *
 
-The "Unrecognized escape" warning has been extended to include C<\8>,
-C<\9>, and C<\_>.  There is no need to escape any of the C<\w> characters.
+Using lstat() on a filehandle now gives a warning.  (It's a non-sensical
+thing to do.)
 
 =item *
 
-Two new debugging options have been added: if you have compiled your
-Perl with debugging, you can use the -DT [561] and -DR options to trace
-tokenising and to add reference counts to displaying variables,
-respectively.
+The C<-M> and C<-m> options now warn if you didn't supply the module name.
+
+=item *
+
+If you in C<use> specify a required minimum version, modules matching
+the name and but not defining a $VERSION will cause a fatal failure.
+
+=item *
+
+Using negative offset for vec() in lvalue context is now a warnable offense.
+
+=item *
+
+Odd number of arguments to oveload::constant now elicits a warning.
+
+=item *
+
+Odd number of elements to in anonymous hash now elicits a warning.
+
+=item *
+
+The various "opened only for", "on closed", "never opened" warnings
+drop the C<main::> prefix for filehandles in the C<main> package,
+for example C<STDIN> instead of C<main::STDIN>.
+
+=item *
+
+Subroutine prototypes are now checked more carefully, you may
+get warnings for example if you have used non-prototype characters.
 
 =item *
 
@@ -2861,20 +2926,75 @@ for the C<"c"> format and a number less than -128 or more than 127.
 
 =item *
 
+pack C<P> format now demands an explicit size.
+
+=item *
+
+unpack C<w> now warns of unterminated compressed integers.
+
+=item *
+
+Warnings relating to the use of PerlIO have been added.
+
+=item *
+
 Certain regex modifiers such as C<(?o)> make sense only if applied to
 the entire regex.  You will get an optional warning if you try to do
 otherwise.
 
 =item *
 
+Variable length lookbehind has not yet been implemented, trying to
+use it will tell that.
+
+=item *
+
 Using arrays or hashes as references (e.g. C<< %foo->{bar} >>
 has been deprecated for a while.  Now you will get an optional warning.
 
 =item *
 
+Warnings relating to the use of the new restricted hashes feature
+have been added.
+
+=item *
+
+Self-ties of arrays and hashes are not supported and fatal errors
+will happen even at an attempt to do so.
+
+=item *
+
 Using C<sort> in scalar context now issues an optional warning.
 This didn't do anything useful, as the sort was not performed.
 
+=item *
+
+Using the /g modifier in split() is meaningless and will cause a warning.
+
+=item *
+
+Using splice() past the end of an array now causes a warning.
+
+=item *
+
+Malformed Unicode encodings (UTF-8 and UTF-16) cause a lot of warnings,
+ad doestrying to use UTF-16 surrogates (which are unimplemented).
+
+=item *
+
+Trying to use Unicode characters on an I/O stream without marking the
+stream's encoding (using open() or binmode()) will cause "Wide character"
+warnings.
+
+=item *
+
+Use of v-strings in use/require causes a (backward) portability warning.
+
+=item *
+
+Warnings relating to the use interpreter threads and their shared data
+have been added.
+
 =back
 
 =head1 Changed Internals
@@ -2883,6 +3003,10 @@ This didn't do anything useful, as the sort was not performed.
 
 =item *
 
+PerlIO is now the default.
+
+=item *
+
 perlapi.pod (a companion to perlguts) now attempts to document the
 internal API.
 
@@ -3010,30 +3134,188 @@ to be closer to the library/extension they are testing.)
 
 =head1 Known Problems
 
-=head2 AIX
+=head2 The Compiler Suite Is Still Very Experimental
 
-=over 4
+The compiler suite is slowly getting better but it continues to be
+highly experimental.  Use in production environments is discouraged.
 
-=item *
+=head2 Localising Tied Arrays and Hashes Is Broken
 
-If using the AIX native make command, instead of just "make" issue
-"make all".  In some setups the former has been known to spuriously
-also try to run "make install".  Alternatively, you may want to use
-GNU make.
+    local %tied_array;
 
-=item *
+doesn't work as one would expect: the old value is restored
+incorrectly.  This will be changed in a future release, but we don't
+know yet what 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.
 
-In AIX 4.2, Perl extensions that use C++ functions that use statics
-may have problems in that the statics are not getting initialized.
-In newer AIX releases, this has been solved by linking Perl with
-the libC_r library, but unfortunately in AIX 4.2 the said library
-has an obscure bug where the various functions related to time
-(such as time() and gettimeofday()) return broken values, and
-therefore in AIX 4.2 Perl is not linked against libC_r.
+=head2 Building Extensions Can Fail Because Of Largefiles
 
-=item *
+Some extensions like mod_perl are known to have issues with
+`largefiles', a change brought by Perl 5.6.0 in which file offsets
+default to 64 bits wide, where supported.  Modules may fail to compile
+at all, or they may compile and work incorrectly.  Currently, there
+is no good solution for the problem, but Configure now provides
+appropriate non-largefile ccflags, ldflags, libswanted, and libs
+in the %Config hash (e.g., $Config{ccflags_nolargefiles}) so the
+extensions that are having problems can try configuring themselves
+without the largefileness.  This is admittedly not a clean solution,
+and the solution may not even work at all.  One potential failure is
+whether one can (or, if one can, whether it's a good idea to) link
+together at all binaries with different ideas about file offsets;
+all this is platform-dependent.
 
-vac 5.0.0.0 May Produce Buggy Code For Perl
+=head2 Modifying $_ Inside for(..)
+
+   for (1..5) { $_++ }
+
+works without complaint.  It shouldn't.  (You should be able to
+modify only lvalue elements inside the loops.)  You can see the
+correct behaviour by replacing the 1..5 with 1, 2, 3, 4, 5.
+
+=head2 mod_perl 1.26 Doesn't Build With Threaded Perl
+
+Use mod_perl 1.27 or higher.
+
+=head2 lib/ftmp-security tests warn 'system possibly insecure'
+
+Don't panic.  Read the 'make test' section of INSTALL instead.
+
+=head2 libwww-perl (LWP) fails base/date #51
+
+Use libwww-perl 5.65 or later.
+
+=head2 PDL failing some tests
+
+Use PDL 2.3.4 or later.
+
+=head2 Perl_get_sv
+
+You may get errors like 'Undefined symbol "Perl_get_sv"' or "can't
+resolve symbol 'Perl_get_sv'", or the symbol may be "Perl_sv_2pv".
+This probably means that you are trying to use an older shared Perl
+library (or extensions linked with such) with Perl 5.8.0 executable.
+Perl used to have such a subroutine, but that is no more the case.
+Check your shared library path, and any shared Perl libraries in those
+directories.
+
+Sometimes this problem may also indicate a partial Perl 5.8.0
+installation, see L</"Mac OS X dyld undefined symbols"> for an
+example and how to deal with it.
+
+=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
+forbidden for now (you will get a fatal error even from an attempt).
+
+A change to self-tying of globs has caused them to be recursively
+referenced (see: L<perlobj/"Two-Phased Garbage Collection">).  You
+will now need an explicit untie to destroy a self-tied glob.  This
+behaviour may be fixed at a later date.
+
+Self-tying of scalars and IO thingies works.
+
+=head2 ext/threads/t/libc
+
+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 Failure of Thread (5.005-style) tests
+
+B<Note that support for 5.005-style threading is deprecated,
+experimental and practically unsupported.  In 5.10, it is expected
+to be removed.  You should migrate your code to ithreads.>
+
+The following tests are known to fail due to fundamental problems in
+the 5.005 threading implementation. These are not new failures--Perl
+5.005_0x has the same bugs, but didn't have these tests.
+
+ ../ext/B/t/xref.t                    255 65280    14   12  85.71%  3-14
+ ../ext/List/Util/t/first.t           255 65280     7    4  57.14%  2 5-7
+ ../lib/English.t                       2   512    54    2   3.70%  2-3
+ ../lib/FileCache.t                                 5    1  20.00%  5
+ ../lib/Filter/Simple/t/data.t                      6    3  50.00%  1-3
+ ../lib/Filter/Simple/t/filter_only.                9    3  33.33%  1-2 5
+ ../lib/Math/BigInt/t/bare_mbf.t                 1627    4   0.25%  8 11 1626-1627
+ ../lib/Math/BigInt/t/bigfltpm.t                 1629    4   0.25%  10 13 1628-
+                                                                    1629
+ ../lib/Math/BigInt/t/sub_mbf.t                  1633    4   0.24%  8 11 1632-1633
+ ../lib/Math/BigInt/t/with_sub.t                 1628    4   0.25%  9 12 1627-1628
+ ../lib/Tie/File/t/31_autodefer.t     255 65280    65   32  49.23%  34-65
+ ../lib/autouse.t                                  10    1  10.00%  4
+ op/flip.t                                         15    1   6.67%  15
+
+These failures are unlikely to get fixed as 5.005-style threads
+are considered fundamentally broken.  (Basically what happens is that
+competing threads can corrupt shared global state, one good example
+being regular expression engine's state.)
+
+=head2 Timing problems
+
+The following tests may fail intermittently because of timing
+problems, for example if the system is heavily loaded.
+
+    t/op/alarm.t
+    ext/Time/HiRes/HiRes.t
+    lib/Benchmark.t
+    lib/Memoize/t/expmod_t.t
+    lib/Memoize/t/speed.t
+
+In case of failure please try running them manually, for example
+
+    ./perl -Ilib ext/Time/HiRes/HiRes.t
+
+=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 Unicode in package/class and subroutine names does not work
+
+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.
+
+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.
+
+=head1 Platform Specific Problems
+
+=head2 AIX
+
+=over 4
+
+=item *
+
+If using the AIX native make command, instead of just "make" issue
+"make all".  In some setups the former has been known to spuriously
+also try to run "make install".  Alternatively, you may want to use
+GNU make.
+
+=item *
+
+In AIX 4.2, Perl extensions that use C++ functions that use statics
+may have problems in that the statics are not getting initialized.
+In newer AIX releases, this has been solved by linking Perl with
+the libC_r library, but unfortunately in AIX 4.2 the said library
+has an obscure bug where the various functions related to time
+(such as time() and gettimeofday()) return broken values, and
+therefore in AIX 4.2 Perl is not linked against libC_r.
+
+=item *
+
+vac 5.0.0.0 May Produce Buggy Code For Perl
 
 The AIX C compiler vac version 5.0.0.0 may produce buggy code,
 resulting in a few random tests failing when run as part of "make
@@ -3093,17 +3375,44 @@ detailed in here: http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
 
 One can build but not install (or test the build of) the NDBM_File
 on FAT filesystems.  Installation (or build) on NTFS works fine.
+If one attempts the test on a FAT install (or build) the following
+failures are expected:
 
-=head2 ext/threads/t/libc
+ ../ext/NDBM_File/ndbm.t       13  3328    71   59  83.10%  1-2 4 16-71
+ ../ext/ODBM_File/odbm.t      255 65280    ??   ??       %  ??
+ ../lib/AnyDBM_File.t           2   512    12    2  16.67%  1 4
+ ../lib/Memoize/t/errors.t      0   139    11    5  45.45%  7-11
+ ../lib/Memoize/t/tie_ndbm.t   13  3328     4    4 100.00%  1-4
+ run/fresh_perl.t                          97    1   1.03%  91
 
-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.
+NDBM_File fails and ODBM_File just coredumps.
+
+=head2 DJGPP Failures
+
+ t/op/stat............................FAILED at test 29
+ lib/File/Find/t/find.................FAILED at test 1
+ lib/File/Find/t/taint................FAILED at test 1
+ lib/h2xs.............................FAILED at test 15
+ lib/Pod/t/eol........................FAILED at test 1
+ lib/Test/Harness/t/strap-analyze.....FAILED at test 8
+ lib/Test/Harness/t/test-harness......FAILED at test 23
+ lib/Test/Simple/t/exit...............FAILED at test 1
+
+The above failures are known as of 5.8.0 with native builds with long
+filenames, but there are a few more if running under dosemu because of
+limitations (and maybe bugs) of dosemu:
+
+ t/comp/cpp...........................FAILED at test 3
+ t/op/inccode.........................(crash)
+
+and a few lib/ExtUtils tests, and several hundred Encode/t/Aliases.t
+failures that work fine with long filenames.  So you really might
+prefer native builds and long filenames.
 
 =head2 FreeBSD built with ithreads coredumps reading large directories
 
-This is a known bug in FreeBSD's readdir_r() (see L<perlfreebsd>
-(README.freebsd)), which hopefully will be fixed in FreeBSD 4.6.
+This is a known bug in FreeBSD 4.5's readdir_r(), it has been fixed in
+FreeBSD 4.6 (see L<perlfreebsd> (README.freebsd)).
 
 =head2 FreeBSD Failing locale Test 117 For ISO 8859-15 Locales
 
@@ -3114,28 +3423,17 @@ 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
-
-IRIX with MIPSpro 7.3.1.3m compiler may fail the said List::Util test
-by dumping core.  This seems to be a compiler error since if compiled
-with gcc no core dump ensues, and no failures on the said test on any
-other platform.
-
-=head2 Modifying $_ Inside for(..)
+=head2 IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5
 
-   for (1..5) { $_++ }
+IRIX with MIPSpro 7.3.1.2m or 7.3.1.3m compiler may fail the List::Util
+test ext/List/Util/t/shuffle.t by dumping core.  This seems to be
+a compiler error since if compiled with gcc no core dump ensues, and
+no failures have been seen on the said test on any other platform.
 
-works without complaint.  It shouldn't.  (You should be able to
-modify only lvalue elements inside the loops.)  You can see the
-correct behaviour by replacing the 1..5 with 1, 2, 3, 4, 5.
+Similarly, building the Digest::MD5 extension has been
+known to fail with "*** Termination code 139 (bu21)".
 
-=head2 mod_perl 1.26 Doesn't Build With Threaded Perl
-
-Use mod_perl 1.27 or higher.
-
-=head2 lib/ftmp-security tests warn 'system possibly insecure'
-
-Don't panic.  Read the 'make test' section of INSTALL instead.
+The cure is to drop optimization level (Configure -Doptimize=-O2).
 
 =head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
 
@@ -3153,10 +3451,6 @@ This is a known bug in the glibc 2.2.5 with long long integers.
 
 No known fix.
 
-=head2 libwww-perl (LWP) fails base/date #51
-
-Use libwww-perl 5.65 or later.
-
 =head2 Mac OS X
 
 Please remember to set your environment variable LC_ALL to "C"
@@ -3184,6 +3478,29 @@ 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 Mac OS X dyld undefined symbols
+
+If after installing Perl 5.8.0 you are getting warnings about missing
+symbols, for example
+
+    dyld: perl Undefined symbols
+    _perl_sv_2pv
+    _perl_get_sv
+
+you probably have an old pre-Perl-5.8.0 installation (or parts of one)
+in /Library/Perl (the undefined symbols used to exist in pre-5.8.0 Perls).
+It seems that for some reason "make install" doesn't always completely
+overwrite the files in /Library/Perl.  You can move the old Perl
+shared library out of the way like this:
+
+    cd /Library/Perl/darwin/CORE
+    mv libperl.dylib libperlold.dylib
+
+and then reissue "make install".  Note that the above of course is
+extremely disruptive for anything using the /usr/local/bin/perl.
+If that doesn't help, you may have to try removing all the .bundle
+files from beneath /Library/Perl, and again "make install"-ing.
+
 =head2 OS/2 Test Failures
 
 The following tests are known to fail on OS/2 (for clarity
@@ -3252,72 +3569,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.
 
-=head2 Failure of Thread (5.005-style) tests
-
-B<Note that support for 5.005-style threading is deprecated,
-experimental and practically unsupported.  In 5.10, it is expected
-to be removed.  You should migrate your code to ithreads.>
-
-The following tests are known to fail due to fundamental problems in
-the 5.005 threading implementation. These are not new failures--Perl
-5.005_0x has the same bugs, but didn't have these tests.
-
- ../ext/B/t/xref.t                    255 65280    14   12  85.71%  3-14
- ../ext/List/Util/t/first.t           255 65280     7    4  57.14%  2 5-7
- ../lib/English.t                       2   512    54    2   3.70%  2-3
- ../lib/FileCache.t                                 5    1  20.00%  5
- ../lib/Filter/Simple/t/data.t                      6    3  50.00%  1-3
- ../lib/Filter/Simple/t/filter_only.                9    3  33.33%  1-2 5
- ../lib/Math/BigInt/t/bare_mbf.t                 1627    4   0.25%  8 11 1626-1627
- ../lib/Math/BigInt/t/bigfltpm.t                 1629    4   0.25%  10 13 1628-
-                                                                    1629
- ../lib/Math/BigInt/t/sub_mbf.t                  1633    4   0.24%  8 11 1632-1633
- ../lib/Math/BigInt/t/with_sub.t                 1628    4   0.25%  9 12 1627-1628
- ../lib/Tie/File/t/31_autodefer.t     255 65280    65   32  49.23%  34-65
- ../lib/autouse.t                                  10    1  10.00%  4
- op/flip.t                                         15    1   6.67%  15
-
-These failures are unlikely to get fixed as 5.005-style threads
-are considered fundamentally broken.  (Basically what happens is that
-competing threads can corrupt shared global state, one good example
-being regular expression engine's state.)
-
-=head2 Timing problems
-
-The following tests may fail intermittently because of timing
-problems, for example if the system is heavily loaded.
-
-    t/op/alarm.t
-    ext/Time/HiRes/HiRes.t
-    lib/Benchmark.t
-    lib/Memoize/t/expmod_t.t
-    lib/Memoize/t/speed.t
-
-In case of failure please try running them manually, for example
-
-    ./perl -Ilib ext/Time/HiRes/HiRes.t
-
-=head2 Unicode in package/class and subroutine names does not work
-
-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.
-
-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
 
 =over 4
@@ -3384,7 +3639,7 @@ Use XML::Parser 2.31 or later.
 
 =head2 z/OS (OS/390)
 
-z/OS has rather many test failures but the situation is actually
+z/OS has rather many test failures but the situation is actually much
 better than it was in 5.6.0; it's just that so many new modules and
 tests have been added.
 
@@ -3397,7 +3652,8 @@ tests have been added.
                                                               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                         0    11   922  283  30.69%  640-922
+ op/pat.t                                   922    7   0.76%  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
  uni/fold.t                                 780    6   0.77%  61 169 196 661
@@ -3411,55 +3667,6 @@ 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.  This will be changed in a future release, but we don't
-know yet what 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 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
-forbidden for now (you will get a fatal error even from an attempt).
-
-A change to self-tying of globs has caused them to be recursively
-referenced (see: L<perlobj/"Two-Phased Garbage Collection">).  You
-will now need an explicit untie to destroy a self-tied glob.  This
-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
-`largefiles', a change brought by Perl 5.6.0 in which file offsets
-default to 64 bits wide, where supported.  Modules may fail to compile
-at all, or they may compile and work incorrectly.  Currently, there
-is no good solution for the problem, but Configure now provides
-appropriate non-largefile ccflags, ldflags, libswanted, and libs
-in the %Config hash (e.g., $Config{ccflags_nolargefiles}) so the
-extensions that are having problems can try configuring themselves
-without the largefileness.  This is admittedly not a clean solution,
-and the solution may not even work at all.  One potential failure is
-whether one can (or, if one can, whether it's a good idea to) link
-together at all binaries with different ideas about file offsets;
-all this is platform-dependent.
-
 =head2 Unicode Support on EBCDIC Still Spotty
 
 Though mostly working, Unicode support still has problem spots on
@@ -3467,23 +3674,6 @@ EBCDIC platforms.  One such known spot are the C<\p{}> and C<\P{}>
 regular expression constructs for code points less than 256: the
 C<pP> are testing for Unicode code points, not knowing about EBCDIC.
 
-=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.
-
-=head2 The Long Double Support Is Still Experimental
-
-The ability to configure Perl's numbers to use "long doubles",
-floating point numbers of hopefully better accuracy, is still
-experimental.  The implementations of long doubles are not yet
-widespread and the existing implementations are not quite mature
-or standardised, therefore trying to support them is a rare
-and moving target.  The gain of more precision may also be offset
-by slowdown in computations (more bits to move around, and the
-operations are more likely to be executed by less optimised
-libraries).
-
 =head2 Seen In Perl 5.7 But Gone Now
 
 C<Time::Piece> (previously known as C<Time::Object>) was removed
@@ -3499,10 +3689,16 @@ development release).
 
 The C<PerlIO::Scalar> and C<PerlIO::Via> (capitalised) were renamed as
 C<PerlIO::scalar> and C<PerlIO::via> (all lowercase) just before 5.8.0.
-The main rationale was to have all core IO layers to have all
+The main rationale was to have all core PerlIO layers to have all
 lowercase names.  The "plugins" are named as usual, for example
 C<PerlIO::via::QuotedPrint>.
 
+The C<threads::shared::queue> and C<threads::shared::semaphore> were
+renamed as C<Thread::Queue> and C<Thread::Semaphore> just before 5.8.0.
+The main rationale was to have thread modules to obey normal naming,
+C<Thread::> (the C<threads> and C<threads::shared> themselves are
+more pragma-like, they affect compile-time, so they stay lowercase).
+
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles