Document the DJGPP status.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 9aeeb4c..12b48cc 100644 (file)
@@ -1,18 +1,22 @@
-.=head1 NAME
+=head1 NAME
 
 perldelta - what is new for perl v5.8.0
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.6.0 release
-and the 5.8.0 release.
+This document describes differences between the 5.6.0 release and
+the 5.8.0 release.
 
 Many of the bug fixes in 5.8.0 were already seen in the 5.6.1
 maintenance release since the two releases were kept closely
-coordinated.
+coordinated (while 5.8.0 was still called 5.7.something).
 
-If you are upgrading from Perl 5.005_03, you might also want
-to read L<perl56delta>.
+Changes that were integrated into the 5.6.1 release are marked C<[561]>.
+Many of these changes have been further developed since 5.6.1 was released,
+those are marked C<[561+]>.
+
+You can see the list of changes in the 5.6.1 release (both from the
+5.005_03 release and the 5.6.0 release) by reading L<perl561delta>.
 
 =head1 Highlights In 5.8.0
 
@@ -24,11 +28,11 @@ Better Unicode support
 
 =item *
 
-New Thread Implementation
+New IO Implementation
 
 =item *
 
-Many New Modules
+New Thread Implementation
 
 =item *
 
@@ -40,6 +44,10 @@ Safe Signals
 
 =item *
 
+Many New Modules
+
+=item *
+
 More Extensive Regression Testing
 
 =back
@@ -66,7 +74,7 @@ authors, however: PerlIO has been designed as a drop-in replacement
 (at the source code level) for the stdio interface.
 
 Depending on your platform, there are also other reasons why
-we decided to break binary compatibility, please read on. 
+we decided to break binary compatibility, please read on.
 
 =head2 64-bit platforms and malloc
 
@@ -75,7 +83,7 @@ used because it does not work well with 8-byte pointers.  Also,
 usually the system mallocs on such platforms are much better optimized
 for such large memory models than the Perl malloc.  Some memory-hungry
 Perl applications like the PDL don't work well with Perl's malloc.
-Finally, other applications than Perl (like modperl) tend to prefer
+Finally, other applications than Perl (such as mod_perl) tend to prefer
 the system malloc.  Such platforms include Alpha and 64-bit HPPA,
 MIPS, PPC, and Sparc.
 
@@ -85,9 +93,9 @@ The AIX dynaloading now uses in AIX releases 4.3 and newer the native
 dlopen interface of AIX instead of the old emulated interface.  This
 change will probably break backward compatibility with compiled
 modules.  The change was made to make Perl more compliant with other
-applications like modperl which are using the AIX native interface.
+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
@@ -110,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
@@ -124,8 +150,8 @@ their various diacritic-adorned versions, it does not include the various
 punctuation or digits (since they are not solely C<Latin>).
 
 A number of other properties are now supported, including C<\p{L&}>,
-C<\p{Any}> C<\p{Assigned}>, C<\p{Unassigned}>, C<\p{Blank}> and
-C<\p{SpacePerl}> (along with their C<\P{...}> versions, of course).
+C<\p{Any}> C<\p{Assigned}>, C<\p{Unassigned}>, C<\p{Blank}> [561] and
+C<\p{SpacePerl}> [561] (along with their C<\P{...}> versions, of course).
 See L<perlunicode> for details, and more additions.
 
 The C<In> or C<Is> prefix to names used with the C<\p{...}> and C<\P{...}>
@@ -149,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
@@ -185,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.)
-
-=item *
-
-Spurious syntax errors generated in certain situations, when glob()
-caused File::Glob to be loaded for the first time, have been fixed.
-
-=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 *
 
@@ -223,6 +236,25 @@ since it, in a way, falsely promised that the features could be used.
 
 =item *
 
+In future releases, non-PerlIO aware XS modules may become completely
+unsupported.  Since PerlIO is a drop-in replacement for stdio at the
+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>.
+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.
+
+=item *
+
 The current user-visible implementation of pseudo-hashes (the weird
 use of the first array element) is deprecated starting from Perl 5.8.0
 and will be removed in Perl 5.10.0, and the feature will be
@@ -230,7 +262,9 @@ implemented differently.  Not only is the current interface rather
 ugly, but the current implementation slows down normal array and hash
 use quite noticeably. The C<fields> pragma interface will remain
 available.  The I<restricted hashes> interface is expected to
-be the replacement interface (see L<Hash::Util>).
+be the replacement interface (see L<Hash::Util>).  If your existing
+programs depends on the underlying implementation, consider using
+L<Class::PseudoHash> from CPAN.
 
 =item *
 
@@ -238,7 +272,7 @@ The syntaxes C<< @a->[...] >> and  C<< %h->{...} >> have now been deprecated.
 
 =item *
 
-After years of trying the suidperl is considered to be too complex to
+After years of trying, suidperl is considered to be too complex to
 ever be considered truly secure.  The suidperl functionality is likely
 to be removed in a future release.
 
@@ -246,7 +280,8 @@ to be removed in a future release.
 
 The 5.005 threads model (module C<Thread>) is deprecated and expected
 to be removed in Perl 5.10.  Multithreaded code should be migrated to
-the new ithreads model (see L<threads> and L<threads::shared>).
+the new ithreads model (see L<threads>, L<threads::shared> and
+L<perlthrtut>).
 
 =item *
 
@@ -257,7 +292,7 @@ operators (EQ, NE, LT, LE, GE, GT) have now been removed.
 
 The tr///C and tr///U features have been removed and will not return;
 the interface was a mistake.  Sorry about that.  For similar
-functionality, see pack('U0', ...) and pack('C0', ...).
+functionality, see pack('U0', ...) and pack('C0', ...). [561]
 
 =item *
 
@@ -269,6 +304,11 @@ release.
 
 =item *
 
+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 *
+
 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">.
@@ -277,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
@@ -307,6 +383,17 @@ of PerlIO on your architecture name.
 
 =item *
 
+If your platform supports fork(), you can use the list form of C<open>
+for pipes.  For example:
+
+    open KID_PS, "-|", "ps", "aux" or die $!;
+
+forks the ps(1) command (without spawning a shell, as there are more
+than three arguments to open()), and reads its standard output via the
+C<KID_PS> filehandle.  See L<perlipc>.
+
+=item *
+
 File handles can be marked as accepting Perl's internal encoding of Unicode
 (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" :
 
@@ -316,7 +403,28 @@ Note for EBCDIC users: the pseudo layer ":utf8" is erroneously named
 for you since it's not UTF-8 what you will be getting but instead
 UTF-EBCDIC.  See L<perlunicode>, L<utf8>, and
 http://www.unicode.org/unicode/reports/tr16/ for more information.
-In future releases this naming may change.
+In future releases this naming may change.  See L<perluniintro>
+for more information about UTF-8.
+
+=item *
+
+If your environment variables (LC_ALL, LC_CTYPE, LANG, LANGUAGE) look
+like you want to use UTF-8 (any of the the variables match C</utf-?8/i>),
+your STDIN, STDOUT, STDERR handles and the default open layer
+(see L<open>) are marked as UTF-8.  (This feature, like other new
+features that combine Unicode and I/O, work only if you are using
+PerlIO, but that's the default.)
+
+Note that after this Perl really does assume that everything is UTF-8:
+for example if some input handle is not, Perl will probably very soon
+complain about the input data like this "Malformed UTF-8 ..." since
+any old eight-bit data is not legal UTF-8.
+
+Note for code authors: if you want to enable your users to use UTF-8
+as their default encoding  but in your code still have eight-bit I/O streams
+(such as images or zip files), you need to explicitly open() or binmode()
+with C<:bytes> (see L<perlfunc/open> and L<perlfunc/binmode>), or you
+can just use C<binmode(FH)> (nice for pre-5.8.0 backward compatibility).
 
 =item *
 
@@ -338,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
 
@@ -378,41 +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/ .
-
-=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
@@ -428,6 +497,37 @@ This change leads to often slightly faster and always less lossy
 arithmetics. (Previously Perl always preferred floating point numbers
 in its math.)
 
+=head2 Arrays now always interpolate into double-quoted strings [561]
+
+In double-quoted strings, arrays now interpolate, no matter what.  The
+behavior in earlier versions of perl 5 was that arrays would interpolate
+into strings if the array had been mentioned before the string was
+compiled, and otherwise Perl would raise a fatal compile-time error.
+In versions 5.000 through 5.003, the error was
+
+        Literal @example now requires backslash
+
+In versions 5.004_01 through 5.6.0, the error was
+
+        In string, @example now must be written as \@example
+
+The idea here was to get people into the habit of writing
+C<"fred\@example.com"> when they wanted a literal C<@> sign, just as
+they have always written C<"Give me back my \$5"> when they wanted a
+literal C<$> sign.
+
+Starting with 5.6.1, when Perl now sees an C<@> sign in a
+double-quoted string, it I<always> attempts to interpolate an array,
+regardless of whether or not the array has been used or declared
+already.  The fatal error has been downgraded to an optional warning:
+
+        Possible unintended interpolation of @example in string
+
+This warns you that C<"fred@example.com"> is going to turn into
+C<fred.com> if you don't backslash the C<@>.
+See http://www.plover.com/~mjd/perl/at-error.html for more details
+about the history here.
+
 =head2 Miscellaneous Changes
 
 =over 4
@@ -456,9 +556,16 @@ in multiple arguments.)
 
 =item *
 
+C<do> followed by a bareword now ensures that this bareword isn't
+a keyword (to avoid a bug where C<do q(foo.pl)> tried to call a
+subroutine called C<q>).  This means that for example instead of
+C<do format()> you must write C<do &format()>.
+
+=item *
+
 The builtin dump() now gives an optional warning
 C<dump() better written as CORE::dump()>,
-meaning that by default C<dump(...)> is resolved as the builtin 
+meaning that by default C<dump(...)> is resolved as the builtin
 dump() which dumps core and aborts, not as (possibly) user-defined
 C<sub dump>.  To call the latter, qualify the call as C<&dump(...)>.
 (The whole dump() feature is to considered deprecated, and possibly
@@ -474,7 +581,7 @@ replacements to override these builtins.
 =item *
 
 END blocks are now run even if you exit/die in a BEGIN block.
-Internally, the execution of END blocks is now controlled by 
+Internally, the execution of END blocks is now controlled by
 PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
 behaviour for Perl embedders. This will default in 5.10. See
 L<perlembed>.
@@ -485,8 +592,25 @@ Formats now support zero-padded decimal fields.
 
 =item *
 
-Lvalue subroutines can now return C<undef> in list context.
-However, the lvalue subroutine feature still remains experimental.
+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+]
 
 =item *
 
@@ -500,7 +624,9 @@ C<$^N>, which contains the most-recently closed group (submatch).
 
 =item *
 
-C<no Module;> now works even if there is no "sub unimport" in the Module.
+C<no Module;> does not produce an error even if Module does not have an
+unimport() method.  This parallels the behavior of C<use> vis-a-vis
+C<import>. [561]
 
 =item *
 
@@ -509,12 +635,18 @@ is a NaN.  Previously the behaviour was unspecified.
 
 =item *
 
+C<our> can now have an experimental optional attribute C<unique> that
+affects how global variables are shared among multiple interpreters,
+see L<perlfunc/our>.
+
+=item *
+
 The following builtin functions are now overridable: each(), keys(),
-pop(), push(), shift(), splice(), unshift().
+pop(), push(), shift(), splice(), unshift(). [561]
 
 =item *
 
-C<pack() / unpack()> now can group template letters with C<()> and then
+C<pack() / unpack()> can now group template letters with C<()> and then
 apply repetition/count modifiers on the groups.
 
 =item *
@@ -529,7 +661,7 @@ C<pack('U0a*', ...)> can now be used to force a string to UTF8.
 
 =item *
 
-my __PACKAGE__ $obj now works.
+my __PACKAGE__ $obj now works. [561]
 
 =item *
 
@@ -550,7 +682,7 @@ of the parameters can vary.
 
 =item *
 
-prototype(\&) is now available.
+The (\&) prototype now works properly. [561]
 
 =item *
 
@@ -569,10 +701,10 @@ This is not a substitute for -T.>
 
 In other taint news, the C<exec LIST> and C<system LIST> have now been
 considered too risky (think C<exec @ARGV>: it can start any program
-with any arguments), and now the said forms cause a warning.
-You should carefully launder the arguments to guarantee their
-validity.  In future releases of Perl the forms will become fatal
-errors so consider starting laundering now.
+with any arguments), and now the said forms cause a warning under
+lexical warnings.  You should carefully launder the arguments to
+guarantee their validity.  In future releases of Perl the forms will
+become fatal errors so consider starting laundering now.
 
 =item *
 
