4 Stuff that needs to be done still:
5 e82485c [MERGE] refactor pp_match(), pp_subst(), regexec()
6 6136213 [perl #52000] Warn/abort on attempted perl exit
7 cccbbce Reap child in case where exception has been thrown
8 70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
9 c3923c3 reparse compile-time /(?{})/ in right scope
10 aa8c2dc Fix RT #41461 (with a test).
14 [ this is a template for a new perldelta file. Any text flagged as XXX needs
15 to be processed before release. ]
17 perldelta - what is new for perl v5.19.3
21 This document describes differences between the 5.19.2 release and the 5.19.3
24 If you are upgrading from an earlier release such as 5.19.1, first read
25 L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
29 XXX Any important notices here
31 =head1 Core Enhancements
33 XXX New core language features go here. Summarize user-visible core language
34 enhancements. Particularly prominent performance optimisations could go
35 here, but most should go in the L</Performance Enhancements> section.
37 [ List each enhancement as a =head2 entry ]
39 =head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
41 Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
42 B<-p> was a no-op, with this change, if you supply B<-F> then both
43 B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
45 You can still use B<-p> for its extra behaviour. [perl #116190]
49 XXX Any security-related notices go here. In particular, any security
50 vulnerabilities closed should be noted here rather than in the
51 L</Selected Bug Fixes> section.
53 [ List each security issue as a =head2 entry ]
55 =head1 Incompatible Changes
57 XXX For a release on a stable branch, this section aspires to be:
59 There are no changes intentionally incompatible with 5.XXX.XXX
60 If any exist, they are bugs, and we request that you submit a
61 report. See L</Reporting Bugs> below.
63 [ List each incompatible change as a =head2 entry ]
67 XXX Any deprecated features, syntax, modules etc. should be listed here.
69 =head2 Module removals
71 XXX Remove this section if inapplicable.
73 The following modules will be removed from the core distribution in a
74 future release, and will at that time need to be installed from CPAN.
75 Distributions on CPAN which require these modules will need to list them as
78 The core versions of these modules will now issue C<"deprecated">-category
79 warnings to alert you to this fact. To silence these deprecation warnings,
80 install the modules in question from CPAN.
82 Note that these are (with rare exceptions) fine modules that you are encouraged
83 to continue to use. Their disinclusion from core primarily hinges on their
84 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
85 not usually on concerns over their design.
89 XXX Note that deprecated modules should be listed here even if they are listed
90 as an updated module in the L</Modules and Pragmata> section.
94 [ List each other deprecation as a =head2 entry ]
96 =head1 Performance Enhancements
98 XXX Changes which enhance performance without changing behaviour go here.
99 There may well be none in a stable release.
101 [ List each enhancement as a =item entry ]
111 =head1 Modules and Pragmata
113 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
114 go here. If Module::CoreList is updated, generate an initial draft of the
115 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
116 entries to STDOUT. Results can be pasted in place of the '=head2' entries
117 below. A paragraph summary for important changes should then be added by hand.
118 In an ideal world, dual-life modules would have a F<Changes> file that could be
121 [ Within each section, list entries as a =item entry ]
123 =head2 New Modules and Pragmata
133 =head2 Updated Modules and Pragmata
139 L<B> has been upgraded from version 1.44 to 1.45.
141 Calling the C<GV> method on C<B::CV> objects created from a lexical
142 sub would return nonsense, possibly crashing perl. C<GV> now returns
143 C<undef> for lexical subs. [perl #118525]
145 Added the C<NAME_HEK> method to return the name of a lexical sub.
149 L<bignum> has been upgraded from version 0.35 to 0.36.
151 L<bigrat> wasn't correctly updating an internal variable when C<use>d
152 with a C<lib> option.
156 L<Carp> has been upgraded from 1.30 to 1.31
158 L<Carp> now handles objects with string overloads. It also allows objects
159 to specify how they appear in the stack dump with a C<CARP_TRACE> method,
160 and also allows the user to specify their own formatter for objects without
161 C<CARP_TRACE> as well as other references. [perl #92446]
165 L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
169 L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
173 L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
177 L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
179 The compatbility of the XS implementation with the pure perl version
180 under C<Useqq> has been improved. [perl #118933]
184 L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
186 The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
187 removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
191 L<Exporter> has been upgraded from version 5.68 to 5.69.
193 L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
194 C<Exporter::Heavy>. [perl #39739]
198 The IO-Compress module collection has been upgraded from 2.061 to 2.062.
202 L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
204 C<run_forked> has various fixes/improvements, L<Socket> is only used where
205 needed and a regression introduced in 0.78 has been fixed.
209 The libnet module collection has been upgraded from version 1.22 to 1.23.
213 L<List::Util> has been upgraded from version 1.27 to 1.30
215 L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
216 C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
221 L<parent> has been upgraded from version 0.225 to 0.226.
225 L<Socket> has been upgraded from version 2.010 to 2.011.
227 Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
228 structures due to embedded sun_len. [cpan #86613]
232 L<Storable> has been upgraded from version 2.45 to 2.46.
234 Avoid creating temporary objects for STORABLE_attach when they aren't
235 required. [perl #118907]
239 L<Time::Piece> has been upgraded from version 1.21 to 1.22.
243 =head2 Removed Modules and Pragmata
255 XXX Changes to files in F<pod/> go here. Consider grouping entries by
256 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
258 =head2 New Documentation
260 XXX Changes which create B<new> files in F<pod/> go here.
264 XXX Description of the purpose of the new file here
266 =head2 Changes to Existing Documentation
268 XXX Changes which significantly change existing files in F<pod/> go here.
269 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
272 =head3 L<perlopentut>
278 The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
279 focuses on covering only the basics, rather than providing a comprehensive
280 reference to all things openable. This rewrite came as the result of a
281 vigorous discussion on perl5-porters kicked off by a set of improvements
282 written by Alexander Hartmaier to the existing C<perlopentut>. A "more than
283 you ever wanted to know about C<open>" document may follow in subsequent
290 The following additions or changes have been made to diagnostic output,
291 including warnings and fatal error messages. For the complete list of
292 diagnostic messages, see L<perldiag>.
294 XXX New or changed warnings emitted by the core's C<C> code go here. Also
295 include any changes in L<perldiag> that reconcile it to the C<C> code.
297 =head2 New Diagnostics
299 XXX Newly added diagnostic messages go under here, separated into New Errors
308 XXX L<message|perldiag/"message">
318 L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument
319 E<quot>%sE<quot> treated as 0 in increment (++)">
321 (W numeric) The indicated string was fed as an argument to the C<++>
322 operator which expects either a number or a string matching
323 C</^[a-zA-Z]*[0-9]*\z/>. See L<perlop/Auto-increment and
324 Auto-decrement> for details.
328 =head2 Changes to Existing Diagnostics
330 XXX Changes (i.e. rewording) of diagnostic messages go here
336 XXX Describe change here
340 =head1 Utility Changes
342 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
343 Most of these are built within the directories F<utils> and F<x2p>.
345 [ List utility changes as a =head3 entry for each utility and =item
346 entries for each change
347 Use L<XXX> with program names to get proper documentation linking. ]
359 =head1 Configuration and Compilation
361 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
362 go here. Any other changes to the Perl build process should be listed here.
363 However, any platform-specific changes should be listed in the
364 L</Platform Support> section, instead.
366 [ List changes as a =item entry ].
378 XXX Any significant changes to the testing of a freshly built perl should be
379 listed here. Changes which create B<new> files in F<t/> go here as do any
380 large changes to the testing harness (e.g. when parallel testing was added).
381 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
382 that they represent may be covered elsewhere.
384 [ List each test improvement as a =item entry ]
394 =head1 Platform Support
396 XXX Any changes to platform support should be listed in the sections below.
398 [ Within the sections, list each platform as a =item entry with specific
399 changes as paragraphs below it. ]
403 XXX List any platforms that this version of perl compiles on, that previous
404 versions did not. These will either be enabled by new files in the F<hints/>
405 directories, or new subdirectories and F<README> files at the top level of the
410 =item XXX-some-platform
416 =head2 Discontinued Platforms
418 XXX List any platforms that this version of perl no longer compiles on.
422 =item XXX-some-platform
428 =head2 Platform-Specific Notes
430 XXX List any changes for specific platforms. This could include configuration
431 and compilation changes or changes in portability/compatibility. However,
432 changes within modules for platforms should generally be listed in the
433 L</Modules and Pragmata> section.
437 =item XXX-some-platform
443 =head1 Internal Changes
445 XXX Changes which affect the interface available to C<XS> code go here. Other
446 significant internal changes for future core maintainers should be noted as
449 [ List each change as a =item entry ]
455 C<sv_pos_b2u_flags> has been added to the API. It is similar to
456 C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
460 =head1 Selected Bug Fixes
462 XXX Important bug fixes in the core language are summarized here. Bug fixes in
463 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
465 [ List each fix as a =item entry ]
471 Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
472 Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
473 that had had a glob assigned to it. This has been fixed [perl #119051].
477 On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
482 Perl used to leak an implementation detail when it came to referencing the
483 return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }>
484 used to display two different memory addresses, because the C<\> operator
485 was copying the variable. Under threaded builds, it would also happen for
486 constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194,
487 #89188, #109746, #114838, #115388].
491 The range operator C<..> was returning the same modifiable scalars with
492 each call, unless it was the only thing in a C<foreach> loop header. This
493 meant that changes to values within the list returned would be visible the
494 next time the operator was executed [perl #3105].
498 Constant folding and subroutine inlining no longer cause operations that
499 would normally return new modifiable scalars to return read-only values
504 Closures of the form C<sub () { $some_variable }> are no longer inlined,
505 causing changes to the variable to be ignored by callers of the subroutine
510 Return values of certain operators such as C<ref> would sometimes be shared
511 between recursive calls to the same subroutine, causing the inner call to
512 modify the value returned by C<ref> in the outer call. This has been
517 C<__PACKAGE__> and constants returning a package name or hash key are now
518 consistently read-only. In various previous Perl releases, they have
519 become mutable under certain circumstances.
523 C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has
524 been fixed [perl #118213].
528 Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
529 incorrectly interpreted as a comment. The code block would be skipped,
530 unparsed. This has been corrected.
534 Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
535 C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
536 the variable would not interpolate. This has been corrected [perl #45667].
540 On non-threaded builds, setting C<${"_<filename"}> to a reference or
541 typeglob no longer causes C<__FILE__> and some error messages to produce a
542 corrupt string, and no longer prevents C<#line> directives in string evals
543 from providing the source lines to the debugger. Threaded builds were
548 Enabling "used once" warnings no longer causes crashes on stash
549 circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
553 Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
554 longer produce "uninitialized" warnings at compile time.
558 Modifying a substitution target inside the substitution replacement no
559 longer causes crashes.
563 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
568 The handling of return values of @INC filters (subroutines returned by
569 subroutines in @INC) has been fixed in various ways. Previously tied
570 variables were mishandled, and setting $_ to a reference or typeglob could
575 The C<SvPVbyte> XS function has been fixed to work with tied scalars
576 returning something other than a string. It used to return utf8 in those
577 cases where C<SvPV> would.
581 Perl 5.18.0 inadvertently made dereferenced regular expressions
582 S<(C<${ qr// }>)> false as booleans. This has been fixed.
586 Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced
587 regular expressions, and stopped C<++> from flattening vstrings.
591 C<bless> no longer dies with "Can't bless non-reference value" if its first
592 argument is a tied reference.
596 C<reset> with an argument no longer skips copy-on-write scalars, regular
597 expressions, typeglob copies, and vstrings. Also, when encountering those
598 or read-only values, it no longer skips any array or hash with the same
603 C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a
604 regression from v5.12 [perl #117355].
608 =head1 Known Problems
610 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
611 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
612 platform specific bugs also go here.
614 [ List each fix as a =item entry ]
626 XXX If any significant core contributor has died, we've added a short obituary
629 =head1 Acknowledgements
631 XXX Generate this with:
633 perl Porting/acknowledgements.pl v5.19.2..HEAD
635 =head1 Reporting Bugs
637 If you find what you think is a bug, you might check the articles recently
638 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
639 http://rt.perl.org/perlbug/ . There may also be information at
640 http://www.perl.org/ , the Perl Home Page.
642 If you believe you have an unreported bug, please run the L<perlbug> program
643 included with your release. Be sure to trim your bug down to a tiny but
644 sufficient test case. Your bug report, along with the output of C<perl -V>,
645 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
647 If the bug you are reporting has security implications, which make it
648 inappropriate to send to a publicly archived mailing list, then please send it
649 to perl5-security-report@perl.org. This points to a closed subscription
650 unarchived mailing list, which includes all the core committers, who will be
651 able to help assess the impact of issues, figure out a resolution, and help
652 co-ordinate the release of patches to mitigate or fix the problem across all
653 platforms on which Perl is supported. Please only use this address for
654 security issues in the Perl core, not for modules independently distributed on
659 The F<Changes> file for an explanation of how to view exhaustive details on
662 The F<INSTALL> file for how to build Perl.
664 The F<README> file for general stuff.
666 The F<Artistic> and F<Copying> files for copyright information.