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