@@ -587,7 +719,7 @@ modify its target.
 =item *
 
 untie() will now call an UNTIE() hook if it exists.  See L<perltie>
-for details.
+for details. [561]
 
 =item *
 
@@ -625,12 +757,24 @@ The command-line options -s and -F are now recognized on the shebang
 Use of the C</c> match modifier without an accompanying C</g> modifier
 elicits a new warning: C<Use of /c modifier is meaningless without /g>.
 
-Use of C</c> in substitutions, even with C</g>, elicits 
-C<Use of /c modifier is meaningless in s///>.  
+Use of C</c> in substitutions, even with C</g>, elicits
+C<Use of /c modifier is meaningless in s///>.
 
 Use of C</g> with C<split> elicits C<Use of /g modifier is meaningless
 in split>.
 
+=item *
+
+Support for the C<CLONE> special subroutine had been added.
+With ithreads, when a new thread is created, all Perl data is cloned,
+however non-Perl data cannot be cloned automatically.  In C<CLONE> you
+can do whatever you need to do, like for example handle the cloning of
+non-Perl data, if necessary.  C<CLONE> will be executed once for every
+package that has it defined or inherited.  It will be called in the
+context of the new thread, so all modifications are made in the new area.
+
+See L<perlmod>
+
 =back
 
 =head1 Modules and Pragmata
@@ -641,7 +785,8 @@ in split>.
 
 =item *
 
-C<Attribute::Handlers> allows a class to define attribute handlers.
+C<Attribute::Handlers>, originally by Damian Conway and now maintained
+by Arthur Bergman, allows a class to define attribute handlers.
 
     package MyPack;
     use Attribute::Handlers;
@@ -654,36 +799,37 @@ C<Attribute::Handlers> allows a class to define attribute handlers.
 Both variables and routines can have attribute handlers.  Handlers can
 be specific to type (SCALAR, ARRAY, HASH, or CODE), or specific to the
 exact compilation phase (BEGIN, CHECK, INIT, or END).
+See L<Attribute::Handlers>.
 
 =item *
 
-B<B::Concise> is a new compiler backend for walking the Perl syntax
-tree, printing concise info about ops, from Stephen McCamant.  The
-output is highly customisable.  See L<B::Concise>.
+C<B::Concise>, by Stephen McCamant, is a new compiler backend for
+walking the Perl syntax tree, printing concise info about ops.
+The output is highly customisable.  See L<B::Concise>. [561+]
 
 =item *
 
-The new bignum, bigint, and bigrat pragmas implement transparent
-bignum support (using the Math::BigInt, Math::BigFloat, and
-Math::BigRat backends), by Tels.
+The new bignum, bigint, and bigrat pragmas, by Tels, implement
+transparent bignum support (using the Math::BigInt, Math::BigFloat,
+and Math::BigRat backends).
 
 =item *
 
-C<Class::ISA> for reporting the search path for a class's ISA tree,
-by Sean Burke, has been added.  See L<Class::ISA>.
+C<Class::ISA>, by Sean Burke, is a module for reporting the search
+path for a class's ISA tree.  See L<Class::ISA>.
 
 =item *
 
-C<Cwd> has now a split personality: if possible, an XS extension is
+C<Cwd> now has a split personality: if possible, an XS extension is
 used, (this will hopefully be faster, more secure, and more robust)
 but if not possible, the familiar Perl implementation is used.
 
 =item *
 
-C<Devel::PPPort>, originally from Kenneth Albanowski and now
+C<Devel::PPPort>, originally by Kenneth Albanowski and now
 maintained by Paul Marquess, has been added.  It is primarily used
 by C<h2xs> to enhance portability of XS modules between different
-versions of Perl.
+versions of Perl.  See L<Devel::PPPort>.
 
 =item *
 
@@ -704,9 +850,11 @@ RFC 1321, from Gisle Aas, has been added.  See L<Digest::MD5>.
 NOTE: the C<MD5> backward compatibility module is deliberately not
 included since its further use is discouraged.
 
+See also L<PerlIO::via::QuotedPrint>.
+
 =item *
 
-C<Encode>, orginally by Nick Ing-Simmons and now maintained by Dan
+C<Encode>, originally by Nick Ing-Simmons and now maintained by Dan
 Kogai, provides a mechanism to translate between different character
 encodings.  Support for Unicode, ISO-8859-1, and ASCII are compiled in
 to the module.  Several other encodings (like the rest of the
@@ -723,28 +871,28 @@ Any encoding supported by Encode module is also available to the
 
 C<Hash::Util> is the interface to the new I<restricted hashes>
 feature.  (Implemented by Jeffrey Friedl, Nick Ing-Simmons, and
-Michael Schwern.)
+Michael Schwern.)  See L<Hash::Util>.
 
 =item *
 
-C<I18N::Langinfo> can be use to query locale information.
+C<I18N::Langinfo> can be used to query locale information.
 See L<I18N::Langinfo>.
 
 =item *
 
-C<I18N::LangTags> has functions for dealing with RFC3066-style
-language tags, by Sean Burke.  See L<I18N::LangTags>.
+C<I18N::LangTags>, by Sean Burke, has functions for dealing with
+RFC3066-style language tags.  See L<I18N::LangTags>.
 
 =item *
 
-C<ExtUtils::Constant> is a new tool for extension writers for
-generating XS code to import C header constants, by Nicholas Clark.
+C<ExtUtils::Constant>, by Nicholas Clark, is a new tool for extension
+writers for generating XS code to import C header constants.
 See L<ExtUtils::Constant>.
 
 =item *
 
-C<Filter::Simple> is an easy-to-use frontend to Filter::Util::Call,
-from Damian Conway.  See L<Filter::Simple>.
+C<Filter::Simple>, by Damian Conway, is an easy-to-use frontend to
+Filter::Util::Call.  See L<Filter::Simple>.
 
     # in MyFilter.pm:
 
@@ -771,38 +919,41 @@ from Damian Conway.  See L<Filter::Simple>.
 
 =item *
 
-C<File::Temp> allows one to create temporary files and directories in
-an easy, portable, and secure way, by Tim Jenness.  See L<File::Temp>.
+C<File::Temp>, by Tim Jenness, allows one to create temporary files
+and directories in an easy, portable, and secure way.  See L<File::Temp>.
+[561+]
 
 =item *
 
-C<Filter::Util::Call> provides you with the framework to write
-I<Source Filters> in Perl, from Paul Marquess.  For most uses the
+C<Filter::Util::Call>, by Paul Marquess, provides you with the
+framework to write I<source filters> in Perl.  For most uses, the
 frontend Filter::Simple is to be preferred.  See L<Filter::Util::Call>.
 
 =item *
 
-C<if> is a new pragma for conditional inclusion of modules, from
-Ilya Zakharevich.
+C<if>, by Ilya Zakharevich, is a new pragma for conditional inclusion
+of modules.
 
 =item *
 
-L<libnet> is a collection of perl5 modules related to network
-programming, from Graham Barr.  See L<Net::FTP>, L<Net::NNTP>,
-L<Net::Ping> (not part of libnet, but related), L<Net::POP3>,
-L<Net::SMTP>, and L<Net::Time>.
+L<libnet>, by Graham Barr, is a collection of perl5 modules related
+to network programming.  See L<Net::FTP>, L<Net::NNTP>, L<Net::Ping>
+(not part of libnet, but related), L<Net::POP3>, L<Net::SMTP>,
+and L<Net::Time>.
 
-Perl installation leaves libnet unconfigured, use F<libnetcfg> to configure.
+Perl installation leaves libnet unconfigured; use F<libnetcfg>
+to configure it.
 
 =item *
 
