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 | ||
93e94d8a CBW |
153 | L<Archive::Tar> has been upgraded from version 1.76 to version 1.78. |
154 | ||
155 | =item * | |
156 | ||
755f12e5 NC |
157 | L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110. |
158 | ||
159 | =item * | |
160 | ||
50b3d220 CBW |
161 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58. |
162 | ||
163 | =item * | |
164 | ||
43c6b706 | 165 | L<diagnostics> has been upgraded from version 1.24 to version 1.25. |
d2006265 FC |
166 | |
167 | It now strips out C<SZ<><...>> formatting codes before displaying | |
168 | descriptions [perl #94488]. | |
169 | ||
170 | =item * | |
171 | ||
4bbdbd51 NC |
172 | L<Data::Dumper> has been upgraded from version 2.133 to version 2.134. |
173 | ||
174 | The XS code for sorting hash keys has been simplified slightly. | |
175 | ||
176 | =item * | |
177 | ||
98e61122 NC |
178 | L<ExtUtils::ParseXS> has been upgraded from version 3.04_03 to version 3.04_04. |
179 | ||
180 | The handling of C<dVAR> in the generated XS code has been simplified. | |
181 | ||
182 | =item * | |
183 | ||
43c6b706 CBW |
184 | L<Locale::Codes> has been upgraded from version 3.17 to version 3.18. |
185 | ||
186 | The CIA world added non-standard values, so this is no longer used as a source | |
187 | of data. | |
188 | ||
189 | =item * | |
190 | ||
46661105 CB |
191 | L<File::Glob> has been upgraded from version 1.12 to version 1.13. |
192 | ||
193 | See L</Security>. | |
194 | ||
195 | =item * | |
196 | ||
0b2be169 FC |
197 | L<Filter::Simple> has been upgrade from version 0.87 to 0.88. |
198 | ||
199 | It is now better at detecting the end of a pod section. It always checks | |
200 | for =cut, instead of checking for =end (if the pod begins with =begin) or | |
201 | the end of the paragraph (if the pod begins with =for) [perl #92436]. | |
202 | ||
203 | =item * | |
204 | ||
43c6b706 | 205 | L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603. |
d93f0209 FC |
206 | |
207 | C<int()> on a Math::BigRat object containing -1/2 now creates a | |
208 | Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even | |
209 | support negative zero, so the resulting object was actually malformed | |
210 | [perl #95530]. | |
211 | ||
60527824 FR |
212 | =item * |
213 | ||
d6ee8587 | 214 | L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007. |
d39de893 CBW |
215 | |
216 | =item * | |
217 | ||
39afdc5a CBW |
218 | L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46. |
219 | ||
220 | =item * | |
221 | ||
666c7ca6 NC |
222 | L<ODBM_File> has been upgraded from version 1.11 to version 1.12. |
223 | ||
224 | This is only a minor refactoring of the XS code to bring it closer to the | |
225 | other C<?DBM_File> modules. | |
226 | ||
227 | =item * | |
228 | ||
a9feb6cb CBW |
229 | L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150033. |
230 | ||
231 | =item * | |
232 | ||
43c6b706 | 233 | L<Pod::Simple> has been upgraded from version 3.18 to version 3.19. |
60527824 | 234 | |
7ac26854 NC |
235 | =item * |
236 | ||
237 | L<POSIX> has been upgraded from version 1.24 to version 1.25. | |
238 | ||
239 | L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this | |
240 | implementation detail was buggy, and may fail as a result of this change. | |
241 | The module's Perl code has been considerably simplified, roughly halving | |
242 | the number of lines, with no change in functionality. | |
243 | ||
63ac71b9 | 244 | =back |
259925f6 | 245 | |
63ac71b9 | 246 | =head2 Removed Modules and Pragmata |
6252d2e2 | 247 | |
63ac71b9 | 248 | =over 4 |
9840cdee CBW |
249 | |
250 | =item * | |
251 | ||
63ac71b9 | 252 | XXX |
54e02335 | 253 | |
63ac71b9 | 254 | =back |
310913d4 | 255 | |
63ac71b9 | 256 | =head1 Documentation |
310913d4 | 257 | |
63ac71b9 RS |
258 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
259 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
7b2b001e | 260 | |
63ac71b9 | 261 | =head2 New Documentation |
7b2b001e | 262 | |
b89e9b0d | 263 | =head3 L<perlootut> |
7b2b001e | 264 | |
b89e9b0d DR |
265 | This a new OO tutorial. It focuses on basic OO concepts, and then recommends |
266 | that readers choose an OO framework from CPAN. | |
2df9265e | 267 | |
63ac71b9 | 268 | =head2 Changes to Existing Documentation |
2df9265e | 269 | |
b89e9b0d | 270 | =head3 L<perlobj> |
dc80b0c6 | 271 | |
63ac71b9 | 272 | =over 4 |
83b32788 CBW |
273 | |
274 | =item * | |
275 | ||
b89e9b0d DR |
276 | This document has been rewritten from scratch, and its coverage of various OO |
277 | concepts has been expanded. | |
4eb81ef2 | 278 | |
63ac71b9 | 279 | =back |
4eb81ef2 | 280 | |
b89e9b0d DR |
281 | =head2 Removed Documentation |
282 | ||
283 | =head3 Old OO Documentation | |
284 | ||
285 | All the old OO tutorials, perltoot, perltooc, and perlboot, have been | |
286 | removed. The perlbot (bag of object tricks) document has been removed as well. | |
287 | ||
63ac71b9 | 288 | =head1 Diagnostics |
4eb81ef2 | 289 | |
63ac71b9 RS |
290 | The following additions or changes have been made to diagnostic output, |
291 | including warnings and fatal error messages. For the complete list of | |
292 | diagnostic messages, see L<perldiag>. | |
82eefd8a | 293 | |
63ac71b9 RS |
294 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
295 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
82eefd8a | 296 | |
63ac71b9 RS |
297 | [ Within each section, list entries as a =item entry that links to perldiag, |
298 | e.g. | |
6252d2e2 | 299 | |
63ac71b9 | 300 | =item * |
6252d2e2 | 301 | |
63ac71b9 RS |
302 | L<Invalid version object|perldiag/"Invalid version object"> |
303 | ] | |
5213914c | 304 | |
63ac71b9 | 305 | =head2 New Diagnostics |
5213914c | 306 | |
63ac71b9 | 307 | XXX Newly added diagnostic messages go here |
5213914c | 308 | |
63ac71b9 | 309 | =head3 New Errors |
17609435 | 310 | |
63ac71b9 | 311 | =over 4 |
17609435 | 312 | |
69f26f52 CBW |
313 | =item * |
314 | ||
63ac71b9 | 315 | XXX L<message|perldiag/"message"> |
69f26f52 | 316 | |
5438d4b8 | 317 | =back |
77ccfaeb | 318 | |
63ac71b9 | 319 | =head3 New Warnings |
c69a30ec | 320 | |
63ac71b9 RS |
321 | =over 4 |
322 | ||
323 | =item * | |
7c420290 | 324 | |
63ac71b9 | 325 | XXX L<message|perldiag/"message"> |
7818c927 | 326 | |
63ac71b9 | 327 | =back |
7818c927 | 328 | |
63ac71b9 | 329 | =head2 Changes to Existing Diagnostics |
dd413713 | 330 | |
63ac71b9 | 331 | XXX Changes (i.e. rewording) of diagnostic messages go here |
7818c927 | 332 | |
5438d4b8 | 333 | =over 4 |
7818c927 FC |
334 | |
335 | =item * | |
336 | ||
63ac71b9 | 337 | XXX Describe change here |
5aeca1f7 | 338 | |
5438d4b8 | 339 | =back |
5aeca1f7 | 340 | |
63ac71b9 | 341 | =head1 Utility Changes |
0cb4637e | 342 | |
63ac71b9 RS |
343 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
344 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
0cb4637e | 345 | |
63ac71b9 RS |
346 | [ List utility changes as a =head3 entry for each utility and =item |
347 | entries for each change | |
348 | Use L<XXX> with program names to get proper documentation linking. ] | |
4abaf918 | 349 | |
63ac71b9 | 350 | =head3 L<XXX> |
4abaf918 | 351 | |
5438d4b8 | 352 | =over 4 |
4abaf918 Z |
353 | |
354 | =item * | |
355 | ||
63ac71b9 | 356 | XXX |
8b00e523 | 357 | |
e8e35311 FC |
358 | =back |
359 | ||
63ac71b9 | 360 | =head1 Configuration and Compilation |
b908e258 | 361 | |
63ac71b9 RS |
362 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
363 | go here. Any other changes to the Perl build process should be listed here. | |
364 | However, any platform-specific changes should be listed in the | |
365 | L</Platform Support> section, instead. | |
b908e258 | 366 | |
63ac71b9 | 367 | [ List changes as a =item entry ]. |
b908e258 | 368 | |
63ac71b9 | 369 | =over 4 |
71449ad0 DG |
370 | |
371 | =item * | |
372 | ||
5ecd28b8 NC |
373 | The file F<global.sym> is no longer needed, and has been removed. It |
374 | contained a list of all exported functions, one of the files generated by | |
375 | F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code | |
376 | has been refactored so that the only user of F<global.sym>, F<makedef.pl>, | |
377 | now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to | |
378 | store the list of exported functions in an intermediate file. | |
379 | ||
380 | As F<global.sym> was never installed, this change will not be visible | |
381 | outside the build process. | |
b908e258 | 382 | |
6693394d FC |
383 | =back |
384 | ||
63ac71b9 | 385 | =head1 Testing |
bbc28bfc | 386 | |
63ac71b9 RS |
387 | XXX Any significant changes to the testing of a freshly built perl should be |
388 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
389 | large changes to the testing harness (e.g. when parallel testing was added). | |
390 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
391 | that they represent may be covered elsewhere. | |
bbc28bfc | 392 | |
63ac71b9 | 393 | [ List each test improvement as a =item entry ] |
b7188eb5 | 394 | |
34dc2ec0 | 395 | =over 4 |
42a91c97 | 396 | |
6693394d | 397 | =item * |
42a91c97 | 398 | |
c752c500 FC |
399 | F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>. |
400 | F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence | |
401 | previously was it was possible to inadvertently commit changes that worked | |
402 | perfectly locally, but broke the build on Win32. | |
310913d4 | 403 | |
d2006265 FC |
404 | =item * |
405 | ||
406 | F<t/op/unlink.t> has been added to test the C<unlink> function. | |
407 | ||
34dc2ec0 | 408 | =back |
42a91c97 | 409 | |
0890f1a5 | 410 | =head1 Platform Support |
975dff8c | 411 | |
63ac71b9 | 412 | XXX Any changes to platform support should be listed in the sections below. |
9cfd094e | 413 | |
63ac71b9 RS |
414 | [ Within the sections, list each platform as a =item entry with specific |
415 | changes as paragraphs below it. ] | |
9cfd094e | 416 | |
63ac71b9 | 417 | =head2 New Platforms |
9cfd094e | 418 | |
63ac71b9 RS |
419 | XXX List any platforms that this version of perl compiles on, that previous |
420 | versions did not. These will either be enabled by new files in the F<hints/> | |
421 | directories, or new subdirectories and F<README> files at the top level of the | |
422 | source tree. | |
7c4c6e7c | 423 | |
5438d4b8 | 424 | =over 4 |
95f7e41f | 425 | |
63ac71b9 | 426 | =item XXX-some-platform |
95f7e41f | 427 | |
63ac71b9 | 428 | XXX |
df5b44bd | 429 | |
63ac71b9 | 430 | =back |
310913d4 | 431 | |
63ac71b9 | 432 | =head2 Discontinued Platforms |
310913d4 | 433 | |
63ac71b9 | 434 | XXX List any platforms that this version of perl no longer compiles on. |
310913d4 | 435 | |
63ac71b9 RS |
436 | =over 4 |
437 | ||
438 | =item XXX-some-platform | |
439 | ||
440 | XXX | |
310913d4 | 441 | |
5438d4b8 | 442 | =back |
df5b44bd | 443 | |
63ac71b9 RS |
444 | =head2 Platform-Specific Notes |
445 | ||
446 | XXX List any changes for specific platforms. This could include configuration | |
447 | and compilation changes or changes in portability/compatibility. However, | |
448 | changes within modules for platforms should generally be listed in the | |
449 | L</Modules and Pragmata> section. | |
e22e289d | 450 | |
5438d4b8 | 451 | =over 4 |
7818c927 | 452 | |
63ac71b9 | 453 | =item XXX-some-platform |
7818c927 | 454 | |
63ac71b9 | 455 | XXX |
f79aa60b | 456 | |
63ac71b9 | 457 | =back |
7818c927 | 458 | |
63ac71b9 | 459 | =head1 Internal Changes |
3fdd840f | 460 | |
63ac71b9 RS |
461 | XXX Changes which affect the interface available to C<XS> code go here. |
462 | Other significant internal changes for future core maintainers should | |
463 | be noted as well. | |
3fdd840f | 464 | |
63ac71b9 | 465 | [ List each change as a =item entry ] |
7ffa7e75 | 466 | |
63ac71b9 | 467 | =over 4 |
7ffa7e75 | 468 | |
862b2c43 FC |
469 | =item * |
470 | ||
63ac71b9 | 471 | XXX |
862b2c43 | 472 | |
63ac71b9 | 473 | =back |
c973bd4f | 474 | |
63ac71b9 | 475 | =head1 Selected Bug Fixes |
a6cefd81 | 476 | |
63ac71b9 RS |
477 | XXX Important bug fixes in the core language are summarised here. |
478 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
479 | L</Modules and Pragmata>. | |
a6cefd81 | 480 | |
63ac71b9 | 481 | [ List each fix as a =item entry ] |
c4499eff | 482 | |
63ac71b9 | 483 | =over 4 |
c4499eff | 484 | |
bbc28bfc FC |
485 | =item * |
486 | ||
d2006265 FC |
487 | In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$> |
488 | variable had not been used yet. This has been fixed. | |
489 | ||
490 | =item * | |
491 | ||
b4155db2 FC |
492 | C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to |
493 | return true for most, but not all built-in variables, if | |
494 | they had not been used yet. Many times that new built-in | |
495 | variables were added in past versions, this construct was | |
23496c6e | 496 | not taken into account, so this affected C<${^GLOBAL_PHASE}> and |
b4155db2 FC |
497 | C<${^UTF8CACHE}>, among others. It also used to return false if the |
498 | package name was given as well (C<${"::!"}>) and for subroutines in the | |
499 | CORE package [perl #97978] [perl #97492] [perl #97484]. | |
23496c6e FC |
500 | |
501 | =item * | |
502 | ||
d2006265 FC |
503 | Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo" |
504 | represents the name of a built-in global variable used to return false if | |
505 | the variable had never been used before, but only on the I<first> call. | |
506 | This, too, has been fixed. | |
507 | ||
508 | =item * | |
509 | ||
510 | Various functions that take a filehandle argument in rvalue context | |
511 | (C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it | |
512 | was a tied variable, and warn twice, if it was C<undef> [perl #97482]. | |
513 | ||
514 | =item * | |
515 | ||
516 | C<close> and similar filehandle functions, when called on built-in global | |
517 | variables (like C<$+>), used to die if the variable happened to hold the | |
518 | undefined value, instead of producing the usual "Use of uninitialized | |
519 | value" warning. | |
520 | ||
521 | =item * | |
522 | ||
523 | When autovivified file handles were introduced in Perl 5.6.0, C<readline> | |
524 | was inadvertently made to autovivify when called as C<readline($foo)> (but | |
525 | not as C<< <$foo> >>). It has now been fixed never to autovivify. | |
526 | ||
527 | =item * | |
528 | ||
529 | C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but | |
530 | now calls it just once. | |
531 | ||
532 | =item * | |
533 | ||
534 | Some cases of dereferencing a complex expression, such as | |
535 | C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call | |
536 | it once. | |
537 | ||
538 | =item * | |
539 | ||
540 | For a tied variable returning a package name, C<< $tied->method >> used to | |
541 | call C<FETCH> multiple times (even up to six!), and sometimes would | |
542 | fail to call the method, due to memory corruption. | |
543 | ||
544 | =item * | |
545 | ||
546 | Calling an undefined anonymous subroutine (e.g., what $x holds after | |
547 | C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which | |
548 | has been corrected to "Undefined subroutine called" [perl #71154]. | |
bbc28bfc | 549 | |
e1a80902 FC |
550 | =item * |
551 | ||
552 | Causing C<@DB::args> to be freed between uses of C<caller> no longer | |
553 | results in a crash [perl #93320]. | |
554 | ||
fdd313f4 FC |
555 | =item * |
556 | ||
557 | Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined | |
558 | values. It would die in strict mode or lvalue context for most undefined | |
559 | values, but would be treated as the empty string (with a warning) for the | |
560 | specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This | |
561 | has been corrected. C<undef()> is now treated like other undefined | |
562 | scalars, as in Perl 5.005. | |
563 | ||
01433346 FC |
564 | =item * |
565 | ||
566 | It used to be possible to free the typeglob of a localised array or hash | |
567 | (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit. | |
568 | ||
88d69532 FC |
569 | =item * |
570 | ||
571 | C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because | |
572 | C<setpgrp> was ignoring its argument if there was just one. Now it is | |
573 | equivalent to C<setpgrp($foo,0)>. | |
574 | ||
33d4ef81 FC |
575 | =item * |
576 | ||
8d4393cf FC |
577 | Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH |
578 | only once. | |
33d4ef81 | 579 | |
93564729 FC |
580 | =item * |
581 | ||
582 | C<chdir>, C<chmod> and C<chown> now always call FETCH if passed a tied | |
583 | variable as the last argument. They used to ignore tiedness if the last | |
584 | thing return from or assigned to the variable was a typeglob or reference | |
585 | to a typeglob. | |
586 | ||
63ac71b9 | 587 | =back |
bbc28bfc | 588 | |
63ac71b9 | 589 | =head1 Known Problems |
bbc28bfc | 590 | |
63ac71b9 RS |
591 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
592 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
593 | they were specific to a particular platform (see below). | |
bbc28bfc | 594 | |
63ac71b9 RS |
595 | This is a list of some significant unfixed bugs, which are regressions |
596 | from either 5.XXX.XXX or 5.XXX.XXX. | |
bbc28bfc | 597 | |
63ac71b9 | 598 | [ List each fix as a =item entry ] |
bbc28bfc | 599 | |
63ac71b9 | 600 | =over 4 |
bbc28bfc | 601 | |
bad4ae38 FC |
602 | =item * |
603 | ||
63ac71b9 | 604 | XXX |
bad4ae38 | 605 | |
63ac71b9 | 606 | =back |
ab6ce8ea | 607 | |
63ac71b9 | 608 | =head1 Obituary |
ab6ce8ea | 609 | |
63ac71b9 RS |
610 | XXX If any significant core contributor has died, we've added a short obituary |
611 | here. | |
c62f68e3 | 612 | |
44691e6f AB |
613 | =head1 Acknowledgements |
614 | ||
63ac71b9 RS |
615 | XXX Generate this with: |
616 | ||
617 | perl Porting/acknowledgements.pl v5.15.2..HEAD | |
29cf780c | 618 | |
44691e6f AB |
619 | =head1 Reporting Bugs |
620 | ||
621 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 622 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
623 | bug database at http://rt.perl.org/perlbug/ . There may also be |
624 | information at http://www.perl.org/ , the Perl Home Page. | |
625 | ||
626 | If you believe you have an unreported bug, please run the L<perlbug> | |
627 | program included with your release. Be sure to trim your bug down | |
628 | to a tiny but sufficient test case. Your bug report, along with the | |
629 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
630 | analysed by the Perl porting team. | |
631 | ||
632 | If the bug you are reporting has security implications, which make it | |
633 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 634 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
635 | unarchived mailing list, which includes |
636 | all the core committers, who will be able | |
44691e6f AB |
637 | to help assess the impact of issues, figure out a resolution, and help |
638 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
639 | platforms on which Perl is supported. Please only use this address for |
640 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
641 | distributed on CPAN. |
642 | ||
643 | =head1 SEE ALSO | |
644 | ||
645 | The F<Changes> file for an explanation of how to view exhaustive details | |
646 | on what changed. | |
647 | ||
648 | The F<INSTALL> file for how to build Perl. | |
649 | ||
650 | The F<README> file for general stuff. | |
651 | ||
652 | The F<Artistic> and F<Copying> files for copyright information. | |
653 | ||
654 | =cut |