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