-C<List::Util> is a selection of general-utility list subroutines, like
-sum(), min(), first(), and shuffle(), by Graham Barr.  See L<List::Util>.
+C<List::Util>, by Graham Barr, is a selection of general-utility
+list subroutines, such as sum(), min(), first(), and shuffle().
+See L<List::Util>.
 
 =item *
 
 C<Locale::Constants>, C<Locale::Country>, C<Locale::Currency>
-C<Locale::Language>, and L<Locale::Script>, from Neil Bowers, have
+C<Locale::Language>, and L<Locale::Script>, by Neil Bowers, have
 been added.  They provide the codes for various locale standards, such
 as "fr" for France, "usd" for US Dollar, and "ja" for Japanese.
 
@@ -816,15 +967,15 @@ and L<Locale::Language>.
 
 =item *
 
-C<Locale::Maketext> is localization framework from Sean Burke.  See
+C<Locale::Maketext>, by Sean Burke, is a localization framework.  See
 L<Locale::Maketext>, and L<Locale::Maketext::TPJ13>.  The latter is an
 article about software localization, originally published in The Perl
-Journal #13, republished here with kind permission.
+Journal #13, and republished here with kind permission.
 
 =item *
 
 C<Math::BigRat> for big rational numbers, to accompany Math::BigInt and
-Math::BigFloat, from Tels.
+Math::BigFloat, from Tels.  See L<Math::BigRat>.
 
 =item *
 
@@ -833,7 +984,7 @@ from Mark-Jason Dominus.  See L<Memoize>.
 
 =item *
 
-C<MIME::Base64> allows you to encode data in base64, from Gisle Aas,
+C<MIME::Base64>, by Gisle Aas, allows you to encode data in base64,
 as defined in RFC 2045 - I<MIME (Multipurpose Internet Mail
 Extensions)>.
 
@@ -848,9 +999,9 @@ See L<MIME::Base64>.
 
 =item *
 
-C<MIME::QuotedPrint> allows you to encode data in quoted-printable
-encoding, as defined in RFC 2045 - I<MIME (Multipurpose Internet Mail
-Extensions)>, from Gisle Aas.
+C<MIME::QuotedPrint>, by Gisle Aas, allows you to encode data
+in quoted-printable encoding, as defined in RFC 2045 - I<MIME
+(Multipurpose Internet Mail Extensions)>.
 
     use MIME::QuotedPrint;
 
@@ -859,43 +1010,41 @@ Extensions)>, from Gisle Aas.
 
     print $encoded, "\n"; # "Smiley in Unicode: =263A"
 
-MIME::QuotedPrint has been enhanced to provide the basic methods
-necessary to use it with PerlIO::Via as in :
-
-    use MIME::QuotedPrint;
-    open($fh,">Via(MIME::QuotedPrint)",$path);
-
-See L<MIME::QuotedPrint>.
+See also L<PerlIO::via::QuotedPrint>.
 
 =item *
 
-C<NEXT> is pseudo-class for method redispatch, from Damian Conway.
+C<NEXT>, by Damian Conway, is a pseudo-class for method redispatch.
 See L<NEXT>.
 
 =item *
 
-C<open> is a new pragma for setting the default I/O disciplines
+C<open> is a new pragma for setting the default I/O layers
 for open().
 
 =item *
 
-C<PerlIO::Scalar> provides the implementation of IO to "in memory"
-Perl scalars as discussed above, from Nick Ing-Simmons.  It also
-serves as an example of a loadable PerlIO layer.  Other future
-possibilities include PerlIO::Array and PerlIO::Code.
-See L<PerlIO::Scalar>.
+C<PerlIO::scalar>, by Nick Ing-Simmons, provides the implementation
+of IO to "in memory" Perl scalars as discussed above.  It also serves
+as an example of a loadable PerlIO layer.  Other future possibilities
+include PerlIO::Array and PerlIO::Code.  See L<PerlIO::scalar>.
 
 =item *
 
-C<PerlIO::Via> acts as a PerlIO layer and wraps PerlIO layer
-functionality provided by a class (typically implemented in perl
-code), from Nick Ing-Simmons.
+C<PerlIO::via>, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
+PerlIO layer functionality provided by a class (typically implemented
+in Perl code).
 
-    use MIME::QuotedPrint;
-    open($fh,">Via(MIME::QuotedPrint)",$path);
+=item *
+
+C<PerlIO::via::QuotedPrint>, by Elizabeth Mattijsen, is an example
+of a C<PerlIO::via> class:
+
+    use PerlIO::via::QuotedPrint;
+    open($fh,">:via(QuotedPrint)",$path);
 
-This will automatically convert everything output to C<$fh>
-to Quoted-Printable.  See L<PerlIO::Via>.
+This will automatically convert everything output to C<$fh> to
+Quoted-Printable.  See L<PerlIO::via> and L<PerlIO::via::QuotedPrint>.
 
 =item *
 
@@ -907,12 +1056,12 @@ perlpodspec.
 
 C<Pod::Text::Overstrike>, by Joe Smith, has been added.
 It converts POD data to formatted overstrike text.
-See L<Pod::Text::Overstrike>.
+See L<Pod::Text::Overstrike>. [561+]
 
 =item *
 
 C<Scalar::Util> is a selection of general-utility scalar subroutines,
-like blessed(), reftype(), and tainted().  See L<Scalar::Util>.
+such as blessed(), reftype(), and tainted().  See L<Scalar::Util>.
 
 =item *
 
@@ -923,7 +1072,7 @@ C<sort> is a new pragma for controlling the behaviour of sort().
 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
+of Perl data structures, with it you can also clone deep, hierarchical
 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
@@ -931,7 +1080,7 @@ restricted hashes.  See L<Storable>.
 
 =item *
 
-C<Switch>, from Damian Conway, has been added.  Just by saying
+C<Switch>, by Damian Conway, has been added.  Just by saying
 
     use Switch;
 
@@ -957,18 +1106,18 @@ See L<Switch>.
 
 =item *
 
-C<Test::More> is yet another framework for writing test scripts,
-more extensive than Test::Simple, by Michael Schwern.  See L<Test::More>.
+C<Test::More>, by Michael Schwern, is yet another framework for writing
+test scripts, more extensive than Test::Simple.  See L<Test::More>.
 
 =item *
 
-C<Test::Simple> has basic utilities for writing tests, by Michael
-Schwern.   See L<Test::Simple>.
+C<Test::Simple>, by Michael Schwern, has basic utilities for writing
+tests.   See L<Test::Simple>.
 
 =item *
 
-C<Text::Balanced> has been added, for extracting delimited text
-sequences from strings, from Damian Conway.
+C<Text::Balanced>, by Damian Conway, has been added, for extracting
+delimited text sequences from strings.
 
     use Text::Balanced 'extract_delimited';
 
@@ -976,45 +1125,45 @@ sequences from strings, from Damian Conway.
 
 $a will be "'never say never'", $b will be ', he never said'.
 
-In addition to extract_delimited() there are also extract_bracketed(),
+In addition to extract_delimited(), there are also extract_bracketed(),
 extract_quotelike(), extract_codeblock(), extract_variable(),
 extract_tagged(), extract_multiple(), gen_delimited_pat(), and
-gen_extract_tagged().  With these you can implement rather advanced
+gen_extract_tagged().  With these, you can implement rather advanced
 parsing algorithms.  See L<Text::Balanced>.
 
 =item *
 
-C<threads> is an interface to interpreter threads, by Arthur Bergman.
+C<threads>, by Arthur Bergman, is an interface to interpreter threads.
 Interpreter threads (ithreads) is the new thread model introduced in
 Perl 5.6 but only available as an internal interface for extension
-writers (and for Win32 Perl for C<fork()> emulation).  See L<threads>.
+writers (and for Win32 Perl for C<fork()> emulation).  See L<threads>,
+L<threads::shared>, and L<perlthrtut>.
 
 =item *
 
-C<threads::shared> allows data sharing for interpreter threads, from
-Arthur Bergman.  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>.
+C<threads::shared>, by Arthur Bergman, allows data sharing for
+interpreter threads.  See L<threads::shared>.
 
 =item *
 
 C<Tie::File>, by Mark-Jason Dominus, associates a Perl array with the
-lines of a file.
+lines of a file.  See L<Tie::File>.
 
 =item *
 
 C<Tie::Memoize>, by Ilya Zakharevich, provides on-demand loaded hashes.
+See L<Tie::Memoize>.
 
 =item *
 
 C<Tie::RefHash::Nestable>, by Edward Avis, allows storing hash
 references (unlike the standard Tie::RefHash)  The module is contained
-within Tie::RefHash, see L<Tie::RefHash>.
+within Tie::RefHash.  See L<Tie::RefHash>.
 
 =item *
 
-C<Time::HiRes> provides high resolution timing (ualarm, usleep,
-and gettimeofday), from Douglas E. Wegscheid.  See L<Time::HiRes>.
+C<Time::HiRes>, by Douglas E. Wegscheid, provides high resolution
+timing (ualarm, usleep, and gettimeofday).  See L<Time::HiRes>.
 
 =item *
 
@@ -1023,19 +1172,26 @@ Database.  See L<Unicode::UCD>.
 
 =item *
 
-C<Unicode::Collate> implements the UCA (Unicode Collation Algorithm)
-for sorting Unicode strings, by SADAHIRO Tomoyuki.  See L<Unicode::Collate>.
+C<Unicode::Collate>, by SADAHIRO Tomoyuki, implements the UCA
+(Unicode Collation Algorithm) for sorting Unicode strings.
+See L<Unicode::Collate>.
 
 =item *
 
-C<Unicode::Normalize> implements the various Unicode normalization
-forms, by SADAHIRO Tomoyuki.  See L<Unicode::Normalize>.
+C<Unicode::Normalize>, by SADAHIRO Tomoyuki, implements the various
+Unicode normalization forms.  See L<Unicode::Normalize>.
 
 =item *
 
-C<XS::Typemap>, by Tim Jenness, is a test extension that exercises XS
-typemaps.  Nothing gets installed but for extension writers the code
-is worth studying.
+C<XS::APItest>, by Tim Jenness, is a test extension that exercises XS
+APIs.  Currently only C<printf()> is tested: how to output various
+basic data types from XS.
+
+=item *
+
+C<XS::Typemap>, by Tim Jenness, is a test extension that exercises
+XS typemaps.  Nothing gets installed, but the code is worth studying
+for extension writers.
 
 =back
 
