416 lines
12 KiB
Plaintext
416 lines
12 KiB
Plaintext
|
=encoding utf8
|
||
|
|
||
|
=head1 NAME
|
||
|
|
||
|
perl5202delta - what is new for perl v5.20.2
|
||
|
|
||
|
=head1 DESCRIPTION
|
||
|
|
||
|
This document describes differences between the 5.20.1 release and the 5.20.2
|
||
|
release.
|
||
|
|
||
|
If you are upgrading from an earlier release such as 5.20.0, first read
|
||
|
L<perl5201delta>, which describes differences between 5.20.0 and 5.20.1.
|
||
|
|
||
|
=head1 Incompatible Changes
|
||
|
|
||
|
There are no changes intentionally incompatible with 5.20.1. If any exist,
|
||
|
they are bugs, and we request that you submit a report. See L</Reporting Bugs>
|
||
|
below.
|
||
|
|
||
|
=head1 Modules and Pragmata
|
||
|
|
||
|
=head2 Updated Modules and Pragmata
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<attributes> has been upgraded from version 0.22 to 0.23.
|
||
|
|
||
|
The usage of C<memEQs> in the XS has been corrected.
|
||
|
L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Data::Dumper> has been upgraded from version 2.151 to 2.151_01.
|
||
|
|
||
|
Fixes CVE-2014-4330 by adding a configuration variable/option to limit
|
||
|
recursion when dumping deep data structures.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Errno> has been upgraded from version 1.20_03 to 1.20_05.
|
||
|
|
||
|
Warnings when building the XS on Windows with the Visual C++ compiler are now
|
||
|
avoided.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<feature> has been upgraded from version 1.36 to 1.36_01.
|
||
|
|
||
|
The C<postderef> feature has now been documented. This feature was actually
|
||
|
added in Perl 5.20.0 but was accidentally omitted from the feature
|
||
|
documentation until now.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<IO::Socket> has been upgraded from version 1.37 to 1.38.
|
||
|
|
||
|
Document the limitations of the connected() method.
|
||
|
L<[perl #123096]|https://rt.perl.org/Ticket/Display.html?id=123096>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Module::CoreList> has been upgraded from version 5.020001 to 5.20150214.
|
||
|
|
||
|
The list of Perl versions covered has been updated.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
PathTools has been upgraded from version 3.48 to 3.48_01.
|
||
|
|
||
|
A warning from the B<gcc> compiler is now avoided when building the XS.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<PerlIO::scalar> has been upgraded from version 0.18 to 0.18_01.
|
||
|
|
||
|
Reading from a position well past the end of the scalar now correctly returns
|
||
|
end of file.
|
||
|
L<[perl #123443]|https://rt.perl.org/Ticket/Display.html?id=123443>
|
||
|
|
||
|
Seeking to a negative position still fails, but no longer leaves the file
|
||
|
position set to a negation location.
|
||
|
|
||
|
C<eof()> on a C<PerlIO::scalar> handle now properly returns true when the file
|
||
|
position is past the 2GB mark on 32-bit systems.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Storable> has been upgraded from version 2.49 to 2.49_01.
|
||
|
|
||
|
Minor grammatical change to the documentation only.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<VMS::DCLsym> has been upgraded from version 1.05 to 1.05_01.
|
||
|
|
||
|
Minor formatting change to the documentation only.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<VMS::Stdio> has been upgraded from version 2.4 to 2.41.
|
||
|
|
||
|
Minor formatting change to the documentation only.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Documentation
|
||
|
|
||
|
=head2 New Documentation
|
||
|
|
||
|
=head3 L<perlunicook>
|
||
|
|
||
|
This document, by Tom Christiansen, provides examples of handling Unicode in
|
||
|
Perl.
|
||
|
|
||
|
=head2 Changes to Existing Documentation
|
||
|
|
||
|
=head3 L<perlexperiment>
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Added reference to subroutine signatures. This feature was actually added in
|
||
|
Perl 5.20.0 but was accidentally omitted from the experimental feature
|
||
|
documentation until now.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head3 L<perlpolicy>
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
The process whereby features may graduate from experimental status has now been
|
||
|
formally documented.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head3 L<perlsyn>
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
An ambiguity in the documentation of the ellipsis statement has been corrected.
|
||
|
L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Diagnostics
|
||
|
|
||
|
The following additions or changes have been made to diagnostic output,
|
||
|
including warnings and fatal error messages. For the complete list of
|
||
|
diagnostic messages, see L<perldiag>.
|
||
|
|
||
|
=head2 Changes to Existing Diagnostics
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Bad symbol for scalar|perldiag/"Bad symbol for scalar"> is now documented.
|
||
|
This error is not new, but was not previously documented here.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
L<Missing right brace on \N{}|perldiag/"Missing right brace on \N{}"> is now
|
||
|
documented. This error is not new, but was not previously documented here.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Testing
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
The test script F<re/rt122747.t> has been added to verify that
|
||
|
L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> remains
|
||
|
fixed.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Platform Support
|
||
|
|
||
|
=head2 Regained Platforms
|
||
|
|
||
|
IRIX and Tru64 platforms are working again. (Some C<make test> failures
|
||
|
remain.)
|
||
|
|
||
|
=head1 Selected Bug Fixes
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
AIX now sets the length in C<< getsockopt >> correctly.
|
||
|
L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>,
|
||
|
L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>,
|
||
|
L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off if
|
||
|
accessed from a code block within a regular expression, effectively
|
||
|
UTF8-encoding the value. This has been fixed.
|
||
|
L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Various cases where the name of a sub is used (autoload, overloading, error
|
||
|
messages) used to crash for lexical subs, but have been fixed.
|
||
|
|
||
|
=item *
|
||
|
|
||
|
An assertion failure when parsing C<sort> with debugging enabled has been
|
||
|
fixed.
|
||
|
L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Loading UTF8 tables during a regular expression match could cause assertion
|
||
|
failures under debugging builds if the previous match used the very same
|
||
|
regular expression.
|
||
|
L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Due to a mistake in the string-copying logic, copying the value of a state
|
||
|
variable could instead steal the value and undefine the variable. This bug,
|
||
|
introduced in Perl 5.20, would happen mostly for long strings (1250 chars or
|
||
|
more), but could happen for any strings under builds with copy-on-write
|
||
|
disabled.
|
||
|
L<[perl #123029]|https://rt.perl.org/Ticket/Display.html?id=123029>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Fixed a bug that could cause perl to execute an infinite loop during
|
||
|
compilation.
|
||
|
L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
On Win32, restoring in a child pseudo-process a variable that was C<local()>ed
|
||
|
in a parent pseudo-process before the C<fork> happened caused memory corruption
|
||
|
and a crash in the child pseudo-process (and therefore OS process).
|
||
|
L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Tainted constants evaluated at compile time no longer cause unrelated
|
||
|
statements to become tainted.
|
||
|
L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Calling C<write> on a format with a C<^**> field could produce a panic in
|
||
|
sv_chop() if there were insufficient arguments or if the variable used to fill
|
||
|
the field was empty.
|
||
|
L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
In Perl 5.20.0, C<sort CORE::fake> where 'fake' is anything other than a
|
||
|
keyword started chopping of the last 6 characters and treating the result as a
|
||
|
sort sub name. The previous behaviour of treating "CORE::fake" as a sort sub
|
||
|
name has been restored.
|
||
|
L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
A bug in regular expression patterns that could lead to segfaults and other
|
||
|
crashes has been fixed. This occurred only in patterns compiled with C<"/i">,
|
||
|
while taking into account the current POSIX locale (this usually means they
|
||
|
have to be compiled within the scope of C<S<"use locale">>), and there must be
|
||
|
a string of at least 128 consecutive bytes to match.
|
||
|
L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
C<qr/@array(?{block})/> no longer dies with "Bizarre copy of ARRAY".
|
||
|
L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
C<gmtime> no longer crashes with not-a-number values.
|
||
|
L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would
|
||
|
crash, and had done so since Perl 5.10. (In some cases the crash did not start
|
||
|
happening until Perl 5.16.) The crash has, of course, been fixed.
|
||
|
L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
A memory leak in some regular expressions, introduced in Perl 5.20.1, has been
|
||
|
fixed.
|
||
|
L<[perl #123198]|https://rt.perl.org/Ticket/Display.html?id=123198>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
C<< formline("@...", "a"); >> would crash. The C<FF_CHECKNL> case in
|
||
|
pp_formline() didn't set the pointer used to mark the chop position, which led
|
||
|
to the C<FF_MORE> case crashing with a segmentation fault. This has been
|
||
|
fixed.
|
||
|
L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538>
|
||
|
L<[perl #123622]|https://rt.perl.org/Ticket/Display.html?id=123622>
|
||
|
|
||
|
=item *
|
||
|
|
||
|
A possible buffer overrun and crash when parsing a literal pattern during
|
||
|
regular expression compilation has been fixed.
|
||
|
L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604>
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Known Problems
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
It is a known bug that lexical subroutines cannot be used as the C<SUBNAME>
|
||
|
argument to C<sort>. This will be fixed in a future version of Perl.
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Errata From Previous Releases
|
||
|
|
||
|
=over 4
|
||
|
|
||
|
=item *
|
||
|
|
||
|
A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
|
||
|
5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
|
||
|
that contains a single ASCII lowercase letter does not match its uppercase
|
||
|
counterpart.
|
||
|
L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
|
||
|
|
||
|
=back
|
||
|
|
||
|
=head1 Acknowledgements
|
||
|
|
||
|
Perl 5.20.2 represents approximately 5 months of development since Perl 5.20.1
|
||
|
and contains approximately 6,300 lines of changes across 170 files from 34
|
||
|
authors.
|
||
|
|
||
|
Excluding auto-generated files, documentation and release tools, there were
|
||
|
approximately 1,900 lines of changes to 80 .pm, .t, .c and .h files.
|
||
|
|
||
|
Perl continues to flourish into its third decade thanks to a vibrant community
|
||
|
of users and developers. The following people are known to have contributed
|
||
|
the improvements that became Perl 5.20.2:
|
||
|
|
||
|
Aaron Crane, Abigail, Andreas Voegele, Andy Dougherty, Anthony Heading,
|
||
|
Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan,
|
||
|
Doug Bell, Ed J, Father Chrysostomos, Glenn D. Golden, H.Merijn Brand, Hugo van
|
||
|
der Sanden, James E Keenan, Jarkko Hietaniemi, Jim Cromie, Karen Etheridge,
|
||
|
Karl Williamson, kmx, Matthew Horsfall, Max Maischein, Peter Martini, Rafael
|
||
|
Garcia-Suarez, Ricardo Signes, Shlomi Fish, Slaven Rezic, Steffen Müller,
|
||
|
Steve Hay, Tadeusz Sośnierz, Tony Cook, Yves Orton, Ævar Arnfjörð
|
||
|
Bjarmason.
|
||
|
|
||
|
The list above is almost certainly incomplete as it is automatically generated
|
||
|
from version control history. In particular, it does not include the names of
|
||
|
the (very much appreciated) contributors who reported issues to the Perl bug
|
||
|
tracker.
|
||
|
|
||
|
Many of the changes included in this version originated in the CPAN modules
|
||
|
included in Perl's core. We're grateful to the entire CPAN community for
|
||
|
helping Perl to flourish.
|
||
|
|
||
|
For a more complete list of all of Perl's historical contributors, please see
|
||
|
the F<AUTHORS> file in the Perl source distribution.
|
||
|
|
||
|
=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
|
||
|
https://rt.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 L<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.
|
||
|
|
||
|
If the bug you are reporting has security implications, which make it
|
||
|
inappropriate to send to a publicly archived mailing list, then please send it
|
||
|
to perl5-security-report@perl.org. This points to a closed subscription
|
||
|
unarchived mailing list, which includes all the core committers, who will be
|
||
|
able to help assess the impact of issues, figure out a resolution, and help
|
||
|
co-ordinate the release of patches to mitigate or fix the problem across all
|
||
|
platforms on which Perl is supported. Please only use this address for
|
||
|
security issues in the Perl core, not for modules independently distributed on
|
||
|
CPAN.
|
||
|
|
||
|
=head1 SEE ALSO
|
||
|
|
||
|
The F<Changes> file for an explanation of how to view 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
|