This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Darwin: set ld to 'cc' if $cc is 'cc' or empty, $cc otherwise.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
39c4a6cf
PM
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.21.4
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
39c4a6cf 12This document describes differences between the 5.21.3 release and the 5.21.4
238894db 13release.
c68523cb 14
39c4a6cf
PM
15If you are upgrading from an earlier release such as 5.21.2, first read
16L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
7065301c 17
39c4a6cf 18=head1 Notice
7e957246 19
39c4a6cf 20XXX Any important notices here
7e957246 21
39c4a6cf 22=head1 Core Enhancements
f88f10f5 23
39c4a6cf
PM
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
21f3b41e 27
39c4a6cf 28[ List each enhancement as a =head2 entry ]
f88f10f5 29
5b319db8
JH
30=head2 Infinity and NaN (not-a-number) handling improved
31
32Floating point values are able to hold the special values infinity
33(also -infinity), and NaN (not-a-number). Now we more robustly recognize
34and propagate the value in computations, and on output normalize them
35to C<Inf> and C<NaN>.
36
019bf663 37See also the L<POSIX> enhancements.
5b319db8 38
0346c3a9 39=head1 Security
7e957246 40
39c4a6cf
PM
41XXX Any security-related notices go here. In particular, any security
42vulnerabilities closed should be noted here rather than in the
43L</Selected Bug Fixes> section.
13900f93 44
39c4a6cf 45[ List each security issue as a =head2 entry ]
8bdb3f93 46
13900f93 47=head1 Incompatible Changes
8bdb3f93 48
39c4a6cf 49XXX For a release on a stable branch, this section aspires to be:
1178d2cf 50
39c4a6cf
PM
51 There are no changes intentionally incompatible with 5.XXX.XXX
52 If any exist, they are bugs, and we request that you submit a
53 report. See L</Reporting Bugs> below.
1178d2cf 54
39c4a6cf 55[ List each incompatible change as a =head2 entry ]
f6f3144e 56
39c4a6cf 57=head1 Deprecations
7065301c 58
39c4a6cf 59XXX Any deprecated features, syntax, modules etc. should be listed here.
7065301c 60
39c4a6cf 61=head2 Module removals
b3e82ed1 62
39c4a6cf 63XXX Remove this section if inapplicable.
ca58223b 64
39c4a6cf
PM
65The following modules will be removed from the core distribution in a
66future release, and will at that time need to be installed from CPAN.
67Distributions on CPAN which require these modules will need to list them as
68prerequisites.
ca58223b 69
39c4a6cf
PM
70The core versions of these modules will now issue C<"deprecated">-category
71warnings to alert you to this fact. To silence these deprecation warnings,
72install the modules in question from CPAN.
23b03637 73
39c4a6cf
PM
74Note that these are (with rare exceptions) fine modules that you are encouraged
75to continue to use. Their disinclusion from core primarily hinges on their
76necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
77not usually on concerns over their design.
23b03637 78
39c4a6cf 79=over
85e8fb10 80
39c4a6cf 81=item XXX
85e8fb10 82
39c4a6cf
PM
83XXX Note that deprecated modules should be listed here even if they are listed
84as an updated module in the L</Modules and Pragmata> section.
134f90c2 85
39c4a6cf 86=back
134f90c2 87
39c4a6cf 88[ List each other deprecation as a =head2 entry ]
ff433f2d 89
39c4a6cf 90=head1 Performance Enhancements
ff433f2d 91
39c4a6cf
PM
92XXX Changes which enhance performance without changing behaviour go here.
93There may well be none in a stable release.
134f90c2 94
39c4a6cf 95[ List each enhancement as a =item entry ]
134f90c2 96
39c4a6cf 97=over 4
7d19f6a1 98
7d19f6a1
PM
99=item *
100
39c4a6cf 101XXX
55e8b286 102
39c4a6cf 103=back
55e8b286 104
39c4a6cf 105=head1 Modules and Pragmata
d99849ae 106
39c4a6cf
PM
107XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
108go here. If Module::CoreList is updated, generate an initial draft of the
109following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
110for important changes should then be added by hand. In an ideal world,
111dual-life modules would have a F<Changes> file that could be cribbed.
d99849ae 112
39c4a6cf 113[ Within each section, list entries as a =item entry ]
ff433f2d 114
39c4a6cf 115=head2 New Modules and Pragmata
ff433f2d 116
39c4a6cf 117=over 4
ff433f2d
PM
118
119=item *
120
39c4a6cf 121XXX
0bb39c26 122
39c4a6cf 123=back
0bb39c26 124
39c4a6cf 125=head2 Updated Modules and Pragmata
9c97a342 126
39c4a6cf 127=over 4
d99849ae
PM
128
129=item *
130
39c4a6cf 131L<XXX> has been upgraded from version A.xx to B.yy.
6ab3666b 132
233a4069
JK
133=item *
134
d0ab07ee
JK
135L<B::Concise> has been upgraded from version 0.992 to 0.993.
136
608e531f
SH
137=item *
138
139L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
74d5bfab
AS
140
141=item *
142
143L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280219.
144[perl #122675].
145
d0ab07ee
JK
146=item *
147
39091b75
JK
148L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
149[perl #122415].
150
151=item *
152
ecd53122
JK
153L<ExtUtils::ParseXS>: Documentation has been added to
154F<ExtUtils-ParseXS/lib/perlxs.pod> concerning handling of locales when writing
155XS code.
156
157=item *
158
9eace98c
JK
159L<File::Find> has been upgraded from version 1.27 to 1.28.
160
161C<find()> and C<finddepth()> will now warn if passed inappropriate or
162misspelled options.
163
164=item *
165
166L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
167
168=item *
169
d0ab07ee
JK
170L<HTTP::Tiny> has been upgraded from version 0.047 to 0.048.
171
172=item *
173
174L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
175
176=item *
177
178L<POSIX> has been upgraded from version 1.42 to 1.43.
179
5b319db8
JH
180The C99 math functions and constants (for example acosh, round,
181M_E, M_PI) have been added.
182
d0ab07ee
JK
183=item *
184
185L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
186
187=item *
188
46274848
SH
189Scalar-List-Utils has been upgraded from version 1.40 to 1.41.
190
191=item *
192
d0ab07ee
JK
193L<constant> has been upgraded from version 1.31 to 1.32.
194
bfc60ea2
FC
195It now accepts fully-qualified constant names, allowing constants to be
196defined in packages other than the caller.
197
d0ab07ee
JK
198=item *
199
200L<threads> has been upgraded from version 1.95 to 1.96.
201
39c4a6cf 202=back
9c97a342 203
39c4a6cf 204=head2 Removed Modules and Pragmata
d99849ae 205
39c4a6cf 206=over 4
d99849ae 207
ff433f2d
PM
208=item *
209
39c4a6cf 210XXX
ff433f2d 211
13900f93 212=back
aac7f82f 213
13900f93 214=head1 Documentation
aac7f82f 215
39c4a6cf
PM
216XXX Changes to files in F<pod/> go here. Consider grouping entries by
217file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d9b7c7c 218
39c4a6cf 219=head2 New Documentation
2a395b86 220
39c4a6cf 221XXX Changes which create B<new> files in F<pod/> go here.
2a395b86 222
39c4a6cf 223=head3 L<XXX>
2a395b86 224
39c4a6cf 225XXX Description of the purpose of the new file here
2a395b86 226
39c4a6cf 227=head2 Changes to Existing Documentation
2a395b86 228
39c4a6cf
PM
229XXX Changes which significantly change existing files in F<pod/> go here.
230However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
231section.
232
233=head3 L<XXX>
2a395b86
PM
234
235=over 4
236
237=item *
238
39c4a6cf 239XXX Description of the change here
2a395b86 240
12d22d1f
JK
241=item *
242
243L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has
244been corrected. [perl #122661]
245
2a395b86
PM
246=back
247
39c4a6cf 248=head1 Diagnostics
2a395b86 249
39c4a6cf
PM
250The following additions or changes have been made to diagnostic output,
251including warnings and fatal error messages. For the complete list of
252diagnostic messages, see L<perldiag>.
2a395b86 253
39c4a6cf
PM
254XXX New or changed warnings emitted by the core's C<C> code go here. Also
255include any changes in L<perldiag> that reconcile it to the C<C> code.
2a395b86 256
39c4a6cf 257=head2 New Diagnostics
0f4a583b 258
39c4a6cf
PM
259XXX Newly added diagnostic messages go under here, separated into New Errors
260and New Warnings
2a395b86 261
39c4a6cf 262=head3 New Errors
2a395b86
PM
263
264=over 4
265
266=item *
267
39c4a6cf 268XXX L<message|perldiag/"message">
2a395b86
PM
269
270=back
271
39c4a6cf 272=head3 New Warnings
2a395b86
PM
273
274=over 4
275
276=item *
277
39c4a6cf 278XXX L<message|perldiag/"message">
2a395b86
PM
279
280=back
6d9b7c7c 281
39c4a6cf
PM
282=head2 Changes to Existing Diagnostics
283
284XXX Changes (i.e. rewording) of diagnostic messages go here
7f55cec0 285
13900f93 286=over 4
7f55cec0
SH
287
288=item *
289
39c4a6cf 290XXX Describe change here
aac7f82f 291
13900f93 292=back
aac7f82f 293
363d3025
FC
294=head2 Diagnostic Removals
295
296=over 4
297
298=item *
299
334464b3
FC
300"Constant is not a FOO reference"
301
302Compile-time checking of constant dereferencing (e.g.,
303C<< my_constant->() >>) has been removed, since it was not taking
304overloading into account. [perl #69456] [perl #122607]
305
306=item *
307
363d3025
FC
308The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
309There is actually no ambiguity here, and this impedes the use of negated
310constants; e.g., C<-Inf>.
311
ef5a9509
FC
312=item *
313
314The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
315could get confused in the scope of C<use utf8> if C<Class> were a constant
316whose value contained Latin-1 characters.
317
363d3025
FC
318=back
319
39c4a6cf 320=head1 Utility Changes
091fed7c 321
39c4a6cf
PM
322XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
323Most of these are built within the directory F<utils>.
902c1f75 324
39c4a6cf
PM
325[ List utility changes as a =head2 entry for each utility and =item
326entries for each change
327Use L<XXX> with program names to get proper documentation linking. ]
2901561d 328
39c4a6cf 329=head2 L<XXX>
4594cf53 330
13900f93 331=over 4
96dcbc37
DD
332
333=item *
334
39c4a6cf 335XXX
a1d26ccd 336
39c4a6cf 337=back
a1d26ccd 338
39c4a6cf 339=head1 Configuration and Compilation
7065301c 340
39c4a6cf
PM
341XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
342go here. Any other changes to the Perl build process should be listed here.
343However, any platform-specific changes should be listed in the
344L</Platform Support> section, instead.
58f25ac1 345
39c4a6cf 346[ List changes as a =item entry ].
13900f93
A
347
348=over 4
58f25ac1
MH
349
350=item *
351
39c4a6cf 352XXX
a5873648 353
39c4a6cf 354=back
a5873648 355
39c4a6cf 356=head1 Testing
a5873648 357
39c4a6cf
PM
358XXX Any significant changes to the testing of a freshly built perl should be
359listed here. Changes which create B<new> files in F<t/> go here as do any
360large changes to the testing harness (e.g. when parallel testing was added).
361Changes to existing files in F<t/> aren't worth summarizing, although the bugs
362that they represent may be covered elsewhere.
a5873648 363
39c4a6cf 364[ List each test improvement as a =item entry ]
a5873648 365
39c4a6cf 366=over 4
a5873648
PM
367
368=item *
369
39c4a6cf 370XXX
a5873648 371
58f25ac1
MH
372=back
373
39c4a6cf 374=head1 Platform Support
b10906fb 375
39c4a6cf 376XXX Any changes to platform support should be listed in the sections below.
b10906fb 377
39c4a6cf
PM
378[ Within the sections, list each platform as a =item entry with specific
379changes as paragraphs below it. ]
b10906fb 380
39c4a6cf 381=head2 New Platforms
b10906fb 382
39c4a6cf
PM
383XXX List any platforms that this version of perl compiles on, that previous
384versions did not. These will either be enabled by new files in the F<hints/>
385directories, or new subdirectories and F<README> files at the top level of the
386source tree.
13900f93 387
7065301c 388=over 4
24a38d90 389
39c4a6cf 390=item XXX-some-platform
24a38d90 391
39c4a6cf 392XXX
bb076206 393
7065301c
RS
394=back
395
39c4a6cf 396=head2 Discontinued Platforms
097675bf 397
39c4a6cf 398XXX List any platforms that this version of perl no longer compiles on.
b3211734 399
6e97d65d 400=over 4
b3211734 401
39c4a6cf 402=item XXX-some-platform
7065301c 403
39c4a6cf 404XXX
13900f93 405
39c4a6cf 406=back
7d0ccdba 407
39c4a6cf 408=head2 Platform-Specific Notes
7d0ccdba 409
39c4a6cf
PM
410XXX List any changes for specific platforms. This could include configuration
411and compilation changes or changes in portability/compatibility. However,
412changes within modules for platforms should generally be listed in the
413L</Modules and Pragmata> section.
6e97d65d 414
39c4a6cf 415=over 4
6e97d65d 416
39c4a6cf 417=item XXX-some-platform
6e97d65d 418
39c4a6cf 419XXX
7d0ccdba 420
7065301c
RS
421=back
422
423=head1 Internal Changes
424
39c4a6cf
PM
425XXX Changes which affect the interface available to C<XS> code go here. Other
426significant internal changes for future core maintainers should be noted as
427well.
c9fcb674 428
39c4a6cf 429[ List each change as a =item entry ]
a835cd47 430
39c4a6cf 431=over 4
c1284011 432
7d15b1a8 433XXX
1c43698b 434
6d9b7c7c 435=back
c1284011 436
6d9b7c7c 437=head1 Selected Bug Fixes
375f5f06 438
39c4a6cf
PM
439XXX Important bug fixes in the core language are summarized here. Bug fixes in
440files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
441
442[ List each fix as a =item entry ]
443
0346c3a9 444=over 4
375f5f06 445
2884baee
MH
446=item *
447
39c4a6cf 448XXX
2884baee 449
0aa1826c
FC
450=item *
451
6f1a844b
FC
452Constant dereferencing now works correctly for typeglob constants.
453Previously the glob was stringified and its name looked up. Now the glob
454itself is used. [perl #69456]
455
549ea8d4
FC
456=item *
457
458When parsing a funny character ($ @ % &) followed by braces, the parser no
459longer tries to guess whether it is a block or a hash constructor (causing
460a syntax error when it guesses the latter), since it can only be a block.
461
be0006e0
FC
462=item *
463
464C<undef $reference> now frees the referent immediately, instead of hanging
465on to it until the next statement. [perl #122556]
466
1699f5c2
FC
467=item *
468
469Various cases where the name of a sub is used (autoload, overloading, error
470messages) used to crash for lexical subs, but have been fixed.
471
7e8b2071
FC
472=item *
473
474Bareword lookup now tries to avoid vivifying packages if it turns out the
475bareword is not going to be a subroutine name.
476
f9acf899
FC
477=item *
478
479Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
480deletes any subroutine named C<__ANON__> in the current package. Not only
481was C<*__ANON__{CODE}> cleared, but there was a memory leak, too. This bug
482goes back to perl 5.8.0.
483
fd26b6f0
FC
484=item *
485
486Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
487constants of the same name declared by C<use constant>. This bug was
488introduced in perl 5.10.0.
489
499333dc
KW
490=item *
491
492Under some conditions a warning raised in compilation of regular
493expression patterns could be displayed multiple times. This is now
494fixed.
495
8f0cd35a
KW
496=item *
497
498C<qr/[\N{named sequence}]/> now works properly in many instances. Some
499names known to C<\N{...}> refer to a sequence of multiple characters,
500instead of the usual single character. Bracketed character classes
501generally only match single characters, but now special handling has
502been added so that they can match named sequences, but not if the class
503is inverted or the sequence is specified as the beginning or end of a
504range. In these cases, the only behavior change from before is a slight
505rewording of the fatal error message given when this class is part of a
506C<?[...])> construct. When the C<[...]> stands alone, the same
507non-fatal warning as before is raised, and only the first character in
508the sequence is used, again just as before.
509
aa292ef2
FC
510=item *
511
512Tainted constants evaluated at compile time no longer cause unrelated
513statements to become tainted. [perl #122669]
514
739e9bee
FC
515=item *
516
517C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
518was not giving the handle the right reference count, so a double free could
519happen.
520
b23b2fdb
FC
521=item *
522
523When deciding that a bareword was a method name, the parser would get
524confused if an "our" sub with the same name existed, and look up the method
525in the package of the "our" sub, instead of the package of the invocant.
526
7d15b1a8
FC
527=item *
528
529The parser no longer gets confused by C<\U=> within a double-quoted string.
530It used to roduce a syntax error, but now compiles it correctly.
531[perl #80368]
532
bbca64cf
KW
533=item *
534
535It has always been the intention for the C<-B> and C<-T> file test
536operators to treat UTF-8 encoded files as text.
537(L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
538Previously, it was possible for some files to be considered UTF-8 that
539actually weren't valid UTF-8. This is now fixed. The operators now
540work on EBCDIC platforms as well.
541
0064f8cc
KW
542=item *
543
544Under some conditions warning messages raised during regular expression
545pattern compilation were being output more than once. This has now been
546fixed.
547
6ff8f256
KW
548=item *
549
550A regression has been fixed that was introduced in v5.20.0 (fixed in
551v5.20.1 as well as here) in which a UTF-8 encoded regular expression
552pattern that contains a single ASCII lowercase letter does not match its
553uppercase counterpart. [perl #122655]
554
39c4a6cf 555=back
b756670b 556
39c4a6cf 557=head1 Known Problems
b756670b 558
39c4a6cf
PM
559XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
560tests that had to be C<TODO>ed for the release would be noted here. Unfixed
561platform specific bugs also go here.
e917e94e 562
39c4a6cf
PM
563[ List each fix as a =item entry ]
564
565=over 4
e917e94e 566
26dd5fd6
PM
567=item *
568
39c4a6cf 569XXX
26dd5fd6 570
13900f93
A
571=back
572
39c4a6cf 573=head1 Errata From Previous Releases
e831f11a 574
39c4a6cf
PM
575=over 4
576
577=item *
ff433f2d 578
39c4a6cf
PM
579XXX Add anything here that we forgot to add, or were mistaken about, in
580the perldelta of a previous release.
ff433f2d 581
39c4a6cf
PM
582=back
583
584=head1 Obituary
ff433f2d 585
39c4a6cf
PM
586XXX If any significant core contributor has died, we've added a short obituary
587here.
ff433f2d 588
39c4a6cf 589=head1 Acknowledgements
ff433f2d 590
39c4a6cf 591XXX Generate this with:
e831f11a 592
39c4a6cf 593 perl Porting/acknowledgements.pl v5.21.3..HEAD
f5b73711 594
44691e6f
AB
595=head1 Reporting Bugs
596
e08634c5
SH
597If you find what you think is a bug, you might check the articles recently
598posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 599https://rt.perl.org/ . There may also be information at
7ef8b31d 600http://www.perl.org/ , the Perl Home Page.
44691e6f 601
e08634c5
SH
602If you believe you have an unreported bug, please run the L<perlbug> program
603included with your release. Be sure to trim your bug down to a tiny but
604sufficient test case. Your bug report, along with the output of C<perl -V>,
605will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
606
607If the bug you are reporting has security implications, which make it
e08634c5
SH
608inappropriate to send to a publicly archived mailing list, then please send it
609to perl5-security-report@perl.org. This points to a closed subscription
610unarchived mailing list, which includes all the core committers, who will be
611able to help assess the impact of issues, figure out a resolution, and help
f9001595 612co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
613platforms on which Perl is supported. Please only use this address for
614security issues in the Perl core, not for modules independently distributed on
615CPAN.
44691e6f
AB
616
617=head1 SEE ALSO
618
e08634c5
SH
619The F<Changes> file for an explanation of how to view exhaustive details on
620what changed.
44691e6f
AB
621
622The F<INSTALL> file for how to build Perl.
623
624The F<README> file for general stuff.
625
626The F<Artistic> and F<Copying> files for copyright information.
627
628=cut