This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: another to-do
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3670aff5
FC
3=for comment
4Stuff that needs to be done still:
0c2596e5
FC
5e82485c [MERGE] refactor pp_match(), pp_subst(), regexec()
66136213 [perl #52000] Warn/abort on attempted perl exit
7cccbbce Reap child in case where exception has been thrown
1be66aa5 870502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
a5de0aae 9c3923c3 reparse compile-time /(?{})/ in right scope
3670aff5 10
44691e6f
AB
11=head1 NAME
12
12dcbffb
AP
13[ this is a template for a new perldelta file. Any text flagged as XXX needs
14to be processed before release. ]
15
16perldelta - what is new for perl v5.19.3
e128ab2c 17
4eabcf70 18=head1 DESCRIPTION
6db9054f 19
12dcbffb 20This document describes differences between the 5.19.2 release and the 5.19.3
e08634c5 21release.
6db9054f 22
12dcbffb
AP
23If you are upgrading from an earlier release such as 5.19.1, first read
24L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
42bff0d9 25
12dcbffb 26=head1 Notice
42bff0d9 27
12dcbffb 28XXX Any important notices here
42bff0d9 29
12dcbffb 30=head1 Core Enhancements
c0ca71c9 31
12dcbffb
AP
32XXX New core language features go here. Summarize user-visible core language
33enhancements. Particularly prominent performance optimisations could go
34here, but most should go in the L</Performance Enhancements> section.
c0ca71c9 35
12dcbffb 36[ List each enhancement as a =head2 entry ]
c0ca71c9 37
5bb43e77
TC
38=head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
39
40Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
41B<-p> was a no-op, with this change, if you supply B<-F> then both
42B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
43
44You can still use B<-p> for its extra behaviour. [perl #116190]
45
12dcbffb 46=head1 Security
c0ca71c9 47
12dcbffb
AP
48XXX Any security-related notices go here. In particular, any security
49vulnerabilities closed should be noted here rather than in the
50L</Selected Bug Fixes> section.
c0ca71c9 51
12dcbffb 52[ List each security issue as a =head2 entry ]
c0ca71c9 53
12dcbffb 54=head1 Incompatible Changes
c0ca71c9 55
12dcbffb 56XXX For a release on a stable branch, this section aspires to be:
c0ca71c9 57
12dcbffb
AP
58 There are no changes intentionally incompatible with 5.XXX.XXX
59 If any exist, they are bugs, and we request that you submit a
60 report. See L</Reporting Bugs> below.
c0ca71c9 61
12dcbffb 62[ List each incompatible change as a =head2 entry ]
c0ca71c9 63
12dcbffb 64=head1 Deprecations
c0ca71c9 65
12dcbffb 66XXX Any deprecated features, syntax, modules etc. should be listed here.
c0ca71c9 67
12dcbffb 68=head2 Module removals
c0ca71c9 69
12dcbffb 70XXX Remove this section if inapplicable.
c0ca71c9 71
12dcbffb
AP
72The following modules will be removed from the core distribution in a
73future release, and will at that time need to be installed from CPAN.
74Distributions on CPAN which require these modules will need to list them as
75prerequisites.
c0ca71c9 76
12dcbffb
AP
77The core versions of these modules will now issue C<"deprecated">-category
78warnings to alert you to this fact. To silence these deprecation warnings,
79install the modules in question from CPAN.
c0ca71c9 80
12dcbffb
AP
81Note that these are (with rare exceptions) fine modules that you are encouraged
82to continue to use. Their disinclusion from core primarily hinges on their
83necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
84not usually on concerns over their design.
c0ca71c9 85
12dcbffb 86=over
c0ca71c9 87
12dcbffb
AP
88XXX Note that deprecated modules should be listed here even if they are listed
89as an updated module in the L</Modules and Pragmata> section.
c0ca71c9 90
12dcbffb 91=back
c0ca71c9 92
12dcbffb 93[ List each other deprecation as a =head2 entry ]
c0ca71c9 94
12dcbffb 95=head1 Performance Enhancements
c0ca71c9 96
12dcbffb
AP
97XXX Changes which enhance performance without changing behaviour go here.
98There may well be none in a stable release.
c0ca71c9 99
12dcbffb 100[ List each enhancement as a =item entry ]
c0ca71c9 101
12dcbffb 102=over 4
c0ca71c9
AP
103
104=item *
105
12dcbffb 106XXX
c0ca71c9 107
12dcbffb 108=back
70ba8092 109
12dcbffb 110=head1 Modules and Pragmata
42bff0d9 111
12dcbffb
AP
112XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
113go here. If Module::CoreList is updated, generate an initial draft of the
114following sections using F<Porting/corelist-perldelta.pl>, which prints stub
115entries to STDOUT. Results can be pasted in place of the '=head2' entries
116below. A paragraph summary for important changes should then be added by hand.
117In an ideal world, dual-life modules would have a F<Changes> file that could be
118cribbed.
6e4979f3 119
12dcbffb 120[ Within each section, list entries as a =item entry ]
6e4979f3 121
12dcbffb 122=head2 New Modules and Pragmata
6e4979f3 123
12dcbffb 124=over 4
42bff0d9 125
c0ca71c9 126=item *
42bff0d9 127
12dcbffb 128XXX
42bff0d9 129
12dcbffb 130=back
42bff0d9 131
12dcbffb 132=head2 Updated Modules and Pragmata
42bff0d9 133
12dcbffb 134=over 4
42bff0d9 135
c0ca71c9 136=item *
42bff0d9 137
323602af
TC
138L<B> has been upgraded from version 1.44 to 1.45.
139
140Calling the C<GV> method on C<B::CV> objects created from a lexical
141sub would return nonsense, possibly crashing perl. C<GV> now returns
142C<undef> for lexical subs. [perl #118525]
143
144Added the C<NAME_HEK> method to return the name of a lexical sub.
145
146=item *
147
9a743a6d
SH
148L<bignum> has been upgraded from version 0.35 to 0.36.
149
150L<bigrat> wasn't correctly updating an internal variable when C<use>d
151with a C<lib> option.
152
1afc4c90
FC
153=item *
154
1448059e
TC
155L<Carp> has been upgraded from 1.30 to 1.31
156
157L<Carp> now handles objects with string overloads. It also allows objects
158to specify how they appear in the stack dump with a C<CARP_TRACE> method,
159and also allows the user to specify their own formatter for objects without
160C<CARP_TRACE> as well as other references. [perl #92446]
161
9a743a6d
SH
162=item *
163
ef379d05
SH
164L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
165
166=item *
167
168L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
169
170=item *
171
89e01640
SH
172L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
173
174=item *
175
cffd634c
TC
176L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
177
178The compatbility of the XS implementation with the pure perl version
179under C<Useqq> has been improved. [perl #118933]
42bff0d9 180
2cf99697
TC
181=item *
182
8b0411a9
TC
183L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
184
185The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
186removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
187
188=item *
189
9a743a6d
SH
190L<Exporter> has been upgraded from version 5.68 to 5.69.
191
192L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
193C<Exporter::Heavy>. [perl #39739]
194
195=item *
196
ef379d05
SH
197The IO-Compress module collection has been upgraded from 2.061 to 2.062.
198
199=item *
200
c7e51fe7
SH
201L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
202
203C<run_forked> has various fixes/improvements, L<Socket> is only used where
204needed and a regression introduced in 0.78 has been fixed.
205
206=item *
207
07513bb4 208The libnet module collection has been upgraded from version 1.22 to 1.23.
8723f121
SH
209
210=item *
211
6a9ebaf3 212L<List::Util> has been upgraded from version 1.27 to 1.30
2dc8d725 213
6a9ebaf3
SH
214L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
215C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
216pairs.
2dc8d725
CBW
217
218=item *
219
4725e868
SH
220L<parent> has been upgraded from version 0.225 to 0.226.
221
222=item *
223
669d990b
SH
224L<Socket> has been upgraded from version 2.010 to 2.011.
225
226Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
227structures due to embedded sun_len. [cpan #86613]
228
229=item *
230
2cf99697
TC
231L<Storable> has been upgraded from version 2.45 to 2.46.
232
233Avoid creating temporary objects for STORABLE_attach when they aren't
234required. [perl #118907]
235
21d55435
SH
236=item *
237
238L<Time::Piece> has been upgraded from version 1.21 to 1.22.
239
c0ca71c9 240=back
42bff0d9 241
12dcbffb 242=head2 Removed Modules and Pragmata
dbd04185 243
38663f11 244=over 4
583aa5c2 245
1fdd5e53
KW
246=item *
247
12dcbffb 248XXX
42bff0d9 249
38663f11 250=back
42bff0d9 251
12dcbffb 252=head1 Documentation
989e4501 253
12dcbffb
AP
254XXX Changes to files in F<pod/> go here. Consider grouping entries by
255file and be sure to link to the appropriate page, e.g. L<perlfunc>.
989e4501 256
12dcbffb 257=head2 New Documentation
989e4501 258
12dcbffb 259XXX Changes which create B<new> files in F<pod/> go here.
42bff0d9 260
12dcbffb 261=head3 L<XXX>
42bff0d9 262
12dcbffb 263XXX Description of the purpose of the new file here
42bff0d9 264
12dcbffb 265=head2 Changes to Existing Documentation
42bff0d9 266
12dcbffb
AP
267XXX Changes which significantly change existing files in F<pod/> go here.
268However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
269section.
42bff0d9 270
3031ec7a 271=head3 L<perlopentut>
42bff0d9 272
38663f11 273=over 4
42bff0d9
DG
274
275=item *
276
3031ec7a
RS
277The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
278focuses on covering only the basics, rather than providing a comprehensive
279reference to all things openable. This rewrite came as the result of a
280vigorous discussion on perl5-porters kicked off by a set of improvements
281written by Alexander Hartmaier to the existing C<perlopentut>. A "more than
282you ever wanted to know about C<open>" document may follow in subsequent
283versions of perl.
1fdd5e53 284
583aa5c2
RS
285=back
286
c0ca71c9
AP
287=head1 Diagnostics
288
289The following additions or changes have been made to diagnostic output,
290including warnings and fatal error messages. For the complete list of
291diagnostic messages, see L<perldiag>.
292
12dcbffb
AP
293XXX New or changed warnings emitted by the core's C<C> code go here. Also
294include any changes in L<perldiag> that reconcile it to the C<C> code.
295
c0ca71c9
AP
296=head2 New Diagnostics
297
12dcbffb
AP
298XXX Newly added diagnostic messages go under here, separated into New Errors
299and New Warnings
300
301=head3 New Errors
583aa5c2 302
38663f11 303=over 4
583aa5c2 304
b8a02ff1 305=item *
583aa5c2 306
12dcbffb 307XXX L<message|perldiag/"message">
583aa5c2 308
b8a02ff1 309=back
583aa5c2 310
12dcbffb 311=head3 New Warnings
96d496e4 312
38663f11 313=over 4
b8a02ff1
DG
314
315=item *
316
12dcbffb 317XXX L<message|perldiag/"message">
96d496e4 318
12dcbffb 319=back
1310e590 320
12dcbffb 321=head2 Changes to Existing Diagnostics
e727f86a 322
12dcbffb 323XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 324
12dcbffb 325=over 4
e727f86a 326
81ca6d44
FC
327=item *
328
12dcbffb 329XXX Describe change here
81ca6d44 330
96d496e4
RS
331=back
332
12dcbffb 333=head1 Utility Changes
583aa5c2 334
12dcbffb
AP
335XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
336Most of these are built within the directories F<utils> and F<x2p>.
71e6aba6 337
12dcbffb
AP
338[ List utility changes as a =head3 entry for each utility and =item
339entries for each change
340Use L<XXX> with program names to get proper documentation linking. ]
d5f315e8 341
12dcbffb 342=head3 L<XXX>
e38fc308
NC
343
344=over 4
345
346=item *
347
12dcbffb 348XXX
e38fc308
NC
349
350=back
351
12dcbffb 352=head1 Configuration and Compilation
2426c394 353
12dcbffb
AP
354XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
355go here. Any other changes to the Perl build process should be listed here.
356However, any platform-specific changes should be listed in the
357L</Platform Support> section, instead.
4724da03 358
12dcbffb 359[ List changes as a =item entry ].
583aa5c2 360
38663f11 361=over 4
a34da6c4 362
12dcbffb 363=item *
a34da6c4 364
12dcbffb 365XXX
a34da6c4 366
583aa5c2
RS
367=back
368
12dcbffb 369=head1 Testing
583aa5c2 370
12dcbffb
AP
371XXX Any significant changes to the testing of a freshly built perl should be
372listed here. Changes which create B<new> files in F<t/> go here as do any
373large changes to the testing harness (e.g. when parallel testing was added).
374Changes to existing files in F<t/> aren't worth summarizing, although the bugs
375that they represent may be covered elsewhere.
1de7c8e6 376
12dcbffb 377[ List each test improvement as a =item entry ]
9c800862 378
12dcbffb 379=over 4
aaf54772 380
b7bbd8b6
FC
381=item *
382
12dcbffb 383XXX
b7bbd8b6 384
583aa5c2
RS
385=back
386
12dcbffb 387=head1 Platform Support
d7bfa554 388
12dcbffb 389XXX Any changes to platform support should be listed in the sections below.
81d3ed5a 390
12dcbffb
AP
391[ Within the sections, list each platform as a =item entry with specific
392changes as paragraphs below it. ]
81d3ed5a 393
12dcbffb 394=head2 New Platforms
0b023496 395
12dcbffb
AP
396XXX List any platforms that this version of perl compiles on, that previous
397versions did not. These will either be enabled by new files in the F<hints/>
398directories, or new subdirectories and F<README> files at the top level of the
399source tree.
0b023496 400
12dcbffb 401=over 4
e11f653d 402
12dcbffb 403=item XXX-some-platform
5e0164b2 404
12dcbffb 405XXX
5e0164b2 406
12dcbffb 407=back
e11f653d 408
12dcbffb 409=head2 Discontinued Platforms
8be8cdec 410
12dcbffb 411XXX List any platforms that this version of perl no longer compiles on.
8be8cdec 412
12dcbffb 413=over 4
07a522a5 414
12dcbffb 415=item XXX-some-platform
07a522a5 416
12dcbffb 417XXX
71b4007c 418
12dcbffb 419=back
71b4007c 420
12dcbffb 421=head2 Platform-Specific Notes
f6b1d2f5 422
12dcbffb
AP
423XXX List any changes for specific platforms. This could include configuration
424and compilation changes or changes in portability/compatibility. However,
425changes within modules for platforms should generally be listed in the
426L</Modules and Pragmata> section.
f6b1d2f5 427
12dcbffb 428=over 4
7e4f209b 429
12dcbffb 430=item XXX-some-platform
7e4f209b 431
12dcbffb 432XXX
558673e6 433
12dcbffb 434=back
558673e6 435
12dcbffb 436=head1 Internal Changes
47a7c93d 437
12dcbffb
AP
438XXX Changes which affect the interface available to C<XS> code go here. Other
439significant internal changes for future core maintainers should be noted as
440well.
47a7c93d 441
12dcbffb 442[ List each change as a =item entry ]
b5a80c26 443
12dcbffb 444=over 4
b5a80c26 445
7f1d4316
FC
446=item *
447
6e6c0044
FC
448C<sv_pos_b2u_flags> has been added to the API. It is similar to
449C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
7f1d4316 450
12dcbffb 451=back
02bef66e 452
12dcbffb 453=head1 Selected Bug Fixes
d30fb844 454
12dcbffb
AP
455XXX Important bug fixes in the core language are summarized here. Bug fixes in
456files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
d30fb844 457
12dcbffb 458[ List each fix as a =item entry ]
21c01741 459
12dcbffb 460=over 4
21c01741 461
467582e8
FC
462=item *
463
5c24ac0b
FC
464Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
465Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
466that had had a glob assigned to it. This has been fixed [perl #119051].
467582e8 467
64da853d
FC
468=item *
469
470On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
471[perl #72766].
472
8847717e
FC
473=item *
474
475Perl used to leak an implementation detail when it came to referencing the
476return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }>
477used to display two different memory addresses, because the C<\> operator
478was copying the variable. Under threaded builds, it would also happen for
479constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194,
480#89188, #109746, #114838, #115388].
481
f1b856da
FC
482=item *
483
484The range operator C<..> was returning the same modifiable scalars with
485each call, unless it was the only thing in a C<foreach> loop header. This
486meant that changes to values within the list returned would be visible the
487next time the operator was executed [perl #3105].
488
eaed284b
FC
489=item *
490
491Constant folding and subroutine inlining no longer cause operations that
492would normally return new modifiable scalars to return read-only values
493instead.
494
0335212c
FC
495=item *
496
497Closures of the form C<sub () { $some_variable }> are no longer inlined,
498causing changes to the variable to be ignored by callers of the subroutine
499[perl #79908].
500
c3e455cf
FC
501=item *
502
503Return values of certain operators such as C<ref> would sometimes be shared
504between recursive calls to the same subroutine, causing the inner call to
505modify the value returned by C<ref> in the outer call. This has been
506fixed.
507
019705bc
FC
508=item *
509
510C<__PACKAGE__> and constants returning a package name or hash key are now
511consistently read-only. In various previous Perl releases, they have
512become mutable under certain circumstances.
513
25921d77
FC
514=item *
515
516C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has
517been fixed [perl #118213].
518
28ea507e
FC
519=item *
520
521Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
522incorrectly interpreted as a comment. The code block would be skipped,
523unparsed. This has been corrected.
524
525=item *
526
527Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
528C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
529the variable would not interpolate. This has been corrected [perl #45667].
530
074d6753
FC
531=item *
532
533On non-threaded builds, setting C<${"_<filename"}> to a reference or
ac71653f
FC
534typeglob no longer causes C<__FILE__> and some error messages to produce a
535corrupt string, and no longer prevents C<#line> directives in string evals
536from providing the source lines to the debugger. Threaded builds were
ba06688d 537unaffected.
074d6753 538
4e5b563d
FC
539=item *
540
541Enabling "used once" warnings no longer causes crashes on stash
542circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
543
38663f11 544=back
d7bfa554 545
38663f11 546=head1 Known Problems
6810f0ad 547
12dcbffb
AP
548XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
549tests that had to be C<TODO>ed for the release would be noted here. Unfixed
550platform specific bugs also go here.
551
552[ List each fix as a =item entry ]
553
38663f11 554=over 4
14fd9356
FC
555
556=item *
557
12dcbffb 558XXX
0e417e4d 559
38663f11 560=back
583aa5c2 561
12dcbffb
AP
562=head1 Obituary
563
564XXX If any significant core contributor has died, we've added a short obituary
565here.
566
583aa5c2 567=head1 Acknowledgements
a75569c0 568
12dcbffb
AP
569XXX Generate this with:
570
571 perl Porting/acknowledgements.pl v5.19.2..HEAD
f5b73711 572
44691e6f
AB
573=head1 Reporting Bugs
574
e08634c5
SH
575If you find what you think is a bug, you might check the articles recently
576posted to the comp.lang.perl.misc newsgroup and the perl bug database at
577http://rt.perl.org/perlbug/ . There may also be information at
578http://www.perl.org/ , the Perl Home Page.
44691e6f 579
e08634c5
SH
580If you believe you have an unreported bug, please run the L<perlbug> program
581included with your release. Be sure to trim your bug down to a tiny but
582sufficient test case. Your bug report, along with the output of C<perl -V>,
583will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
584
585If the bug you are reporting has security implications, which make it
e08634c5
SH
586inappropriate to send to a publicly archived mailing list, then please send it
587to perl5-security-report@perl.org. This points to a closed subscription
588unarchived mailing list, which includes all the core committers, who will be
589able to help assess the impact of issues, figure out a resolution, and help
f9001595 590co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
591platforms on which Perl is supported. Please only use this address for
592security issues in the Perl core, not for modules independently distributed on
593CPAN.
44691e6f
AB
594
595=head1 SEE ALSO
596
e08634c5
SH
597The F<Changes> file for an explanation of how to view exhaustive details on
598what changed.
44691e6f
AB
599
600The F<INSTALL> file for how to build Perl.
601
602The F<README> file for general stuff.
603
604The F<Artistic> and F<Copying> files for copyright information.
605
606=cut