1=encoding utf8 2 3=head1 NAME 4 5perl5201delta - what is new for perl v5.20.1 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.20.0 release and the 5.20.1 10release. 11 12If you are upgrading from an earlier release such as 5.18.0, first read 13L<perl5200delta>, which describes differences between 5.18.0 and 5.20.0. 14 15=head1 Incompatible Changes 16 17There are no changes intentionally incompatible with 5.20.0. If any exist, 18they are bugs, and we request that you submit a report. See L</Reporting Bugs> 19below. 20 21=head1 Performance Enhancements 22 23=over 4 24 25=item * 26 27An optimization to avoid problems with COW and deliberately overallocated PVs 28has been disabled because it interfered with another, more important, 29optimization, causing a slowdown on some platforms. 30L<[GH #13878]|https://github.com/Perl/perl5/issues/13878> 31 32=item * 33 34Returning a string from a lexical variable could be slow in some cases. This 35has now been fixed. 36L<[GH #13880]|https://github.com/Perl/perl5/issues/13880> 37 38=back 39 40=head1 Modules and Pragmata 41 42=head2 Updated Modules and Pragmata 43 44=over 4 45 46=item * 47 48L<Config::Perl::V> has been upgraded from version 0.20 to 0.22. 49 50The list of Perl versions covered has been updated and some flaws in the 51parsing have been fixed. 52 53=item * 54 55L<Exporter> has been upgraded from version 5.70 to 5.71. 56 57Illegal POD syntax in the documentation has been corrected. 58 59=item * 60 61L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280217. 62 63Android builds now link to both B<-lperl> and C<$Config::Config{perllibs}>. 64 65=item * 66 67L<File::Copy> has been upgraded from version 2.29 to 2.30. 68 69The documentation now notes that C<copy> will not overwrite read-only files. 70 71=item * 72 73L<Module::CoreList> has been upgraded from version 3.11 to 5.020001. 74 75The list of Perl versions covered has been updated. 76 77=item * 78 79The PathTools module collection has been upgraded from version 3.47 to 3.48. 80 81Fallbacks are now in place when cross-compiling for Android and 82C<$Config::Config{sh}> is not yet defined. 83L<[GH #13872]|https://github.com/Perl/perl5/issues/13872> 84 85=item * 86 87L<PerlIO::via> has been upgraded from version 0.14 to 0.15. 88 89A minor portability improvement has been made to the XS implementation. 90 91=item * 92 93L<Unicode::UCD> has been upgraded from version 0.57 to 0.58. 94 95The documentation includes many clarifications and fixes. 96 97=item * 98 99L<utf8> has been upgraded from version 1.13 to 1.13_01. 100 101The documentation has some minor formatting improvements. 102 103=item * 104 105L<version> has been upgraded from version 0.9908 to 0.9909. 106 107External libraries and Perl may have different ideas of what the locale is. 108This is problematic when parsing version strings if the locale's numeric 109separator has been changed. Version parsing has been patched to ensure it 110handles the locales correctly. 111L<[GH #13863]|https://github.com/Perl/perl5/issues/13863> 112 113=back 114 115=head1 Documentation 116 117=head2 Changes to Existing Documentation 118 119=head3 L<perlapi> 120 121=over 4 122 123=item * 124 125C<av_len> - Emphasize that this returns the highest index in the array, not the 126size of the array. 127L<[GH #13377]|https://github.com/Perl/perl5/issues/13377> 128 129=item * 130 131Note that C<SvSetSV> doesn't do set magic. 132 133=item * 134 135C<sv_usepvn_flags> - Fix documentation to mention the use of C<NewX> instead of 136C<malloc>. 137L<[GH #13835]|https://github.com/Perl/perl5/issues/13835> 138 139=item * 140 141Clarify where C<NUL> may be embedded or is required to terminate a string. 142 143=back 144 145=head3 L<perlfunc> 146 147=over 4 148 149=item * 150 151Clarify the meaning of C<-B> and C<-T>. 152 153=item * 154 155C<-l> now notes that it will return false if symlinks aren't supported by the 156file system. 157L<[GH #13695]|https://github.com/Perl/perl5/issues/13695> 158 159=item * 160 161Note that C<each>, C<keys> and C<values> may produce different orderings for 162tied hashes compared to other perl hashes. 163L<[GH #13650]|https://github.com/Perl/perl5/issues/13650> 164 165=item * 166 167Note that C<exec LIST> and C<system LIST> may fall back to the shell on Win32. 168Only C<exec PROGRAM LIST> and C<system PROGRAM LIST> indirect object syntax 169will reliably avoid using the shell. This has also been noted in L<perlport>. 170L<[GH #13907]|https://github.com/Perl/perl5/issues/13907> 171 172=item * 173 174Clarify the meaning of C<our>. 175L<[GH #13938]|https://github.com/Perl/perl5/issues/13938> 176 177=back 178 179=head3 L<perlguts> 180 181=over 4 182 183=item * 184 185Explain various ways of modifying an existing SV's buffer. 186L<[GH #12813]|https://github.com/Perl/perl5/issues/12813> 187 188=back 189 190=head3 L<perlpolicy> 191 192=over 4 193 194=item * 195 196We now have a code of conduct for the I<< p5p >> mailing list, as documented in 197L<< perlpolicy/STANDARDS OF CONDUCT >>. 198 199=back 200 201=head3 L<perlre> 202 203=over 4 204 205=item * 206 207The C</x> modifier has been clarified to note that comments cannot be continued 208onto the next line by escaping them. 209 210=back 211 212=head3 L<perlsyn> 213 214=over 4 215 216=item * 217 218Mention the use of empty conditionals in C<for>/C<while> loops for infinite 219loops. 220 221=back 222 223=head3 L<perlxs> 224 225=over 4 226 227=item * 228 229Added a discussion of locale issues in XS code. 230 231=back 232 233=head1 Diagnostics 234 235The following additions or changes have been made to diagnostic output, 236including warnings and fatal error messages. For the complete list of 237diagnostic messages, see L<perldiag>. 238 239=head2 Changes to Existing Diagnostics 240 241=over 4 242 243=item * 244 245L<Variable length lookbehind not implemented in regex mE<sol>%sE<sol>|perldiag/"Variable length lookbehind not implemented in regex m/%s/"> 246 247Information about Unicode behaviour has been added. 248 249=back 250 251=head1 Configuration and Compilation 252 253=over 4 254 255=item * 256 257Building Perl no longer writes to the source tree when configured with 258F<Configure>'s B<-Dmksymlinks> option. 259L<[GH #13712]|https://github.com/Perl/perl5/issues/13712> 260 261=back 262 263=head1 Platform Support 264 265=head2 Platform-Specific Notes 266 267=over 4 268 269=item Android 270 271Build support has been improved for cross-compiling in general and for Android 272in particular. 273 274=item OpenBSD 275 276Corrected architectures and version numbers used in configuration hints when 277building Perl. 278 279=item Solaris 280 281B<c99> options have been cleaned up, hints look for B<solstudio> as well as 282B<SUNWspro>, and support for native C<setenv> has been added. 283 284=item VMS 285 286An old bug in feature checking, mainly affecting pre-7.3 systems, has been 287fixed. 288 289=item Windows 290 291C<%I64d> is now being used instead of C<%lld> for MinGW. 292 293=back 294 295=head1 Internal Changes 296 297=over 4 298 299=item * 300 301Added L<perlapi/sync_locale>. 302Changing the program's locale should be avoided by XS code. Nevertheless, 303certain non-Perl libraries called from XS, such as C<Gtk> do so. When this 304happens, Perl needs to be told that the locale has changed. Use this function 305to do so, before returning to Perl. 306 307=back 308 309=head1 Selected Bug Fixes 310 311=over 4 312 313=item * 314 315A bug has been fixed where zero-length assertions and code blocks inside of a 316regex could cause C<pos> to see an incorrect value. 317L<[GH #14016]|https://github.com/Perl/perl5/issues/14016> 318 319=item * 320 321Using C<s///e> on tainted utf8 strings could issue bogus "Malformed UTF-8 322character (unexpected end of string)" warnings. This has now been fixed. 323L<[GH #13948]|https://github.com/Perl/perl5/issues/13948> 324 325=item * 326 327C<system> and friends should now work properly on more Android builds. 328 329Due to an oversight, the value specified through B<-Dtargetsh> to F<Configure> 330would end up being ignored by some of the build process. This caused perls 331cross-compiled for Android to end up with defective versions of C<system>, 332C<exec> and backticks: the commands would end up looking for F</bin/sh> instead 333of F</system/bin/sh>, and so would fail for the vast majority of devices, 334leaving C<$!> as C<ENOENT>. 335 336=item * 337 338Many issues have been detected by L<Coverity|http://www.coverity.com/> and 339fixed. 340 341=back 342 343=head1 Acknowledgements 344 345Perl 5.20.1 represents approximately 4 months of development since Perl 5.20.0 346and contains approximately 12,000 lines of changes across 170 files from 36 347authors. 348 349Excluding auto-generated files, documentation and release tools, there were 350approximately 2,600 lines of changes to 110 .pm, .t, .c and .h files. 351 352Perl continues to flourish into its third decade thanks to a vibrant community 353of users and developers. The following people are known to have contributed 354the improvements that became Perl 5.20.1: 355 356Aaron Crane, Abigail, Alberto Simões, Alexandr Ciornii, Alexandre (Midnite) 357Jousset, Andrew Fresh, Andy Dougherty, Brian Fraser, Chris 'BinGOs' Williams, 358Craig A. Berry, Daniel Dragan, David Golden, David Mitchell, H.Merijn Brand, 359James E Keenan, Jan Dubois, Jarkko Hietaniemi, John Peacock, kafka, Karen 360Etheridge, Karl Williamson, Lukas Mai, Matthew Horsfall, Michael Bunk, Peter 361Martini, Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Shirakata Kentaro, 362Smylers, Steve Hay, Thomas Sibley, Todd Rinaldo, Tony Cook, Vladimir Marek, 363Yves Orton. 364 365The list above is almost certainly incomplete as it is automatically generated 366from version control history. In particular, it does not include the names of 367the (very much appreciated) contributors who reported issues to the Perl bug 368tracker. 369 370Many of the changes included in this version originated in the CPAN modules 371included in Perl's core. We're grateful to the entire CPAN community for 372helping Perl to flourish. 373 374For a more complete list of all of Perl's historical contributors, please see 375the F<AUTHORS> file in the Perl source distribution. 376 377=head1 Reporting Bugs 378 379If you find what you think is a bug, you might check the articles recently 380posted to the comp.lang.perl.misc newsgroup and the perl bug database at 381https://rt.perl.org/ . There may also be information at http://www.perl.org/ , 382the Perl Home Page. 383 384If you believe you have an unreported bug, please run the L<perlbug> program 385included with your release. Be sure to trim your bug down to a tiny but 386sufficient test case. Your bug report, along with the output of C<perl -V>, 387will be sent off to perlbug@perl.org to be analysed by the Perl porting team. 388 389If the bug you are reporting has security implications, which make it 390inappropriate to send to a publicly archived mailing list, then please send it 391to perl5-security-report@perl.org. This points to a closed subscription 392unarchived mailing list, which includes all the core committers, who will be 393able to help assess the impact of issues, figure out a resolution, and help 394co-ordinate the release of patches to mitigate or fix the problem across all 395platforms on which Perl is supported. Please only use this address for 396security issues in the Perl core, not for modules independently distributed on 397CPAN. 398 399=head1 SEE ALSO 400 401The F<Changes> file for an explanation of how to view exhaustive details on 402what changed. 403 404The F<INSTALL> file for how to build Perl. 405 406The F<README> file for general stuff. 407 408The F<Artistic> and F<Copying> files for copyright information. 409 410=cut 411