Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
d2006265 FC |
3 | =for comment |
4 | This has been completed up to 527d644b124fe. | |
5 | ||
44691e6f AB |
6 | =head1 NAME |
7 | ||
63ac71b9 RS |
8 | [ this is a template for a new perldelta file. Any text flagged as |
9 | XXX needs to be processed before release. ] | |
10 | ||
f25d4e05 | 11 | perldelta - what is new for perl v5.15.3 |
760696b8 | 12 | |
5438d4b8 | 13 | =head1 DESCRIPTION |
5cd408a2 | 14 | |
f25d4e05 RS |
15 | This document describes differences between the 5.15.2 release and |
16 | the 5.15.3 release. | |
5cd408a2 | 17 | |
f25d4e05 RS |
18 | If you are upgrading from an earlier release such as 5.15.1, first read |
19 | L<perl5152delta>, which describes differences between 5.15.1 and | |
20 | 5.15.2. | |
062678b2 | 21 | |
63ac71b9 | 22 | =head1 Notice |
4185c919 | 23 | |
63ac71b9 | 24 | XXX Any important notices here |
0afed34d | 25 | |
63ac71b9 | 26 | =head1 Core Enhancements |
0afed34d | 27 | |
63ac71b9 RS |
28 | XXX New core language features go here. Summarise user-visible core language |
29 | enhancements. Particularly prominent performance optimisations could go | |
30 | here, but most should go in the L</Performance Enhancements> section. | |
0afed34d | 31 | |
63ac71b9 | 32 | [ List each enhancement as a =head2 entry ] |
0afed34d | 33 | |
d2006265 FC |
34 | =head2 More CORE subs are callable through references |
35 | ||
c148612c | 36 | Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them |
d2006265 FC |
37 | could only be called as barewords; i.e., they could be aliased at compile |
38 | time and then inlined under new names. | |
39 | ||
2702a50a FC |
40 | Almost all of these functions can now be called through references and via |
41 | C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the | |
42 | exceptions. | |
d2006265 | 43 | |
63ac71b9 | 44 | =head1 Security |
0afed34d | 45 | |
63ac71b9 RS |
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. | |
135c0b08 | 49 | |
63ac71b9 | 50 | [ List each security issue as a =head2 entry ] |
135c0b08 | 51 | |
46661105 CB |
52 | =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728). |
53 | ||
54 | Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would | |
55 | cause an access violation / segfault. A Perl program that accepts a flags value from | |
56 | an external source could expose itself to denial of service or arbitrary code | |
57 | execution attacks. There are no known exploits in the wild. The problem has been | |
58 | corrected by explicitly disabling all unsupported flags and setting unused function | |
59 | pointers to null. Bug reported by Clément Lecigne. | |
60 | ||
5438d4b8 | 61 | =head1 Incompatible Changes |
7818c927 | 62 | |
e1dccc0d Z |
63 | =head2 $[ has been removed |
64 | ||
65 | The array/string index offsetting mechanism, controlled by the C<$[> magic | |
66 | variable, has been removed. C<$[> now always reads as zero. Writing a | |
67 | zero to it is still permitted, but writing a non-zero value causes an | |
68 | exception. Those hopelessly addicted to FORTRAN-style 1-based indexing | |
69 | may wish to use the module L<Array::Base>, which provides an independent | |
70 | implementation of the index offsetting concept, or L<Classic::Perl>, | |
71 | which allows L<Array::Base> to be controlled through assignment to C<$[>. | |
72 | ||
5d1892be | 73 | =head2 User-defined case changing operations. |
7b2b001e | 74 | |
5d1892be KW |
75 | This feature was deprecated in Perl 5.14, and has now been removed. |
76 | The CPAN module L<Unicode::Casing> provides better functionality without | |
77 | the drawbacks that this feature had, as are detailed in the 5.14 | |
78 | documentation: | |
79 | L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29> | |
bdb9ba77 | 80 | |
7ec04da5 S |
81 | =head2 XSUBs are now 'static' |
82 | ||
83 | XSUB C functions are now 'static', that is, they are not visible from | |
84 | outside the compilation unit. For the exceedingly rare case where | |
85 | this is not desired, a new public macro C<XS_EXTERNAL(name)> can be | |
86 | used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>) | |
87 | can be made to declare XSUBs with C<XS_EXTERNAL> using the | |
88 | C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details. | |
89 | ||
63ac71b9 | 90 | =head1 Deprecations |
760696b8 | 91 | |
63ac71b9 RS |
92 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
93 | In particular, deprecated modules should be listed here even if they are | |
94 | listed as an updated module in the L</Modules and Pragmata> section. | |
760696b8 | 95 | |
63ac71b9 | 96 | [ List each deprecation as a =head2 entry ] |
760696b8 | 97 | |
63ac71b9 | 98 | =head1 Performance Enhancements |
115ff745 | 99 | |
63ac71b9 RS |
100 | XXX Changes which enhance performance without changing behaviour go here. There |
101 | may well be none in a stable release. | |
115ff745 | 102 | |
63ac71b9 | 103 | [ List each enhancement as a =item entry ] |
115ff745 | 104 | |
63ac71b9 | 105 | =over 4 |
4ea805df CBW |
106 | |
107 | =item * | |
108 | ||
63ac71b9 | 109 | XXX |
1ba7a2fb | 110 | |
63ac71b9 | 111 | =back |
730e5b5b | 112 | |
63ac71b9 | 113 | =head1 Modules and Pragmata |
730e5b5b | 114 | |
63ac71b9 RS |
115 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
116 | go here. If Module::CoreList is updated, generate an initial draft of the | |
117 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
118 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
119 | below. A paragraph summary for important changes should then be added by hand. | |
120 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
121 | cribbed. | |
730e5b5b | 122 | |
63ac71b9 | 123 | [ Within each section, list entries as a =item entry ] |
730e5b5b | 124 | |
63ac71b9 | 125 | =head2 New Modules and Pragmata |
a30cae0b | 126 | |
63ac71b9 | 127 | =over 4 |
a30cae0b CBW |
128 | |
129 | =item * | |
130 | ||
63ac71b9 | 131 | XXX |
bbc28bfc | 132 | |
63ac71b9 | 133 | =back |
bbc28bfc | 134 | |
63ac71b9 | 135 | =head2 Updated Modules and Pragmata |
e46d9735 | 136 | |
63ac71b9 | 137 | =over 4 |
e46d9735 CBW |
138 | |
139 | =item * | |
140 | ||
5f8b5b70 NC |
141 | L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01. |
142 | ||
143 | This is only a minor documentation update. | |
144 | ||
145 | =item * | |
146 | ||
43c6b706 | 147 | L<Archive::Extract> has been upgraded from version 0.52 to version 0.56. |
4afdee4c CBW |
148 | |
149 | Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32 | |
57126352 | 150 | |
d93f0209 FC |
151 | =item * |
152 | ||
755f12e5 NC |
153 | L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110. |
154 | ||
155 | =item * | |
156 | ||
50b3d220 CBW |
157 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58. |
158 | ||
159 | =item * | |
160 | ||
43c6b706 | 161 | L<diagnostics> has been upgraded from version 1.24 to version 1.25. |
d2006265 FC |
162 | |
163 | It now strips out C<SZ<><...>> formatting codes before displaying | |
164 | descriptions [perl #94488]. | |
165 | ||
166 | =item * | |
167 | ||
4bbdbd51 NC |
168 | L<Data::Dumper> has been upgraded from version 2.133 to version 2.134. |
169 | ||
170 | The XS code for sorting hash keys has been simplified slightly. | |
171 | ||
172 | =item * | |
173 | ||
43c6b706 CBW |
174 | L<Locale::Codes> has been upgraded from version 3.17 to version 3.18. |
175 | ||
176 | The CIA world added non-standard values, so this is no longer used as a source | |
177 | of data. | |
178 | ||
179 | =item * | |
180 | ||
46661105 CB |
181 | L<File::Glob> has been upgraded from version 1.12 to version 1.13. |
182 | ||
183 | See L</Security>. | |
184 | ||
185 | =item * | |
186 | ||
43c6b706 | 187 | L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603. |
d93f0209 FC |
188 | |
189 | C<int()> on a Math::BigRat object containing -1/2 now creates a | |
190 | Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even | |
191 | support negative zero, so the resulting object was actually malformed | |
192 | [perl #95530]. | |
193 | ||
60527824 FR |
194 | =item * |
195 | ||
d6ee8587 | 196 | L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007. |
d39de893 CBW |
197 | |
198 | =item * | |
199 | ||
39afdc5a CBW |
200 | L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46. |
201 | ||
202 | =item * | |
203 | ||
666c7ca6 NC |
204 | L<ODBM_File> has been upgraded from version 1.11 to version 1.12. |
205 | ||
206 | This is only a minor refactoring of the XS code to bring it closer to the | |
207 | other C<?DBM_File> modules. | |
208 | ||
209 | =item * | |
210 | ||
a9feb6cb CBW |
211 | L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150033. |
212 | ||
213 | =item * | |
214 | ||
43c6b706 | 215 | L<Pod::Simple> has been upgraded from version 3.18 to version 3.19. |
60527824 | 216 | |
7ac26854 NC |
217 | =item * |
218 | ||
219 | L<POSIX> has been upgraded from version 1.24 to version 1.25. | |
220 | ||
221 | L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this | |
222 | implementation detail was buggy, and may fail as a result of this change. | |
223 | The module's Perl code has been considerably simplified, roughly halving | |
224 | the number of lines, with no change in functionality. | |
225 | ||
63ac71b9 | 226 | =back |
259925f6 | 227 | |
63ac71b9 | 228 | =head2 Removed Modules and Pragmata |
6252d2e2 | 229 | |
63ac71b9 | 230 | =over 4 |
9840cdee CBW |
231 | |
232 | =item * | |
233 | ||
63ac71b9 | 234 | XXX |
54e02335 | 235 | |
63ac71b9 | 236 | =back |
310913d4 | 237 | |
63ac71b9 | 238 | =head1 Documentation |
310913d4 | 239 | |
63ac71b9 RS |
240 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
241 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
7b2b001e | 242 | |
63ac71b9 | 243 | =head2 New Documentation |
7b2b001e | 244 | |
b89e9b0d | 245 | =head3 L<perlootut> |
7b2b001e | 246 | |
b89e9b0d DR |
247 | This a new OO tutorial. It focuses on basic OO concepts, and then recommends |
248 | that readers choose an OO framework from CPAN. | |
2df9265e | 249 | |
63ac71b9 | 250 | =head2 Changes to Existing Documentation |
2df9265e | 251 | |
b89e9b0d | 252 | =head3 L<perlobj> |
dc80b0c6 | 253 | |
63ac71b9 | 254 | =over 4 |
83b32788 CBW |
255 | |
256 | =item * | |
257 | ||
b89e9b0d DR |
258 | This document has been rewritten from scratch, and its coverage of various OO |
259 | concepts has been expanded. | |
4eb81ef2 | 260 | |
63ac71b9 | 261 | =back |
4eb81ef2 | 262 | |
b89e9b0d DR |
263 | =head2 Removed Documentation |
264 | ||
265 | =head3 Old OO Documentation | |
266 | ||
267 | All the old OO tutorials, perltoot, perltooc, and perlboot, have been | |
268 | removed. The perlbot (bag of object tricks) document has been removed as well. | |
269 | ||
63ac71b9 | 270 | =head1 Diagnostics |
4eb81ef2 | 271 | |
63ac71b9 RS |
272 | The following additions or changes have been made to diagnostic output, |
273 | including warnings and fatal error messages. For the complete list of | |
274 | diagnostic messages, see L<perldiag>. | |
82eefd8a | 275 | |
63ac71b9 RS |
276 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
277 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
82eefd8a | 278 | |
63ac71b9 RS |
279 | [ Within each section, list entries as a =item entry that links to perldiag, |
280 | e.g. | |
6252d2e2 | 281 | |
63ac71b9 | 282 | =item * |
6252d2e2 | 283 | |
63ac71b9 RS |
284 | L<Invalid version object|perldiag/"Invalid version object"> |
285 | ] | |
5213914c | 286 | |
63ac71b9 | 287 | =head2 New Diagnostics |
5213914c | 288 | |
63ac71b9 | 289 | XXX Newly added diagnostic messages go here |
5213914c | 290 | |
63ac71b9 | 291 | =head3 New Errors |
17609435 | 292 | |
63ac71b9 | 293 | =over 4 |
17609435 | 294 | |
69f26f52 CBW |
295 | =item * |
296 | ||
63ac71b9 | 297 | XXX L<message|perldiag/"message"> |
69f26f52 | 298 | |
5438d4b8 | 299 | =back |
77ccfaeb | 300 | |
63ac71b9 | 301 | =head3 New Warnings |
c69a30ec | 302 | |
63ac71b9 RS |
303 | =over 4 |
304 | ||
305 | =item * | |
7c420290 | 306 | |
63ac71b9 | 307 | XXX L<message|perldiag/"message"> |
7818c927 | 308 | |
63ac71b9 | 309 | =back |
7818c927 | 310 | |
63ac71b9 | 311 | =head2 Changes to Existing Diagnostics |
dd413713 | 312 | |
63ac71b9 | 313 | XXX Changes (i.e. rewording) of diagnostic messages go here |
7818c927 | 314 | |
5438d4b8 | 315 | =over 4 |
7818c927 FC |
316 | |
317 | =item * | |
318 | ||
63ac71b9 | 319 | XXX Describe change here |
5aeca1f7 | 320 | |
5438d4b8 | 321 | =back |
5aeca1f7 | 322 | |
63ac71b9 | 323 | =head1 Utility Changes |
0cb4637e | 324 | |
63ac71b9 RS |
325 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
326 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
0cb4637e | 327 | |
63ac71b9 RS |
328 | [ List utility changes as a =head3 entry for each utility and =item |
329 | entries for each change | |
330 | Use L<XXX> with program names to get proper documentation linking. ] | |
4abaf918 | 331 | |
63ac71b9 | 332 | =head3 L<XXX> |
4abaf918 | 333 | |
5438d4b8 | 334 | =over 4 |
4abaf918 Z |
335 | |
336 | =item * | |
337 | ||
63ac71b9 | 338 | XXX |
8b00e523 | 339 | |
e8e35311 FC |
340 | =back |
341 | ||
63ac71b9 | 342 | =head1 Configuration and Compilation |
b908e258 | 343 | |
63ac71b9 RS |
344 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
345 | go here. Any other changes to the Perl build process should be listed here. | |
346 | However, any platform-specific changes should be listed in the | |
347 | L</Platform Support> section, instead. | |
b908e258 | 348 | |
63ac71b9 | 349 | [ List changes as a =item entry ]. |
b908e258 | 350 | |
63ac71b9 | 351 | =over 4 |
71449ad0 DG |
352 | |
353 | =item * | |
354 | ||
5ecd28b8 NC |
355 | The file F<global.sym> is no longer needed, and has been removed. It |
356 | contained a list of all exported functions, one of the files generated by | |
357 | F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code | |
358 | has been refactored so that the only user of F<global.sym>, F<makedef.pl>, | |
359 | now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to | |
360 | store the list of exported functions in an intermediate file. | |
361 | ||
362 | As F<global.sym> was never installed, this change will not be visible | |
363 | outside the build process. | |
b908e258 | 364 | |
6693394d FC |
365 | =back |
366 | ||
63ac71b9 | 367 | =head1 Testing |
bbc28bfc | 368 | |
63ac71b9 RS |
369 | XXX Any significant changes to the testing of a freshly built perl should be |
370 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
371 | large changes to the testing harness (e.g. when parallel testing was added). | |
372 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
373 | that they represent may be covered elsewhere. | |
bbc28bfc | 374 | |
63ac71b9 | 375 | [ List each test improvement as a =item entry ] |
b7188eb5 | 376 | |
34dc2ec0 | 377 | =over 4 |
42a91c97 | 378 | |
6693394d | 379 | =item * |
42a91c97 | 380 | |
c752c500 FC |
381 | F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>. |
382 | F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence | |
383 | previously was it was possible to inadvertently commit changes that worked | |
384 | perfectly locally, but broke the build on Win32. | |
310913d4 | 385 | |
d2006265 FC |
386 | =item * |
387 | ||
388 | F<t/op/unlink.t> has been added to test the C<unlink> function. | |
389 | ||
34dc2ec0 | 390 | =back |
42a91c97 | 391 | |
0890f1a5 | 392 | =head1 Platform Support |
975dff8c | 393 | |
63ac71b9 | 394 | XXX Any changes to platform support should be listed in the sections below. |
9cfd094e | 395 | |
63ac71b9 RS |
396 | [ Within the sections, list each platform as a =item entry with specific |
397 | changes as paragraphs below it. ] | |
9cfd094e | 398 | |
63ac71b9 | 399 | =head2 New Platforms |
9cfd094e | 400 | |
63ac71b9 RS |
401 | XXX List any platforms that this version of perl compiles on, that previous |
402 | versions did not. These will either be enabled by new files in the F<hints/> | |
403 | directories, or new subdirectories and F<README> files at the top level of the | |
404 | source tree. | |
7c4c6e7c | 405 | |
5438d4b8 | 406 | =over 4 |
95f7e41f | 407 | |
63ac71b9 | 408 | =item XXX-some-platform |
95f7e41f | 409 | |
63ac71b9 | 410 | XXX |
df5b44bd | 411 | |
63ac71b9 | 412 | =back |
310913d4 | 413 | |
63ac71b9 | 414 | =head2 Discontinued Platforms |
310913d4 | 415 | |
63ac71b9 | 416 | XXX List any platforms that this version of perl no longer compiles on. |
310913d4 | 417 | |
63ac71b9 RS |
418 | =over 4 |
419 | ||
420 | =item XXX-some-platform | |
421 | ||
422 | XXX | |
310913d4 | 423 | |
5438d4b8 | 424 | =back |
df5b44bd | 425 | |
63ac71b9 RS |
426 | =head2 Platform-Specific Notes |
427 | ||
428 | XXX List any changes for specific platforms. This could include configuration | |
429 | and compilation changes or changes in portability/compatibility. However, | |
430 | changes within modules for platforms should generally be listed in the | |
431 | L</Modules and Pragmata> section. | |
e22e289d | 432 | |
5438d4b8 | 433 | =over 4 |
7818c927 | 434 | |
63ac71b9 | 435 | =item XXX-some-platform |
7818c927 | 436 | |
63ac71b9 | 437 | XXX |
f79aa60b | 438 | |
63ac71b9 | 439 | =back |
7818c927 | 440 | |
63ac71b9 | 441 | =head1 Internal Changes |
3fdd840f | 442 | |
63ac71b9 RS |
443 | XXX Changes which affect the interface available to C<XS> code go here. |
444 | Other significant internal changes for future core maintainers should | |
445 | be noted as well. | |
3fdd840f | 446 | |
63ac71b9 | 447 | [ List each change as a =item entry ] |
7ffa7e75 | 448 | |
63ac71b9 | 449 | =over 4 |
7ffa7e75 | 450 | |
862b2c43 FC |
451 | =item * |
452 | ||
63ac71b9 | 453 | XXX |
862b2c43 | 454 | |
63ac71b9 | 455 | =back |
c973bd4f | 456 | |
63ac71b9 | 457 | =head1 Selected Bug Fixes |
a6cefd81 | 458 | |
63ac71b9 RS |
459 | XXX Important bug fixes in the core language are summarised here. |
460 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
461 | L</Modules and Pragmata>. | |
a6cefd81 | 462 | |
63ac71b9 | 463 | [ List each fix as a =item entry ] |
c4499eff | 464 | |
63ac71b9 | 465 | =over 4 |
c4499eff | 466 | |
bbc28bfc FC |
467 | =item * |
468 | ||
d2006265 FC |
469 | In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$> |
470 | variable had not been used yet. This has been fixed. | |
471 | ||
472 | =item * | |
473 | ||
b4155db2 FC |
474 | C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to |
475 | return true for most, but not all built-in variables, if | |
476 | they had not been used yet. Many times that new built-in | |
477 | variables were added in past versions, this construct was | |
23496c6e | 478 | not taken into account, so this affected C<${^GLOBAL_PHASE}> and |
b4155db2 FC |
479 | C<${^UTF8CACHE}>, among others. It also used to return false if the |
480 | package name was given as well (C<${"::!"}>) and for subroutines in the | |
481 | CORE package [perl #97978] [perl #97492] [perl #97484]. | |
23496c6e FC |
482 | |
483 | =item * | |
484 | ||
d2006265 FC |
485 | Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo" |
486 | represents the name of a built-in global variable used to return false if | |
487 | the variable had never been used before, but only on the I<first> call. | |
488 | This, too, has been fixed. | |
489 | ||
490 | =item * | |
491 | ||
492 | Various functions that take a filehandle argument in rvalue context | |
493 | (C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it | |
494 | was a tied variable, and warn twice, if it was C<undef> [perl #97482]. | |
495 | ||
496 | =item * | |
497 | ||
498 | C<close> and similar filehandle functions, when called on built-in global | |
499 | variables (like C<$+>), used to die if the variable happened to hold the | |
500 | undefined value, instead of producing the usual "Use of uninitialized | |
501 | value" warning. | |
502 | ||
503 | =item * | |
504 | ||
505 | When autovivified file handles were introduced in Perl 5.6.0, C<readline> | |
506 | was inadvertently made to autovivify when called as C<readline($foo)> (but | |
507 | not as C<< <$foo> >>). It has now been fixed never to autovivify. | |
508 | ||
509 | =item * | |
510 | ||
511 | C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but | |
512 | now calls it just once. | |
513 | ||
514 | =item * | |
515 | ||
516 | Some cases of dereferencing a complex expression, such as | |
517 | C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call | |
518 | it once. | |
519 | ||
520 | =item * | |
521 | ||
522 | For a tied variable returning a package name, C<< $tied->method >> used to | |
523 | call C<FETCH> multiple times (even up to six!), and sometimes would | |
524 | fail to call the method, due to memory corruption. | |
525 | ||
526 | =item * | |
527 | ||
528 | Calling an undefined anonymous subroutine (e.g., what $x holds after | |
529 | C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which | |
530 | has been corrected to "Undefined subroutine called" [perl #71154]. | |
bbc28bfc | 531 | |
e1a80902 FC |
532 | =item * |
533 | ||
534 | Causing C<@DB::args> to be freed between uses of C<caller> no longer | |
535 | results in a crash [perl #93320]. | |
536 | ||
fdd313f4 FC |
537 | =item * |
538 | ||
539 | Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined | |
540 | values. It would die in strict mode or lvalue context for most undefined | |
541 | values, but would be treated as the empty string (with a warning) for the | |
542 | specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This | |
543 | has been corrected. C<undef()> is now treated like other undefined | |
544 | scalars, as in Perl 5.005. | |
545 | ||
01433346 FC |
546 | =item * |
547 | ||
548 | It used to be possible to free the typeglob of a localised array or hash | |
549 | (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit. | |
550 | ||
88d69532 FC |
551 | =item * |
552 | ||
553 | C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because | |
554 | C<setpgrp> was ignoring its argument if there was just one. Now it is | |
555 | equivalent to C<setpgrp($foo,0)>. | |
556 | ||
33d4ef81 FC |
557 | =item * |
558 | ||
8d4393cf FC |
559 | Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH |
560 | only once. | |
33d4ef81 | 561 | |
93564729 FC |
562 | =item * |
563 | ||
564 | C<chdir>, C<chmod> and C<chown> now always call FETCH if passed a tied | |
565 | variable as the last argument. They used to ignore tiedness if the last | |
566 | thing return from or assigned to the variable was a typeglob or reference | |
567 | to a typeglob. | |
568 | ||
63ac71b9 | 569 | =back |
bbc28bfc | 570 | |
63ac71b9 | 571 | =head1 Known Problems |
bbc28bfc | 572 | |
63ac71b9 RS |
573 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
574 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
575 | they were specific to a particular platform (see below). | |
bbc28bfc | 576 | |
63ac71b9 RS |
577 | This is a list of some significant unfixed bugs, which are regressions |
578 | from either 5.XXX.XXX or 5.XXX.XXX. | |
bbc28bfc | 579 | |
63ac71b9 | 580 | [ List each fix as a =item entry ] |
bbc28bfc | 581 | |
63ac71b9 | 582 | =over 4 |
bbc28bfc | 583 | |
bad4ae38 FC |
584 | =item * |
585 | ||
63ac71b9 | 586 | XXX |
bad4ae38 | 587 | |
63ac71b9 | 588 | =back |
ab6ce8ea | 589 | |
63ac71b9 | 590 | =head1 Obituary |
ab6ce8ea | 591 | |
63ac71b9 RS |
592 | XXX If any significant core contributor has died, we've added a short obituary |
593 | here. | |
c62f68e3 | 594 | |
44691e6f AB |
595 | =head1 Acknowledgements |
596 | ||
63ac71b9 RS |
597 | XXX Generate this with: |
598 | ||
599 | perl Porting/acknowledgements.pl v5.15.2..HEAD | |
29cf780c | 600 | |
44691e6f AB |
601 | =head1 Reporting Bugs |
602 | ||
603 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 604 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
605 | bug database at http://rt.perl.org/perlbug/ . There may also be |
606 | information at http://www.perl.org/ , the Perl Home Page. | |
607 | ||
608 | If you believe you have an unreported bug, please run the L<perlbug> | |
609 | program included with your release. Be sure to trim your bug down | |
610 | to a tiny but sufficient test case. Your bug report, along with the | |
611 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
612 | analysed by the Perl porting team. | |
613 | ||
614 | If the bug you are reporting has security implications, which make it | |
615 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 616 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
617 | unarchived mailing list, which includes |
618 | all the core committers, who will be able | |
44691e6f AB |
619 | to help assess the impact of issues, figure out a resolution, and help |
620 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
621 | platforms on which Perl is supported. Please only use this address for |
622 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
623 | distributed on CPAN. |
624 | ||
625 | =head1 SEE ALSO | |
626 | ||
627 | The F<Changes> file for an explanation of how to view exhaustive details | |
628 | on what changed. | |
629 | ||
630 | The F<INSTALL> file for how to build Perl. | |
631 | ||
632 | The F<README> file for general stuff. | |
633 | ||
634 | The F<Artistic> and F<Copying> files for copyright information. | |
635 | ||
636 | =cut |