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