xref: /openbsd/gnu/usr.bin/perl/pod/perl5201delta.pod (revision 256a93a4)
152736614Safresh1=encoding utf8
252736614Safresh1
352736614Safresh1=head1 NAME
452736614Safresh1
552736614Safresh1perl5201delta - what is new for perl v5.20.1
652736614Safresh1
752736614Safresh1=head1 DESCRIPTION
852736614Safresh1
952736614Safresh1This document describes differences between the 5.20.0 release and the 5.20.1
1052736614Safresh1release.
1152736614Safresh1
1252736614Safresh1If you are upgrading from an earlier release such as 5.18.0, first read
1352736614Safresh1L<perl5200delta>, which describes differences between 5.18.0 and 5.20.0.
1452736614Safresh1
1552736614Safresh1=head1 Incompatible Changes
1652736614Safresh1
1752736614Safresh1There are no changes intentionally incompatible with 5.20.0.  If any exist,
1852736614Safresh1they are bugs, and we request that you submit a report.  See L</Reporting Bugs>
1952736614Safresh1below.
2052736614Safresh1
2152736614Safresh1=head1 Performance Enhancements
2252736614Safresh1
2352736614Safresh1=over 4
2452736614Safresh1
2552736614Safresh1=item *
2652736614Safresh1
2752736614Safresh1An optimization to avoid problems with COW and deliberately overallocated PVs
2852736614Safresh1has been disabled because it interfered with another, more important,
2952736614Safresh1optimization, causing a slowdown on some platforms.
30*256a93a4Safresh1L<[GH #13878]|https://github.com/Perl/perl5/issues/13878>
3152736614Safresh1
3252736614Safresh1=item *
3352736614Safresh1
3452736614Safresh1Returning a string from a lexical variable could be slow in some cases.  This
3552736614Safresh1has now been fixed.
36*256a93a4Safresh1L<[GH #13880]|https://github.com/Perl/perl5/issues/13880>
3752736614Safresh1
3852736614Safresh1=back
3952736614Safresh1
4052736614Safresh1=head1 Modules and Pragmata
4152736614Safresh1
4252736614Safresh1=head2 Updated Modules and Pragmata
4352736614Safresh1
4452736614Safresh1=over 4
4552736614Safresh1
4652736614Safresh1=item *
4752736614Safresh1
4852736614Safresh1L<Config::Perl::V> has been upgraded from version 0.20 to 0.22.
4952736614Safresh1
5052736614Safresh1The list of Perl versions covered has been updated and some flaws in the
5152736614Safresh1parsing have been fixed.
5252736614Safresh1
5352736614Safresh1=item *
5452736614Safresh1
5552736614Safresh1L<Exporter> has been upgraded from version 5.70 to 5.71.
5652736614Safresh1
5752736614Safresh1Illegal POD syntax in the documentation has been corrected.
5852736614Safresh1
5952736614Safresh1=item *
6052736614Safresh1
6152736614Safresh1L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280217.
6252736614Safresh1
6352736614Safresh1Android builds now link to both B<-lperl> and C<$Config::Config{perllibs}>.
6452736614Safresh1
6552736614Safresh1=item *
6652736614Safresh1
6752736614Safresh1L<File::Copy> has been upgraded from version 2.29 to 2.30.
6852736614Safresh1
6952736614Safresh1The documentation now notes that C<copy> will not overwrite read-only files.
7052736614Safresh1
7152736614Safresh1=item *
7252736614Safresh1
7352736614Safresh1L<Module::CoreList> has been upgraded from version 3.11 to 5.020001.
7452736614Safresh1
7552736614Safresh1The list of Perl versions covered has been updated.
7652736614Safresh1
7752736614Safresh1=item *
7852736614Safresh1
7952736614Safresh1The PathTools module collection has been upgraded from version 3.47 to 3.48.
8052736614Safresh1
8152736614Safresh1Fallbacks are now in place when cross-compiling for Android and
8252736614Safresh1C<$Config::Config{sh}> is not yet defined.
83*256a93a4Safresh1L<[GH #13872]|https://github.com/Perl/perl5/issues/13872>
8452736614Safresh1
8552736614Safresh1=item *
8652736614Safresh1
8752736614Safresh1L<PerlIO::via> has been upgraded from version 0.14 to 0.15.
8852736614Safresh1
8952736614Safresh1A minor portability improvement has been made to the XS implementation.
9052736614Safresh1
9152736614Safresh1=item *
9252736614Safresh1
9352736614Safresh1L<Unicode::UCD> has been upgraded from version 0.57 to 0.58.
9452736614Safresh1
9552736614Safresh1The documentation includes many clarifications and fixes.
9652736614Safresh1
9752736614Safresh1=item *
9852736614Safresh1
9952736614Safresh1L<utf8> has been upgraded from version 1.13 to 1.13_01.
10052736614Safresh1
10152736614Safresh1The documentation has some minor formatting improvements.
10252736614Safresh1
10352736614Safresh1=item *
10452736614Safresh1
10552736614Safresh1L<version> has been upgraded from version 0.9908 to 0.9909.
10652736614Safresh1
10752736614Safresh1External libraries and Perl may have different ideas of what the locale is.
10852736614Safresh1This is problematic when parsing version strings if the locale's numeric
10952736614Safresh1separator has been changed.  Version parsing has been patched to ensure it
11052736614Safresh1handles the locales correctly.
111*256a93a4Safresh1L<[GH #13863]|https://github.com/Perl/perl5/issues/13863>
11252736614Safresh1
11352736614Safresh1=back
11452736614Safresh1
11552736614Safresh1=head1 Documentation
11652736614Safresh1
11752736614Safresh1=head2 Changes to Existing Documentation
11852736614Safresh1
11952736614Safresh1=head3 L<perlapi>
12052736614Safresh1
12152736614Safresh1=over 4
12252736614Safresh1
12352736614Safresh1=item *
12452736614Safresh1
12552736614Safresh1C<av_len> - Emphasize that this returns the highest index in the array, not the
12652736614Safresh1size of the array.
127*256a93a4Safresh1L<[GH #13377]|https://github.com/Perl/perl5/issues/13377>
12852736614Safresh1
12952736614Safresh1=item *
13052736614Safresh1
13152736614Safresh1Note that C<SvSetSV> doesn't do set magic.
13252736614Safresh1
13352736614Safresh1=item *
13452736614Safresh1
13552736614Safresh1C<sv_usepvn_flags> - Fix documentation to mention the use of C<NewX> instead of
13652736614Safresh1C<malloc>.
137*256a93a4Safresh1L<[GH #13835]|https://github.com/Perl/perl5/issues/13835>
13852736614Safresh1
13952736614Safresh1=item *
14052736614Safresh1
14152736614Safresh1Clarify where C<NUL> may be embedded or is required to terminate a string.
14252736614Safresh1
14352736614Safresh1=back
14452736614Safresh1
14552736614Safresh1=head3 L<perlfunc>
14652736614Safresh1
14752736614Safresh1=over 4
14852736614Safresh1
14952736614Safresh1=item *
15052736614Safresh1
15152736614Safresh1Clarify the meaning of C<-B> and C<-T>.
15252736614Safresh1
15352736614Safresh1=item *
15452736614Safresh1
15552736614Safresh1C<-l> now notes that it will return false if symlinks aren't supported by the
15652736614Safresh1file system.
157*256a93a4Safresh1L<[GH #13695]|https://github.com/Perl/perl5/issues/13695>
15852736614Safresh1
15952736614Safresh1=item *
16052736614Safresh1
16152736614Safresh1Note that C<each>, C<keys> and C<values> may produce different orderings for
16252736614Safresh1tied hashes compared to other perl hashes.
163*256a93a4Safresh1L<[GH #13650]|https://github.com/Perl/perl5/issues/13650>
16452736614Safresh1
16552736614Safresh1=item *
16652736614Safresh1
16752736614Safresh1Note that C<exec LIST> and C<system LIST> may fall back to the shell on Win32.
16852736614Safresh1Only C<exec PROGRAM LIST> and C<system PROGRAM LIST> indirect object syntax
16952736614Safresh1will reliably avoid using the shell.  This has also been noted in L<perlport>.
170*256a93a4Safresh1L<[GH #13907]|https://github.com/Perl/perl5/issues/13907>
17152736614Safresh1
17252736614Safresh1=item *
17352736614Safresh1
17452736614Safresh1Clarify the meaning of C<our>.
175*256a93a4Safresh1L<[GH #13938]|https://github.com/Perl/perl5/issues/13938>
17652736614Safresh1
17752736614Safresh1=back
17852736614Safresh1
17952736614Safresh1=head3 L<perlguts>
18052736614Safresh1
18152736614Safresh1=over 4
18252736614Safresh1
18352736614Safresh1=item *
18452736614Safresh1
18552736614Safresh1Explain various ways of modifying an existing SV's buffer.
186*256a93a4Safresh1L<[GH #12813]|https://github.com/Perl/perl5/issues/12813>
18752736614Safresh1
18852736614Safresh1=back
18952736614Safresh1
19052736614Safresh1=head3 L<perlpolicy>
19152736614Safresh1
19252736614Safresh1=over 4
19352736614Safresh1
19452736614Safresh1=item *
19552736614Safresh1
19652736614Safresh1We now have a code of conduct for the I<< p5p >> mailing list, as documented in
19752736614Safresh1L<< perlpolicy/STANDARDS OF CONDUCT >>.
19852736614Safresh1
19952736614Safresh1=back
20052736614Safresh1
20152736614Safresh1=head3 L<perlre>
20252736614Safresh1
20352736614Safresh1=over 4
20452736614Safresh1
20552736614Safresh1=item *
20652736614Safresh1
20752736614Safresh1The C</x> modifier has been clarified to note that comments cannot be continued
20852736614Safresh1onto the next line by escaping them.
20952736614Safresh1
21052736614Safresh1=back
21152736614Safresh1
21252736614Safresh1=head3 L<perlsyn>
21352736614Safresh1
21452736614Safresh1=over 4
21552736614Safresh1
21652736614Safresh1=item *
21752736614Safresh1
21852736614Safresh1Mention the use of empty conditionals in C<for>/C<while> loops for infinite
21952736614Safresh1loops.
22052736614Safresh1
22152736614Safresh1=back
22252736614Safresh1
22352736614Safresh1=head3 L<perlxs>
22452736614Safresh1
22552736614Safresh1=over 4
22652736614Safresh1
22752736614Safresh1=item *
22852736614Safresh1
22952736614Safresh1Added a discussion of locale issues in XS code.
23052736614Safresh1
23152736614Safresh1=back
23252736614Safresh1
23352736614Safresh1=head1 Diagnostics
23452736614Safresh1
23552736614Safresh1The following additions or changes have been made to diagnostic output,
23652736614Safresh1including warnings and fatal error messages.  For the complete list of
23752736614Safresh1diagnostic messages, see L<perldiag>.
23852736614Safresh1
23952736614Safresh1=head2 Changes to Existing Diagnostics
24052736614Safresh1
24152736614Safresh1=over 4
24252736614Safresh1
24352736614Safresh1=item *
24452736614Safresh1
24552736614Safresh1L<Variable length lookbehind not implemented in regex mE<sol>%sE<sol>|perldiag/"Variable length lookbehind not implemented in regex m/%s/">
24652736614Safresh1
24752736614Safresh1Information about Unicode behaviour has been added.
24852736614Safresh1
24952736614Safresh1=back
25052736614Safresh1
25152736614Safresh1=head1 Configuration and Compilation
25252736614Safresh1
25352736614Safresh1=over 4
25452736614Safresh1
25552736614Safresh1=item *
25652736614Safresh1
25752736614Safresh1Building Perl no longer writes to the source tree when configured with
25852736614Safresh1F<Configure>'s B<-Dmksymlinks> option.
259*256a93a4Safresh1L<[GH #13712]|https://github.com/Perl/perl5/issues/13712>
26052736614Safresh1
26152736614Safresh1=back
26252736614Safresh1
26352736614Safresh1=head1 Platform Support
26452736614Safresh1
26552736614Safresh1=head2 Platform-Specific Notes
26652736614Safresh1
26752736614Safresh1=over 4
26852736614Safresh1
26952736614Safresh1=item Android
27052736614Safresh1
27152736614Safresh1Build support has been improved for cross-compiling in general and for Android
27252736614Safresh1in particular.
27352736614Safresh1
27452736614Safresh1=item OpenBSD
27552736614Safresh1
27652736614Safresh1Corrected architectures and version numbers used in configuration hints when
27752736614Safresh1building Perl.
27852736614Safresh1
27952736614Safresh1=item Solaris
28052736614Safresh1
28152736614Safresh1B<c99> options have been cleaned up, hints look for B<solstudio> as well as
28252736614Safresh1B<SUNWspro>, and support for native C<setenv> has been added.
28352736614Safresh1
28452736614Safresh1=item VMS
28552736614Safresh1
28652736614Safresh1An old bug in feature checking, mainly affecting pre-7.3 systems, has been
28752736614Safresh1fixed.
28852736614Safresh1
28952736614Safresh1=item Windows
29052736614Safresh1
29152736614Safresh1C<%I64d> is now being used instead of C<%lld> for MinGW.
29252736614Safresh1
29352736614Safresh1=back
29452736614Safresh1
29552736614Safresh1=head1 Internal Changes
29652736614Safresh1
29752736614Safresh1=over 4
29852736614Safresh1
29952736614Safresh1=item *
30052736614Safresh1
30152736614Safresh1Added L<perlapi/sync_locale>.
30252736614Safresh1Changing the program's locale should be avoided by XS code.  Nevertheless,
30352736614Safresh1certain non-Perl libraries called from XS, such as C<Gtk> do so.  When this
30452736614Safresh1happens, Perl needs to be told that the locale has changed.  Use this function
30552736614Safresh1to do so, before returning to Perl.
30652736614Safresh1
30752736614Safresh1=back
30852736614Safresh1
30952736614Safresh1=head1 Selected Bug Fixes
31052736614Safresh1
31152736614Safresh1=over 4
31252736614Safresh1
31352736614Safresh1=item *
31452736614Safresh1
31552736614Safresh1A bug has been fixed where zero-length assertions and code blocks inside of a
31652736614Safresh1regex could cause C<pos> to see an incorrect value.
317*256a93a4Safresh1L<[GH #14016]|https://github.com/Perl/perl5/issues/14016>
31852736614Safresh1
31952736614Safresh1=item *
32052736614Safresh1
32152736614Safresh1Using C<s///e> on tainted utf8 strings could issue bogus "Malformed UTF-8
32252736614Safresh1character (unexpected end of string)" warnings.  This has now been fixed.
323*256a93a4Safresh1L<[GH #13948]|https://github.com/Perl/perl5/issues/13948>
32452736614Safresh1
32552736614Safresh1=item *
32652736614Safresh1
32752736614Safresh1C<system> and friends should now work properly on more Android builds.
32852736614Safresh1
32952736614Safresh1Due to an oversight, the value specified through B<-Dtargetsh> to F<Configure>
33052736614Safresh1would end up being ignored by some of the build process.  This caused perls
33152736614Safresh1cross-compiled for Android to end up with defective versions of C<system>,
33252736614Safresh1C<exec> and backticks: the commands would end up looking for F</bin/sh> instead
33352736614Safresh1of F</system/bin/sh>, and so would fail for the vast majority of devices,
33452736614Safresh1leaving C<$!> as C<ENOENT>.
33552736614Safresh1
33652736614Safresh1=item *
33752736614Safresh1
33852736614Safresh1Many issues have been detected by L<Coverity|http://www.coverity.com/> and
33952736614Safresh1fixed.
34052736614Safresh1
34152736614Safresh1=back
34252736614Safresh1
34352736614Safresh1=head1 Acknowledgements
34452736614Safresh1
34552736614Safresh1Perl 5.20.1 represents approximately 4 months of development since Perl 5.20.0
34652736614Safresh1and contains approximately 12,000 lines of changes across 170 files from 36
34752736614Safresh1authors.
34852736614Safresh1
34952736614Safresh1Excluding auto-generated files, documentation and release tools, there were
35052736614Safresh1approximately 2,600 lines of changes to 110 .pm, .t, .c and .h files.
35152736614Safresh1
35252736614Safresh1Perl continues to flourish into its third decade thanks to a vibrant community
35352736614Safresh1of users and developers.  The following people are known to have contributed
35452736614Safresh1the improvements that became Perl 5.20.1:
35552736614Safresh1
35652736614Safresh1Aaron Crane, Abigail, Alberto Simões, Alexandr Ciornii, Alexandre (Midnite)
35752736614Safresh1Jousset, Andrew Fresh, Andy Dougherty, Brian Fraser, Chris 'BinGOs' Williams,
35852736614Safresh1Craig A. Berry, Daniel Dragan, David Golden, David Mitchell, H.Merijn Brand,
35952736614Safresh1James E Keenan, Jan Dubois, Jarkko Hietaniemi, John Peacock, kafka, Karen
36052736614Safresh1Etheridge, Karl Williamson, Lukas Mai, Matthew Horsfall, Michael Bunk, Peter
36152736614Safresh1Martini, Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Shirakata Kentaro,
36252736614Safresh1Smylers, Steve Hay, Thomas Sibley, Todd Rinaldo, Tony Cook, Vladimir Marek,
36352736614Safresh1Yves Orton.
36452736614Safresh1
36552736614Safresh1The list above is almost certainly incomplete as it is automatically generated
36652736614Safresh1from version control history.  In particular, it does not include the names of
36752736614Safresh1the (very much appreciated) contributors who reported issues to the Perl bug
36852736614Safresh1tracker.
36952736614Safresh1
37052736614Safresh1Many of the changes included in this version originated in the CPAN modules
37152736614Safresh1included in Perl's core.  We're grateful to the entire CPAN community for
37252736614Safresh1helping Perl to flourish.
37352736614Safresh1
37452736614Safresh1For a more complete list of all of Perl's historical contributors, please see
37552736614Safresh1the F<AUTHORS> file in the Perl source distribution.
37652736614Safresh1
37752736614Safresh1=head1 Reporting Bugs
37852736614Safresh1
37952736614Safresh1If you find what you think is a bug, you might check the articles recently
38052736614Safresh1posted to the comp.lang.perl.misc newsgroup and the perl bug database at
38152736614Safresh1https://rt.perl.org/ .  There may also be information at http://www.perl.org/ ,
38252736614Safresh1the Perl Home Page.
38352736614Safresh1
38452736614Safresh1If you believe you have an unreported bug, please run the L<perlbug> program
38552736614Safresh1included with your release.  Be sure to trim your bug down to a tiny but
38652736614Safresh1sufficient test case.  Your bug report, along with the output of C<perl -V>,
38752736614Safresh1will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
38852736614Safresh1
38952736614Safresh1If the bug you are reporting has security implications, which make it
39052736614Safresh1inappropriate to send to a publicly archived mailing list, then please send it
39152736614Safresh1to perl5-security-report@perl.org.  This points to a closed subscription
39252736614Safresh1unarchived mailing list, which includes all the core committers, who will be
39352736614Safresh1able to help assess the impact of issues, figure out a resolution, and help
39452736614Safresh1co-ordinate the release of patches to mitigate or fix the problem across all
39552736614Safresh1platforms on which Perl is supported.  Please only use this address for
39652736614Safresh1security issues in the Perl core, not for modules independently distributed on
39752736614Safresh1CPAN.
39852736614Safresh1
39952736614Safresh1=head1 SEE ALSO
40052736614Safresh1
40152736614Safresh1The F<Changes> file for an explanation of how to view exhaustive details on
40252736614Safresh1what changed.
40352736614Safresh1
40452736614Safresh1The F<INSTALL> file for how to build Perl.
40552736614Safresh1
40652736614Safresh1The F<README> file for general stuff.
40752736614Safresh1
40852736614Safresh1The F<Artistic> and F<Copying> files for copyright information.
40952736614Safresh1
41052736614Safresh1=cut
411