4 Stuff that needs to be done still:
5 6136213 [perl #52000] Warn/abort on attempted perl exit
6 cccbbce Reap child in case where exception has been thrown
7 70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
8 aa8c2dc Fix RT #41461 (with a test).
12 [ this is a template for a new perldelta file. Any text flagged as XXX needs
13 to be processed before release. ]
15 perldelta - what is new for perl v5.19.3
19 This document describes differences between the 5.19.2 release and the 5.19.3
22 If you are upgrading from an earlier release such as 5.19.1, first read
23 L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
27 XXX Any important notices here
29 =head1 Core Enhancements
31 XXX New core language features go here. Summarize user-visible core language
32 enhancements. Particularly prominent performance optimisations could go
33 here, but most should go in the L</Performance Enhancements> section.
35 [ List each enhancement as a =head2 entry ]
37 =head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
39 Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
40 B<-p> was a no-op, with this change, if you supply B<-F> then both
41 B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
43 You can still use B<-p> for its extra behaviour. [perl #116190]
47 XXX Any security-related notices go here. In particular, any security
48 vulnerabilities closed should be noted here rather than in the
49 L</Selected Bug Fixes> section.
51 [ List each security issue as a =head2 entry ]
53 =head1 Incompatible Changes
55 XXX For a release on a stable branch, this section aspires to be:
57 There are no changes intentionally incompatible with 5.XXX.XXX
58 If any exist, they are bugs, and we request that you submit a
59 report. See L</Reporting Bugs> below.
61 [ List each incompatible change as a =head2 entry ]
65 XXX Any deprecated features, syntax, modules etc. should be listed here.
67 =head2 Module removals
69 XXX Remove this section if inapplicable.
71 The following modules will be removed from the core distribution in a
72 future release, and will at that time need to be installed from CPAN.
73 Distributions on CPAN which require these modules will need to list them as
76 The core versions of these modules will now issue C<"deprecated">-category
77 warnings to alert you to this fact. To silence these deprecation warnings,
78 install the modules in question from CPAN.
80 Note that these are (with rare exceptions) fine modules that you are encouraged
81 to continue to use. Their disinclusion from core primarily hinges on their
82 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
83 not usually on concerns over their design.
87 XXX Note that deprecated modules should be listed here even if they are listed
88 as an updated module in the L</Modules and Pragmata> section.
92 [ List each other deprecation as a =head2 entry ]
94 =head1 Performance Enhancements
96 XXX Changes which enhance performance without changing behaviour go here.
97 There may well be none in a stable release.
99 [ List each enhancement as a =item entry ]
109 =head1 Modules and Pragmata
111 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
112 go here. If Module::CoreList is updated, generate an initial draft of the
113 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
114 entries to STDOUT. Results can be pasted in place of the '=head2' entries
115 below. A paragraph summary for important changes should then be added by hand.
116 In an ideal world, dual-life modules would have a F<Changes> file that could be
119 [ Within each section, list entries as a =item entry ]
121 =head2 New Modules and Pragmata
131 =head2 Updated Modules and Pragmata
137 L<B> has been upgraded from version 1.44 to 1.45.
139 Calling the C<GV> method on C<B::CV> objects created from a lexical
140 sub would return nonsense, possibly crashing perl. C<GV> now returns
141 C<undef> for lexical subs. [perl #118525]
143 Added the C<NAME_HEK> method to return the name of a lexical sub.
147 L<bignum> has been upgraded from version 0.35 to 0.36.
149 L<bigrat> wasn't correctly updating an internal variable when C<use>d
150 with a C<lib> option.
154 L<Carp> has been upgraded from 1.30 to 1.31
156 L<Carp> now handles objects with string overloads. It also allows objects
157 to specify how they appear in the stack dump with a C<CARP_TRACE> method,
158 and also allows the user to specify their own formatter for objects without
159 C<CARP_TRACE> as well as other references. [perl #92446]
163 L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
167 L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
171 L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
175 L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
177 The compatbility of the XS implementation with the pure perl version
178 under C<Useqq> has been improved. [perl #118933]
182 L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
184 The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
185 removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
187 C<fill_mstats> no longer crashes if its argument is not already a string.
192 L<Exporter> has been upgraded from version 5.68 to 5.69.
194 L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
195 C<Exporter::Heavy>. [perl #39739]
199 The IO-Compress module collection has been upgraded from 2.061 to 2.062.
203 L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
205 C<run_forked> has various fixes/improvements, L<Socket> is only used where
206 needed and a regression introduced in 0.78 has been fixed.
210 The libnet module collection has been upgraded from version 1.22 to 1.23.
214 L<List::Util> has been upgraded from version 1.27 to 1.30
216 L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
217 C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
222 L<parent> has been upgraded from version 0.225 to 0.226.
226 L<Socket> has been upgraded from version 2.010 to 2.011.
228 Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
229 structures due to embedded sun_len. [cpan #86613]
233 L<Storable> has been upgraded from version 2.45 to 2.46.
235 Avoid creating temporary objects for STORABLE_attach when they aren't
236 required. [perl #118907]
240 L<Time::Piece> has been upgraded from version 1.21 to 1.22.
244 =head2 Removed Modules and Pragmata
256 XXX Changes to files in F<pod/> go here. Consider grouping entries by
257 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
259 =head2 New Documentation
261 XXX Changes which create B<new> files in F<pod/> go here.
265 XXX Description of the purpose of the new file here
267 =head2 Changes to Existing Documentation
269 XXX Changes which significantly change existing files in F<pod/> go here.
270 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
273 =head3 L<perlopentut>
279 The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
280 focuses on covering only the basics, rather than providing a comprehensive
281 reference to all things openable. This rewrite came as the result of a
282 vigorous discussion on perl5-porters kicked off by a set of improvements
283 written by Alexander Hartmaier to the existing C<perlopentut>. A "more than
284 you ever wanted to know about C<open>" document may follow in subsequent
291 The following additions or changes have been made to diagnostic output,
292 including warnings and fatal error messages. For the complete list of
293 diagnostic messages, see L<perldiag>.
295 XXX New or changed warnings emitted by the core's C<C> code go here. Also
296 include any changes in L<perldiag> that reconcile it to the C<C> code.
298 =head2 New Diagnostics
300 XXX Newly added diagnostic messages go under here, separated into New Errors
309 XXX L<message|perldiag/"message">
319 L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument
320 "%s" treated as 0 in increment (++)">
322 (W numeric) The indicated string was fed as an argument to the C<++>
323 operator which expects either a number or a string matching
324 C</^[a-zA-Z]*[0-9]*\z/>. See L<perlop/Auto-increment and
325 Auto-decrement> for details.
329 =head2 Changes to Existing Diagnostics
331 XXX Changes (i.e. rewording) of diagnostic messages go here
337 XXX Describe change here
341 =head1 Utility Changes
343 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
344 Most of these are built within the directories F<utils> and F<x2p>.
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. ]
360 =head1 Configuration and Compilation
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.
367 [ List changes as a =item entry ].
379 XXX Any significant changes to the testing of a freshly built perl should be
380 listed here. Changes which create B<new> files in F<t/> go here as do any
381 large changes to the testing harness (e.g. when parallel testing was added).
382 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
383 that they represent may be covered elsewhere.
385 [ List each test improvement as a =item entry ]
395 =head1 Platform Support
397 XXX Any changes to platform support should be listed in the sections below.
399 [ Within the sections, list each platform as a =item entry with specific
400 changes as paragraphs below it. ]
404 XXX List any platforms that this version of perl compiles on, that previous
405 versions did not. These will either be enabled by new files in the F<hints/>
406 directories, or new subdirectories and F<README> files at the top level of the
411 =item XXX-some-platform
417 =head2 Discontinued Platforms
419 XXX List any platforms that this version of perl no longer compiles on.
423 =item XXX-some-platform
429 =head2 Platform-Specific Notes
431 XXX List any changes for specific platforms. This could include configuration
432 and compilation changes or changes in portability/compatibility. However,
433 changes within modules for platforms should generally be listed in the
434 L</Modules and Pragmata> section.
438 =item XXX-some-platform
444 =head1 Internal Changes
446 XXX Changes which affect the interface available to C<XS> code go here. Other
447 significant internal changes for future core maintainers should be noted as
450 [ List each change as a =item entry ]
456 C<sv_pos_b2u_flags> has been added to the API. It is similar to
457 C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
461 =head1 Selected Bug Fixes
463 XXX Important bug fixes in the core language are summarized here. Bug fixes in
464 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
466 [ List each fix as a =item entry ]
472 Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
473 Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
474 that had had a glob assigned to it. This has been fixed [perl #119051].
478 On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
483 Perl used to leak an implementation detail when it came to referencing the
484 return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }>
485 used to display two different memory addresses, because the C<\> operator
486 was copying the variable. Under threaded builds, it would also happen for
487 constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194,
488 #89188, #109746, #114838, #115388].
492 The range operator C<..> was returning the same modifiable scalars with
493 each call, unless it was the only thing in a C<foreach> loop header. This
494 meant that changes to values within the list returned would be visible the
495 next time the operator was executed [perl #3105].
499 Constant folding and subroutine inlining no longer cause operations that
500 would normally return new modifiable scalars to return read-only values
505 Closures of the form C<sub () { $some_variable }> are no longer inlined,
506 causing changes to the variable to be ignored by callers of the subroutine
511 Return values of certain operators such as C<ref> would sometimes be shared
512 between recursive calls to the same subroutine, causing the inner call to
513 modify the value returned by C<ref> in the outer call. This has been
518 C<__PACKAGE__> and constants returning a package name or hash key are now
519 consistently read-only. In various previous Perl releases, they have
520 become mutable under certain circumstances.
524 C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has
525 been fixed [perl #118213].
529 Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
530 incorrectly interpreted as a comment. The code block would be skipped,
531 unparsed. This has been corrected.
535 Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
536 C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
537 the variable would not interpolate. This has been corrected [perl #45667].
541 On non-threaded builds, setting C<${"_<filename"}> to a reference or
542 typeglob no longer causes C<__FILE__> and some error messages to produce a
543 corrupt string, and no longer prevents C<#line> directives in string evals
544 from providing the source lines to the debugger. Threaded builds were
549 Enabling "used once" warnings no longer causes crashes on stash
550 circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
554 Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
555 longer produce "uninitialized" warnings at compile time.
559 Modifying a substitution target inside the substitution replacement no
560 longer causes crashes.
564 The first statement inside a string eval used to use the wrong pragma setting sometimes during constant folding. C<eval 'uc chr 0xe0'> would randomly choose between Unicode, byte, and locale semantics. This has been
569 The handling of return values of @INC filters (subroutines returned by
570 subroutines in @INC) has been fixed in various ways. Previously tied
571 variables were mishandled, and setting $_ to a reference or typeglob could
576 The C<SvPVbyte> XS function has been fixed to work with tied scalars
577 returning something other than a string. It used to return utf8 in those
578 cases where C<SvPV> would.
582 Perl 5.18.0 inadvertently made dereferenced regular expressions
583 S<(C<${ qr// }>)> false as booleans. This has been fixed.
587 Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced
588 regular expressions, and stopped C<++> from flattening vstrings.
592 C<bless> no longer dies with "Can't bless non-reference value" if its first
593 argument is a tied reference.
597 C<reset> with an argument no longer skips copy-on-write scalars, regular
598 expressions, typeglob copies, and vstrings. Also, when encountering those
599 or read-only values, it no longer skips any array or hash with the same
604 C<reset> with an argument now skips scalars aliased to typeglobs
605 (C<for $z (*foo) { reset "z" }>). Previously it would corrupt memory or
610 C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a
611 regression from v5.12 [perl #117355].
615 The use of C<\G> in regular expressions, where it's not at the start of
616 the pattern, is now slightly less buggy (although it is still somewhat
621 Where a regular expression included code blocks (C</(?{...})/>), and where
622 the use of constant overloading triggered a re-compilation of the code block,
623 the second compilation didn't see its outer lexical scope. This was a
624 regression in 5.18.0.
628 =head1 Known Problems
630 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
631 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
632 platform specific bugs also go here.
634 [ List each fix as a =item entry ]
646 XXX If any significant core contributor has died, we've added a short obituary
649 =head1 Acknowledgements
651 XXX Generate this with:
653 perl Porting/acknowledgements.pl v5.19.2..HEAD
655 =head1 Reporting Bugs
657 If you find what you think is a bug, you might check the articles recently
658 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
659 http://rt.perl.org/perlbug/ . There may also be information at
660 http://www.perl.org/ , the Perl Home Page.
662 If you believe you have an unreported bug, please run the L<perlbug> program
663 included with your release. Be sure to trim your bug down to a tiny but
664 sufficient test case. Your bug report, along with the output of C<perl -V>,
665 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
667 If the bug you are reporting has security implications, which make it
668 inappropriate to send to a publicly archived mailing list, then please send it
669 to perl5-security-report@perl.org. This points to a closed subscription
670 unarchived mailing list, which includes all the core committers, who will be
671 able to help assess the impact of issues, figure out a resolution, and help
672 co-ordinate the release of patches to mitigate or fix the problem across all
673 platforms on which Perl is supported. Please only use this address for
674 security issues in the Perl core, not for modules independently distributed on
679 The F<Changes> file for an explanation of how to view exhaustive details on
682 The F<INSTALL> file for how to build Perl.
684 The F<README> file for general stuff.
686 The F<Artistic> and F<Copying> files for copyright information.