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