=head1 Core Enhancements
-=head2 AUTOLOAD Is Now Lvaluable
-
-AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute
-to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value.
-
=head2 PerlIO is Now The Default
=over 4
creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
the child process.
-=item *
-
-The following builtin functions are now overridable: chop(), chomp(),
-each(), keys(), pop(), push(), shift(), splice(), unshift().
-
-=item *
-
-Formats now support zero-padded decimal fields.
-
-=item *
+=back
-Perl now tries internally to use integer values in numeric conversions
-and basic arithmetics (+ - * /) if the arguments are integers, and
-tries also to keep the results stored internally as integers.
-This change leads into often slightly faster and always less lossy
-arithmetics. (Previously Perl always preferred floating point numbers
-in its math.)
+=head2 Signals Are Now Safe
-=item *
+Perl used to be fragile in that signals arriving at inopportune moments
+could corrupt Perl's internal state. Now Perl postpones handling of
+signals until it's safe.
-The printf() and sprintf() now support parameter reordering using the
-C<%\d+\$> and C<*\d+\$> syntaxes. For example
+=head2 Unicode Overhaul
- print "%2\$s %1\$s\n", "foo", "bar";
+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.
-will print "bar foo\n"; This feature helps in writing
-internationalised software.
+=over 4
=item *
-Unicode in general should be now much more usable. Unicode can be
-used in hash keys, Unicode in regular expressions should work now,
-Unicode in tr/// should work now (though tr/// seems to be a
-particularly tricky to get right, so you have been warned)
+The Unicode Character Database coming with Perl has been upgraded
+to Unicode 3.1.1. For more information, see http://www.unicode.org/.
=item *
-The Unicode Character Database coming with Perl has been upgraded
-to Unicode 3.1. For more information, see http://www.unicode.org/,
-and http://www.unicode.org/unicode/reports/tr27/
-
For developers interested in enhancing Perl's Unicode capabilities:
almost all the UCD files are included with the Perl distribution in
-the lib/unicode subdirectory. The most notable omission, for space
+the lib/unicore subdirectory. The most notable omission, for space
considerations, is the Unihan database.
=item *
=back
-=head2 Signals Are Now Safe
-
-Perl used to be fragile in that signals arriving at inopportune moments
-could corrupt Perl's internal state.
-
=head2 Understanding of Numbers
In general a lot of fixing has happened in the area of Perl's
and C<atof()> seem to have bugs, Perl tries to work around their
deficiencies. This results hopefully in more accurate numbers.
+Perl now tries internally to use integer values in numeric conversions
+and basic arithmetics (+ - * /) if the arguments are integers, and
+tries also to keep the results stored internally as integers.
+This change leads into often slightly faster and always less lossy
+arithmetics. (Previously Perl always preferred floating point numbers
+in its math.)
+
+=head2 Miscellaneous Enhancements
+
=over 4
=item *
+AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute
+to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value.
+
+=item *
+
C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
in multiple arguments.)
=item *
-Lexicals I: lexicals outside an eval "" weren't resolved
-correctly inside a subroutine definition inside the eval "" if they
-were not already referenced in the top level of the eval""ed code.
-
-=item *
-
-Lexicals II: lexicals leaked at file scope into subroutines that
-were declared before the lexicals.
+Formats now support zero-padded decimal fields.
=item *
=item *
+The following builtin functions are now overridable: each(), keys(),
+pop(), push(), shift(), splice(), unshift().
+
+=item *
+
C<pack('U0a*', ...)> can now be used to force a string to UTF8.
=item *
=item *
-prototype(\&) is now available.
+The printf() and sprintf() now support parameter reordering using the
+C<%\d+\$> and C<*\d+\$> syntaxes. For example
+
+ print "%2\$s %1\$s\n", "foo", "bar";
+
+will print "bar foo\n"; This feature helps in writing
+internationalised software.
=item *
-Right-hand side magic (GMAGIC) could in many cases such as string
-concatenation be invoked too many times.
+prototype(\&) is now available.
=item *
-The rules for allowing underscores (underbars) in numeric constants
-have been relaxed and simplified: now you can have an underscore
-simply B<between digits>.
+prototype(\[$@%&]) is now available to implicitly create references
+(useful for example if you want to emulate the tie() interface).
=item *
-An UNTIE method is now available.
+UNTIE method is now recognised.
=item *
=item *
-C<eval "v200"> now works.
+The rules for allowing underscores (underbars) in numeric constants
+have been relaxed and simplified: now you can have an underscore
+simply B<between digits>.
=back
=item *
-C<Devel::PPPort>, from Kenneth Albanowski, has been added. It is
-primarily used by C<h2xs> to enhance portability of of XS modules
-between different versions of Perl.
+C<Devel::PPPort>, originally from Kenneth Albanowski and now
+maintained by Paul Marquess, has been added. It is primarily used
+by C<h2xs> to enhance portability of of XS modules between different
+versions of Perl.
=item *
print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
NOTE: the C<MD5> backward compatibility module is deliberately not
-included since its use is discouraged.
+included since its further use is discouraged.
=item *
=item *
C<Pod::ParseLink>, by Russ Allbery, has been added,
-to parse L<> links in pods as described in the new
+to parse L<> links in pods as described in the new
perlpodspec.
=item *
=item *
-sort() has been changed to use mergesort internally as opposed to the
-earlier quicksort. For very small lists this may result in slightly
-slower sorting times, but in general the speedup should be at least
-20%. Additional bonuses are that the worst case behaviour of sort()
-is now better (in computer science terms it now runs in time O(N log N),
-as opposed to quicksort's Theta(N**2) worst-case run time behaviour),
-and that sort() is now stable (meaning that elements with identical
-keys will stay ordered as they were before the sort).
+sort() has been changed to use primarily mergesort internally as
+opposed to the earlier quicksort. For very small lists this may
+result in slightly slower sorting times, but in general the speedup
+should be at least 20%. Additional bonuses are that the worst case
+behaviour of sort() is now better (in computer science terms it now
+runs in time O(N log N), as opposed to quicksort's Theta(N**2)
+worst-case run time behaviour), and that sort() is now stable
+(meaning that elements with identical keys will stay ordered as they
+were before the sort). See the C<sort> pragma for information.
=item *
=item *
+If your file system supports symbolic links you can build Perl outside
+of the source directory by
+
+ mkdir /tmp/perl/build/directory
+ cd /tmp/perl/build/directory
+ sh /path/to/perl/source/Configure -Dmksymlinks ...
+
+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
+
+ make all test
+
+and Perl will be built and tested, all in /tmp/perl/build/directory.
+
+=item *
+
For Perl developers several new make targets for profiling
and debugging have been added, see L<perlhack>.
=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.
+Numerous memory leaks and uninitialized memory accesses have been
+hunted down. Most importantly anonymous subs used to leak quite
+a bit.
=over 4
=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.
-
-=item *
-
-C<*foo{FORMAT}> now works.
+The autouse pragma didn't work for Multi::Part::Function::Names.
=item *
-Lexical warnings now propagating correctly between scopes.
+chop(@list) in list context returned the characters chopped in
+reverse order. This has been reversed to be in the right order.
=item *
-Line renumbering with eval and C<#line> now works.
+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.
=item *
-Fixed numerous memory leaks, especially in eval "".
+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
+where the result of the string to number conversion is undefined: now
+Perl consistently handles such strings as zero in numeric contexts.
=item *
-Modulus of unsigned numbers now works (4063328477 % 65535 used to
-return 27406, instead of 27047).
+The order of DESTROYs has been made more predictable.
=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.
+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.
=item *
-our() variables will not cause "will not stay shared" warnings.
+L<dprofpp> -R didn't work.
=item *
-pack "Z" now correctly terminates the string with "\0".
+C<*foo{FORMAT}> now works.
=item *
-Fix password routines which in some shadow password platforms
-(e.g. HP-UX) caused getpwent() to return every other entry.
+UNIVERSAL::isa no longer caches methods incorrectly. (This broke
+the Tk extension with 5.6.0.)
=item *
-printf() no longer resets the numeric locale to "C".
+Lexicals I: lexicals outside an eval "" weren't resolved
+correctly inside a subroutine definition inside the eval "" if they
+were not already referenced in the top level of the eval""ed code.
=item *
-C<q(a\\b)> now parses correctly as C<'a\\b'>.
+Lexicals II: lexicals leaked at file scope into subroutines that
+were declared before the lexicals.
=item *
-Printing quads (64-bit integers) with printf/sprintf now works
-without the q L ll prefixes (assuming you are on a quad-capable platform).
+Lexical warnings now propagating correctly between scopes.
=item *
-Regular expressions on references and overloaded scalars now work.
+Line renumbering with eval and C<#line> now works.
=item *
-scalar() now forces scalar context even when used in void context.
+Fixed numerous memory leaks, especially in eval "".
=item *
-sort() arguments are now compiled in the right wantarray context
-(they were accidentally using the context of the sort() itself).
+mkdir() now ignores trailing slashes in the directory name,
+as mandated by POSIX.
=item *
-Changed the POSIX character class C<[[:space:]]> to include the (very
-rare) vertical tab character. Added a new POSIX-ish character class
-C<[[:blank:]]> which stands for horizontal whitespace (currently,
-the space and the tab).
+Some versions of glibc have a broken modfl(). This affects builds
+with C<-Duselongdouble>. This version of Perl detects this brokenness
+and has a workaround for it. The glibc release 2.2.2 is known to have
+fixed the modfl() bug.
=item *
-$AUTOLOAD, sort(), lock(), and spawning subprocesses
-in multiple threads simultaneously are now thread-safe.
+Modulus of unsigned numbers now works (4063328477 % 65535 used to
+return 27406, instead of 27047).
=item *
-Allow read-only string on left hand side of non-modifying tr///.
+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.
=item *
-Several Unicode fixes (but still not perfect).
-
-=over 8
+Attributes (like :shared) didn't work with our().
=item *
-BOMs (byte order marks) in the beginning of Perl files
-(scripts, modules) should now be transparently skipped.
-UTF-16 (UCS-2) encoded Perl files should now be read correctly.
+our() variables will not cause "will not stay shared" warnings.
=item *
-The character tables have been updated to Unicode 3.0.1.
+pack "Z" now correctly terminates the string with "\0".
=item *
-chr() for values greater than 127 now create utf8 when under use
-utf8.
+Fix password routines which in some shadow password platforms
+(e.g. HP-UX) caused getpwent() to return every other entry.
=item *
-Comparing with utf8 data does not magically upgrade non-utf8 data into
-utf8.
+The PERL5OPT environment variable (for passing command line arguments
+to Perl) didn't work for more than a single group of options.
=item *
-C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
+PERL5OPT with embedded spaces didn't work.
=item *
-Concatenation with the C<.> operator or via variable interpolation,
-C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
-substitution with C<s///>, single-quoted UTF8, should now work--in
-theory.
+printf() no longer resets the numeric locale to "C".
=item *
-The C<tr///> operator now works I<slightly> better but is still rather
-broken. Note that the C<tr///CU> functionality has been removed (but
-see pack('U0', ...)).
+C<q(a\\b)> now parses correctly as C<'a\\b'>.
=item *
-vec() now refuses to deal with characters >255.
+Printing quads (64-bit integers) with printf/sprintf now works
+without the q L ll prefixes (assuming you are on a quad-capable platform).
=item *
-Zero entries were missing from the Unicode classes like C<IsDigit>.
+Regular expressions on references and overloaded scalars now work.
=item *
-chop(@list) in list context returned the characters chopped in
-reverse order. This has been reversed to be in the right order.
+Right-hand side magic (GMAGIC) could in many cases such as string
+concatenation be invoked too many times.
=item *
-The order of DESTROYs has been made more predictable.
+scalar() now forces scalar context even when used in void context.
=item *
-mkdir() now ignores trailing slashes in the directory name,
-as mandated by POSIX.
+SOCKS support is now much more robust.
=item *
-Attributes (like :shared) didn't work with our().
+sort() arguments are now compiled in the right wantarray context
+(they were accidentally using the context of the sort() itself).
=item *
-The PERL5OPT environment variable (for passing command line arguments
-to Perl) didn't work for more than a single group of options.
+Changed the POSIX character class C<[[:space:]]> to include the (very
+rare) vertical tab character. Added a new POSIX-ish character class
+C<[[:blank:]]> which stands for horizontal whitespace (currently,
+the space and the tab).
=item *
=item *
-All but the first argument of the IO syswrite() method are now optional.
-
-=item *
-
-Tie::ARRAY SPLICE method was broken.
-
-=item *
-
-vec() now tries to work with characters <= 255 when possible, but it leaves
-higher character values in place. In that case, if vec() was used to modify
-the string, it is no longer considered to be utf8-encoded.
-
-=item *
-
-The autouse pragma didn't work for Multi::Part::Function::Names.
-
-=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
-where the result of the string to number conversion is undefined: now
-Perl consistently handles such strings as zero in numeric contexts.
-
-=item *
-
-L<dprofpp> -R didn't work.
-
-=item *
-
-PERL5OPT with embedded spaces didn't work.
+L<Sys::Syslog> ignored the C<LOG_AUTH> constant.
=item *
-L<Sys::Syslog> ignored the C<LOG_AUTH> constant.
+All but the first argument of the IO syswrite() method are now optional.
=item *
-Some versions of glibc have a broken modfl(). This affects builds
-with C<-Duselongdouble>. This version of Perl detects this brokenness
-and has a workaround for it. The glibc release 2.2.2 is known to have
-fixed the modfl() bug.
+$AUTOLOAD, sort(), lock(), and spawning subprocesses
+in multiple threads simultaneously are now thread-safe.
=item *
-Linux previously had problems related to sockaddrlen when using
-accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname().
+Tie::ARRAY SPLICE method was broken.
=item *
-Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O.
+Allow read-only string on left hand side of non-modifying tr///.
=item *
-Windows
+Several Unicode fixes.
=over 8
=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++).
+BOMs (byte order marks) in the beginning of Perl files
+(scripts, modules) should now be transparently skipped.
+UTF-16 (UCS-2) encoded Perl files should now be read correctly.
=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 character tables have been updated to Unicode 3.1.1.
=item *
-Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
+Comparing with utf8 data does not magically upgrade non-utf8 data
+into utf8.
=item *
-HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html
-
-=item *
-
-The makefiles now provide a single switch to bulk-enable all the features
-enabled in ActiveState ActivePerl (a popular Win32 binary distribution).
-
-=back
-
-=back
+C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
=item *
-UNIVERSAL::isa no longer caches methods incorrectly. (This broke
-the Tk extension with 5.6.0.)
+Concatenation with the C<.> operator or via variable interpolation,
+C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
+substitution with C<s///>, single-quoted UTF8, should now work.
=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.
+The C<tr///> operator now works. Note that the C<tr///CU>
+functionality has been removed (but see pack('U0', ...)).
=item *
-SOCKS support is now much more robust.
+C<eval "v200"> now works.
=item *
-If your file system supports symbolic links you can build Perl outside
-of the source directory by
-
- mkdir /tmp/perl/build/directory
- cd /tmp/perl/build/directory
- sh /path/to/perl/source/Configure -Dmksymlinks ...
-
-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
-
- make all test
+Zero entries were missing from the Unicode classes like C<IsDigit>.
-and Perl will be built and tested, all in /tmp/perl/build/directory.
+=back
=back
=item *
+Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O.
+
+=item *
+
EPOC
EPOC update after Perl 5.6.0. See README.epoc.
Linux
+=over 8
+
+=item *
+
Long doubles should now work (see INSTALL).
=item *
+Linux previously had problems related to sockaddrlen when using
+accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname().
+
+=back
+
+=item *
+
MacOS Classic
Compilation of the standard Perl distribution in MacOS Classic should
=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++).
+
+=item *
+
Better chdir() return value for a non-existent directory.
=item *
+Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
+
+=item *
+
New %ENV entries now propagate to subprocesses.
=item *
=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.
+
+=item *
+
A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
=item *
+HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html
+
+=item *
+
+The makefiles now provide a single switch to bulk-enable all the features
+enabled in ActiveState ActivePerl (a popular Win32 binary distribution).
+
+=item *
+
Allow REG_EXPAND_SZ keys in the registry.
=item *