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