313 lines
9.2 KiB
Plaintext
313 lines
9.2 KiB
Plaintext
=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<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784>
|
|
|
|
=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<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
|
|
|
|
=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<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784>
|
|
|
|
=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<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976>
|
|
|
|
=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<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202>
|
|
|
|
=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<[perl #123218]|https://rt.perl.org/Ticket/Display.html?id=123218>
|
|
|
|
=item *
|
|
|
|
Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash. This has
|
|
been fixed.
|
|
L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652>
|
|
|
|
=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<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
|
|
|
|
=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<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748>
|
|
|
|
=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<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113>
|
|
|
|
=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<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109>
|
|
|
|
=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<[perl #123743]|https://rt.perl.org/Ticket/Display.html?id=123743>
|
|
|
|
=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<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398>
|
|
|
|
=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<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
|
|
|
|
=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<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825>
|
|
|
|
=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<[perl #123712]|https://rt.perl.org/Ticket/Display.html?id=123712>
|
|
|
|
=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 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
|