mirror of
https://github.com/Perl/perl5.git
synced 2026-01-26 08:38:23 +00:00
Headings are not sentences and should not have a trailing full stop unless the last word is an abbreviation or as part of an ellipsis.
380 lines
8.2 KiB
Plaintext
380 lines
8.2 KiB
Plaintext
=head1 NAME
|
|
|
|
perl587delta - what is new for perl v5.8.7
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This document describes differences between the 5.8.6 release and
|
|
the 5.8.7 release.
|
|
|
|
=head1 Incompatible Changes
|
|
|
|
There are no changes incompatible with 5.8.6.
|
|
|
|
=head1 Core Enhancements
|
|
|
|
=head2 Unicode Character Database 4.1.0
|
|
|
|
The copy of the Unicode Character Database included in Perl 5.8 has
|
|
been updated to 4.1.0 from 4.0.1. See
|
|
L<http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges> for the
|
|
notable changes.
|
|
|
|
=head2 suidperl less insecure
|
|
|
|
A pair of exploits in C<suidperl> involving debugging code have been closed.
|
|
|
|
For new projects the core perl team strongly recommends that you use
|
|
dedicated, single purpose security tools such as C<sudo> in preference to
|
|
C<suidperl>.
|
|
|
|
=head2 Optional site customization script
|
|
|
|
The perl interpreter can be built to allow the use of a site customization
|
|
script. By default this is not enabled, to be consistent with previous perl
|
|
releases. To use this, add C<-Dusesitecustomize> to the command line flags
|
|
when running the C<Configure> script. See also L<perlrun/-f>.
|
|
|
|
=head2 C<Config.pm> is now much smaller
|
|
|
|
C<Config.pm> is now about 3K rather than 32K, with the infrequently used
|
|
code and C<%Config> values loaded on demand. This is transparent to the
|
|
programmer, but means that most code will save parsing and loading 29K of
|
|
script (for example, code that uses C<File::Find>).
|
|
|
|
=head1 Modules and Pragmata
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
B upgraded to version 1.09
|
|
|
|
=item *
|
|
|
|
base upgraded to version 2.07
|
|
|
|
=item *
|
|
|
|
bignum upgraded to version 0.17
|
|
|
|
=item *
|
|
|
|
bytes upgraded to version 1.02
|
|
|
|
=item *
|
|
|
|
Carp upgraded to version 1.04
|
|
|
|
=item *
|
|
|
|
CGI upgraded to version 3.10
|
|
|
|
=item *
|
|
|
|
Class::ISA upgraded to version 0.33
|
|
|
|
=item *
|
|
|
|
Data::Dumper upgraded to version 2.121_02
|
|
|
|
=item *
|
|
|
|
DB_File upgraded to version 1.811
|
|
|
|
=item *
|
|
|
|
Devel::PPPort upgraded to version 3.06
|
|
|
|
=item *
|
|
|
|
Digest upgraded to version 1.10
|
|
|
|
=item *
|
|
|
|
Encode upgraded to version 2.10
|
|
|
|
=item *
|
|
|
|
FileCache upgraded to version 1.05
|
|
|
|
=item *
|
|
|
|
File::Path upgraded to version 1.07
|
|
|
|
=item *
|
|
|
|
File::Temp upgraded to version 0.16
|
|
|
|
=item *
|
|
|
|
IO::File upgraded to version 1.11
|
|
|
|
=item *
|
|
|
|
IO::Socket upgraded to version 1.28
|
|
|
|
=item *
|
|
|
|
Math::BigInt upgraded to version 1.77
|
|
|
|
=item *
|
|
|
|
Math::BigRat upgraded to version 0.15
|
|
|
|
=item *
|
|
|
|
overload upgraded to version 1.03
|
|
|
|
=item *
|
|
|
|
PathTools upgraded to version 3.05
|
|
|
|
=item *
|
|
|
|
Pod::HTML upgraded to version 1.0503
|
|
|
|
=item *
|
|
|
|
Pod::Perldoc upgraded to version 3.14
|
|
|
|
=item *
|
|
|
|
Pod::LaTeX upgraded to version 0.58
|
|
|
|
=item *
|
|
|
|
Pod::Parser upgraded to version 1.30
|
|
|
|
=item *
|
|
|
|
Symbol upgraded to version 1.06
|
|
|
|
=item *
|
|
|
|
Term::ANSIColor upgraded to version 1.09
|
|
|
|
=item *
|
|
|
|
Test::Harness upgraded to version 2.48
|
|
|
|
=item *
|
|
|
|
Test::Simple upgraded to version 0.54
|
|
|
|
=item *
|
|
|
|
Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was
|
|
called with a non-space separator.
|
|
|
|
=item *
|
|
|
|
threads::shared upgraded to version 0.93
|
|
|
|
=item *
|
|
|
|
Time::HiRes upgraded to version 1.66
|
|
|
|
=item *
|
|
|
|
Time::Local upgraded to version 1.11
|
|
|
|
=item *
|
|
|
|
Unicode::Normalize upgraded to version 0.32
|
|
|
|
=item *
|
|
|
|
utf8 upgraded to version 1.05
|
|
|
|
=item *
|
|
|
|
Win32 upgraded to version 0.24, which provides Win32::GetFileVersion
|
|
|
|
=back
|
|
|
|
=head1 Utility Changes
|
|
|
|
=head2 find2perl enhancements
|
|
|
|
C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>.
|
|
|
|
=head1 Performance Enhancements
|
|
|
|
The internal pointer mapping hash used during ithreads cloning now uses an
|
|
arena for memory allocation. In tests this reduced ithreads cloning time by
|
|
about 10%.
|
|
|
|
=head1 Installation and Configuration Improvements
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
The Win32 "dmake" makefile.mk has been updated to make it compatible
|
|
with the latest versions of dmake.
|
|
|
|
=item *
|
|
|
|
C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED>
|
|
should now work in Win32 makefiles.
|
|
|
|
=back
|
|
|
|
=head1 Selected Bug Fixes
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
The socket() function on Win32 has been fixed so that it is able to use
|
|
transport providers which specify a protocol of 0 (meaning any protocol
|
|
is allowed) once more. (This was broken in 5.8.6, and typically caused
|
|
the use of ICMP sockets to fail.)
|
|
|
|
=item *
|
|
|
|
Another obscure bug involving C<substr> and UTF-8 caused by bad internal
|
|
offset caching has been identified and fixed.
|
|
|
|
=item *
|
|
|
|
A bug involving the loading of UTF-8 tables by the regexp engine has been
|
|
fixed - code such as C<"\x{100}" =~ /[[:print:]]/> will no longer give
|
|
corrupt results.
|
|
|
|
=item *
|
|
|
|
Case conversion operations such as C<uc> on a long Unicode string could
|
|
exhaust memory. This has been fixed.
|
|
|
|
=item *
|
|
|
|
C<index>/C<rindex> were buggy for some combinations of Unicode and
|
|
non-Unicode data. This has been fixed.
|
|
|
|
=item *
|
|
|
|
C<read> (and presumably C<sysread>) would expose the UTF-8 internals when
|
|
reading from a byte oriented file handle into a UTF-8 scalar. This has
|
|
been fixed.
|
|
|
|
=item *
|
|
|
|
Several C<pack>/C<unpack> bug fixes:
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Checksums with C<b> or C<B> formats were broken.
|
|
|
|
=item *
|
|
|
|
C<unpack> checksums could overflow with the C<C> format.
|
|
|
|
=item *
|
|
|
|
C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates.
|
|
|
|
=item *
|
|
|
|
Counted length prefixes now don't change C<C0>/C<U0> mode.
|
|
|
|
=item *
|
|
|
|
C<pack> C<Z0> used to destroy the preceding character.
|
|
|
|
=item *
|
|
|
|
C<P>/C<p> C<pack> formats used to only recognise literal C<undef>
|
|
|
|
=back
|
|
|
|
=item *
|
|
|
|
Using closures with ithreads could cause perl to crash. This was due to
|
|
failure to correctly lock internal OP structures, and has been fixed.
|
|
|
|
=item *
|
|
|
|
The return value of C<close> now correctly reflects any file errors that
|
|
occur while flushing the handle's data, instead of just giving failure if
|
|
the actual underlying file close operation failed.
|
|
|
|
=item *
|
|
|
|
C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was
|
|
the pre 5.6.0 behaviour.
|
|
|
|
=item *
|
|
|
|
C<h2ph> has various enhancements to cope with constructs in header files that
|
|
used to result in incorrect or invalid output.
|
|
|
|
=back
|
|
|
|
=head1 New or Changed Diagnostics
|
|
|
|
There is a new taint error, "%ENV is aliased to %s". This error is thrown
|
|
when taint checks are enabled and when C<*ENV> has been aliased, so that
|
|
C<%ENV> has no env-magic anymore and hence the environment cannot be verified
|
|
as taint-free.
|
|
|
|
The internals of C<pack> and C<unpack> have been updated. All legitimate
|
|
templates should work as before, but there may be some changes in the error
|
|
reported for complex failure cases. Any behaviour changes for non-error cases
|
|
are bugs, and should be reported.
|
|
|
|
=head1 Changed Internals
|
|
|
|
There has been a fair amount of refactoring of the C<C> source code, partly to
|
|
make it tidier and more maintainable. The resulting object code and the
|
|
C<perl> binary may well be smaller than 5.8.6, and hopefully faster in some
|
|
cases, but apart from this there should be no user-detectable changes.
|
|
|
|
C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>.
|
|
|
|
The size of the arenas used to allocate SV heads and most SV bodies can now
|
|
be changed at compile time. The old size was 1008 bytes, the new default size
|
|
is 4080 bytes.
|
|
|
|
=head1 Known Problems
|
|
|
|
Unicode strings returned from overloaded operators can be buggy. This is a
|
|
long standing bug reported since 5.8.6 was released, but we do not yet have
|
|
a suitable fix for it.
|
|
|
|
=head1 Platform Specific Problems
|
|
|
|
On UNICOS, lib/Math/BigInt/t/bigintc.t hangs burning CPU.
|
|
ext/B/t/bytecode.t and ext/Socket/t/socketpair.t both fail tests.
|
|
These are unlikely to be resolved, as our valiant UNICOS porter's last
|
|
Cray is being decommissioned.
|
|
|
|
=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
|
|
information at http://www.perl.org, the Perl Home Page.
|
|
|
|
If you believe you have an unreported bug, please run the B<perlbug>
|
|
program included with your release. Be sure to trim your bug down
|
|
to a tiny but sufficient test case. Your bug report, along with the
|
|
output of C<perl -V>, will be sent off to perlbug@perl.org to be
|
|
analysed by the Perl porting team. You can browse and search
|
|
the Perl 5 bugs at http://bugs.perl.org/
|
|
|
|
=head1 SEE ALSO
|
|
|
|
The F<Changes> file for exhaustive details on what changed.
|
|
|
|
The F<INSTALL> file for how to build Perl.
|
|
|
|
The F<README> file for general stuff.
|
|
|
|
The F<Artistic> and F<Copying> files for copyright information.
|
|
|
|
=cut
|