| 1 | =encoding utf8 |
| 2 | |
| 3 | =head1 NAME |
| 4 | |
| 5 | perl5254delta - what is new for perl v5.25.4 |
| 6 | |
| 7 | =head1 DESCRIPTION |
| 8 | |
| 9 | This document describes differences between the 5.25.3 release and the 5.25.4 |
| 10 | release. |
| 11 | |
| 12 | If you are upgrading from an earlier release such as 5.25.2, first read |
| 13 | L<perl5253delta>, which describes differences between 5.25.2 and 5.25.3. |
| 14 | |
| 15 | =head1 Performance Enhancements |
| 16 | |
| 17 | =over 4 |
| 18 | |
| 19 | =item * |
| 20 | |
| 21 | The rather slow implementation for the experimental subroutine signatures |
| 22 | feature has been made much faster; it is now comparable in speed with the |
| 23 | old-style C<my ($a, $b, @c) = @_>. |
| 24 | |
| 25 | =back |
| 26 | |
| 27 | =head1 Documentation |
| 28 | |
| 29 | =head2 Changes to Existing Documentation |
| 30 | |
| 31 | =head3 L<perlcall> |
| 32 | |
| 33 | =over 4 |
| 34 | |
| 35 | =item * |
| 36 | |
| 37 | Removed redundant C<dSP> from an example. |
| 38 | |
| 39 | =back |
| 40 | |
| 41 | =head1 Modules and Pragmata |
| 42 | |
| 43 | =head2 Updated Modules and Pragmata |
| 44 | |
| 45 | =over 4 |
| 46 | |
| 47 | =item * |
| 48 | |
| 49 | L<Archive::Tar> has been upgraded from version 2.08 to 2.10. |
| 50 | |
| 51 | =item * |
| 52 | |
| 53 | L<arybase> has been upgraded from version 0.11 to 0.12. |
| 54 | |
| 55 | =item * |
| 56 | |
| 57 | L<B> has been upgraded from version 1.62 to 1.63. |
| 58 | |
| 59 | =item * |
| 60 | |
| 61 | L<B::Concise> has been upgraded from version 0.996 to 0.998. |
| 62 | |
| 63 | =item * |
| 64 | |
| 65 | L<B::Deparse> has been upgraded from version 1.37 to 1.38. |
| 66 | |
| 67 | =item * |
| 68 | |
| 69 | L<base> has been upgraded from version 2.23 to 2.24. |
| 70 | |
| 71 | =item * |
| 72 | |
| 73 | L<bignum> has been upgraded from version 0.43 to 0.43_01. |
| 74 | |
| 75 | =item * |
| 76 | |
| 77 | L<Carp> has been upgraded from version 1.41 to 1.42. |
| 78 | |
| 79 | =item * |
| 80 | |
| 81 | L<Config::Perl::V> has been upgraded from version 0.26 to 0.27. |
| 82 | |
| 83 | =item * |
| 84 | |
| 85 | L<CPAN> has been upgraded from version 2.14 to 2.14_01. |
| 86 | |
| 87 | =item * |
| 88 | |
| 89 | L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010. |
| 90 | |
| 91 | =item * |
| 92 | |
| 93 | L<Digest> has been upgraded from version 1.17 to 1.17_01. |
| 94 | |
| 95 | =item * |
| 96 | |
| 97 | L<Digest::SHA> has been upgraded from version 5.95 to 5.96. |
| 98 | |
| 99 | =item * |
| 100 | |
| 101 | L<Encode> has been upgraded from version 2.84 to 2.86. |
| 102 | |
| 103 | =item * |
| 104 | |
| 105 | L<encoding> has been upgraded from version 2.17_01 to 2.18. |
| 106 | |
| 107 | =item * |
| 108 | |
| 109 | L<Errno> has been upgraded from version 1.25 to 1.26. |
| 110 | |
| 111 | =item * |
| 112 | |
| 113 | L<ExtUtils::MakeMaker> has been upgraded from version 7.18 to 7.24. |
| 114 | |
| 115 | =item * |
| 116 | |
| 117 | L<File::Fetch> has been upgraded from version 0.48 to 0.52. |
| 118 | |
| 119 | =item * |
| 120 | |
| 121 | L<File::Spec> has been upgraded from version 3.64 to 3.65. |
| 122 | |
| 123 | =item * |
| 124 | |
| 125 | L<Hash::Util> has been upgraded from version 0.20 to 0.21. |
| 126 | |
| 127 | =item * |
| 128 | |
| 129 | L<HTTP::Tiny> has been upgraded from version 0.058 to 0.064. |
| 130 | |
| 131 | =item * |
| 132 | |
| 133 | L<I18N::LangTags> has been upgraded from version 0.40 to 0.41. |
| 134 | |
| 135 | =item * |
| 136 | |
| 137 | L<IO> has been upgraded from version 1.36 to 1.37. |
| 138 | |
| 139 | =item * |
| 140 | |
| 141 | L<IO-Compress> has been upgraded from version 2.069 to 2.069_01. |
| 142 | |
| 143 | =item * |
| 144 | |
| 145 | L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38. |
| 146 | |
| 147 | =item * |
| 148 | |
| 149 | L<IPC::Cmd> has been upgraded from version 0.94 to 0.96. |
| 150 | |
| 151 | =item * |
| 152 | |
| 153 | L<JSON::PP> has been upgraded from version 2.27400 to 2.27400_01. |
| 154 | |
| 155 | =item * |
| 156 | |
| 157 | L<Locale::Maketext> has been upgraded from version 1.27 to 1.28. |
| 158 | |
| 159 | =item * |
| 160 | |
| 161 | L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01. |
| 162 | |
| 163 | =item * |
| 164 | |
| 165 | L<Memoize> has been upgraded from version 1.03 to 1.03_01. |
| 166 | |
| 167 | =item * |
| 168 | |
| 169 | L<Module::CoreList> has been upgraded from version 5.20160720 to 5.20160820. |
| 170 | |
| 171 | =item * |
| 172 | |
| 173 | L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68. |
| 174 | |
| 175 | =item * |
| 176 | |
| 177 | L<Module::Metadata> has been upgraded from version 1.000032 to 1.000033. |
| 178 | |
| 179 | =item * |
| 180 | |
| 181 | L<Net::Ping> has been upgraded from version 2.43 to 2.44. |
| 182 | |
| 183 | =item * |
| 184 | |
| 185 | L<NEXT> has been upgraded from version 0.65 to 0.67. |
| 186 | |
| 187 | =item * |
| 188 | |
| 189 | L<Opcode> has been upgraded from version 1.35 to 1.37. |
| 190 | |
| 191 | =item * |
| 192 | |
| 193 | L<Pod::Html> has been upgraded from version 1.22 to 1.2201. |
| 194 | |
| 195 | =item * |
| 196 | |
| 197 | L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.27. |
| 198 | |
| 199 | =item * |
| 200 | |
| 201 | L<POSIX> has been upgraded from version 1.70 to 1.71. |
| 202 | |
| 203 | =item * |
| 204 | |
| 205 | L<Storable> has been upgraded from version 2.56 to 2.57. |
| 206 | |
| 207 | =item * |
| 208 | |
| 209 | L<Sys::Syslog> has been upgraded from version 0.34 to 0.34_01. |
| 210 | |
| 211 | =item * |
| 212 | |
| 213 | L<Test> has been upgraded from version 1.28 to 1.29. |
| 214 | |
| 215 | =item * |
| 216 | |
| 217 | L<Test::Harness> has been upgraded from version 3.36 to 3.36_01. |
| 218 | |
| 219 | =item * |
| 220 | |
| 221 | L<Test::Simple> has been upgraded from version 1.302045 to 1.302052. |
| 222 | |
| 223 | =item * |
| 224 | |
| 225 | L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10. |
| 226 | |
| 227 | =item * |
| 228 | |
| 229 | L<Time::Local> has been upgraded from version 1.2300 to 1.24. |
| 230 | |
| 231 | =back |
| 232 | |
| 233 | =head1 Configuration and Compilation |
| 234 | |
| 235 | =over 4 |
| 236 | |
| 237 | =item * |
| 238 | |
| 239 | A probe for C<gai_strerror> was added to F<Configure> that checks if the |
| 240 | the gai_strerror() routine is available and can be used to |
| 241 | translate error codes returned by getaddrinfo() into human |
| 242 | readable strings. |
| 243 | |
| 244 | =back |
| 245 | |
| 246 | =head1 Platform Support |
| 247 | |
| 248 | =head2 Platform-Specific Notes |
| 249 | |
| 250 | =over 4 |
| 251 | |
| 252 | =item Hurd |
| 253 | |
| 254 | The hints for Hurd have been improved enabling malloc wrap and reporting the |
| 255 | GNU libc used (previously it was an empty string when reported). |
| 256 | |
| 257 | =back |
| 258 | |
| 259 | =head1 Internal Changes |
| 260 | |
| 261 | =over 4 |
| 262 | |
| 263 | =item * |
| 264 | |
| 265 | Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM> and C<OP_ARGCHECK> have |
| 266 | been added. These are intended principally to implement the individual |
| 267 | elements of a subroutine signature, plus any overall checking required. |
| 268 | |
| 269 | =back |
| 270 | |
| 271 | =head1 Selected Bug Fixes |
| 272 | |
| 273 | =over 4 |
| 274 | |
| 275 | =item * |
| 276 | |
| 277 | Problems with in-place array sorts: code like C<@a = sort { ... } @a>, |
| 278 | where the source and destination of the sort are the same plain array, are |
| 279 | optimised to do less copying around. Two side-effects of this optimisation |
| 280 | were that the contents of C<@a> as visible to to sort routine were |
| 281 | partially sorted, and under some circumstances accessing C<@a> during the |
| 282 | sort could crash the interpreter. Both these issues have been fixed, and |
| 283 | Sort functions see the original value of C<@a>. |
| 284 | |
| 285 | =item * |
| 286 | |
| 287 | Non-ASCII string delimiters are now reported correctly in error messages |
| 288 | for unterminated strings. [perl #128701] |
| 289 | |
| 290 | =item * |
| 291 | |
| 292 | C<pack("p", ...)> used to emit its warning ("Attempt to pack pointer to |
| 293 | temporary value") erroneously in some cases, but has been fixed. |
| 294 | |
| 295 | =item * |
| 296 | |
| 297 | C<@DB::args> is now exempt from "used once" warnings. The warnings only |
| 298 | occurred under B<-w>, because F<warnings.pm> itself uses C<@DB::args> |
| 299 | multiple times. |
| 300 | |
| 301 | =item * |
| 302 | |
| 303 | The use of built-in arrays or hash slices in a double-quoted string no |
| 304 | longer issues a warning ("Possible unintended interpolation...") if the |
| 305 | variable has not been mentioned before. This affected code like |
| 306 | C<qq|@DB::args|> and C<qq|@SIG{'CHLD', 'HUP'}|>. (The special variables |
| 307 | C<@-> and C<@+> were already exempt from the warning.) |
| 308 | |
| 309 | =item * |
| 310 | |
| 311 | C<gethostent> and similar functions now perform a null check internally, to |
| 312 | avoid crashing with torsocks. This was a regression from 5.22. [perl |
| 313 | #128740] |
| 314 | |
| 315 | =item * |
| 316 | |
| 317 | C<defined *{'!'}>, C<defined *{'['}>, and C<defined *{'-'}> no longer leak |
| 318 | memory if the typeglob in question has never been accessed before. |
| 319 | |
| 320 | =item * |
| 321 | |
| 322 | In 5.25.4 fchown() was changed not to accept negative one as an argument |
| 323 | because in some platforms that is an error. However, in some other platforms |
| 324 | that is an acceptable argument. This change has been reverted [perl #128967]. |
| 325 | |
| 326 | =item * |
| 327 | |
| 328 | Mentioning the same constant twice in a row (which is a syntax error) no |
| 329 | longer fails an assertion under debugging builds. This was a regression |
| 330 | from 5.20. [perl #126482] |
| 331 | |
| 332 | =item * |
| 333 | |
| 334 | Many issues relating to C<printf "%a"> of hexadecimal floating point |
| 335 | were fixed. In addition, the "subnormals" (formerly known as "denormals") |
| 336 | floating point anumbers are now supported both with the plain IEEE 754 |
| 337 | floating point numbers (64-bit or 128-bit) and the x86 80-bit |
| 338 | "extended precision". Note that subnormal hexadecimal floating |
| 339 | point literals will give a warning about "exponent underflow". |
| 340 | [perl #128843, #128889, #128890, #128893, #128909, #128919] |
| 341 | |
| 342 | =item * |
| 343 | |
| 344 | A regression in 5.24 with C<tr/\N{U+...}/foo/> when the code point was between |
| 345 | 128 and 255 has been fixed. [perl #128734]. |
| 346 | |
| 347 | =item * |
| 348 | |
| 349 | A regression from the previous development release, 5.23.3, where |
| 350 | compiling a regular expression could crash the interpreter has been |
| 351 | fixed. [perl #128686]. |
| 352 | |
| 353 | =item * |
| 354 | |
| 355 | Use of a string delimiter whose code point is above 2**31 now works |
| 356 | correctly on platforms that allow this. Previously, certain characters, |
| 357 | due to truncation, would be confused with other delimiter characters |
| 358 | with special meaning (such as C<?> in C<m?...?>), resulting |
| 359 | in inconsistent behaviour. Note that this is non-portable, |
| 360 | and is based on Perl's extension to UTF-8, and is probably not |
| 361 | displayable nor enterable by any editor. [perl #128738] |
| 362 | |
| 363 | =item * |
| 364 | |
| 365 | C<@{x> followed by a newline where C<x> represents a control or non-ASCII |
| 366 | character no longer produces a garbled syntax error message or a crash. |
| 367 | [perl #128951] |
| 368 | |
| 369 | =back |
| 370 | |
| 371 | =head1 Acknowledgements |
| 372 | |
| 373 | Perl 5.25.4 represents approximately 4 weeks of development since Perl 5.25.3 |
| 374 | and contains approximately 18,000 lines of changes across 820 files from 23 |
| 375 | authors. |
| 376 | |
| 377 | Excluding auto-generated files, documentation and release tools, there were |
| 378 | approximately 9,200 lines of changes to 660 .pm, .t, .c and .h files. |
| 379 | |
| 380 | Perl continues to flourish into its third decade thanks to a vibrant community |
| 381 | of users and developers. The following people are known to have contributed the |
| 382 | improvements that became Perl 5.25.4: |
| 383 | |
| 384 | Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan |
| 385 | Collins, Daniel Dragan, David Mitchell, Father Chrysostomos, H.Merijn Brand, |
| 386 | James E Keenan, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Lukas Mai, |
| 387 | Neil Bowers, Nicolas R., Pino Toscano, Rafael Garcia-Suarez, Richard Levitte, |
| 388 | Shlomi Fish, Smylers, Steve Hay, Tony Cook, Yves Orton. |
| 389 | |
| 390 | The list above is almost certainly incomplete as it is automatically generated |
| 391 | from version control history. In particular, it does not include the names of |
| 392 | the (very much appreciated) contributors who reported issues to the Perl bug |
| 393 | tracker. |
| 394 | |
| 395 | Many of the changes included in this version originated in the CPAN modules |
| 396 | included in Perl's core. We're grateful to the entire CPAN community for |
| 397 | helping Perl to flourish. |
| 398 | |
| 399 | For a more complete list of all of Perl's historical contributors, please see |
| 400 | the F<AUTHORS> file in the Perl source distribution. |
| 401 | |
| 402 | =head1 Reporting Bugs |
| 403 | |
| 404 | If you find what you think is a bug, you might check the perl bug database |
| 405 | at L<https://rt.perl.org/> . There may also be information at |
| 406 | L<http://www.perl.org/> , the Perl Home Page. |
| 407 | |
| 408 | If you believe you have an unreported bug, please run the L<perlbug> program |
| 409 | included with your release. Be sure to trim your bug down to a tiny but |
| 410 | sufficient test case. Your bug report, along with the output of C<perl -V>, |
| 411 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. |
| 412 | |
| 413 | If the bug you are reporting has security implications which make it |
| 414 | inappropriate to send to a publicly archived mailing list, then see |
| 415 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> |
| 416 | for details of how to report the issue. |
| 417 | |
| 418 | =head1 SEE ALSO |
| 419 | |
| 420 | The F<Changes> file for an explanation of how to view exhaustive details on |
| 421 | what changed. |
| 422 | |
| 423 | The F<INSTALL> file for how to build Perl. |
| 424 | |
| 425 | The F<README> file for general stuff. |
| 426 | |
| 427 | The F<Artistic> and F<Copying> files for copyright information. |
| 428 | |
| 429 | =cut |