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