Spaces:
Running
Running
=encoding utf8 | |
=head1 NAME | |
perl5203delta - what is new for perl v5.20.3 | |
=head1 DESCRIPTION | |
This document describes differences between the 5.20.2 release and the 5.20.3 | |
release. | |
If you are upgrading from an earlier release such as 5.20.1, first read | |
L<perl5202delta>, which describes differences between 5.20.1 and 5.20.2. | |
=head1 Incompatible Changes | |
There are no changes intentionally incompatible with 5.20.2. 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<Errno> has been upgraded from version 1.20_05 to 1.20_06. | |
Add B<-P> to the pre-processor command-line on GCC 5. GCC added extra line | |
directives, breaking parsing of error code definitions. | |
L<[GH #14491]|https://github.com/Perl/perl5/issues/14491> | |
=item * | |
L<Module::CoreList> has been upgraded from version 5.20150214 to 5.20150822. | |
Updated to cover the latest releases of Perl. | |
=item * | |
L<perl5db.pl> has been upgraded from 1.44 to 1.44_01. | |
The debugger would cause an assertion failure. | |
L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> | |
=back | |
=head1 Documentation | |
=head2 Changes to Existing Documentation | |
=head3 L<perlfunc> | |
=over 4 | |
=item * | |
Mention that L<C<study()>|perlfunc/study> is currently a no-op. | |
=back | |
=head3 L<perlguts> | |
=over 4 | |
=item * | |
The OOK example has been updated to account for COW changes and a change in the | |
storage of the offset. | |
=back | |
=head3 L<perlhacktips> | |
=over 4 | |
=item * | |
Documentation has been added illustrating the perils of assuming the contents | |
of static memory pointed to by the return values of Perl wrappers for C library | |
functions doesn't change. | |
=back | |
=head3 L<perlpodspec> | |
=over 4 | |
=item * | |
The specification of the POD language is changing so that the default encoding | |
of PODs that aren't in UTF-8 (unless otherwise indicated) is CP1252 instead of | |
ISO-8859-1 (Latin1). | |
=back | |
=head1 Utility Changes | |
=head2 L<h2ph> | |
=over 4 | |
=item * | |
B<h2ph> now handles hexadecimal constants in the compiler's predefined macro | |
definitions, as visible in C<$Config{cppsymbols}>. | |
L<[GH #14491]|https://github.com/Perl/perl5/issues/14491> | |
=back | |
=head1 Testing | |
=over 4 | |
=item * | |
F<t/perf/taint.t> has been added to see if optimisations with taint issues are | |
keeping things fast. | |
=item * | |
F<t/porting/re_context.t> has been added to test that L<utf8> and its | |
dependencies only use the subset of the C<$1..$n> capture vars that | |
Perl_save_re_context() is hard-coded to localize, because that function has no | |
efficient way of determining at runtime what vars to localize. | |
=back | |
=head1 Platform Support | |
=head2 Platform-Specific Notes | |
=over 4 | |
=item Win32 | |
=over 4 | |
=item * | |
Previously, when compiling with a 64-bit Visual C++, every Perl XS module | |
(including CPAN ones) and Perl aware C file would unconditionally have around a | |
dozen warnings from F<hv_func.h>. These warnings have been silenced. GCC (all | |
bitness) and 32-bit Visual C++ were not affected. | |
=item * | |
B<miniperl.exe> is now built with B<-fno-strict-aliasing>, allowing 64-bit | |
builds to complete with GCC 4.8. | |
L<[GH #14556]|https://github.com/Perl/perl5/issues/14556> | |
=back | |
=back | |
=head1 Selected Bug Fixes | |
=over 4 | |
=item * | |
Repeated global pattern matches in scalar context on large tainted strings were | |
exponentially slow depending on the current match position in the string. | |
L<[GH #14238]|https://github.com/Perl/perl5/issues/14238> | |
=item * | |
The original visible value of L<C<$E<sol>>|perlvar/$E<sol>> is now preserved | |
when it is set to an invalid value. Previously if you set C<$/> to a reference | |
to an array, for example, perl would produce a runtime error and not set PL_rs, | |
but Perl code that checked C<$/> would see the array reference. | |
L<[GH #14245]|https://github.com/Perl/perl5/issues/14245> | |
=item * | |
Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash. This has | |
been fixed. | |
L<[GH #14438]|https://github.com/Perl/perl5/issues/14438> | |
=item * | |
Extending an array cloned from a parent thread could result in "Modification of | |
a read-only value attempted" errors when attempting to modify the new elements. | |
L<[GH #14605]|https://github.com/Perl/perl5/issues/14605> | |
=item * | |
Several cases of data used to store environment variable contents in core C | |
code being potentially overwritten before being used have been fixed. | |
L<[GH #14476]|https://github.com/Perl/perl5/issues/14476> | |
=item * | |
UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document | |
terminators and UTF-8 function names all now work correctly. | |
L<[GH #14601]|https://github.com/Perl/perl5/issues/14601> | |
=item * | |
A subtle bug introduced in Perl 5.20.2 involving UTF-8 in regular expressions | |
and sometimes causing a crash has been fixed. A new test script has been added | |
to test this fix; see under L</Testing>. | |
L<[GH #14600]|https://github.com/Perl/perl5/issues/14600> | |
=item * | |
Some patterns starting with C</.*..../> matched against long strings have been | |
slow since Perl 5.8, and some of the form C</.*..../i> have been slow since | |
Perl 5.18. They are now all fast again. | |
L<[GH #14475]|https://github.com/Perl/perl5/issues/14475> | |
=item * | |
Warning fatality is now ignored when rewinding the stack. This prevents | |
infinite recursion when the now fatal error also causes rewinding of the stack. | |
L<[GH #14319]|https://github.com/Perl/perl5/issues/14319> | |
=item * | |
C<setpgrp($nonzero)> (with one argument) was accidentally changed in Perl 5.16 | |
to mean C<setpgrp(0)>. This has been fixed. | |
=item * | |
A crash with C<< %::=(); J->${\"::"} >> has been fixed. | |
L<[GH #14790]|https://github.com/Perl/perl5/issues/14790> | |
=item * | |
Regular expression possessive quantifier Perl 5.20 regression now fixed. | |
C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically to | |
C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>. Since Perl 5.20, this didn't work | |
if I<min> and I<max> were equal. | |
L<[GH #14857]|https://github.com/Perl/perl5/issues/14857> | |
=item * | |
Code like C</$a[/> used to read the next line of input and treat it as though | |
it came immediately after the opening bracket. Some invalid code consequently | |
would parse and run, but some code caused crashes, so this is now disallowed. | |
L<[GH #14462]|https://github.com/Perl/perl5/issues/14462> | |
=back | |
=head1 Acknowledgements | |
Perl 5.20.3 represents approximately 7 months of development since Perl 5.20.2 | |
and contains approximately 3,200 lines of changes across 99 files from 26 | |
authors. | |
Excluding auto-generated files, documentation and release tools, there were | |
approximately 1,500 lines of changes to 43 .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.3: | |
Alex Vandiver, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams, | |
Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David Mitchell, | |
Father Chrysostomos, H.Merijn Brand, James E Keenan, James McCoy, Jarkko | |
Hietaniemi, Karen Etheridge, Karl Williamson, kmx, Lajos Veres, Lukas Mai, | |
Matthew Horsfall, Petr Písař, Randy Stauner, Ricardo Signes, Sawyer X, Steve | |
Hay, Tony Cook, Yves Orton. | |
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 [email protected] 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 [email protected]. 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 | |