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 XXX L<message|perldiag/"message">
322 =head2 Changes to Existing Diagnostics
324 XXX Changes (i.e. rewording) of diagnostic messages go here
330 XXX Describe change here
334 =head1 Utility Changes
336 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
337 Most of these are built within the directories F<utils> and F<x2p>.
339 [ List utility changes as a =head3 entry for each utility and =item
340 entries for each change
341 Use L<XXX> with program names to get proper documentation linking. ]
353 =head1 Configuration and Compilation
355 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
356 go here. Any other changes to the Perl build process should be listed here.
357 However, any platform-specific changes should be listed in the
358 L</Platform Support> section, instead.
360 [ List changes as a =item entry ].
372 XXX Any significant changes to the testing of a freshly built perl should be
373 listed here. Changes which create B<new> files in F<t/> go here as do any
374 large changes to the testing harness (e.g. when parallel testing was added).
375 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
376 that they represent may be covered elsewhere.
378 [ List each test improvement as a =item entry ]
388 =head1 Platform Support
390 XXX Any changes to platform support should be listed in the sections below.
392 [ Within the sections, list each platform as a =item entry with specific
393 changes as paragraphs below it. ]
397 XXX List any platforms that this version of perl compiles on, that previous
398 versions did not. These will either be enabled by new files in the F<hints/>
399 directories, or new subdirectories and F<README> files at the top level of the
404 =item XXX-some-platform
410 =head2 Discontinued Platforms
412 XXX List any platforms that this version of perl no longer compiles on.
416 =item XXX-some-platform
422 =head2 Platform-Specific Notes
424 XXX List any changes for specific platforms. This could include configuration
425 and compilation changes or changes in portability/compatibility. However,
426 changes within modules for platforms should generally be listed in the
427 L</Modules and Pragmata> section.
431 =item XXX-some-platform
437 =head1 Internal Changes
439 XXX Changes which affect the interface available to C<XS> code go here. Other
440 significant internal changes for future core maintainers should be noted as
443 [ List each change as a =item entry ]
449 C<sv_pos_b2u_flags> has been added to the API. It is similar to
450 C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
454 =head1 Selected Bug Fixes
456 XXX Important bug fixes in the core language are summarized here. Bug fixes in
457 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
459 [ List each fix as a =item entry ]
465 Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
466 Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
467 that had had a glob assigned to it. This has been fixed [perl #119051].
471 On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
476 Perl used to leak an implementation detail when it came to referencing the
477 return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }>
478 used to display two different memory addresses, because the C<\> operator
479 was copying the variable. Under threaded builds, it would also happen for
480 constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194,
481 #89188, #109746, #114838, #115388].
485 The range operator C<..> was returning the same modifiable scalars with
486 each call, unless it was the only thing in a C<foreach> loop header. This
487 meant that changes to values within the list returned would be visible the
488 next time the operator was executed [perl #3105].
492 Constant folding and subroutine inlining no longer cause operations that
493 would normally return new modifiable scalars to return read-only values
498 Closures of the form C<sub () { $some_variable }> are no longer inlined,
499 causing changes to the variable to be ignored by callers of the subroutine
504 Return values of certain operators such as C<ref> would sometimes be shared
505 between recursive calls to the same subroutine, causing the inner call to
506 modify the value returned by C<ref> in the outer call. This has been
511 C<__PACKAGE__> and constants returning a package name or hash key are now
512 consistently read-only. In various previous Perl releases, they have
513 become mutable under certain circumstances.
517 C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has
518 been fixed [perl #118213].
522 Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
523 incorrectly interpreted as a comment. The code block would be skipped,
524 unparsed. This has been corrected.
528 Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
529 C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
530 the variable would not interpolate. This has been corrected [perl #45667].
534 On non-threaded builds, setting C<${"_<filename"}> to a reference or
535 typeglob no longer causes C<__FILE__> and some error messages to produce a
536 corrupt string, and no longer prevents C<#line> directives in string evals
537 from providing the source lines to the debugger. Threaded builds were
542 Enabling "used once" warnings no longer causes crashes on stash
543 circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
547 Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
548 longer produce "uninitialized" warnings at compile time.
552 Modifying a substitution target inside the substitution replacement no
553 longer causes crashes.
557 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
562 The handling of return values of @INC filters (subroutines returned by
563 subroutines in @INC) has been fixed in various ways. Previously tied
564 variables were mishandled, and setting $_ to a reference or typeglob could
569 The C<SvPVbyte> XS function has been fixed to work with tied scalars
570 returning something other than a string. It used to return utf8 in those
571 cases where C<SvPV> would.
575 Perl 5.18.0 inadvertently made dereferenced regular expressions
576 S<(C<${ qr// }>)> false as booleans. This has been fixed.
580 =head1 Known Problems
582 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
583 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
584 platform specific bugs also go here.
586 [ List each fix as a =item entry ]
598 XXX If any significant core contributor has died, we've added a short obituary
601 =head1 Acknowledgements
603 XXX Generate this with:
605 perl Porting/acknowledgements.pl v5.19.2..HEAD
607 =head1 Reporting Bugs
609 If you find what you think is a bug, you might check the articles recently
610 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
611 http://rt.perl.org/perlbug/ . There may also be information at
612 http://www.perl.org/ , the Perl Home Page.
614 If you believe you have an unreported bug, please run the L<perlbug> program
615 included with your release. Be sure to trim your bug down to a tiny but
616 sufficient test case. Your bug report, along with the output of C<perl -V>,
617 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
619 If the bug you are reporting has security implications, which make it
620 inappropriate to send to a publicly archived mailing list, then please send it
621 to perl5-security-report@perl.org. This points to a closed subscription
622 unarchived mailing list, which includes all the core committers, who will be
623 able to help assess the impact of issues, figure out a resolution, and help
624 co-ordinate the release of patches to mitigate or fix the problem across all
625 platforms on which Perl is supported. Please only use this address for
626 security issues in the Perl core, not for modules independently distributed on
631 The F<Changes> file for an explanation of how to view exhaustive details on
634 The F<INSTALL> file for how to build Perl.
636 The F<README> file for general stuff.
638 The F<Artistic> and F<Copying> files for copyright information.