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 | |