This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
41c5d57ce2f811d83ebe3054ec2c011e1b51f5ad
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 527d644b124fe.
5
6 =head1 NAME
7
8 [ this is a template for a new perldelta file. Any text flagged as
9 XXX needs to be processed before release. ]
10
11 perldelta - what is new for perl v5.15.3
12
13 =head1 DESCRIPTION
14
15 This document describes differences between the 5.15.2 release and
16 the 5.15.3 release.
17
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.
21
22 =head1 Notice
23
24 XXX Any important notices here
25
26 =head1 Core Enhancements
27
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.
31
32 [ List each enhancement as a =head2 entry ]
33
34 =head2 More CORE subs are callable through references
35
36 Perl 5.15.2 introduced subroutines in the CORE namespace.  Most of them
37 could only be called as barewords; i.e., they could be aliased at compile
38 time and then inlined under new names.
39
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.
43
44 =head1 Security
45
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.
49
50 [ List each security issue as a =head2 entry ]
51
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
61 =head1 Incompatible Changes
62
63 =head2 User-defined case changing operations.
64
65 This feature was deprecated in Perl 5.14, and has now been removed.
66 The CPAN module L<Unicode::Casing> provides better functionality without
67 the drawbacks that this feature had, as are detailed in the 5.14
68 documentation:
69 L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
70
71 =head2 XSUBs are now 'static'
72
73 XSUB C functions are now 'static', that is, they are not visible from
74 outside the compilation unit. For the exceedingly rare case where
75 this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
76 used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
77 can be made to declare XSUBs with C<XS_EXTERNAL> using the
78 C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
79
80 =head1 Deprecations
81
82 XXX Any deprecated features, syntax, modules etc. should be listed here.
83 In particular, deprecated modules should be listed here even if they are
84 listed as an updated module in the L</Modules and Pragmata> section.
85
86 [ List each deprecation as a =head2 entry ]
87
88 =head1 Performance Enhancements
89
90 XXX Changes which enhance performance without changing behaviour go here. There
91 may well be none in a stable release.
92
93 [ List each enhancement as a =item entry ]
94
95 =over 4
96
97 =item *
98
99 XXX
100
101 =back
102
103 =head1 Modules and Pragmata
104
105 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
106 go here.  If Module::CoreList is updated, generate an initial draft of the
107 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
108 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
109 below.  A paragraph summary for important changes should then be added by hand.
110 In an ideal world, dual-life modules would have a F<Changes> file that could be
111 cribbed.
112
113 [ Within each section, list entries as a =item entry ]
114
115 =head2 New Modules and Pragmata
116
117 =over 4
118
119 =item *
120
121 XXX
122
123 =back
124
125 =head2 Updated Modules and Pragmata
126
127 =over 4
128
129 =item *
130
131 L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
132
133 This is only a minor documentation update.
134
135 =item *
136
137 L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
138
139 Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
140
141 =item *
142
143 L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110.
144
145 =item *
146
147 L<diagnostics> has been upgraded from version 1.24 to version 1.25.
148
149 It now strips out C<SZ<><...>> formatting codes before displaying
150 descriptions [perl #94488].
151
152 =item *
153
154 L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
155
156 The CIA world added non-standard values, so this is no longer used as a source
157 of data.
158
159 =item *
160
161 L<File::Glob> has been upgraded from version 1.12 to version 1.13.
162
163 See L</Security>.
164
165 =item *
166
167 L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
168
169 C<int()> on a Math::BigRat object containing -1/2 now creates a
170 Math::BigInt containing 0, rather than -0.  L<Math::BigInt> does not even
171 support negative zero, so the resulting object was actually malformed
172 [perl #95530].
173
174 =item *
175
176 L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
177
178 =item *
179
180 L<POSIX> has been upgraded from version 1.24 to version 1.25.
181
182 L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
183 implementation detail was buggy, and may fail as a result of this change.
184 The module's Perl code has been considerably simplified, roughly halving
185 the number of lines, with no change in functionality.
186
187 =back
188
189 =head2 Removed Modules and Pragmata
190
191 =over 4
192
193 =item *
194
195 XXX
196
197 =back
198
199 =head1 Documentation
200
201 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
202 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
203
204 =head2 New Documentation
205
206 XXX Changes which create B<new> files in F<pod/> go here.
207
208 =head3 L<XXX>
209
210 XXX Description of the purpose of the new file here
211
212 =head2 Changes to Existing Documentation
213
214 XXX Changes which significantly change existing files in F<pod/> go here.
215 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
216 section.
217
218 =head3 L<XXX>
219
220 =over 4
221
222 =item *
223
224 XXX Description of the change here
225
226 =back
227
228 =head1 Diagnostics
229
230 The following additions or changes have been made to diagnostic output,
231 including warnings and fatal error messages.  For the complete list of
232 diagnostic messages, see L<perldiag>.
233
234 XXX New or changed warnings emitted by the core's C<C> code go here. Also
235 include any changes in L<perldiag> that reconcile it to the C<C> code.
236
237 [ Within each section, list entries as a =item entry that links to perldiag,
238   e.g.
239
240   =item *
241
242   L<Invalid version object|perldiag/"Invalid version object">
243 ]
244
245 =head2 New Diagnostics
246
247 XXX Newly added diagnostic messages go here
248
249 =head3 New Errors
250
251 =over 4
252
253 =item *
254
255 XXX L<message|perldiag/"message">
256
257 =back
258
259 =head3 New Warnings
260
261 =over 4
262
263 =item *
264
265 XXX L<message|perldiag/"message">
266
267 =back
268
269 =head2 Changes to Existing Diagnostics
270
271 XXX Changes (i.e. rewording) of diagnostic messages go here
272
273 =over 4
274
275 =item *
276
277 XXX Describe change here
278
279 =back
280
281 =head1 Utility Changes
282
283 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
284 here. Most of these are built within the directories F<utils> and F<x2p>.
285
286 [ List utility changes as a =head3 entry for each utility and =item
287 entries for each change
288 Use L<XXX> with program names to get proper documentation linking. ]
289
290 =head3 L<XXX>
291
292 =over 4
293
294 =item *
295
296 XXX
297
298 =back
299
300 =head1 Configuration and Compilation
301
302 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
303 go here.  Any other changes to the Perl build process should be listed here.
304 However, any platform-specific changes should be listed in the
305 L</Platform Support> section, instead.
306
307 [ List changes as a =item entry ].
308
309 =over 4
310
311 =item *
312
313 The file F<global.sym> is no longer needed, and has been removed. It
314 contained a list of all exported functions, one of the files generated by
315 F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
316 has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
317 now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
318 store the list of exported functions in an intermediate file.
319
320 As F<global.sym> was never installed, this change will not be visible
321 outside the build process.
322
323 =back
324
325 =head1 Testing
326
327 XXX Any significant changes to the testing of a freshly built perl should be
328 listed here.  Changes which create B<new> files in F<t/> go here as do any
329 large changes to the testing harness (e.g. when parallel testing was added).
330 Changes to existing files in F<t/> aren't worth summarising, although the bugs
331 that they represent may be covered elsewhere.
332
333 [ List each test improvement as a =item entry ]
334
335 =over 4
336
337 =item *
338
339 F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
340 F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
341 previously was it was possible to inadvertently commit changes that worked
342 perfectly locally, but broke the build on Win32.
343
344 =item *
345
346 F<t/op/unlink.t> has been added to test the C<unlink> function.
347
348 =back
349
350 =head1 Platform Support
351
352 XXX Any changes to platform support should be listed in the sections below.
353
354 [ Within the sections, list each platform as a =item entry with specific
355 changes as paragraphs below it. ]
356
357 =head2 New Platforms
358
359 XXX List any platforms that this version of perl compiles on, that previous
360 versions did not. These will either be enabled by new files in the F<hints/>
361 directories, or new subdirectories and F<README> files at the top level of the
362 source tree.
363
364 =over 4
365
366 =item XXX-some-platform
367
368 XXX
369
370 =back
371
372 =head2 Discontinued Platforms
373
374 XXX List any platforms that this version of perl no longer compiles on.
375
376 =over 4
377
378 =item XXX-some-platform
379
380 XXX
381
382 =back
383
384 =head2 Platform-Specific Notes
385
386 XXX List any changes for specific platforms. This could include configuration
387 and compilation changes or changes in portability/compatibility.  However,
388 changes within modules for platforms should generally be listed in the
389 L</Modules and Pragmata> section.
390
391 =over 4
392
393 =item XXX-some-platform
394
395 XXX
396
397 =back
398
399 =head1 Internal Changes
400
401 XXX Changes which affect the interface available to C<XS> code go here.
402 Other significant internal changes for future core maintainers should
403 be noted as well.
404
405 [ List each change as a =item entry ]
406
407 =over 4
408
409 =item *
410
411 XXX
412
413 =back
414
415 =head1 Selected Bug Fixes
416
417 XXX Important bug fixes in the core language are summarised here.
418 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
419 L</Modules and Pragmata>.
420
421 [ List each fix as a =item entry ]
422
423 =over 4
424
425 =item *
426
427 In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
428 variable had not been used yet.  This has been fixed.
429
430 =item *
431
432 C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
433 return true for most, but not all built-in variables, if
434 they had not been used yet.  Many times that new built-in
435 variables were added in past versions, this construct was
436 not taken into account, so this affected C<${^GLOBAL_PHASE}> and
437 C<${^UTF8CACHE}>, among others.  It also used to return false if the
438 package name was given as well (C<${"::!"}>) and for subroutines in the
439 CORE package [perl #97978] [perl #97492] [perl #97484].
440
441 =item *
442
443 Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
444 represents the name of a built-in global variable used to return false if
445 the variable had never been used before, but only on the I<first> call.
446 This, too, has been fixed.
447
448 =item *
449
450 Various functions that take a filehandle argument in rvalue context
451 (C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
452 was a tied variable, and warn twice, if it was C<undef> [perl #97482].
453
454 =item *
455
456 C<close> and similar filehandle functions, when called on built-in global
457 variables (like C<$+>), used to die if the variable happened to hold the
458 undefined value, instead of producing the usual "Use of uninitialized
459 value" warning.
460
461 =item *
462
463 When autovivified file handles were introduced in Perl 5.6.0, C<readline>
464 was inadvertently made to autovivify when called as C<readline($foo)> (but
465 not as C<< <$foo> >>).  It has now been fixed never to autovivify.
466
467 =item *
468
469 C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
470 now calls it just once.
471
472 =item *
473
474 Some cases of dereferencing a complex expression, such as
475 C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
476 it once.
477
478 =item *
479
480 For a tied variable returning a package name, C<< $tied->method >> used to
481 call C<FETCH> multiple times (even up to six!), and sometimes would
482 fail to call the method, due to memory corruption.
483
484 =item *
485
486 Calling an undefined anonymous subroutine (e.g., what $x holds after
487 C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
488 has been corrected to "Undefined subroutine called" [perl #71154].
489
490 =item *
491
492 Causing C<@DB::args> to be freed between uses of C<caller> no longer
493 results in a crash [perl #93320].
494
495 =item *
496
497 Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
498 values.  It would die in strict mode or lvalue context for most undefined
499 values, but would be treated as the empty string (with a warning) for the
500 specific scalar return by C<undef()> (C<&PL_sv_undef> internally).  This
501 has been corrected.  C<undef()> is now treated like other undefined
502 scalars, as in Perl 5.005.
503
504 =item *
505
506 It used to be possible to free the typeglob of a localised array or hash
507 (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
508
509 =item *
510
511 C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
512 C<setpgrp> was ignoring its argument if there was just one.  Now it is
513 equivalent to C<setpgrp($foo,0)>.
514
515 =back
516
517 =head1 Known Problems
518
519 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
520 tests that had to be C<TODO>ed for the release would be noted here, unless
521 they were specific to a particular platform (see below).
522
523 This is a list of some significant unfixed bugs, which are regressions
524 from either 5.XXX.XXX or 5.XXX.XXX.
525
526 [ List each fix as a =item entry ]
527
528 =over 4
529
530 =item *
531
532 XXX
533
534 =back
535
536 =head1 Obituary
537
538 XXX If any significant core contributor has died, we've added a short obituary
539 here.
540
541 =head1 Acknowledgements
542
543 XXX Generate this with:
544
545   perl Porting/acknowledgements.pl v5.15.2..HEAD
546
547 =head1 Reporting Bugs
548
549 If you find what you think is a bug, you might check the articles
550 recently posted to the comp.lang.perl.misc newsgroup and the perl
551 bug database at http://rt.perl.org/perlbug/ .  There may also be
552 information at http://www.perl.org/ , the Perl Home Page.
553
554 If you believe you have an unreported bug, please run the L<perlbug>
555 program included with your release.  Be sure to trim your bug down
556 to a tiny but sufficient test case.  Your bug report, along with the
557 output of C<perl -V>, will be sent off to perlbug@perl.org to be
558 analysed by the Perl porting team.
559
560 If the bug you are reporting has security implications, which make it
561 inappropriate to send to a publicly archived mailing list, then please send
562 it to perl5-security-report@perl.org. This points to a closed subscription
563 unarchived mailing list, which includes
564 all the core committers, who will be able
565 to help assess the impact of issues, figure out a resolution, and help
566 co-ordinate the release of patches to mitigate or fix the problem across all
567 platforms on which Perl is supported. Please only use this address for
568 security issues in the Perl core, not for modules independently
569 distributed on CPAN.
570
571 =head1 SEE ALSO
572
573 The F<Changes> file for an explanation of how to view exhaustive details
574 on what changed.
575
576 The F<INSTALL> file for how to build Perl.
577
578 The F<README> file for general stuff.
579
580 The F<Artistic> and F<Copying> files for copyright information.
581
582 =cut