@@ -1048,12 +1204,12 @@ is worth studying.
 The following independently supported modules have been updated to the
 newest versions from CPAN: CGI, CPAN, DB_File, File::Spec, File::Temp,
 Getopt::Long, Math::BigFloat, Math::BigInt, the podlators bundle
-(Pod::Man, Pod::Text), Pod::LaTeX, Pod::Parser, Storable,
+(Pod::Man, Pod::Text), Pod::LaTeX [561+], Pod::Parser, Storable,
 Term::ANSIColor, Test, Text-Tabs+Wrap.
 
 =item *
 
-The attributes::reftype() now works on tied arguments.
+attributes::reftype() now works on tied arguments.
 
 =item *
 
@@ -1061,9 +1217,16 @@ AutoLoader can now be disabled with C<no AutoLoader;>.
 
 =item *
 
-B::Deparse has been significantly enhanced.  It now can deparse almost
-all of the standard test suite (so that the tests still succeed).
-There is a make target "test.deparse" for trying this out.
+B::Deparse has been significantly enhanced by Robin Houston.  It can
+now deparse almost all of the standard test suite (so that the tests
+still succeed).  There is a make target "test.deparse" for trying this
+out.
+
+=item *
+
+Carp now has better interface documentation, and the @CARP_NOT
+interface has been added to get optional control over where errors
+are reported independently of @ISA, by Ben Tilly.
 
 =item *
 
@@ -1080,11 +1243,11 @@ The return value of Cwd::fastcwd() is now tainted.
 
 =item *
 
-Data::Dumper has now an option to sort hashes.
+Data::Dumper now has an option to sort hashes.
 
 =item *
 
-Data::Dumper has now an option to dump code references
+Data::Dumper now has an option to dump code references
 using B::Deparse.
 
 =item *
@@ -1105,24 +1268,38 @@ hit by saying
 
        use English '-no_match_vars';
 
