Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
e96e0834 JL |
5 | [ this is a template for a new perldelta file. Any text flagged as |
6 | XXX needs to be processed before release. ] | |
27f00e3d | 7 | |
e96e0834 | 8 | perldelta - what is new for perl v5.17.2 |
417a992d | 9 | |
e96e0834 | 10 | =head1 DESCRIPTION |
028c8719 | 11 | |
e96e0834 JL |
12 | This document describes differences between the 5.17.1 release and |
13 | the 5.17.2 release. | |
028c8719 | 14 | |
e96e0834 JL |
15 | If you are upgrading from an earlier release such as 5.17.0, first read |
16 | L<perl5171delta>, which describes differences between 5.17.0 and | |
17 | 5.17.1. | |
028c8719 | 18 | |
e96e0834 | 19 | =head1 Notice |
30608892 | 20 | |
e96e0834 | 21 | XXX Any important notices here |
e128ab2c | 22 | |
e96e0834 | 23 | =head1 Core Enhancements |
e128ab2c | 24 | |
e96e0834 JL |
25 | XXX New core language features go here. Summarise user-visible core language |
26 | enhancements. Particularly prominent performance optimisations could go | |
27 | here, but most should go in the L</Performance Enhancements> section. | |
fe3193b5 | 28 | |
e96e0834 | 29 | [ List each enhancement as a =head2 entry ] |
05c8f9ed | 30 | |
90519d0f FC |
31 | =head2 C<kill> with negative signal names |
32 | ||
33 | C<kill> has always allowed a negative signal number, which kills the | |
34 | process group instead of a single process. It has also allowed signal | |
35 | names. But it did not behave consistently, because negative signal names | |
36 | were treated as 0. Now negative signals names like C<-INT> are supported | |
37 | and treated the same way as -2 [perl #112990]. | |
38 | ||
6db9054f TC |
39 | =head2 C<pack> is now constant folded. |
40 | ||
41 | C<pack> with constant arguments is now constant folded in most cases | |
42 | [perl #113470]. | |
43 | ||
e96e0834 | 44 | =head1 Security |
0da72d5e | 45 | |
e96e0834 JL |
46 | XXX Any security-related notices go here. In particular, any security |
47 | vulnerabilities closed should be noted here rather than in the | |
48 | L</Selected Bug Fixes> section. | |
0da72d5e | 49 | |
e96e0834 | 50 | [ List each security issue as a =head2 entry ] |
0da72d5e | 51 | |
e96e0834 | 52 | =head1 Incompatible Changes |
0da72d5e | 53 | |
e96e0834 | 54 | XXX For a release on a stable branch, this section aspires to be: |
0da72d5e | 55 | |
e96e0834 JL |
56 | There are no changes intentionally incompatible with 5.XXX.XXX |
57 | If any exist, they are bugs, and we request that you submit a | |
58 | report. See L</Reporting Bugs> below. | |
0da72d5e | 59 | |
e96e0834 | 60 | [ List each incompatible change as a =head2 entry ] |
e2f0c3bb | 61 | |
e96e0834 | 62 | =head1 Deprecations |
e2f0c3bb | 63 | |
e96e0834 JL |
64 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
65 | In particular, deprecated modules should be listed here even if they are | |
66 | listed as an updated module in the L</Modules and Pragmata> section. | |
7d101ed1 | 67 | |
e96e0834 | 68 | [ List each deprecation as a =head2 entry ] |
7d101ed1 | 69 | |
e96e0834 | 70 | =head1 Performance Enhancements |
7d101ed1 | 71 | |
e96e0834 JL |
72 | XXX Changes which enhance performance without changing behaviour go here. There |
73 | may well be none in a stable release. | |
7d101ed1 | 74 | |
e96e0834 | 75 | [ List each enhancement as a =item entry ] |
95ce428c | 76 | |
f9001595 | 77 | =over 4 |
75ff5956 | 78 | |
2630d42b | 79 | =item * |
c11980ad | 80 | |
e96e0834 | 81 | XXX |
53de3ff0 | 82 | |
61174fb5 | 83 | =back |
ef7131e9 | 84 | |
61174fb5 | 85 | =head1 Modules and Pragmata |
ef7131e9 | 86 | |
e96e0834 JL |
87 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
88 | go here. If Module::CoreList is updated, generate an initial draft of the | |
89 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
90 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
91 | below. A paragraph summary for important changes should then be added by hand. | |
92 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
93 | cribbed. | |
5cefbec9 | 94 | |
e96e0834 | 95 | [ Within each section, list entries as a =item entry ] |
fbdb83f3 | 96 | |
e96e0834 | 97 | =head2 New Modules and Pragmata |
95c6c5c5 | 98 | |
e96e0834 | 99 | =over 4 |
9331f04e NC |
100 | |
101 | =item * | |
102 | ||
e96e0834 | 103 | XXX |
95c6c5c5 | 104 | |
e96e0834 | 105 | =back |
ff3f295c | 106 | |
e96e0834 | 107 | =head2 Updated Modules and Pragmata |
ff3f295c | 108 | |
e96e0834 | 109 | =over 4 |
95c6c5c5 | 110 | |
95c6c5c5 JL |
111 | =item * |
112 | ||
4c77591b NC |
113 | L<File::stat> has been upgraded from version 1.06 to 1.07. |
114 | ||
115 | Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give | |
116 | the correct results for directories or executable files when running as | |
117 | root. They had been treating executable permissions for root just like for | |
118 | any other user, performing group membership tests I<etc> for files not owned | |
119 | by root. They now follow the correct Unix behaviour - for a directory they | |
120 | are always true, and for a file if any of the three execute permission bits | |
121 | are set then they report that root can execute the file. Perl's builtin | |
122 | C<-x> and C<-X> operators have always been correct. | |
c506fc7e | 123 | |
36ab1671 FC |
124 | =item * |
125 | ||
126 | L<Tie::StdHandle> has been upgraded from version 4.2 to 4.3. | |
127 | ||
128 | C<READ> now respects the offset argument to C<read> [perl #112826]. | |
129 | ||
df2c1bb8 TC |
130 | =item * |
131 | ||
132 | L<IO> has been upgraded from version 1.25_07 to 1.25_08. | |
133 | ||
134 | L<IO::Socket> tries harder to cache or otherwise fetch socket | |
135 | information. | |
136 | ||
7ab2ea42 TC |
137 | =item * |
138 | ||
139 | L<Storable> has been upgraded from version 2.36 to 2.37. | |
140 | ||
141 | Restricted hashes were not always thawed correctly [perl #73972]. | |
142 | ||
143 | Storable would croak when freezing a blessed REF object with a | |
144 | C<STORABLE_freeze()> method [perl #113880]. | |
145 | ||
3be135d8 TC |
146 | =item * |
147 | ||
148 | L<Socket> has been upgraded from version 2.001 to 2.002. | |
149 | ||
6db9054f TC |
150 | =item * |
151 | ||
152 | L<autodie> has been upgraded from version 2.11 to 2.12. | |
153 | ||
154 | C<autodie> now plays nicely with the 'open' pragma. | |
155 | ||
156 | =item * | |
157 | ||
158 | L<File::Fetch> has been upgraded from version 0.34 to 0.36. | |
159 | ||
160 | Added the 'file_default' option for URLs that do not have a file | |
161 | component. | |
162 | ||
e96e0834 | 163 | =back |
c506fc7e | 164 | |
e96e0834 | 165 | =head2 Removed Modules and Pragmata |
c506fc7e | 166 | |
e96e0834 | 167 | =over 4 |
95c6c5c5 | 168 | |
95c6c5c5 JL |
169 | =item * |
170 | ||
e96e0834 | 171 | XXX |
95c6c5c5 | 172 | |
e96e0834 | 173 | =back |
95c6c5c5 | 174 | |
e96e0834 | 175 | =head1 Documentation |
95c6c5c5 | 176 | |
e96e0834 JL |
177 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
178 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
95c6c5c5 | 179 | |
e96e0834 | 180 | =head2 New Documentation |
1c633914 | 181 | |
e96e0834 | 182 | XXX Changes which create B<new> files in F<pod/> go here. |
f558db2f | 183 | |
e96e0834 | 184 | =head3 L<XXX> |
66aa79e2 | 185 | |
e96e0834 | 186 | XXX Description of the purpose of the new file here |
95c6c5c5 | 187 | |
e96e0834 | 188 | =head2 Changes to Existing Documentation |
95c6c5c5 | 189 | |
e96e0834 JL |
190 | XXX Changes which significantly change existing files in F<pod/> go here. |
191 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
192 | section. | |
95c6c5c5 | 193 | |
66b30015 | 194 | =head3 L<perlfunc> |
95c6c5c5 | 195 | |
e96e0834 | 196 | =over 4 |
95c6c5c5 JL |
197 | |
198 | =item * | |
199 | ||
66b30015 | 200 | Clarified documentation of C<our>. |
95c6c5c5 | 201 | |
e96e0834 | 202 | =back |
95c6c5c5 | 203 | |
e96e0834 | 204 | =head1 Diagnostics |
95c6c5c5 | 205 | |
e96e0834 JL |
206 | The following additions or changes have been made to diagnostic output, |
207 | including warnings and fatal error messages. For the complete list of | |
208 | diagnostic messages, see L<perldiag>. | |
95c6c5c5 | 209 | |
e96e0834 JL |
210 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
211 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
71014848 | 212 | |
e96e0834 JL |
213 | [ Within each section, list entries as a =item entry that links to perldiag, |
214 | e.g. | |
71014848 | 215 | |
e96e0834 | 216 | =item * |
95c6c5c5 | 217 | |
e96e0834 JL |
218 | L<Invalid version object|perldiag/"Invalid version object"> |
219 | ] | |
95c6c5c5 | 220 | |
e96e0834 | 221 | =head2 New Diagnostics |
95c6c5c5 | 222 | |
e96e0834 | 223 | XXX Newly added diagnostic messages go here |
95c6c5c5 | 224 | |
e96e0834 | 225 | =head3 New Errors |
95c6c5c5 | 226 | |
e96e0834 | 227 | =over 4 |
95c6c5c5 | 228 | |
95c6c5c5 JL |
229 | =item * |
230 | ||
a9be10f4 | 231 | L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/"> |
40e43b78 FC |
232 | |
233 | This error has been added for C<(?&0)>, which is invalid. It used to | |
234 | produce an incomprehensible error message [perl #101666]. | |
95c6c5c5 | 235 | |
b8a55fe7 FC |
236 | =item * |
237 | ||
238 | L<Can't use an undefined value as a subroutine reference|perldiag/"Can't use an undefined value as %s reference"> | |
239 | ||
240 | Calling an undefined value as a subroutine now produces this error message. | |
241 | It used to, but was accidentally disabled, first in Perl 5.004 for | |
242 | non-magical variables, and then in Perl 5.14 for magical (e.g., tied) | |
243 | variables. It has now been restored. In the mean time, undef was treated | |
244 | as an empty string [perl #113576]. | |
245 | ||
e96e0834 | 246 | =back |
95c6c5c5 | 247 | |
e96e0834 | 248 | =head3 New Warnings |
95c6c5c5 | 249 | |
e96e0834 | 250 | =over 4 |
95c6c5c5 | 251 | |
95c6c5c5 JL |
252 | =item * |
253 | ||
72267260 JL |
254 | C<chr()> now warns when passed a negative value [perl #83048]. |
255 | ||
256 | =item * | |
257 | ||
258 | C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the | |
259 | value will be truncated rather than overflowing) [perl #40605]. | |
7d101ed1 | 260 | |
e013ada0 JL |
261 | =item * |
262 | ||
263 | Running perl with the C<-i> flag now warns if no input files are provided on | |
264 | the command line [perl #113410]. | |
265 | ||
e96e0834 | 266 | =back |
d9661073 | 267 | |
e96e0834 | 268 | =head2 Changes to Existing Diagnostics |
95c6c5c5 | 269 | |
e96e0834 | 270 | XXX Changes (i.e. rewording) of diagnostic messages go here |
95c6c5c5 | 271 | |
e96e0834 | 272 | =over 4 |
95c6c5c5 JL |
273 | |
274 | =item * | |
275 | ||
90519d0f FC |
276 | The 'Can't use "my %s" in sort comparison' error has been downgraded to a |
277 | warning, '"my %s" used in sort comparison' (with 'state' instead of 'my' | |
278 | for state variables). In addition, the heuristics for guessing whether | |
279 | lexical $a or $b has been misused have been improved to generate fewer | |
280 | false positives. Lexical $a and $b are no longer disallowed if they are | |
281 | outside the sort block. Also, a named unary or list operator inside the | |
282 | sort block no longer causes the $a or $b to be ignored [perl #86136]. | |
3630f57e | 283 | |
e96e0834 | 284 | =back |
3630f57e | 285 | |
e96e0834 | 286 | =head1 Utility Changes |
95c6c5c5 | 287 | |
e96e0834 JL |
288 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
289 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
95c6c5c5 | 290 | |
e96e0834 JL |
291 | [ List utility changes as a =head3 entry for each utility and =item |
292 | entries for each change | |
293 | Use L<XXX> with program names to get proper documentation linking. ] | |
95c6c5c5 | 294 | |
e96e0834 | 295 | =head3 L<XXX> |
95c6c5c5 | 296 | |
e96e0834 | 297 | =over 4 |
95c6c5c5 JL |
298 | |
299 | =item * | |
300 | ||
e96e0834 | 301 | XXX |
95c6c5c5 | 302 | |
e96e0834 | 303 | =back |
95c6c5c5 | 304 | |
e96e0834 | 305 | =head1 Configuration and Compilation |
95c6c5c5 | 306 | |
e96e0834 JL |
307 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
308 | go here. Any other changes to the Perl build process should be listed here. | |
309 | However, any platform-specific changes should be listed in the | |
310 | L</Platform Support> section, instead. | |
95c6c5c5 | 311 | |
e96e0834 | 312 | [ List changes as a =item entry ]. |
95c6c5c5 | 313 | |
e96e0834 | 314 | =over 4 |
95c6c5c5 JL |
315 | |
316 | =item * | |
317 | ||
c5057b0f FC |
318 | Building perl with some Windows compilers used to fail due to a problem |
319 | with miniperl's C<glob> operator (which uses the C<perlglob> program) | |
320 | deleting the PATH environment variable [perl #113798]. | |
95c6c5c5 | 321 | |
e96e0834 | 322 | =back |
95c6c5c5 | 323 | |
e96e0834 | 324 | =head1 Testing |
95c6c5c5 | 325 | |
e96e0834 JL |
326 | XXX Any significant changes to the testing of a freshly built perl should be |
327 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
328 | large changes to the testing harness (e.g. when parallel testing was added). | |
329 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
330 | that they represent may be covered elsewhere. | |
95c6c5c5 | 331 | |
e96e0834 | 332 | [ List each test improvement as a =item entry ] |
95c6c5c5 | 333 | |
e96e0834 | 334 | =over 4 |
95c6c5c5 JL |
335 | |
336 | =item * | |
337 | ||
e96e0834 | 338 | XXX |
95c6c5c5 | 339 | |
61174fb5 | 340 | =back |
f558db2f | 341 | |
e96e0834 | 342 | =head1 Platform Support |
05c8f9ed | 343 | |
e96e0834 | 344 | XXX Any changes to platform support should be listed in the sections below. |
05c8f9ed | 345 | |
e96e0834 JL |
346 | [ Within the sections, list each platform as a =item entry with specific |
347 | changes as paragraphs below it. ] | |
9dea6244 | 348 | |
e96e0834 | 349 | =head2 New Platforms |
9dea6244 | 350 | |
e96e0834 JL |
351 | XXX List any platforms that this version of perl compiles on, that previous |
352 | versions did not. These will either be enabled by new files in the F<hints/> | |
353 | directories, or new subdirectories and F<README> files at the top level of the | |
354 | source tree. | |
7d101ed1 JL |
355 | |
356 | =over 4 | |
357 | ||
42d72fc5 | 358 | =item XXX |
7d101ed1 | 359 | |
7d101ed1 JL |
360 | |
361 | =back | |
362 | ||
e96e0834 | 363 | =head2 Discontinued Platforms |
ef7131e9 | 364 | |
e96e0834 | 365 | XXX List any platforms that this version of perl no longer compiles on. |
4a301309 FC |
366 | |
367 | =over 4 | |
368 | ||
e96e0834 | 369 | =item XXX-some-platform |
8dffc0ab | 370 | |
e96e0834 | 371 | XXX |
dbc84d79 | 372 | |
4a301309 FC |
373 | =back |
374 | ||
61174fb5 | 375 | =head2 Platform-Specific Notes |
ceb0881c | 376 | |
e96e0834 JL |
377 | XXX List any changes for specific platforms. This could include configuration |
378 | and compilation changes or changes in portability/compatibility. However, | |
379 | changes within modules for platforms should generally be listed in the | |
380 | L</Modules and Pragmata> section. | |
89cbc6b8 | 381 | |
e96e0834 | 382 | =over 4 |
0998713f | 383 | |
5edb02d0 | 384 | =item VMS |
112b6866 | 385 | |
5edb02d0 CB |
386 | Quotes are now removed from the command verb (but not the parameters) for commands |
387 | spawned via C<system>, backticks, or a piped C<open>. Previously, quotes on the verb | |
388 | were passed through to DCL, which would fail to recognize the command. Also, if the | |
389 | verb is actually a path to an image or command procedure on an ODS-5 volume, quoting it | |
390 | now allows the path to contain spaces. | |
112b6866 | 391 | |
42d72fc5 TC |
392 | =item AIX |
393 | ||
394 | Configure now always adds -qlanglvl=extc99 to the CC flags on AIX when | |
395 | using xlC. This will make it easier to compile a number of XS-based modules | |
396 | that assume C99 [perl #113778]. | |
397 | ||
61174fb5 | 398 | =back |
8e125188 | 399 | |
61174fb5 | 400 | =head1 Internal Changes |
8e125188 | 401 | |
e96e0834 JL |
402 | XXX Changes which affect the interface available to C<XS> code go here. |
403 | Other significant internal changes for future core maintainers should | |
404 | be noted as well. | |
c4643160 | 405 | |
e96e0834 | 406 | [ List each change as a =item entry ] |
f8ef51fd | 407 | |
e96e0834 | 408 | =over 4 |
e128ab2c | 409 | |
e2f0c3bb FC |
410 | =item * |
411 | ||
16e4fcbf CS |
412 | Perl used to implement get magic in a way that would sometimes hide bugs in |
413 | code could call mg_get() too many times on magical values. This hiding of | |
414 | errors no longer occurs, so long-standing bugs may become visible now. If | |
415 | you see magic-related errors in XS code, check to make sure it, together | |
416 | with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL() | |
417 | values. | |
418 | ||
419 | =item * | |
420 | ||
7ab2ea42 TC |
421 | OP allocation for CVs now uses a slab allocator. This simplifies |
422 | memory management for OPs allocated to a CV, so cleaning up after a | |
423 | compilation error is simpler and safer [perl #111462][perl #112312]. | |
e2f0c3bb | 424 | |
90519d0f FC |
425 | =item * |
426 | ||
427 | PERL_DEBUG_READONLY_OPS has been rewritten to work with the new slab | |
428 | allocator, allowing it to catch more violations that befor. | |
429 | ||
430 | =item * | |
431 | ||
432 | The old slab allocator for ops, which was only enabled for PERL_IMPLICIT_SYS and PERL_DEBUG_READONLY_OPS, has been retired. | |
433 | ||
61174fb5 | 434 | =back |
422287bf | 435 | |
61174fb5 | 436 | =head1 Selected Bug Fixes |
2de6ba8d | 437 | |
e96e0834 JL |
438 | XXX Important bug fixes in the core language are summarised here. |
439 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
440 | L</Modules and Pragmata>. | |
52c4b146 | 441 | |
e96e0834 | 442 | [ List each fix as a =item entry ] |
e128ab2c DM |
443 | |
444 | =over 4 | |
445 | ||
446 | =item * | |
447 | ||
48895a0d | 448 | A regression introduced in v5.14.0 has been fixed, in which some calls |
7ab2ea42 | 449 | to the C<re> module would clobber C<$_> [perl #113750]. |
e128ab2c | 450 | |
8b1adbab JL |
451 | =item * |
452 | ||
453 | C<do FILE> now always either sets or clears C<$@>, even when the file can't be | |
454 | read. This ensures that testing C<$@> first (as recommended by the | |
455 | documentation) always returns the correct result. | |
456 | ||
83f29afa VP |
457 | =item * |
458 | ||
459 | The array iterator used for the C<each @array> construct is now correctly | |
460 | reset when C<@array> is cleared (RT #75596). This happens for example when the | |
461 | array is globally assigned to, as in C<@array = (...)>, but not when its | |
462 | B<values> are assigned to. In terms of the XS API, it means that C<av_clear()> | |
463 | will now reset the iterator. | |
464 | ||
465 | This mirrors the behaviour of the hash iterator when the hash is cleared. | |
466 | ||
0938f143 JL |
467 | =item * |
468 | ||
469 | C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return | |
470 | correct results, regardless of whether that package referred to by C<$class> | |
471 | exists [perl #47113]. | |
472 | ||
72267260 JL |
473 | =item * |
474 | ||
475 | Arriving signals no longer clear C<$@> [perl #45173]. | |
476 | ||
7a251f7a JL |
477 | =item * |
478 | ||
479 | Allow C<my ()> declarations with an empty variable list [perl #113554]. | |
480 | ||
21247d85 FC |
481 | =item * |
482 | ||
483 | During parsing, subs declared after errors no longer leave stubs | |
484 | [perl #113712]. | |
485 | ||
2e4f8b82 FC |
486 | =item * |
487 | ||
c95d4104 FC |
488 | Closures containing no string evals no longer hang on to their containing |
489 | subroutines, allowing variables closed over by outer subroutines to be | |
490 | freed when the outer sub is freed, even if the inner sub still exists | |
491 | [perl #89544]. | |
492 | ||
788505db FC |
493 | =item * |
494 | ||
495 | Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode | |
496 | stopped working properly in 5.16.0. It was causing the new handle to | |
497 | reference a different scalar variable. This has been fixed [perl #113764]. | |
498 | ||
2c2b9cf4 FC |
499 | =item * |
500 | ||
501 | C<qr//> expressions no longer crash with custom regular expression engines | |
502 | that do not set C<offs> at regular expression compilation time | |
503 | [perl #112962]. | |
504 | ||
3cd56aaa TC |
505 | =item * |
506 | ||
507 | C<delete local> no longer crashes with certain magical arrays and hashes | |
508 | [perl #112966]. | |
509 | ||
510 | =item * | |
511 | ||
512 | C<local> on elements of certain magical arrays and hashes used not to | |
513 | arrange to have the element deleted on scope exit, even if the element did | |
514 | not exist before C<local>. | |
515 | ||
516 | =item * | |
517 | ||
518 | C<scalar(write)> no longer returns multiple items [perl #73690]. | |
519 | ||
520 | =item * | |
521 | ||
522 | String to floating point conversions no longer misparse certain strings under | |
523 | C<use locale> [perl #109318]. | |
524 | ||
525 | =item * | |
526 | ||
527 | C<@INC> filters that die no longer leak memory [perl #92252]. | |
528 | ||
529 | =item * | |
530 | ||
531 | The implementations of overloaded operations are now called in the correct | |
532 | context. This allows, among other things, being able to properly override | |
533 | C<< <> >> [perl #47119]. | |
534 | ||
535 | =item * | |
536 | ||
537 | Specifying only the C<fallback> key when calling C<use overload> now behaves | |
538 | properly [perl #113010]. | |
539 | ||
c0c19433 JL |
540 | =item * |
541 | ||
542 | C<< sub foo { my $a = 0; while ($a) { ... } } >> and | |
543 | C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618]. | |
544 | ||
7ab2ea42 TC |
545 | =item * |
546 | ||
f4df6cb9 | 547 | Fixed the debugger C<l> and C<M> commands, and other debugger |
7ab2ea42 TC |
548 | functionality which was broken in 5.17.0 [perl #113918]. |
549 | ||
550 | =item * | |
551 | ||
552 | String negation now behaves the same under C<use integer;> as it does | |
553 | without [perl #113012]. | |
554 | ||
90519d0f FC |
555 | =item * |
556 | ||
557 | C<chr> now returns the Unicode replacement character (U+FFFD) for -1, | |
558 | regardless of the internal representation. -1 used to wrap if the argument | |
559 | was tied or a string internally. | |
560 | ||
561 | =item * | |
562 | ||
563 | Using a C<format> after its enclosing sub was freed could crash as of | |
564 | perl 5.12.0, if the format referenced lexical variables from the outer sub. | |
565 | ||
566 | =item * | |
567 | ||
568 | Using a C<format> after its enclosing sub was undefined could crash as of | |
569 | perl 5.10.0, if the format referenced lexical variables from the outer sub. | |
570 | ||
571 | =item * | |
572 | ||
573 | Using a C<format> defined inside a closures, which format references | |
574 | lexical variables from outside, never really worked unless the C<write> | |
575 | call was directly inside the closure. In 5.10.0 it even started crashing. | |
576 | Now the copy of that closure nearest the top of the call stack is used to | |
577 | find those variables. | |
578 | ||
579 | =item * | |
580 | ||
581 | Formats that close over variables in special blocks no longer crash if a | |
582 | stub exists with the same name as the special block before the special | |
583 | block is compiled. | |
584 | ||
585 | =item * | |
586 | ||
587 | The parser no longer gets confused, treating C<eval foo ()> as a syntax | |
588 | error if preceded by C<print;> [perl #16249]. | |
589 | ||
590 | =item * | |
591 | ||
592 | The return value of C<syscall> is no longer truncated on 64-bit platforms | |
593 | [perl #113980]. | |
594 | ||
595 | =item * | |
596 | ||
597 | Constant folding no longer causes C<print 1 ? FOO : BAR> to print to the | |
598 | FOO handle [perl #78064]. | |
599 | ||
600 | =item * | |
601 | ||
602 | C<do subname> now calls the named subroutine and uses the file name it | |
603 | returns, instead of opening a file named "subname". | |
604 | ||
605 | =item * | |
606 | ||
607 | Subroutines looked up by rv2cv check hooks (registered by XS modules) are | |
608 | now taken into consideration when determining whether C<foo bar> should be | |
609 | the sub call C<foo(bar)> or the method call C<< "bar"->foo >>. | |
610 | ||
611 | =item * | |
612 | ||
613 | C<CORE::foo::bar> is no longer treated specially, allowing global overrides | |
614 | to be called directly via C<CORE::GLOBAL::uc(...)> [perl #113016]. | |
615 | ||
616 | =item * | |
617 | ||
618 | Calling an undefined sub whose typeglob has been undefined now produces the | |
619 | customary "Undefined subroutine called" error, instead of "Not a CODE | |
620 | reference". | |
621 | ||
b8a55fe7 FC |
622 | =item * |
623 | ||
624 | Two bugs involving @ISA have been fixed. C<*ISA = *glob_without_array> and | |
625 | C<undef *ISA; @{*ISA}> would prevent future modifications to @ISA from | |
626 | updating the internal caches used to look up methods. The | |
627 | *glob_without_array case was a regression from Perl 5.12. | |
628 | ||
629 | =item * | |
630 | ||
631 | Regular expression optimisations sometimes caused C<$> with C</m> to | |
632 | produce failed or incorrect matches [perl #114068]. | |
633 | ||
634 | =item * | |
635 | ||
636 | C<__SUB__> now works in a C<sort> block when the enclosing subroutine is | |
637 | predeclared with C<sub foo;> syntax [perl #113710]. | |
638 | ||
e128ab2c DM |
639 | =back |
640 | ||
e96e0834 | 641 | =head1 Known Problems |
dbc84d79 | 642 | |
e96e0834 JL |
643 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
644 | tests that had to be C<TODO>ed for the release would be noted here. Unfixed | |
645 | platform specific bugs also go here. | |
53de3ff0 | 646 | |
e96e0834 | 647 | [ List each fix as a =item entry ] |
233bba44 JL |
648 | |
649 | =over 4 | |
650 | ||
651 | =item * | |
652 | ||
e96e0834 | 653 | XXX |
233bba44 | 654 | |
e96e0834 | 655 | =back |
233bba44 | 656 | |
e96e0834 | 657 | =head1 Obituary |
233bba44 | 658 | |
e96e0834 JL |
659 | XXX If any significant core contributor has died, we've added a short obituary |
660 | here. | |
233bba44 | 661 | |
61174fb5 | 662 | =head1 Acknowledgements |
d5dc7001 | 663 | |
e96e0834 JL |
664 | XXX Generate this with: |
665 | ||
666 | perl Porting/acknowledgements.pl v5.17.1..HEAD | |
29cf780c | 667 | |
44691e6f AB |
668 | =head1 Reporting Bugs |
669 | ||
670 | If you find what you think is a bug, you might check the articles | |
52deee2e | 671 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
f9001595 RS |
672 | bug database at http://rt.perl.org/perlbug/ . There may also be |
673 | information at http://www.perl.org/ , the Perl Home Page. | |
44691e6f AB |
674 | |
675 | If you believe you have an unreported bug, please run the L<perlbug> | |
52deee2e DR |
676 | program included with your release. Be sure to trim your bug down |
677 | to a tiny but sufficient test case. Your bug report, along with the | |
678 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
679 | analysed by the Perl porting team. | |
44691e6f AB |
680 | |
681 | If the bug you are reporting has security implications, which make it | |
f9001595 RS |
682 | inappropriate to send to a publicly archived mailing list, then please send |
683 | it to perl5-security-report@perl.org. This points to a closed subscription | |
684 | unarchived mailing list, which includes | |
685 | all the core committers, who will be able | |
686 | to help assess the impact of issues, figure out a resolution, and help | |
687 | co-ordinate the release of patches to mitigate or fix the problem across all | |
688 | platforms on which Perl is supported. Please only use this address for | |
689 | security issues in the Perl core, not for modules independently | |
690 | distributed on CPAN. | |
44691e6f AB |
691 | |
692 | =head1 SEE ALSO | |
693 | ||
52deee2e DR |
694 | The F<Changes> file for an explanation of how to view exhaustive details |
695 | on what changed. | |
44691e6f AB |
696 | |
697 | The F<INSTALL> file for how to build Perl. | |
698 | ||
699 | The F<README> file for general stuff. | |
700 | ||
701 | The F<Artistic> and F<Copying> files for copyright information. | |
702 | ||
703 | =cut |