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