-(Assuming, of course, that one doesn't need the troublesome variables
+(Assuming, of course, that you don't need the troublesome variables
 C<$`>, C<$&>, or C<$'>.)  Also, introduced C<@LAST_MATCH_START> and
 C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
 
 =item *
 
+ExtUtils::MakeMaker has been significantly cleaned up and fixed.
+The enhanced version has also been backported to earlier releases
+of Perl and submitted to CPAN so that the earlier releases can
+enjoy the fixes.
+
+=item *
+
+The arguments of WriteMakefile() in Makefile.PL are now checked
+for sanity much more carefully than before.  This may cause new
+warnings when modules are being installed.  See L<ExtUtils::MakeMaker>
+for more details.
+
+=item *
+
 ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
-leads into better portability.
+leads to better portability.
 
 =item *
 
-Fcntl, Socket, and Sys::Syslog have been rewritten to use the
-new-style constant dispatch section (see L<ExtUtils::Constant>).
+Fcntl, Socket, and Sys::Syslog have been rewritten by Nicholas Clark
+to use the new-style constant dispatch section (see L<ExtUtils::Constant>).
 This means that they will be more robust and hopefully faster.
 
 =item *
 
-File::Find now chdir()s correctly when chasing symbolic links.
+File::Find now chdir()s correctly when chasing symbolic links. [561]
 
 =item *
 
@@ -1142,8 +1319,9 @@ You can enable/disable them with C<use/no warnings 'File::Find';>.
 
 =item *
 
-File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid
-prototype mismatch with CORE::glob().
+File::Glob::glob() has been renamed to File::Glob::bsd_glob()
+because the name clashes with the builtin glob().  The older
+name is still available for compatibility, but is deprecated. [561]
 
 =item *
 
@@ -1156,31 +1334,36 @@ IPC::Open3 now allows the use of numeric file descriptors.
 
 =item *
 
-IO::Socket has now atmark() method, which returns true if the socket
+IO::Socket now has an atmark() method, which returns true if the socket
 is positioned at the out-of-band mark.  The method is also exportable
 as a sockatmark() function.
 
 =item *
 
-IO::Socket::INET has support for ReusePort option (if your platform
-supports it).  The Reuse option now has an alias, ReuseAddr.  For clarity
-you may want to prefer ReuseAddr.
+IO::Socket::INET failed to open the specified port if the service name
+was not known.  It now correctly uses the supplied port number as is. [561]
 
 =item *
 
-IO::Socket::INET now supports C<LocalPort> of zero (usually meaning
-that the operating system will make one up.)
+IO::Socket::INET has support for the ReusePort option (if your
+platform supports it).  The Reuse option now has an alias, ReuseAddr.
+For clarity, you may want to prefer ReuseAddr.
 
 =item *
 
-use lib now works identically to @INC.  Removing directories
+IO::Socket::INET now supports a value of zero for C<LocalPort>
+(usually meaning that the operating system will make one up.)
+
+=item *
+
+'use lib' now works identically to @INC.  Removing directories
 with 'no lib' now works.
 
 =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.
+Math::BigFloat and Math::BigInt have undergone a full rewrite by Tels.
+They are now magnitudes faster, and they support various bignum
+libraries such as GMP and PARI as their backends.
 
 =item *
 
@@ -1188,12 +1371,13 @@ Math::Complex handles inf, NaN etc., better.
 
 =item *
 
-Net::Ping has been muchly enhanced: multihoming is now supported,
-Win32 functionality is better, there is now time measuring
-functionality (optionally high-resolution using Time::HiRes),
-and there is now "external" protocol which uses Net::Ping::External
-module which runs your external ping utility and parses the output.
-A version of Net::Ping::External is available in CPAN.
+Net::Ping has been considerably enhanced by Rob Brown: multihoming is
+now supported, Win32 functionality is better, there is now time
+measuring functionality (optionally high-resolution using
+Time::HiRes), and there is now "external" protocol which uses
+Net::Ping::External module which runs your external ping utility and
+parses the output.  A version of Net::Ping::External is available in
+CPAN.
 
 Note that some of the Net::Ping tests are disabled when running
 under the Perl distribution since one cannot assume one or more
@@ -1210,7 +1394,7 @@ handlers, installing new handlers was not atomic.
 
 =item *
 
-In Safe the C<%INC> now localised in a Safe compartment so that
+In Safe, C<%INC> is now localised in a Safe compartment so that
 use/require work.
 
 =item *
@@ -1286,24 +1470,24 @@ C<h2xs> now produces a template README.
 
 =item *
 
-C<h2xs> now uses C<Devel::PPort> for better portability between
+C<h2xs> now uses C<Devel::PPPort> for better portability between
 different versions of Perl.
 
 =item *
 
-C<h2xs> uses the new L<ExtUtils::Constant> module which will affect
-newly created extensions that define constants.  Since the new code is
-more correct (if you have two constants where the first one is a
-prefix of the second one, the first constant B<never> gets defined),
-less lossy (it uses integers for integer constant, as opposed to the
-old code that used floating point numbers even for integer constants),
-and slightly faster, you might want to consider regenerating your
-extension code (the new scheme makes regenerating easy).
-L<h2xs> now also supports C trigraphs.
+C<h2xs> uses the new L<ExtUtils::Constant|ExtUtils::Constant> module
+which will affect newly created extensions that define constants.
+Since the new code is more correct (if you have two constants where the
+first one is a prefix of the second one, the first constant B<never>
+got defined), less lossy (it uses integers for integer constant,
+as opposed to the old code that used floating point numbers even for
+integer constants), and slightly faster, you might want to consider
+regenerating your extension code (the new scheme makes regenerating
+easy).  L<h2xs> now also supports C trigraphs.
 
 =item *
 
-C<libnetcfg> has been added to configure the libnet.
+C<libnetcfg> has been added to configure libnet.
 
 =item *
 
@@ -1316,7 +1500,7 @@ 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.>
+unsupported.> [561]
 
 =item *
 
@@ -1349,11 +1533,12 @@ using the C<psed> utility.)
 
 =item *
 
-C<xsubpp> now understands POD documentation embedded in the *.xs files.
+C<xsubpp> now understands POD documentation embedded in the *.xs
+files. [561]
 
 =item *
 
-C<xsubpp> now supports OUT keyword.
+C<xsubpp> now supports the OUT keyword.
 
 =back
 
@@ -1370,15 +1555,16 @@ perl56delta details the changes between the 5.005 release and the
 
 perlclib documents the internal replacements for standard C library
 functions.  (Interesting only for extension writers and Perl core
-hackers.)
+hackers.) [561+]
 
 =item *
 
-perldebtut is a Perl debugging tutorial.
+perldebtut is a Perl debugging tutorial. [561+]
 
 =item *
 
-perlebcdic contains considerations for running Perl on EBCDIC platforms.
+perlebcdic contains considerations for running Perl on EBCDIC
+platforms. [561+]
 
 =item *
 
@@ -1394,7 +1580,7 @@ perlmodstyle is a style guide for writing modules.
 
 =item *
 
-perlnewmod tells about writing and submitting a new module.
+perlnewmod tells about writing and submitting a new module. [561+]
 
 =item *
 
@@ -1413,12 +1599,12 @@ people writing in pod.
 
 =item *
 
-perlretut is a regular expression tutorial.
+perlretut is a regular expression tutorial. [561+]
 
 =item *
 
 perlrequick is a regular expressions quick-start guide.
-Yes, much quicker than perlretut.
+Yes, much quicker than perlretut. [561]
 
 =item *
 
@@ -1427,7 +1613,7 @@ perltodo has been updated.
 =item *
 
 perltootc has been renamed as perltooc (to not to conflict
-with perltoot in filesystems restricted to "8.3" names)
+with perltoot in filesystems restricted to "8.3" names).
 
 =item *
 
@@ -1438,7 +1624,7 @@ information)
 =item *
 
 perlutil explains the command line utilities packaged with the Perl
-distribution.
+distribution. [561+]
 
 =back
 
@@ -1447,11 +1633,23 @@ the installation as README.I<platform>, and after the installation
 as perlI<platform>:
 
     perlaix perlamiga perlapollo perlbeos perlbs2000
-    perlce perlcygwin perldgux perldos perlepoc perlhpux
-    perlhurd perlmachten perlmacos perlmint perlmpeix
+    perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux
+    perlhurd perlirix perlmachten perlmacos perlmint perlmpeix
     perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
     perltru64 perluts perlvmesa perlvms perlvos perlwin32
 
+These documents usually detail one or more of the following subjects:
+configuring, building, testing, installing, and sometimes also using
+Perl on the said platform.
+
+Eastern Asian Perl users are now welcomed in their own languages:
+README.jp (Japanese), README.ko (Korean), README.cn (simplified
+Chinese) and README.tw (traditional Chinese), which are written in
+normal pod but encoded in EUC-JP, EUC-KR, EUC-CN and Big5.  These
+will get installed as
+
+   perljp perlko perlcn perltw
+
 =over 4
 
 =item *
@@ -1475,7 +1673,13 @@ documentation on 8.3-restricted filesystems.
 
 map() could get pathologically slow when the result list it generates
 is larger than the source list.  The performance has been improved for
-common scenarios.
+common scenarios. [561]
+
+=item *
+
+sort() is also fully reentrant, in the sense that the sort function
+can itself call sort().  This did not work reliably in previous
+releases. [561]
 
 =item *
 
@@ -1535,7 +1739,7 @@ the original order of appearance in the input array.  So
 
 will yield (4,3,1,1,5,9), guaranteed.  The even and odd numbers
 appear in the output in the same order they appeared in the input.
-Mergesort has worst case O(NlogN) behaviour, the best value
+Mergesort has worst case O(N log N) behaviour, the best value
 attainable.  And, ironically, this mergesort does particularly
 well where quicksort goes quadratic:  mergesort sorts (1..$N, 1..$N)
 in O(N) time.  But quicksort was rescued at the last moment because
@@ -1601,7 +1805,7 @@ own library directories.
 
 =item *
 
-In many platforms the vendor-supplied 'cc' is too stripped-down to
+In many platforms, the vendor-supplied 'cc' is too stripped-down to
 build Perl (basically, 'cc' doesn't do ANSI C).  If this seems
 to be the case and 'cc' does not seem to be the GNU C compiler
 'gcc', an automatic attempt is made to find and use 'gcc' instead.
@@ -1621,12 +1825,12 @@ modules in @INC.
 
 =item *
 
-Configure C<-S> can now run non-interactively.
+Configure C<-S> can now run non-interactively. [561]
 
 =item *
 
 Configure support for pdp11-style memory models has been removed due
-to obsolescence.
+to obsolescence. [561]
 
 =item *
 
@@ -1651,15 +1855,15 @@ pointers are 64 bits wide.  (To be exact, the use64bitall is ignored.)
 
 =item *
 
-In AFS installations one can configure the root of the AFS to be
+In AFS installations, one can configure the root of the AFS to be
 somewhere else than the default F</afs> by using the Configure
 parameter C<-Dafsroot=/some/where/else>.
 
 =item *
 
-APPLLIB_EXP, a less-know configuration-time definition, has been
+APPLLIB_EXP, a lesser-known configuration-time definition, has been
 documented.  It can be used to prepend site-specific directories
-to Perl's default search path (@INC), see INSTALL for information.
+to Perl's default search path (@INC); see INSTALL for information.
 
 =item *
 
@@ -1683,14 +1887,14 @@ more details.
 
 =item *
 
-In addition to config.over a new override file, config.arch, is
-available.  That is supposed to be used by hints file writers for
-architecture-wide changes (as opposed to config.over which is for
-site-wide changes).
+In addition to config.over, a new override file, config.arch, is
+available.  This file is supposed to be used by hints file writers
+for architecture-wide changes (as opposed to config.over which is
+for site-wide changes).
 
 =item *
 
-If your file system supports symbolic links you can build Perl outside
+If your file system supports symbolic links, you can build Perl outside
 of the source directory by
 
        mkdir /tmp/perl/build/directory
@@ -1699,16 +1903,17 @@ of the source directory by
 
 This will create in /tmp/perl/build/directory a tree of symbolic links
 pointing to files in /path/to/perl/source.  The original files are left
-unaffected.  After Configure has finished you can just say
+unaffected.  After Configure has finished, you can just say
 
        make all test
 
 and Perl will be built and tested, all in /tmp/perl/build/directory.
+[561]
 
 =item *
 
-For Perl developers several new make targets for profiling
-and debugging have been added, see L<perlhack>.
+For Perl developers, several new make targets for profiling
+and debugging have been added; see L<perlhack>.
 
 =over 8
 
@@ -1727,7 +1932,7 @@ L<perlhack>.
 =item *
 
 If you are on IRIX or Tru64 platforms, new profiling/debugging options
-have been added, see L<perlhack> for more information about pixie and
+have been added; see L<perlhack> for more information about pixie and
 Third Degree.
 
 =back
@@ -1743,8 +1948,9 @@ The Thread extension is now not built at all under ithreads
 (C<Configure -Duseithreads>) because it wouldn't work anyway (the
 Thread extension requires being Configured with C<-Duse5005threads>).
 
-But note that the Thread.pm interface is now shared by both
-thread models.
+B<Note that the 5.005 threads are unsupported and deprecated: if you
+have code written for the old threads you should migrate it to the
+new ithreads model.>
 
 =item *
 
@@ -1790,15 +1996,17 @@ BeOS has been reclaimed.
 
 =item *
 
-DG/UX platform now supports the 5.005-style threads.  See L<perldgux>.
+The DG/UX platform now supports 5.005-style threads.
+See L<perldgux>.
 
 =item *
 
-DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2.
+The DYNIX/ptx platform (also known as dynixptx) is supported at or
+near osvers 4.5.2.
 
 =item *
 
-EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA)
+EBCDIC platforms (z/OS (also known as OS/390), POSIX-BC, and VM/ESA)
 have been regained.  Many test suite tests still fail and the
 co-existence of Unicode and EBCDIC isn't quite settled, but the
 situation is much better than with Perl 5.6.  See L<perlos390>,
@@ -1808,22 +2016,24 @@ L<perlbs2000> (for POSIX-BC), and L<perlvmesa> for more information.
 
 Building perl with -Duseithreads or -Duse5005threads now works under
 HP-UX 10.20 (previously it only worked under 10.30 or later). You will
-need a thread library package installed. See README.hpux.
+need a thread library package installed. See README.hpux. [561]
 
 =item *
 
-MacOS Classic (MacPerl has of course been available since
-perl 5.004 but now the source code bases of standard Perl
-and MacPerl have been synchronised)
+Mac OS Classic is now supported in the mainstream source package
+(MacPerl has of course been available since perl 5.004 but now the
+source code bases of standard Perl and MacPerl have been synchronised)
+[561]
 
 =item *
 
-MacOS X (or Darwin) should now be able to build Perl even on HFS+
-filesystems.  (The case-insensitivity confused the Perl build process.)
+Mac OS X (or Darwin) should now be able to build Perl even on HFS+
+filesystems.  (The case-insensitivity used to confuse the Perl build
+process.)
 
 =item *
 
-NCR MP-RAS is now supported.
+NCR MP-RAS is now supported. [561]
 
 =item *
 
@@ -1836,7 +2046,7 @@ NetWare from Novell is now supported.  See L<perlnetware>.
 
 =item *
 
-NonStop-UX is now supported.
+NonStop-UX is now supported. [561]
 
 =item *
 
@@ -1850,20 +2060,22 @@ specific ones) have been merged back to the main distribution.
 =item *
 
 Perl has been tested with the GNU pth userlevel thread package
-( http://www.gnu.org/software/pth/pth.html ) . All but one thread
-test worked, and that one failure was because of test results arriving
-in unexpected order.
+( http://www.gnu.org/software/pth/pth.html ).  All thread tests
+of Perl now work, but not without adding some yield()s to the tests,
+so while pth (and other userlevel thread implementations) can be
+considered to be "working" with Perl ithreads, keep in mind the
+possible non-preemptability of the underlying thread implementation.
 
 =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>.
+available.  See L<perlvos>. [561+]
 
 =item *
 
-Amdahl UTS UNIX mainframe platform is now supported.
+The Amdahl UTS UNIX mainframe platform is now supported. [561]
 
 =item *
 
@@ -1871,17 +2083,17 @@ WinCE is now supported.  See L<perlce>.
 
 =item *
 
-z/OS (formerly known as OS/390, formerly known as MVS OE) has now
+z/OS (formerly known as OS/390, formerly known as MVS OE) now has
 support for dynamic loading.  This is not selected by default,
-however, you must specify -Dusedl in the arguments of Configure.
+however, you must specify -Dusedl in the arguments of Configure. [561]
 
 =back
 
 =head1 Selected Bug Fixes
 
 Numerous memory leaks and uninitialized memory accesses have been
-hunted down.  Most importantly anonymous subs used to leak quite
-a bit.
+hunted down.  Most importantly, anonymous subs used to leak quite
+a bit. [561]
 
 =over 4
 
@@ -1891,46 +2103,67 @@ 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.  In particular, caller() now returns a
-subroutine name of C<(unknown)> for subroutines that have been removed
-from the symbol table.
+caller() could cause core dumps in certain situations.  Carp was
+sometimes 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 *
 
 chop(@list) in list context returned the characters chopped in
-reverse order.  This has been reversed to be in the right order.
+reverse order.  This has been reversed to be in the right order. [561]
 
 =item *
 
 Configure no longer includes the DBM libraries (dbm, gdbm, db, ndbm)
 when building the Perl binary.  The only exception to this is SunOS 4.x,
-which needs them.
+which needs them. [561]
 
 =item *
 
 The behaviour of non-decimal but numeric string constants such as
 "0x23" was platform-dependent: in some platforms that was seen as 35,
 in some as 0, in some as a floating point number (don't ask).  This
-was caused by Perl using the operating system libraries in a situation
+was caused by Perl's using the operating system libraries in a situation
 where the result of the string to number conversion is undefined: now
 Perl consistently handles such strings as zero in numeric contexts.
 
 =item *
 
-The order of DESTROYs has been made more predictable.
+Several debugger fixes: exit code now reflects the script exit code,
+condition C<"0"> now treated correctly, the C<d> command now checks
+line number, C<$.> no longer gets corrupted, and all debugger output
+now goes correctly to the socket if RemotePort is set. [561]
 
 =item *
 
-Several debugger fixes: exit code now reflects the script exit code,
-condition C<"0"> now treated correctly, the C<d> command now checks
-line number, the C<$.> no longer gets corrupted, all debugger output
-now goes correctly to the socket if RemotePort is set.
+The debugger (perl5db.pl) has been modified to present a more
+consistent commands interface, via (CommandSet=580).  perl5db.t was
+also added to test the changes, and as a placeholder for further tests.
+
+See L<perldebug>.
+
+=item *
+
+The debugger has a new C<dumpDepth> option to control the maximum
+depth to which nested structures are dumped.  The C<x> command has
+been extended so that C<x N EXPR> dumps out the value of I<EXPR> to a
+depth of at most I<N> levels.
+
+=item *
+
+The debugger can now show lexical variables if you have the CPAN
+module PadWalker installed.
+
+=item *
+
+The order of DESTROYs has been made more predictable.
 
 =item *
 
-Perl 5.6.0 could emit spurious warnings about redefinition of dl_error()
-when statically building extensions into perl.  This has been corrected.
+Perl 5.6.0 could emit spurious warnings about redefinition of
+dl_error() when statically building extensions into perl.
+This has been corrected. [561]
 
 =item *
 
@@ -1947,7 +2180,7 @@ Infinity is now recognized as a number.
 =item *
 
 UNIVERSAL::isa no longer caches methods incorrectly.  (This broke
-the Tk extension with 5.6.0.)
+the Tk extension with 5.6.0.) [561]
 
 =item *
 
@@ -1968,16 +2201,16 @@ and into C<eval "...">.
 =item *
 
 C<use warnings qw(FATAL all)> did not work as intended.  This has been
-corrected.
+corrected. [561]
 
 =item *
 
 warnings::enabled() now reports the state of $^W correctly if the caller
-isn't using lexical warnings.
+isn't using lexical warnings. [561]
 
 =item *
 
-Line renumbering with eval and C<#line> now works.
+Line renumbering with eval and C<#line> now works. [561]
 
 =item *
 
@@ -1985,21 +2218,21 @@ Fixed numerous memory leaks, especially in eval "".
 
 =item *
 
-Localised tied variables no more leak memory
+Localised tied variables no longer leak memory
 
     use Tie::Hash;
     tie my %tied_hash => 'Tie::StdHash';
 
     ...
 
-    # Used to leak memory every time local() was called,
-    # in a loop this added up.
+    # Used to leak memory every time local() was called;
+    # in a loop, this added up.
     local($tied_hash{Foo}) = 1;
 
 =item *
 
-Localised hash elements (and %ENV) are correctly unlocalised to not to
-exist, if that's what they were.
+Localised hash elements (and %ENV) are correctly unlocalised to not
+exist, if they didn't before they were localised.
 
 
     use Tie::Hash;
@@ -2032,31 +2265,32 @@ fixed the modfl() bug.
 =item *
 
 Modulus of unsigned numbers now works (4063328477 % 65535 used to
-return 27406, instead of 27047).
+return 27406, instead of 27047). [561]
 
 =item *
 
 Some "not a number" warnings introduced in 5.6.0 eliminated to be
-more compatible with 5.005.  Infinity is now recognised as a number.
+more compatible with 5.005.  Infinity is now recognised as a number. [561]
 
 =item *
 
 Numeric conversions did not recognize changes in the string value
-properly in certain circumstances.
+properly in certain circumstances. [561]
 
 =item *
 
-Attributes (like :shared) didn't work with our().
+Attributes (such as :shared) didn't work with our().
 
 =item *
 
-our() variables will not cause "will not stay shared" warnings.
+our() variables will not cause bogus "Variable will not stay shared"
+warnings. [561]
 
 =item *
 
 "our" variables of the same name declared in two sibling blocks
 resulted in bogus warnings about "redeclaration" of the variables.
-The problem has been corrected.
+The problem has been corrected. [561]
 
 =item *
 
@@ -2070,7 +2304,7 @@ Fix password routines which in some shadow password platforms
 =item *
 
 The PERL5OPT environment variable (for passing command line arguments
-to Perl) didn't work for more than a single group of options.
+to Perl) didn't work for more than a single group of options. [561]
 
 =item *
 
@@ -2082,12 +2316,13 @@ printf() no longer resets the numeric locale to "C".
 
 =item *
 
-C<qw(a\\b)> now parses correctly as C<'a\\b'>.
+C<qw(a\\b)> now parses correctly as C<'a\\b'>: that is, as three
+characters, not four. [561]
 
 =item *
 
 pos() did not return the correct value within s///ge in earlier
-versions.  This is now handled correctly.
+versions.  This is now handled correctly. [561]
 
 =item *
 
@@ -2096,7 +2331,7 @@ without the q L ll prefixes (assuming you are on a quad-capable platform).
 
 =item *
 
-Regular expressions on references and overloaded scalars now work.
+Regular expressions on references and overloaded scalars now work. [561+]
 
 =item *
 
@@ -2116,7 +2351,7 @@ SOCKS support is now much more robust.
 sort() arguments are now compiled in the right wantarray context
 (they were accidentally using the context of the sort() itself).
 The comparison block is now run in scalar context, and the arguments
-to be sorted are always provided list context.
+to be sorted are always provided list context. [561]
 
 =item *
 
@@ -2129,7 +2364,7 @@ class C<[[:blank:]]> which stands for horizontal whitespace
 
 The tainting behaviour of sprintf() has been rationalized.  It does
 not taint the result of floating point formats anymore, making the
-behaviour consistent with that of string interpolation.
+behaviour consistent with that of string interpolation. [561]
 
 =item *
 
@@ -2139,39 +2374,40 @@ values) have been fixed.
 =item *
 
 The RE engine found in Perl 5.6.0 accidentally pessimised certain kinds
-of simple pattern matches.  These are now handled better.
+of simple pattern matches.  These are now handled better. [561]
 
 =item *
 
 Regular expression debug output (whether through C<use re 'debug'>
-or via C<-Dr>) now looks better.
+or via C<-Dr>) now looks better. [561]
 
 =item *
 
 Multi-line matches like C<"a\nxb\n" =~ /(?!\A)x/m> were flawed.  The
-bug has been fixed.
+bug has been fixed. [561]
 
 =item *
 
 Use of $& could trigger a core dump under some situations.  This
-is now avoided.
+is now avoided. [561]
 
 =item *
 
 The regular expression captured submatches ($1, $2, ...) are now
 more consistently unset if the match fails, instead of leaving false
-data lying around in them.
+data lying around in them. [561]
 
 =item *
 
-readline() on files opened in "slurp" mode could return an extra "" at
-the end in certain situations.  This has been corrected.
+readline() on files opened in "slurp" mode could return an extra
+"" (blank line) at the end in certain situations.  This has been
+corrected. [561]
 
 =item *
 
 Autovivification of symbolic references of special variables described
 in L<perlvar> (as in C<${$num}>) was accidentally disabled.  This works
-again now.
+again now. [561]
 
 =item *
 
@@ -2179,20 +2415,16 @@ Sys::Syslog ignored the C<LOG_AUTH> constant.
 
 =item *
 
-All but the first argument of the IO syswrite() method are now optional.
-
-=item *
-
 $AUTOLOAD, sort(), lock(), and spawning subprocesses
 in multiple threads simultaneously are now thread-safe.
 
 =item *
 
-Tie::ARRAY SPLICE method was broken.
+Tie::Array's SPLICE method was broken.
 
 =item *
 
-Allow read-only string on left hand side of non-modifying tr///.
+Allow a read-only string on the left-hand side of a non-modifying tr///.
 
 =item *
 
@@ -2207,9 +2439,9 @@ Several Unicode fixes.
 
 =item *
 
-BOMs (byte order marks) in the beginning of Perl files
+BOMs (byte order marks) at the beginning of Perl files
 (scripts, modules) should now be transparently skipped.
-UTF-16 (UCS-2) encoded Perl files should now be read correctly.
+UTF-16 and UCS-2 encoded Perl files should now be read correctly.
 
 =item *
 
@@ -2224,7 +2456,7 @@ as UTF-8.)
 
 =item *
 
-Generating illegal Unicode code points like U+FFFE, or the UTF-16
+Generating illegal Unicode code points such as U+FFFE, or the UTF-16
 surrogates, now also generates an optional warning.
 
 =item *
@@ -2249,18 +2481,24 @@ C<eval "v200"> now works.
 =item *
 
 Perl 5.6.0 parsed m/\x{ab}/ incorrectly, leading to spurious warnings.
-This has been corrected.
+This has been corrected. [561]
 
 =item *
 
-Zero entries were missing from the Unicode classes like C<IsDigit>.
+Zero entries were missing from the Unicode classes such as C<IsDigit>.
 
 =back
 
 =item *
 
 Large unsigned numbers (those above 2**31) could sometimes lose their
-unsignedness, causing bogus results in arithmetic operations.
+unsignedness, causing bogus results in arithmetic operations. [561]
+
+=item *
+
+The Perl parser has been stress tested using both random input and
+Markov chain input and the few found crashes and lockups have been
+fixed.
 
 =back
 
@@ -2294,7 +2532,7 @@ Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O.
 
 EPOC
 
-EPOC update after Perl 5.6.0.  See README.epoc.
+EPOC now better supported.  See README.epoc. [561]
 
 =item *
 
@@ -2324,35 +2562,36 @@ Linux
 
 =item *
 
-Long doubles should now work (see INSTALL).
+Long doubles should now work (see INSTALL). [561]
 
 =item *
 
 Linux previously had problems related to sockaddrlen when using
-accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname().
+accept(), recvfrom() (in Perl: recv()), getpeername(), and
+getsockname().
 
 =back
 
 =item *
 
-MacOS Classic
+Mac OS Classic
 
-Compilation of the standard Perl distribution in MacOS Classic should
-now work if you have the Metrowerks development environment and
-the missing Mac-specific toolkit bits.  Contact the macperl mailing
-list for details.
+Compilation of the standard Perl distribution in Mac OS Classic should
+now work if you have the Metrowerks development environment and the
+missing Mac-specific toolkit bits.  Contact the macperl mailing list
+for details.
 
 =item *
 
 MPE/iX
 
-MPE/iX update after Perl 5.6.0.  See README.mpeix.
+MPE/iX update after Perl 5.6.0.  See README.mpeix. [561]
 
 =item *
 
 NetBSD/threads: try installing the GNU pth (should be in the
 packages collection, or http://www.gnu.org/software/pth/),
-and Configure with -Duseithreads. 
+and Configure with -Duseithreads.
 
 =item *
 
@@ -2364,7 +2603,7 @@ Perl now works on NetBSD/sparc.
 
 OS/2
 
-Now works with usethreads (see INSTALL).
+Now works with usethreads (see INSTALL). [561]
 
 =item *
 
@@ -2396,13 +2635,16 @@ Unicos
 
 Fixed various alignment problems that lead into core dumps either
 during build or later; no longer dies on math errors at runtime;
-now using full quad integers (64 bits), previously was using 
+now using full quad integers (64 bits), previously was using
 only 46 bit integers for speed.
 
 =item *
 
 VMS
 
+See L</"Socket Extension Dynamic in VMS"> and L</"IEEE-format Floating Point
+Default on OpenVMS Alpha"> for important changes not otherwise listed here.
+
 chdir() now works better despite a CRT bug; now works with MULTIPLICITY
 (see INSTALL); now works with Perl's malloc.
 
@@ -2411,19 +2653,20 @@ 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 system.
 
 POSIX-style signals are now emulated much better on VMS versions prior
 to 7.0.
 
 The C<system> function and backticks operator have improved
-functionality and better error handling.
+functionality and better error handling. [561]
 
 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.
+between reported access and actual access.  This improvement is only
+available on VMS v6.0 and later.
 
-There is a new C<kill> implementation based on C<sys$sigprc> that allows 
+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.
@@ -2439,124 +2682,183 @@ Windows
 
 =item *
 
-accept() no longer leaks memory.
+Signal handling now works better than it used to.  It is now implemented
+using a Windows message loop, and is therefore less prone to random
+crashes.
 
 =item *
 
-Borland C++ v5.5 is now a supported compiler that can build Perl.
-However, the generated binaries continue to be incompatible with those
-generated by the other supported compilers (GCC and Visual C++).
+fork() emulation is now more robust, but still continues to have a few
+esoteric bugs and caveats.  See L<perlfork> for details. [561+]
 
 =item *
 
-Better chdir() return value for a non-existent directory.
+A failed (pseudo)fork now returns undef and sets errno to EAGAIN. [561]
 
 =item *
 
-Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
+The following modules now work on Windows:
+
+    ExtUtils::Embed         [561]
+    IO::Pipe
+    IO::Poll
+    Net::Ping
 
 =item *
 
-New %ENV entries now propagate to subprocesses.
+IO::File::new_tmpfile() is no longer limited to 32767 invocations
+per-process.
 
 =item *
 
-Current directory entries in %ENV are now correctly propagated to child
-processes.
+Better chdir() return value for a non-existent directory.
 
 =item *
 
-$ENV{LIB} now used to search for libs under Visual C.
+Compiling perl using the 64-bit Platform SDK tools is now supported.
 
 =item *
 
-fork() emulation has been improved in various ways, but still continues
-to be experimental.  See L<perlfork> for known bugs and caveats.
+The Win32::SetChildShowWindow() builtin can be used to control the
+visibility of windows created by child processes.  See L<Win32> for
+details.
 
 =item *
 
-A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
+Non-blocking waits for child processes (or pseudo-processes) are
+supported via C<waitpid($pid, &POSIX::WNOHANG)>.
 
 =item *
 
-Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
-Other bugs in chdir() and Cwd::cwd() have also been fixed.
+The behavior of system() with multiple arguments has been rationalized.
+Each unquoted argument will be automatically quoted to protect whitespace,
+and any existing whitespace in the arguments will be preserved.  This
+improves the portability of system(@args) by avoiding the need for
+Windows C<cmd> shell specific quoting in perl programs.
+
+Note that this means that some scripts that may have relied on earlier
+buggy behavior may no longer work correctly.  For example,
+C<system("nmake /nologo", @args)> will now attempt to run the file
+C<nmake /nologo> and will fail when such a file isn't found.
+On the other hand, perl will now execute code such as
+C<system("c:/Program Files/MyApp/foo.exe", @args)> correctly.
 
 =item *
 
-HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html
+The perl header files no longer suppress common warnings from the
+Microsoft Visual C++ compiler.  This means that additional warnings may
+now show up when compiling XS code.
 
 =item *
 
-The makefiles now provide a single switch to bulk-enable all the features
-enabled in ActiveState ActivePerl (a popular Win32 binary distribution).
+Borland C++ v5.5 is now a supported compiler that can build Perl.
+However, the generated binaries continue to be incompatible with those
+generated by the other supported compilers (GCC and Visual C++). [561]
 
 =item *
 
-Allow REG_EXPAND_SZ keys in the registry.
+Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
+[561]
 
 =item *
 
-Can now send() from all threads, not just the first one.
+Current directory entries in %ENV are now correctly propagated to child
+processes. [561]
 
 =item *
 
-Fake signal handling reenabled, bugs and all.
+New %ENV entries now propagate to subprocesses. [561]
 
 =item *
 
-%SIG has been enabled under USE_ITHREADS, but its use is completely
-unsupported under all configurations.
+Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
+Other bugs in chdir() and Cwd::cwd() have also been fixed. [561]
 
 =item *
 
-Less stack reserved per thread so that more threads can run
-concurrently. (Still 16M per thread.)
+The makefiles now default to the features enabled in ActiveState ActivePerl
+(a popular Win32 binary distribution). [561]
 
 =item *
 
-C<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp
-(works better when perl is running as service).
+HTML files will now be installed in c:\perl\html instead of
+c:\perl\lib\pod\html
 
 =item *
 
-Better UNC path handling under ithreads.
+REG_EXPAND_SZ keys are now allowed in registry settings used by perl. [561]
 
 =item *
 
-wait(), waitpid() and backticks now return the correct exit status under
-Windows 9x.
+Can now send() from all threads, not just the first one. [561]
 
 =item *
 
-Win64 compilation is now supported.
+ExtUtils::MakeMaker now uses $ENV{LIB} to search for libraries. [561]
 
 =item *
 
-winsock handle leak fixed.
+Less stack reserved per thread so that more threads can run
+concurrently. (Still 16M per thread.) [561]
 
 =item *
 
-The Perl parser has been stress tested using both random input and
-Markov chain input and the few found crashes and lockups have been
-fixed.
-
+C<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp
+(works better when perl is running as service).
+
+=item *
+
+Better UNC path handling under ithreads. [561]
+
+=item *
+
+wait(), waitpid(), and backticks now return the correct exit status
+under Windows 9x. [561]
+
+=item *
+
+A socket handle leak in accept() has been fixed. [561]
+
 =back
 
 =back
 
 =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
@@ -2564,41 +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 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 *
 
-The debugger (perl5db.pl) has been modified to present a more
-consistent commands interface, via (CommandSet=580).  perl5db.t was
-also added to test the changes, and as a placeholder for further tests.
+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.
 
-See L<perldebug>.
+=item *
+
+Using negative offset for vec() in lvalue context is now a warnable offense.
 
 =item *
 
-The debugger has a new C<dumpDepth> option to control the maximum
-depth to which nested structures are dumped.  The C<x> command has
-been extended so that C<x N EXPR> dumps out the value of I<EXPR> to a
-depth of at most I<N> levels.
+Odd number of arguments to oveload::constant now elicits a warning.
 
 =item *
 
-The debugger can now show lexical variables if you have the CPAN
-module PadWalker installed.
+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 *
 
@@ -2619,9 +2926,26 @@ 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. 
+otherwise.
+
+=item *
+
+Variable length lookbehind has not yet been implemented, trying to
+use it will tell that.
 
 =item *
 
@@ -2630,9 +2954,47 @@ 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
@@ -2641,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.
 
@@ -2714,9 +3080,11 @@ There are now several profiling make targets.
 
 =back
 
-=head1 Security Vulnerability Closed
+=head1 Security Vulnerability Closed [561]
 
 (This change was already made in 5.7.0 but bears repeating here.)
+(5.7.0 came out before 5.6.1: the development branch 5.7 released
+earlier than the maintenance branch 5.6)
 
 A potential security vulnerability in the optional suidperl component
 of Perl was identified in August 2000.  suidperl is neither built nor
@@ -2746,16 +3114,17 @@ such as sudo ( see http://www.courtesan.com/sudo/ ).
 
 =head1 New Tests
 
-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.
+Several new tests have been added, especially for the F<lib> and
+F<ext> subsections.  There are now about 69 000 individual tests
+(spread over about 700 test scripts), in the regression suite (5.6.1
+has about 11 700 tests, in 258 test scripts)  The exact numbers depend
+on the platform and Perl configuration used.  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
-to take up to 4-5 times longer to run than in perl 5.6.  In a really
+to take up to 4-5 times longer to run than in perl 5.6.  On a really
 fast machine you can hope to finish the suite in about 6-8 minutes
 (wallclock time).
 
@@ -2765,29 +3134,195 @@ to be closer to the library/extension they are testing.)
 
 =head1 Known Problems
 
+=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 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 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 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 *
 
-In AIX 4.2 Perl extensions that use C++ functions that use statics
+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
+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 the libC_r.
+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 few random tests failing, but when the failing tests
-are run by hand, they succeed.  We suggest upgrading to at least
-vac version 5.0.1.0, that has been known to compile Perl correctly.
-"lslpp -L|grep vac.C" will tell you the vac version. See README.aix.
+resulting in a few random tests failing when run as part of "make
+test", but when the failing tests are run by hand, they succeed.
+We suggest upgrading to at least vac version 5.0.1.0, that has been
+known to compile Perl correctly.  "lslpp -L|grep vac.C" will tell
+you the vac version.  See README.aix.
 
 =item *
 
@@ -2809,45 +3344,96 @@ be even better.  (RedHat Linux/alpha with gcc 3.1 reported no problems,
 as did Linux 2.4.18 with gcc 2.95.4.)  (In Tru64, it is preferable to
 use the bundled C compiler.)
 
+=head2 AmigaOS
+
+Perl 5.8.0 doesn't build in AmigaOS.  It broke at some point during
+the ithreads work and we could not find Amiga experts to unbreak the
+problems.  Perl 5.6.1 still works for AmigaOS (as does the the 5.7.2
+development release).
+
 =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
 
 See L<perlbeos> (README.beos) for more details.
 
-=head2 ext/threads/t/libc
+=head2 Cygwin "unable to remap"
 
-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.
+For example when building the Tk extension for Cygwin,
+you may get an error message saying "unable to remap".
+This is known problem with Cygwin, and a workaround is
+detailed in here: http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
 
-=head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales
+=head2 Cygwin ndbm tests fail on FAT
 
-The ISO8859-15 locales may fail the locale test 117 in FreeBSD.
-This is caused by the characters \xFF (y with diaeresis) and \xBE
-(Y with diaeresis) not behaving correctly when being matched
-case-insensitively.
+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 Modifying $_ Inside for(..)
+ ../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
 
-   for (1..5) { $_++ }
+NDBM_File fails and ODBM_File just coredumps.
 
-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 DJGPP Failures
 
-=head2 mod_perl 1.26 Doesn't Build With Threaded Perl
+ 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
 
-Use mod_perl 1.27 or higher.
+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:
 
-=head2 lib/ftmp-security tests warn 'system possibly insecure'
+ 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 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
 
-Don't panic.  Read INSTALL 'make test' section instead.
+The ISO 8859-15 locales may fail the locale test 117 in FreeBSD.
+This is caused by the characters \xFF (y with diaeresis) and \xBE
+(Y with diaeresis) not behaving correctly when being matched
+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 or Digest::MD5
+
+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.
+
+Similarly, building the Digest::MD5 extension has been
+known to fail with "*** Termination code 139 (bu21)".
+
+The cure is to drop optimization level (Configure -Doptimize=-O2).
 
 =head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
 
@@ -2865,17 +3451,14 @@ 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"
 (setenv LC_ALL C) before running "make test" to avoid a lot of
 warnings about the broken locales of Mac OS X.
 
-The following tests are known to fail:
+The following tests are known to fail in Mac OS X 10.1.5 because of
+buggy (old) implementations of Berkeley DB included in Mac OS X:
 
  Failed Test                 Stat Wstat Total Fail  Failed  List of Failed
  -------------------------------------------------------------------------
@@ -2890,22 +3473,65 @@ Also the ext/POSIX/t/posix.t subtest #10 fails but it is skipped for
 now because the failure is Apple's fault, not Perl's (blocked signals
 are lost).
 
-If you Configure with ithreads, ext/threads/t/libc.t will fail, again
-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.)
+If you Configure with ithreads, ext/threads/t/libc.t will fail. Again,
+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
+only the failures are shown, not the full error messages):
+
+ t/io/utf8............................FAILED at test 19
+ t/op/grent...........................FAILED at test 2
+ t/op/pwent...........................FAILED at test 1
+ t/lib/os2_base.......................FAILED at test 13
+ t/lib/os2_process....................FAILED at test 10
+ t/lib/os2_process_kid................FAILED at test 10
+ t/lib/rx_cmprt.......................FAILED at test 16
+ ext/DB_File/t/db-btree...............FAILED at test 0
+ ext/DB_File/t/db-hash................FAILED at test 0
+ ext/DB_File/t/db-recno...............FAILED at test 0
+ lib/ExtUtils/t/basic.................FAILED at test 14
+ lib/ExtUtils/t/Constant..............FAILED at test 4
+ lib/Memoize/t/errors.................FAILED at test 4
 
 =head2 op/sprintf tests 91, 129, and 130
 
 The op/sprintf tests 91, 129, and 130 are known to fail on some platforms.
 Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
 
-The test 91 is known to fail at QNX6 (nto), because C<sprintf '%e',0>
+Test 91 is known to fail on QNX6 (nto), because C<sprintf '%e',0>
 incorrectly produces C<0.000000e+0> instead of C<0.000000e+00>.
 
-For the tests 129 and 130 the failing platforms do not comply with
-the ANSI C Standard, line 19ff on page 134 of ANSI X3.159 1989 to
+For tests 129 and 130, the failing platforms do not comply with
+the ANSI C Standard: lines 19ff on page 134 of ANSI X3.159 1989, to
 be exact.  (They produce something other than "1" and "-1" when
-formatting 0.6 and -0.6 using the printf format "%.0f", most often
+formatting 0.6 and -0.6 using the printf format "%.0f"; most often,
 they produce "0" and "-0".)
 
 =head2 Solaris 2.5
@@ -2914,46 +3540,38 @@ 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 Solaris x86 Fails Tests With -Duse64bitint
 
-=head2 Failure of Thread (5.005-style) tests
+The following tests are known to fail in Solaris x86 with Perl
+configured to use 64 bit integers:
 
-B<Note that support for 5.005-style threading is deprecated,
-experimental and practically unsupported.  In 5.10 it is expected
-to be removed.>
+ ext/Data/Dumper/t/dumper.............FAILED at test 268
+ ext/Devel/Peek/Peek..................FAILED at test 7
 
-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.
+=head2 SUPER-UX (NEC SX)
 
- ../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/Filter/Simple/t/data.t                    6    3  50.00%  1-3
- ../lib/Filter/Simple/t/filter_onl                9    3  33.33%  1-2 5
- ../lib/autouse.t                                10    1  10.00%  4
- op/flip.t                                       15    1   6.67%  15
+The following tests are known to fail on SUPER-UX:
 
-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.)
+ op/64bitint...........................FAILED tests 29-30, 32-33, 35-36
+ op/arith..............................FAILED tests 128-130
+ op/pack...............................FAILED tests 25-5625
+ op/pow................................
+ op/taint..............................# msgsnd failed
+ ../ext/IO/lib/IO/t/io_poll............FAILED tests 3-4
+ ../ext/IPC/SysV/ipcsysv...............FAILED tests 2, 5-6
+ ../ext/IPC/SysV/t/msg.................FAILED tests 2, 4-6
+ ../ext/Socket/socketpair..............FAILED tests 12
+ ../lib/IPC/SysV.......................FAILED tests 2, 5-6
+ ../lib/warnings.......................FAILED tests 115-116, 118-119
 
-=head2 UNICOS
+The op/pack failure ("Cannot compress negative numbers at op/pack.t line 126")
+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.
 
- ../lib/Math/Trig.t                          26    1   3.85%  25
- ../lib/warnings.t                          470    1   0.21%  429
+=head2 Term::ReadKey not working on Win32
 
-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.
+Use Term::ReadKey 2.20 or later.
 
 =head2 UNICOS/mk
 
@@ -2961,7 +3579,7 @@ this assumption fails in UNICOS.
 
 =item *
 
-During Configure the test
+During Configure, the test
 
     Guessing which symbols your C compiler and preprocessor define...
 
@@ -2976,27 +3594,33 @@ will probably fail with error messages like
     CC-65 cc: ERROR File = try.c, Line = 3
       A semicolon is expected at this point.
 
-This is caused by a bug in awk utility of UNICOS/mk.  You can ignore
+This is caused by a bug in the awk utility of UNICOS/mk.  You can ignore
 the error, but it does cause a slight problem: you cannot fully
 benefit from the h2ph utility (see L<h2ph>) that can be used to
 convert C headers to Perl libraries, mainly used to be able to access
 from Perl the constants defined using C preprocessor, cpp.  Because of
-the above error parts of the converted headers will be invisible.
+the above error, parts of the converted headers will be invisible.
 Luckily, these days the need for h2ph is rare.
 
 =item *
 
-If building Perl with the interpreter threads (ithreads), the
+If building Perl with interpreter threads (ithreads), the
 getgrent(), getgrnam(), and getgrgid() functions cannot return the
 list of the group members due to a bug in the multithreaded support of
-UNICOS/mk.  What this means that in list context the functions will
+UNICOS/mk.  What this means is that in list context the functions will
 return only three values, not four.
 
 =back
 
 =head2 UTS
 
-There are a few known test failures, see L<perluts>.
+There are a few known test failures, see L<perluts> (README.uts).
+
+=head2 VOS (Stratus)
+
+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 VMS
 
@@ -3006,7 +3630,7 @@ needing further debugging and/or porting work.
 
 =head2 Win32
 
-In multi-CPU boxes there are some problems with the I/O buffering:
+In multi-CPU boxes, there are some problems with the I/O buffering:
 some output may appear twice.
 
 =head2 XML::Parser not working
@@ -3015,8 +3639,8 @@ Use XML::Parser 2.31 or later.
 
 =head2 z/OS (OS/390)
 
-z/OS has rather many test failures but the situation is actually
-better than it was in 5.6.0, it's just that so many new modules and
+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.
 
  Failed Test                   Stat Wstat Total Fail  Failed  List of Failed
@@ -3028,59 +3652,20 @@ 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                                   910    7   0.77%  665 776 785 832-
+ 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
                                                               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.  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 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).
-
-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 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 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) link together at
-all binaries with different ideas about file offsets, all this is
-platform-dependent.
+The failures in dumper.t and downgrade.t are problems in the tests,
+those in io_unix and sprintf are problems in the USS (UDP sockets and
+printf formats).  The pat, tr, and fold failures 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 Unicode Support on EBCDIC Still Spotty
 
@@ -3089,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
@@ -3113,16 +3681,29 @@ 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.
+Perl 5.8 unfortunately does not build anymore on AmigaOS; this broke
+accidentally at some point.  Since there are not that many Amiga
+developers available, we could not get this fixed and tested in time
+for 5.8.0.  Perl 5.6.1 still works for AmigaOS (as does the the 5.7.2
+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 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
 recently posted to the comp.lang.perl.misc newsgroup and the perl
-bug database at http://bugs.perl.org/  There may also be
+bug database at http://bugs.perl.org/ .  There may also be
 information at http://www.perl.com/ , the Perl Home Page.
 
 If you believe you have an unreported bug, please run the B<perlbug>