| 1 | =encoding utf8 |
| 2 | |
| 3 | =head1 NAME |
| 4 | |
| 5 | perl5251delta - what is new for perl v5.25.1 |
| 6 | |
| 7 | =head1 DESCRIPTION |
| 8 | |
| 9 | This document describes differences between the 5.25.0 release and the 5.25.1 |
| 10 | release. |
| 11 | |
| 12 | If you are upgrading from an earlier release such as 5.24.0, first read |
| 13 | L<perl5250delta>, which describes differences between 5.24.0 and 5.25.0. |
| 14 | |
| 15 | =head1 Core Enhancements |
| 16 | |
| 17 | =head2 POSIX::tmpnam() has been removed |
| 18 | |
| 19 | The fundamentally unsafe C<tmpnam()> interface was deprecated in |
| 20 | Perl 5.22.0 and has now been removed. In its place you can use |
| 21 | for example the L<File::Temp> interfaces. |
| 22 | |
| 23 | =head2 require ::Foo::Bar is now illegal. |
| 24 | |
| 25 | Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any |
| 26 | bareword require which starts with a double colon dies instead. |
| 27 | |
| 28 | =head2 Unescaped literal C<"{"> characters in regular expression |
| 29 | patterns are no longer permissible |
| 30 | |
| 31 | You have to now say something like C<"\{"> or C<"[{]"> to specify to |
| 32 | match a LEFT CURLY BRACKET. This will allow future extensions to the |
| 33 | language. This restriction is not enforced, nor are there current plans |
| 34 | to enforce it, if the C<"{"> is the first character in the pattern. |
| 35 | |
| 36 | These have been deprecated since v5.16, with a deprecation message |
| 37 | displayed starting in v5.22. |
| 38 | |
| 39 | =head2 Literal control character variable names are no longer permissible |
| 40 | |
| 41 | A variable name may no longer contain a literal control character under |
| 42 | any circumstances. These previously were allowed in single-character |
| 43 | names on ASCII platforms, but have been deprecated there since Perl |
| 44 | v5.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal |
| 45 | control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the |
| 46 | source code. |
| 47 | |
| 48 | =head2 C<qr//xx> is no longer permissible |
| 49 | |
| 50 | Using more than one C</x> regular expression pattern modifier on a |
| 51 | single pattern is now forbidden. This is to allow a future enhancement |
| 52 | to the language. This usage has been deprecated since v5.22. |
| 53 | |
| 54 | =head2 C<NBSP> is no longer permissible in C<\N{...}> |
| 55 | |
| 56 | The name of a character may no longer contain non-breaking spaces. It |
| 57 | has been deprecated to do so since Perl v5.22. |
| 58 | |
| 59 | =head1 Performance Enhancements |
| 60 | |
| 61 | =over 4 |
| 62 | |
| 63 | =item * |
| 64 | |
| 65 | Bareword constant strings are now permitted to take part in constant |
| 66 | folding. They were originally exempted from constant folding in August 1999, |
| 67 | during the development of Perl 5.6, to ensure that C<use strict "subs"> |
| 68 | would still apply to bareword constants. That has now been accomplished a |
| 69 | different way, so barewords, like other constants, now gain the performance |
| 70 | benefits of constant folding. |
| 71 | |
| 72 | This also means that void-context warnings on constant expressions of |
| 73 | barewords now report the folded constant operand, rather than the operation; |
| 74 | this matches the behaviour for non-bareword constants. |
| 75 | |
| 76 | =back |
| 77 | |
| 78 | =head1 Modules and Pragmata |
| 79 | |
| 80 | =head2 Updated Modules and Pragmata |
| 81 | |
| 82 | =over 4 |
| 83 | |
| 84 | =item * |
| 85 | |
| 86 | L<Archive::Tar> has been upgraded from version 2.04 to 2.08. |
| 87 | |
| 88 | =item * |
| 89 | |
| 90 | L<Carp> has been upgraded from version 1.40 to 1.41. |
| 91 | |
| 92 | =item * |
| 93 | |
| 94 | L<charnames> has been upgraded from version 1.43 to 1.44. |
| 95 | |
| 96 | =item * |
| 97 | |
| 98 | L<Config::Perl::V> has been upgraded from version 0.25 to 0.26. |
| 99 | |
| 100 | =item * |
| 101 | |
| 102 | L<DB_File> has been upgraded from version 1.835 to 1.838. |
| 103 | |
| 104 | =item * |
| 105 | |
| 106 | L<Digest::MD5> has been upgraded from version 2.54 to 2.55. |
| 107 | |
| 108 | =item * |
| 109 | |
| 110 | L<IPC::Cmd> has been upgraded from version 0.92 to 0.94. |
| 111 | |
| 112 | =item * |
| 113 | |
| 114 | L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07. |
| 115 | |
| 116 | =item * |
| 117 | |
| 118 | L<List::Util> has been upgraded from version 1.42_02 to 1.45_01. |
| 119 | |
| 120 | =item * |
| 121 | |
| 122 | L<Locale::Codes> has been upgraded from version 3.37 to 3.38. |
| 123 | |
| 124 | =item * |
| 125 | |
| 126 | L<Locale::Maketext> has been upgraded from version 1.26 to 1.27. |
| 127 | |
| 128 | =item * |
| 129 | |
| 130 | L<Module::CoreList> has been upgraded from version 5.20160507 to 5.20160520. |
| 131 | |
| 132 | =item * |
| 133 | |
| 134 | L<Module::Metadata> has been upgraded from version 1.000031 to 1.000032. |
| 135 | |
| 136 | =item * |
| 137 | |
| 138 | L<perlfaq> has been upgraded from version 5.021010 to 5.021011. |
| 139 | |
| 140 | =item * |
| 141 | |
| 142 | L<POSIX> has been upgraded from version 1.65 to 1.69. This remedies several |
| 143 | defects in making its symbols exportable. [perl #127821] |
| 144 | The C<POSIX::tmpnam()> interface has been removed, |
| 145 | see L</"POSIX::tmpnam() has been removed">. |
| 146 | Trying to import POSIX subs that have no real implementations |
| 147 | (like C<POSIX::atend()>) now fails at import time, instead of |
| 148 | waiting until runtime. |
| 149 | |
| 150 | =item * |
| 151 | |
| 152 | L<re> has been upgraded from version 0.32 to 0.33. |
| 153 | |
| 154 | =item * |
| 155 | |
| 156 | L<Scalar::Util> has been upgraded from version 1.42_02 to 1.45_01. |
| 157 | |
| 158 | =item * |
| 159 | |
| 160 | L<Sys::Syslog> has been upgraded from version 0.33 to 0.34. |
| 161 | |
| 162 | =item * |
| 163 | |
| 164 | L<Term::ANSIColor> has been upgraded from version 4.04 to 4.05. |
| 165 | |
| 166 | =item * |
| 167 | |
| 168 | L<Test::Simple> has been upgraded from version 1.001014 to 1.302015. |
| 169 | |
| 170 | =item * |
| 171 | |
| 172 | L<threads> has been upgraded from version 2.07 to 2.08. Compatibility |
| 173 | with 5.8 has been restored. |
| 174 | |
| 175 | =item * |
| 176 | |
| 177 | L<threads::shared> has been upgraded from version 1.51 to 1.52. |
| 178 | Compatibility with 5.8 has been restored. |
| 179 | |
| 180 | =back |
| 181 | |
| 182 | =head1 Documentation |
| 183 | |
| 184 | =head2 Changes to Existing Documentation |
| 185 | |
| 186 | =over 4 |
| 187 | |
| 188 | =item * |
| 189 | |
| 190 | Fixed link to Crosby paper on hash complexity attack in L<perlsec>. |
| 191 | |
| 192 | =back |
| 193 | |
| 194 | =head1 Diagnostics |
| 195 | |
| 196 | =head2 New Diagnostics |
| 197 | |
| 198 | =head3 New Errors |
| 199 | |
| 200 | =over 4 |
| 201 | |
| 202 | =item * |
| 203 | |
| 204 | L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s""> |
| 205 | |
| 206 | =item * |
| 207 | |
| 208 | L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename"> |
| 209 | |
| 210 | =item * |
| 211 | |
| 212 | L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s""> |
| 213 | |
| 214 | =item * |
| 215 | |
| 216 | L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s""> |
| 217 | |
| 218 | =back |
| 219 | |
| 220 | =head2 Changes to Existing Diagnostics |
| 221 | |
| 222 | =over 4 |
| 223 | |
| 224 | =item * |
| 225 | |
| 226 | Code like C<$x = $x . "a"> was incorrectly failing to yield a |
| 227 | L<use of uninitialized value|perldiag/"Use of uninitialized value%s"> |
| 228 | warning when C<$x> was a lexical variable with an undefined value. That has |
| 229 | now been fixed. [perl #127877] |
| 230 | |
| 231 | =item * |
| 232 | |
| 233 | When the error "Experimental push on scalar is now forbidden" is raised for |
| 234 | the hash functions C<keys>, C<each>, and C<values>, it is now followed by |
| 235 | the more helpful message, "Type of arg 1 to whatever must be hash or |
| 236 | array". [perl #127976] |
| 237 | |
| 238 | =item * |
| 239 | |
| 240 | C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no |
| 241 | argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now |
| 242 | been fixed. |
| 243 | |
| 244 | =item * |
| 245 | |
| 246 | C<< "string$scalar-E<gt>$*" >> now correctly prefers concat overloading to |
| 247 | string overloading if C<< $scalar-E<gt>$* >> returns an overloaded object, |
| 248 | bringing it into consistency with C<$$scalar>. |
| 249 | |
| 250 | =item * |
| 251 | |
| 252 | C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer |
| 253 | do, but merely produce a syntax error. [perl #128171] |
| 254 | |
| 255 | =item * |
| 256 | |
| 257 | C<do> or C<require> with a reference or typeglob which, when stringified, |
| 258 | contains a null character started crashing in Perl 5.20.0, but has now been |
| 259 | fixed. [perl #128182] |
| 260 | |
| 261 | =back |
| 262 | |
| 263 | =head1 Utility Changes |
| 264 | |
| 265 | =head2 L<perlbug> |
| 266 | |
| 267 | =over 4 |
| 268 | |
| 269 | =item * |
| 270 | |
| 271 | Long lines in the message body are now wrapped at 900 characters, to stay |
| 272 | well within the 1000-character limit imposed by SMTP mail transfer agents. |
| 273 | This is particularly likely to be important for the list of arguments to |
| 274 | C<Configure>, which can readily exceed the limit if, for example, it names |
| 275 | several non-default installation paths. This change also adds the first unit |
| 276 | tests for perlbug. [perl #128020] |
| 277 | |
| 278 | =back |
| 279 | |
| 280 | =head1 Configuration and Compilation |
| 281 | |
| 282 | =over 4 |
| 283 | |
| 284 | =item * |
| 285 | |
| 286 | C<Configure> now builds C<miniperl> and C<generate_uudmap> if you |
| 287 | invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>. |
| 288 | This means you can supply your target platform C<config.sh>, generate |
| 289 | the headers and proceed to build your cross-target perl. [perl #127234] |
| 290 | |
| 291 | =item * |
| 292 | |
| 293 | Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator |
| 294 | counts when the environment variable C<PERL_TRACE_OPS> to be set to a |
| 295 | non-zero integer. This allows C<make test> to pass on such a build. |
| 296 | |
| 297 | =item * |
| 298 | |
| 299 | When building with GCC 6 and link-time optimization (the C<-flto> option to |
| 300 | C<gcc>), C<Configure> was treating all probed symbols as present on the |
| 301 | system, regardless of whether they actually exist. This has been fixed. |
| 302 | [perl #128131] |
| 303 | |
| 304 | =item * |
| 305 | |
| 306 | The F<t/test.pl> library is used for internal testing of Perl itself, and |
| 307 | also copied by several CPAN modules. Some of those modules must work on |
| 308 | older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl |
| 309 | features. Compatibility with Perl 5.8 was inadvertently removed some time |
| 310 | ago; it has now been restored. [perl #128052] |
| 311 | |
| 312 | =item * |
| 313 | |
| 314 | The build process no longer emits an extra blank line before building each |
| 315 | "simple" extension (those with only F<*.pm> and F<*.pod> files). |
| 316 | |
| 317 | =back |
| 318 | |
| 319 | =head1 Internal Changes |
| 320 | |
| 321 | =over 4 |
| 322 | |
| 323 | =item * |
| 324 | |
| 325 | Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by |
| 326 | default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define. |
| 327 | This flag alters how the C<op_sibling> field is used in C<OP> structures, |
| 328 | and has been available optionally since perl 5.22.0. |
| 329 | |
| 330 | See L<perl5220delta/"Internal Changes"> for more details of what this |
| 331 | build option does. |
| 332 | |
| 333 | =back |
| 334 | |
| 335 | =head1 Selected Bug Fixes |
| 336 | |
| 337 | =over 4 |
| 338 | |
| 339 | =item * |
| 340 | |
| 341 | Expressions containing an C<&&> or C<||> operator (or their synonyms C<and> |
| 342 | and C<or>) were being compiled incorrectly in some cases. If the left-hand |
| 343 | side consisted of either a negated bareword constant or a negated C<do {}> |
| 344 | block containing a constant expression, and the right-hand side consisted of |
| 345 | a negated non-foldable expression, one of the negations was effectively |
| 346 | ignored. The same was true of C<if> and C<unless> statement modifiers, |
| 347 | though with the left-hand and right-hand sides swapped. This long-standing |
| 348 | bug has now been fixed. [perl #127952] |
| 349 | |
| 350 | =item * |
| 351 | |
| 352 | C<reset> with an argument no longer crashes when encountering stash entries |
| 353 | other than globs. [perl #128106] |
| 354 | |
| 355 | =item * |
| 356 | |
| 357 | Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no |
| 358 | longer causes crashes. [perl #128086] |
| 359 | |
| 360 | =back |
| 361 | |
| 362 | =head1 Acknowledgements |
| 363 | |
| 364 | Perl 5.25.1 represents approximately 2 weeks of development since Perl 5.25.0 |
| 365 | and contains approximately 46,000 lines of changes across 630 files from 24 |
| 366 | authors. |
| 367 | |
| 368 | Excluding auto-generated files, documentation and release tools, there were |
| 369 | approximately 40,000 lines of changes to 510 .pm, .t, .c and .h files. |
| 370 | |
| 371 | Perl continues to flourish into its third decade thanks to a vibrant community |
| 372 | of users and developers. The following people are known to have contributed the |
| 373 | improvements that became Perl 5.25.1: |
| 374 | |
| 375 | Aaron Crane, Andreas Voegele, Chad Granum, Chris 'BinGOs' Williams, Craig A. |
| 376 | Berry, David Mitchell, Doug Bell, Father Chrysostomos, H.Merijn Brand, Hugo van |
| 377 | der Sanden, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, John Lightsey, |
| 378 | Karen Etheridge, Karl Williamson, Lukas Mai, Maxwell Carey, Nicholas Clark, |
| 379 | Niko Tyni, Ricardo Signes, Sawyer X, Tony Cook, Yves Orton. |
| 380 | |
| 381 | The list above is almost certainly incomplete as it is automatically generated |
| 382 | from version control history. In particular, it does not include the names of |
| 383 | the (very much appreciated) contributors who reported issues to the Perl bug |
| 384 | tracker. |
| 385 | |
| 386 | Many of the changes included in this version originated in the CPAN modules |
| 387 | included in Perl's core. We're grateful to the entire CPAN community for |
| 388 | helping Perl to flourish. |
| 389 | |
| 390 | For a more complete list of all of Perl's historical contributors, please see |
| 391 | the F<AUTHORS> file in the Perl source distribution. |
| 392 | |
| 393 | =head1 Reporting Bugs |
| 394 | |
| 395 | If you find what you think is a bug, you might check the articles recently |
| 396 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at |
| 397 | L<https://rt.perl.org/> . There may also be information at |
| 398 | L<http://www.perl.org/> , the Perl Home Page. |
| 399 | |
| 400 | If you believe you have an unreported bug, please run the L<perlbug> program |
| 401 | included with your release. Be sure to trim your bug down to a tiny but |
| 402 | sufficient test case. Your bug report, along with the output of C<perl -V>, |
| 403 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. |
| 404 | |
| 405 | If the bug you are reporting has security implications which make it |
| 406 | inappropriate to send to a publicly archived mailing list, then see |
| 407 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> |
| 408 | for details of how to report the issue. |
| 409 | |
| 410 | =head1 SEE ALSO |
| 411 | |
| 412 | The F<Changes> file for an explanation of how to view exhaustive details on |
| 413 | what changed. |
| 414 | |
| 415 | The F<INSTALL> file for how to build Perl. |
| 416 | |
| 417 | The F<README> file for general stuff. |
| 418 | |
| 419 | The F<Artistic> and F<Copying> files for copyright information. |
| 420 | |
| 421 | =cut |