4 This has been completed up to 527d644b124fe.
8 [ this is a template for a new perldelta file. Any text flagged as
9 XXX needs to be processed before release. ]
11 perldelta - what is new for perl v5.15.3
15 This document describes differences between the 5.15.2 release and
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
24 XXX Any important notices here
26 =head1 Core Enhancements
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.
32 [ List each enhancement as a =head2 entry ]
34 =head2 More CORE subs are callable through references
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.
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
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.
50 [ List each security issue as a =head2 entry ]
52 =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
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.
61 =head1 Incompatible Changes
63 =head2 User-defined case changing operations.
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
69 L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
71 =head2 XSUBs are now 'static'
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.
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.
86 [ List each deprecation as a =head2 entry ]
88 =head1 Performance Enhancements
90 XXX Changes which enhance performance without changing behaviour go here. There
91 may well be none in a stable release.
93 [ List each enhancement as a =item entry ]
103 =head1 Modules and Pragmata
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
113 [ Within each section, list entries as a =item entry ]
115 =head2 New Modules and Pragmata
125 =head2 Updated Modules and Pragmata
131 L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
133 This is only a minor documentation update.
137 L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
139 Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
143 L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110.
147 L<diagnostics> has been upgraded from version 1.24 to version 1.25.
149 It now strips out C<SZ<><...>> formatting codes before displaying
150 descriptions [perl #94488].
154 L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
156 The CIA world added non-standard values, so this is no longer used as a source
161 L<File::Glob> has been upgraded from version 1.12 to version 1.13.
167 L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
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
176 L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
180 L<POSIX> has been upgraded from version 1.24 to version 1.25.
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.
189 =head2 Removed Modules and Pragmata
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>.
204 =head2 New Documentation
206 XXX Changes which create B<new> files in F<pod/> go here.
210 XXX Description of the purpose of the new file here
212 =head2 Changes to Existing Documentation
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>
224 XXX Description of the change here
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>.
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.
237 [ Within each section, list entries as a =item entry that links to perldiag,
242 L<Invalid version object|perldiag/"Invalid version object">
245 =head2 New Diagnostics
247 XXX Newly added diagnostic messages go here
255 XXX L<message|perldiag/"message">
265 XXX L<message|perldiag/"message">
269 =head2 Changes to Existing Diagnostics
271 XXX Changes (i.e. rewording) of diagnostic messages go here
277 XXX Describe change here
281 =head1 Utility Changes
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>.
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. ]
300 =head1 Configuration and Compilation
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.
307 [ List changes as a =item entry ].
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.
320 As F<global.sym> was never installed, this change will not be visible
321 outside the build process.
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.
333 [ List each test improvement as a =item entry ]
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.
346 F<t/op/unlink.t> has been added to test the C<unlink> function.
350 =head1 Platform Support
352 XXX Any changes to platform support should be listed in the sections below.
354 [ Within the sections, list each platform as a =item entry with specific
355 changes as paragraphs below it. ]
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
366 =item XXX-some-platform
372 =head2 Discontinued Platforms
374 XXX List any platforms that this version of perl no longer compiles on.
378 =item XXX-some-platform
384 =head2 Platform-Specific Notes
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.
393 =item XXX-some-platform
399 =head1 Internal Changes
401 XXX Changes which affect the interface available to C<XS> code go here.
402 Other significant internal changes for future core maintainers should
405 [ List each change as a =item entry ]
415 =head1 Selected Bug Fixes
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>.
421 [ List each fix as a =item entry ]
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.
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].
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.
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].
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
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.
469 C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
470 now calls it just once.
474 Some cases of dereferencing a complex expression, such as
475 C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
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.
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].
492 Causing C<@DB::args> to be freed between uses of C<caller> no longer
493 results in a crash [perl #93320].
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.
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.
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)>.
517 =head1 Known Problems
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).
523 This is a list of some significant unfixed bugs, which are regressions
524 from either 5.XXX.XXX or 5.XXX.XXX.
526 [ List each fix as a =item entry ]
538 XXX If any significant core contributor has died, we've added a short obituary
541 =head1 Acknowledgements
543 XXX Generate this with:
545 perl Porting/acknowledgements.pl v5.15.2..HEAD
547 =head1 Reporting Bugs
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.
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.
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
573 The F<Changes> file for an explanation of how to view exhaustive details
576 The F<INSTALL> file for how to build Perl.
578 The F<README> file for general stuff.
580 The F<Artistic> and F<Copying> files for copyright information.