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