5 [ this is a template for a new perldelta file. Any text flagged as XXX needs
6 to be processed before release. ]
8 perldelta - what is new for perl v5.21.5
12 This document describes differences between the 5.21.4 release and the 5.21.5
15 If you are upgrading from an earlier release such as 5.21.3, first read
16 L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
20 XXX Any important notices here
22 =head1 Core Enhancements
24 XXX New core language features go here. Summarize user-visible core language
25 enhancements. Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
28 [ List each enhancement as a =head2 entry ]
30 =head2 New double-diamond operator
32 C<<< <<>>> >>> is like C<< <> >> but uses three-argument C<open> to open
33 each file in @ARGV. So each element of @ARGV is an actual file name, and
34 "|foo" won't be treated as a pipe open.
36 =head2 Perl now supports POSIX 2008 locale currency additions.
38 On platforms that are able to handle POSIX.1-2008, the
40 L<C<POSIX::localeconv()>|perllocale/The localeconv function>
41 includes the international currency fields added by that version of the
42 POSIX standard. These are
44 C<int_n_sep_by_space>,
47 C<int_p_sep_by_space>,
53 =head2 Perl is now compiled with -fstack-protector-strong if available
55 Perl has been compiled with the anti-stack-smashing option
56 C<-fstack-protector> since 5.10.1. Now Perl uses the newer variant
57 called C<-fstack-protector-strong>, if available. (This was added
60 [ List each security issue as a =head2 entry ]
62 =head1 Incompatible Changes
64 XXX For a release on a stable branch, this section aspires to be:
66 There are no changes intentionally incompatible with 5.XXX.XXX
67 If any exist, they are bugs, and we request that you submit a
68 report. See L</Reporting Bugs> below.
70 [ List each incompatible change as a =head2 entry ]
74 XXX Any deprecated features, syntax, modules etc. should be listed here.
76 =head2 Module removals
78 XXX Remove this section if inapplicable.
80 The following modules will be removed from the core distribution in a
81 future release, and will at that time need to be installed from CPAN.
82 Distributions on CPAN which require these modules will need to list them as
85 The core versions of these modules will now issue C<"deprecated">-category
86 warnings to alert you to this fact. To silence these deprecation warnings,
87 install the modules in question from CPAN.
89 Note that these are (with rare exceptions) fine modules that you are encouraged
90 to continue to use. Their disinclusion from core primarily hinges on their
91 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
92 not usually on concerns over their design.
98 XXX Note that deprecated modules should be listed here even if they are listed
99 as an updated module in the L</Modules and Pragmata> section.
103 =head2 Use of multiple /x regexp modifiers
105 It is now deprecated to say something like any of the following:
111 That is, now C<x> should only occur once in any string of contiguous
112 regular expression pattern modifiers. We do not believe there are any
113 occurrences of this in all of CPAN. This is in preparation for a future
114 Perl release having C</xx> mean to allow white-space for readability in
115 bracketed character classes (those enclosed in square brackets:
118 =head1 Performance Enhancements
120 XXX Changes which enhance performance without changing behaviour go here.
121 There may well be none in a stable release.
123 [ List each enhancement as a =item entry ]
129 C<length> is up to 20% faster for non-magical/non-tied scalars containing a
130 string if it is a non-utf8 string or if C<use bytes;> is in scope.
134 Non-magical/non-tied scalars that contain only a floating point value and are
135 on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
140 In C<@array = split>, the assigment can be optimised away with C<split>
141 writing directly to the array. This optimisation was happening only for
142 package arrays other than @_ and only if the argument to split was an
143 explicit constant or scalar other than $_. Now this optimisation happens
148 C<join> is now subject to constant folding. Moreover, C<join> with a
149 scalar or constant for the separator and a single-item list to join is
150 simplified to a stringification. The separator doesn't even get evaluated.
154 C<qq(@array)> is implemented using two ops: a stringify op and a join op.
155 If the qq contains nothing but a single array, the stringification is
160 =head1 Modules and Pragmata
162 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
163 go here. If Module::CoreList is updated, generate an initial draft of the
164 following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
165 for important changes should then be added by hand. In an ideal world,
166 dual-life modules would have a F<Changes> file that could be cribbed.
168 [ Within each section, list entries as a =item entry ]
170 =head2 New Modules and Pragmata
180 =head2 Updated Modules and Pragmata
186 L<attributes> has been upgraded from version 0.23 to 0.24.
188 Avoid reading beyond the end of a buffer. [perl #122629]
192 L<B::Deparse> has been upgraded from version 1.28 to 1.29.
194 Parenthesised arrays in lists passed to C<\> are now correctly deparsed
195 with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
196 around @b), this preserving the flattening behaviour of referenced
197 parenthesised arrays. Formerly, it only worked for one array: C<\(@a)>.
199 C<local our> is now deparsed correctly, with the C<our> included.
201 C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
204 Core keywords that conflict with lexical subroutines are now deparsed with
205 the C<CORE::> prefix.
207 C<foreach state $x (...) {...}> now deparses correctly with C<state> and
210 C<our @array = split(...)> now deparses correctly with C<our> in those
211 cases where the assignment is optimised away.
215 L<DynaLoader> has been upgraded from version 1.26 to 1.27.
217 Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
221 L<Fcntl> has been upgraded from version 1.12 to 1.13.
223 Add support for the Linux pipe buffer size fcntl() commands.
227 L<File::Find> has been upgraded from version 1.28 to 1.29.
229 Slightly faster module loading time.
233 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
235 Updated to cover the latest releases of Perl.
239 The PathTools module collection has been upgraded from version 3.50 to 3.51.
241 Slightly faster module loading time.
245 L<POSIX> has been upgraded from version 1.44 to 1.45.
247 POSIX::tmpnam() now produces a deprecation warning. [perl #122005]
251 L<XSLoader> has been upgraded from version 0.17 to 0.18.
253 Allow XSLoader to load modules from a different namespace.
258 =head2 Removed Modules and Pragmata
270 XXX Changes to files in F<pod/> go here. Consider grouping entries by
271 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
273 =head2 New Documentation
275 XXX Changes which create B<new> files in F<pod/> go here.
279 XXX Description of the purpose of the new file here
281 =head2 Changes to Existing Documentation
283 XXX Changes which significantly change existing files in F<pod/> go here.
284 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
293 Clarifications have been added to L<perlrecharclass/Character Ranges>
294 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
295 any subranges thereof in regular expression bracketed character classes
296 are guaranteed to match exactly what a naive English speaker would
297 expect them to match, even on platforms (such as EBCDIC) where special
298 handling is required to accomplish this.
304 The following additions or changes have been made to diagnostic output,
305 including warnings and fatal error messages. For the complete list of
306 diagnostic messages, see L<perldiag>.
308 XXX New or changed warnings emitted by the core's C<C> code go here. Also
309 include any changes in L<perldiag> that reconcile it to the C<C> code.
311 =head2 New Diagnostics
313 XXX Newly added diagnostic messages go under here, separated into New Errors
322 XXX L<message|perldiag/"message">
332 XXX L<message|perldiag/"message">
336 =head2 Changes to Existing Diagnostics
338 XXX Changes (i.e. rewording) of diagnostic messages go here
344 '"my" variable &foo::bar can't be in a package' has been reworded to say
345 'subroutine' instead of 'variable'.
349 =head1 Utility Changes
351 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
352 Most of these are built within the directory F<utils>.
354 [ List utility changes as a =head2 entry for each utility and =item
355 entries for each change
356 Use L<XXX> with program names to get proper documentation linking. ]
368 =head1 Configuration and Compilation
370 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
371 go here. Any other changes to the Perl build process should be listed here.
372 However, any platform-specific changes should be listed in the
373 L</Platform Support> section, instead.
375 [ List changes as a =item entry ].
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 summarizing, although the bugs
391 that they represent may be covered elsewhere.
393 [ List each test improvement as a =item entry ]
403 =head1 Platform Support
405 XXX Any changes to platform support should be listed in the sections below.
407 [ Within the sections, list each platform as a =item entry with specific
408 changes as paragraphs below it. ]
412 XXX List any platforms that this version of perl compiles on, that previous
413 versions did not. These will either be enabled by new files in the F<hints/>
414 directories, or new subdirectories and F<README> files at the top level of the
419 =item XXX-some-platform
425 =head2 Discontinued Platforms
427 XXX List any platforms that this version of perl no longer compiles on.
431 =item XXX-some-platform
437 =head2 Platform-Specific Notes
439 XXX List any changes for specific platforms. This could include configuration
440 and compilation changes or changes in portability/compatibility. However,
441 changes within modules for platforms should generally be listed in the
442 L</Modules and Pragmata> section.
448 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
449 match only C<"i"> and C<"j">, since there are 7 characters between the
450 code points for C<"i"> and C<"j">. This special handling had only been
451 invoked when both ends of the range are literals. Now it is also
452 invoked if any of the C<\N{...}> forms for specifying a character by
453 name or Unicode code point is used instead of a literal. See
454 L<perlrecharclass/Character Ranges>.
458 =head1 Internal Changes
460 XXX Changes which affect the interface available to C<XS> code go here. Other
461 significant internal changes for future core maintainers should be noted as
464 [ List each change as a =item entry ]
470 SVs of type SVt_NV are now bodyless when a build configure and platform allow
471 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
472 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
473 platforms and build configurations.
477 The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
478 get magic that stores their values as IVs and those IVs are used when
479 testing their values in C<pp_dbstate>. This prevents perl from
480 recursing infinity if an overloaded object is assigned to any of those
481 variables. [perl #122445]
485 C<Perl_tmps_grow> which is marked as public API but undocumented has been
486 removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
487 preextend the mortal stack, you are unaffected by this change.
491 C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
492 It now has a flags field that allows the caller to specify whether the name
493 should be fully qualified. See L<perlapi/cv_name>.
497 Internally Perl no longer uses the C<SVs_PADMY> flag. C<SvPADMY()> now
498 returns a true value for anything not marked PADTMP. C<SVs_PADMY> is now
503 =head1 Selected Bug Fixes
505 XXX Important bug fixes in the core language are summarized here. Bug fixes in
506 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
508 [ List each fix as a =item entry ]
514 Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
515 no longer has any affect on values that are read-only to begin. Unlocking
516 such values could result in crashes, hangs or other erratic behaviour.
520 The internal C<looks_like_number> function (which L<Scalar::Util> provides
521 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
522 also C<-'-e1'>. This has been fixed.
526 The flip-flop operator (C<..> in scalar context) would return the same
527 scalar each time, unles the containing subroutine was called recursively.
528 Now it always returns a new scalar. [perl #122829]
532 Some unterminated C<(?(...)...)> constructs in regular expressions would
533 either crash or give erroneous error messages. C</(?(1)/> is one such
538 C<pack "w", $tied> no longer calls FETCH twice.
542 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
543 have been aliased by C<foreach>.
547 Some patterns including code blocks with syntax errors, such as
548 C</ (?{(^{})/>, would hang or fail assertions on debugging builds. Now
553 An assertion failure when parsing C<sort> with debugging enabled has been
554 fixed. [perl #122771]
558 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
563 In C<() = @array = split>, the C<() => at the beginning no longer confuses
564 the optimiser, making it assume a limit of 1.
568 =head1 Known Problems
570 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
571 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
572 platform specific bugs also go here.
574 [ List each fix as a =item entry ]
584 =head1 Errata From Previous Releases
590 XXX Add anything here that we forgot to add, or were mistaken about, in
591 the perldelta of a previous release.
597 XXX If any significant core contributor has died, we've added a short obituary
600 =head1 Acknowledgements
602 XXX Generate this with:
604 perl Porting/acknowledgements.pl v5.21.4..HEAD
606 =head1 Reporting Bugs
608 If you find what you think is a bug, you might check the articles recently
609 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
610 https://rt.perl.org/ . There may also be information at
611 http://www.perl.org/ , the Perl Home Page.
613 If you believe you have an unreported bug, please run the L<perlbug> program
614 included with your release. Be sure to trim your bug down to a tiny but
615 sufficient test case. Your bug report, along with the output of C<perl -V>,
616 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
618 If the bug you are reporting has security implications, which make it
619 inappropriate to send to a publicly archived mailing list, then please send it
620 to perl5-security-report@perl.org. This points to a closed subscription
621 unarchived mailing list, which includes all the core committers, who will be
622 able to help assess the impact of issues, figure out a resolution, and help
623 co-ordinate the release of patches to mitigate or fix the problem across all
624 platforms on which Perl is supported. Please only use this address for
625 security issues in the Perl core, not for modules independently distributed on
630 The F<Changes> file for an explanation of how to view exhaustive details on
633 The F<INSTALL> file for how to build Perl.
635 The F<README> file for general stuff.
637 The F<Artistic> and F<Copying> files for copyright information.