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