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