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