This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update release announcement template
[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 118Subroutines with an empty prototype and bodies containing just C<undef> are
8f5ad91b
SH
119now eligible for inlining.
120L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
55e8b286 121
07600c14
FC
122=item *
123
124Subroutines in packages no longer need to carry typeglobs around with them.
125Declaring a subroutine will now put a simple sub reference in the stash if
126possible, saving memory. The typeglobs still notionally exist, so
127accessing them will cause the subroutine reference to be upgraded to a
128typeglob. This optimisation does not currently apply to XSUBs or exported
129subroutines, and method calls will undo it, since they cache things in
8f5ad91b
SH
130typeglobs.
131L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
07600c14 132
39c4a6cf 133=back
55e8b286 134
39c4a6cf 135=head1 Modules and Pragmata
d99849ae 136
39c4a6cf
PM
137XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
138go here. If Module::CoreList is updated, generate an initial draft of the
139following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
140for important changes should then be added by hand. In an ideal world,
141dual-life modules would have a F<Changes> file that could be cribbed.
d99849ae 142
39c4a6cf 143[ Within each section, list entries as a =item entry ]
ff433f2d 144
39c4a6cf 145=head2 New Modules and Pragmata
ff433f2d 146
39c4a6cf 147=over 4
ff433f2d
PM
148
149=item *
150
d72cd2eb
DM
151L<B::Op_private> provides detailed information about the flags used in
152the C<op_private> field of perl opcodes.
0bb39c26 153
39c4a6cf 154=back
0bb39c26 155
39c4a6cf 156=head2 Updated Modules and Pragmata
9c97a342 157
39c4a6cf 158=over 4
d99849ae
PM
159
160=item *
161
c37b2ad0
SH
162L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
163
164Tests can now be run in parallel.
165
166=item *
167
8435afd1
SH
168L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
169
170=item *
171
172L<attributes> has been upgraded from version 0.22 to 0.23.
173
174=item *
175
07600c14
FC
176L<B> has been upgraded from version 1.50 to 1.51.
177
178It provides a new C<B::safename> function, based on the existing
179C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
6ab3666b 180
233a4069
JK
181=item *
182
d0ab07ee
JK
183L<B::Concise> has been upgraded from version 0.992 to 0.993.
184
608e531f
SH
185=item *
186
65452717
FC
187L<B::Deparse> has been upgraded from version 1.27 to 1.28.
188
8435afd1
SH
189It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
190
191=item *
192
193L<bignum> has been upgraded from version 0.37 to 0.38.
194
195=item *
196
197L<constant> has been upgraded from version 1.31 to 1.32.
198
199It now accepts fully-qualified constant names, allowing constants to be defined
200in packages other than the caller.
65452717
FC
201
202=item *
203
608e531f 204L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
74d5bfab
AS
205
206=item *
5c31a0ca
SH
207
208L<Data::Dumper> has been upgraded from version 2.152 to 2.154.
209
210=item *
74d5bfab 211
8435afd1
SH
212L<experimental> has been upgraded from version 0.008 to 0.010.
213
214=item *
215
216L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
8f5ad91b 217L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
74d5bfab 218
d0ab07ee
JK
219=item *
220
8435afd1 221L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
39091b75
JK
222
223=item *
224
8435afd1 225L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
8f5ad91b 226L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
ecd53122
JK
227
228=item *
229
9eace98c
JK
230L<File::Find> has been upgraded from version 1.27 to 1.28.
231
232C<find()> and C<finddepth()> will now warn if passed inappropriate or
233misspelled options.
234
235=item *
236
237L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
238
239=item *
240
8435afd1 241L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
d0ab07ee
JK
242
243=item *
244
8435afd1 245L<IO> has been upgraded from version 1.33 to 1.34.
d0ab07ee
JK
246
247=item *
248
8435afd1
SH
249L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
250
251=item *
d0ab07ee 252
8435afd1 253L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
316ab8c6
SH
254
255=item *
256
257L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
8435afd1
SH
258
259=item *
260
261L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140915.
262
263=item *
264
265L<overload> has been upgraded from version 1.22 to 1.23.
266
267=item *
268
269PathTools has been upgraded from version 3.49 to 3.50.
5b319db8 270
d0ab07ee
JK
271=item *
272
273L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
274
275=item *
276
8435afd1
SH
277L<POSIX> has been upgraded from version 1.42 to 1.43.
278
688d9ed1
JH
279The C99 math functions and constants (for example acosh, isinf, isnan,
280round, trunc; M_E, M_SQRT2, M_PI) have been added.
46274848
SH
281
282=item *
283
8435afd1 284Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
d0ab07ee 285
8435afd1
SH
286=item *
287
288L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
289
290=item *
291
292L<Test::Harness> has been upgraded from version 3.32 to 3.33.
293
294=item *
295
296L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
bfc60ea2 297
d0ab07ee
JK
298=item *
299
300L<threads> has been upgraded from version 1.95 to 1.96.
301
8435afd1
SH
302=item *
303
304L<Time::Piece> has been upgraded from version 1.27 to 1.29.
305
306=item *
307
308L<version> has been upgraded from version 0.9908 to 0.9909.
309
39c4a6cf 310=back
9c97a342 311
39c4a6cf 312=head2 Removed Modules and Pragmata
d99849ae 313
39c4a6cf 314=over 4
d99849ae 315
ff433f2d
PM
316=item *
317
39c4a6cf 318XXX
ff433f2d 319
13900f93 320=back
aac7f82f 321
13900f93 322=head1 Documentation
aac7f82f 323
39c4a6cf
PM
324XXX Changes to files in F<pod/> go here. Consider grouping entries by
325file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d9b7c7c 326
39c4a6cf 327=head2 New Documentation
2a395b86 328
39c4a6cf 329XXX Changes which create B<new> files in F<pod/> go here.
2a395b86 330
39c4a6cf 331=head3 L<XXX>
2a395b86 332
39c4a6cf 333XXX Description of the purpose of the new file here
2a395b86 334
39c4a6cf 335=head2 Changes to Existing Documentation
2a395b86 336
39c4a6cf
PM
337XXX Changes which significantly change existing files in F<pod/> go here.
338However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
339section.
340
8435afd1 341=head3 L<perlsyn>
2a395b86
PM
342
343=over 4
344
345=item *
346
8435afd1 347An ambiguity in the documentation of the Ellipsis statement has
8f5ad91b
SH
348been corrected.
349L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
8435afd1
SH
350
351=back
352
353=head3 L<perlxs>
354
355=over 4
2a395b86 356
12d22d1f
JK
357=item *
358
8435afd1 359Added a discussion of locale issues in XS code.
12d22d1f 360
2a395b86
PM
361=back
362
39c4a6cf 363=head1 Diagnostics
2a395b86 364
39c4a6cf
PM
365The following additions or changes have been made to diagnostic output,
366including warnings and fatal error messages. For the complete list of
367diagnostic messages, see L<perldiag>.
2a395b86 368
39c4a6cf
PM
369XXX New or changed warnings emitted by the core's C<C> code go here. Also
370include any changes in L<perldiag> that reconcile it to the C<C> code.
2a395b86 371
39c4a6cf 372=head2 New Diagnostics
0f4a583b 373
39c4a6cf
PM
374XXX Newly added diagnostic messages go under here, separated into New Errors
375and New Warnings
2a395b86 376
39c4a6cf 377=head3 New Errors
2a395b86
PM
378
379=over 4
380
381=item *
382
39c4a6cf 383XXX L<message|perldiag/"message">
2a395b86
PM
384
385=back
386
39c4a6cf 387=head3 New Warnings
2a395b86
PM
388
389=over 4
390
391=item *
392
39c4a6cf 393XXX L<message|perldiag/"message">
2a395b86
PM
394
395=back
6d9b7c7c 396
39c4a6cf
PM
397=head2 Changes to Existing Diagnostics
398
399XXX Changes (i.e. rewording) of diagnostic messages go here
7f55cec0 400
13900f93 401=over 4
7f55cec0
SH
402
403=item *
404
623141a1
FC
405L<Global symbol "%s" requires explicit package name|perldiag/Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)>
406
407This message has had '(did you forget to declare "my %s"?)' appended to it,
4c9184fd
SH
408to make it more helpful to new Perl programmers.
409L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638>
aac7f82f 410
13900f93 411=back
aac7f82f 412
363d3025
FC
413=head2 Diagnostic Removals
414
415=over 4
416
417=item *
418
334464b3
FC
419"Constant is not a FOO reference"
420
421Compile-time checking of constant dereferencing (e.g.,
422C<< my_constant->() >>) has been removed, since it was not taking
8f5ad91b
SH
423overloading into account.
424L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
425L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
334464b3
FC
426
427=item *
428
363d3025
FC
429The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
430There is actually no ambiguity here, and this impedes the use of negated
431constants; e.g., C<-Inf>.
432
ef5a9509
FC
433=item *
434
435The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
436could get confused in the scope of C<use utf8> if C<Class> were a constant
437whose value contained Latin-1 characters.
438
363d3025
FC
439=back
440
39c4a6cf 441=head1 Utility Changes
091fed7c 442
39c4a6cf
PM
443XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
444Most of these are built within the directory F<utils>.
902c1f75 445
39c4a6cf
PM
446[ List utility changes as a =head2 entry for each utility and =item
447entries for each change
448Use L<XXX> with program names to get proper documentation linking. ]
2901561d 449
39c4a6cf 450=head2 L<XXX>
4594cf53 451
13900f93 452=over 4
96dcbc37
DD
453
454=item *
455
39c4a6cf 456XXX
a1d26ccd 457
39c4a6cf 458=back
a1d26ccd 459
39c4a6cf 460=head1 Configuration and Compilation
7065301c 461
39c4a6cf
PM
462XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
463go here. Any other changes to the Perl build process should be listed here.
464However, any platform-specific changes should be listed in the
465L</Platform Support> section, instead.
58f25ac1 466
39c4a6cf 467[ List changes as a =item entry ].
13900f93
A
468
469=over 4
58f25ac1
MH
470
471=item *
472
39c4a6cf 473XXX
a5873648 474
39c4a6cf 475=back
a5873648 476
39c4a6cf 477=head1 Testing
a5873648 478
39c4a6cf
PM
479XXX Any significant changes to the testing of a freshly built perl should be
480listed here. Changes which create B<new> files in F<t/> go here as do any
481large changes to the testing harness (e.g. when parallel testing was added).
482Changes to existing files in F<t/> aren't worth summarizing, although the bugs
483that they represent may be covered elsewhere.
a5873648 484
39c4a6cf 485[ List each test improvement as a =item entry ]
a5873648 486
39c4a6cf 487=over 4
a5873648
PM
488
489=item *
490
39c4a6cf 491XXX
a5873648 492
58f25ac1
MH
493=back
494
39c4a6cf 495=head1 Platform Support
b10906fb 496
39c4a6cf 497XXX Any changes to platform support should be listed in the sections below.
b10906fb 498
39c4a6cf
PM
499[ Within the sections, list each platform as a =item entry with specific
500changes as paragraphs below it. ]
b10906fb 501
39c4a6cf 502=head2 New Platforms
b10906fb 503
39c4a6cf
PM
504XXX List any platforms that this version of perl compiles on, that previous
505versions did not. These will either be enabled by new files in the F<hints/>
506directories, or new subdirectories and F<README> files at the top level of the
507source tree.
13900f93 508
7065301c 509=over 4
24a38d90 510
39c4a6cf 511=item XXX-some-platform
24a38d90 512
39c4a6cf 513XXX
bb076206 514
7065301c
RS
515=back
516
39c4a6cf 517=head2 Discontinued Platforms
097675bf 518
39c4a6cf 519XXX List any platforms that this version of perl no longer compiles on.
b3211734 520
6e97d65d 521=over 4
b3211734 522
39c4a6cf 523=item XXX-some-platform
7065301c 524
39c4a6cf 525XXX
13900f93 526
39c4a6cf 527=back
7d0ccdba 528
39c4a6cf 529=head2 Platform-Specific Notes
7d0ccdba 530
39c4a6cf
PM
531XXX List any changes for specific platforms. This could include configuration
532and compilation changes or changes in portability/compatibility. However,
533changes within modules for platforms should generally be listed in the
534L</Modules and Pragmata> section.
6e97d65d 535
39c4a6cf 536=over 4
6e97d65d 537
39c4a6cf 538=item XXX-some-platform
6e97d65d 539
39c4a6cf 540XXX
7d0ccdba 541
7065301c
RS
542=back
543
544=head1 Internal Changes
545
39c4a6cf
PM
546XXX Changes which affect the interface available to C<XS> code go here. Other
547significant internal changes for future core maintainers should be noted as
548well.
c9fcb674 549
39c4a6cf 550[ List each change as a =item entry ]
a835cd47 551
39c4a6cf 552=over 4
c1284011 553
6d67525d
FC
554=item *
555
cd949807
FC
556C<save_re_context> no longer does anything and has been moved to
557F<mathoms.c>.
1c43698b 558
07600c14
FC
559=item *
560
561C<cv_name> is a new API function that can be passed a CV or GV. It returns
562an SV containing the name of the subroutine for use in diagnostics.
8f5ad91b
SH
563L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
564L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
07600c14
FC
565
566=item *
567
568C<cv_set_call_checker_flags> is a new API function that works like
569C<cv_set_call_checker>, except that it allows the caller to specify whether
570the call checker requires a full GV for reporting the subroutine's name, or
571whether it could be passed a CV instead. Whatever value is passed will be
572acceptable to C<cv_name>. C<cv_set_call_checker> guarantees there will be
573a GV, but it may have to create one on the fly, which is inefficient.
8f5ad91b 574L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
07600c14
FC
575
576=item *
577
578C<CvGV> (which is not part of the API) is now a more complex macro, which
579may call a function and reify a GV. For those cases where is has been used
580as a boolean, C<CvHASGV> has been added, which will return true for CVs
581that notionally have GVs, but without reifying the GV. C<CvGV> also
8f5ad91b
SH
582returns a GV now for lexical subs.
583L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
07600c14 584
8435afd1
SH
585=item *
586
587Added L<perlapi/sync_locale>.
588Changing the program's locale should be avoided by XS code. Nevertheless,
589certain non-Perl libraries called from XS, such as C<Gtk> do so. When this
590happens, Perl needs to be told that the locale has changed. Use this function
591to do so, before returning to Perl.
592
d72cd2eb
DM
593=item *
594
595The defines and labels for the flags in the C<op_private> field of OPs
596are now auto-generated from data in F<regen/op_private>. The noticeable
c0ed031b 597effect of this is that some of the flag output of C<Concise> might differ
d72cd2eb
DM
598slightly, and the flag output of C<perl -Dx> may differ considerably (they
599both use the same set of labels now). Also in debugging builds, there
600is a new assert in C<op_free()> that checks that the op doesn't have any
601unrecognised flags set in C<op_private>.
602
603
6d9b7c7c 604=back
c1284011 605
6d9b7c7c 606=head1 Selected Bug Fixes
375f5f06 607
39c4a6cf
PM
608XXX Important bug fixes in the core language are summarized here. Bug fixes in
609files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
610
611[ List each fix as a =item entry ]
612
0346c3a9 613=over 4
375f5f06 614
2884baee
MH
615=item *
616
39c4a6cf 617XXX
2884baee 618
0aa1826c
FC
619=item *
620
6f1a844b
FC
621Constant dereferencing now works correctly for typeglob constants.
622Previously the glob was stringified and its name looked up. Now the glob
8f5ad91b
SH
623itself is used.
624L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
6f1a844b 625
549ea8d4
FC
626=item *
627
628When parsing a funny character ($ @ % &) followed by braces, the parser no
629longer tries to guess whether it is a block or a hash constructor (causing
630a syntax error when it guesses the latter), since it can only be a block.
631
be0006e0
FC
632=item *
633
634C<undef $reference> now frees the referent immediately, instead of hanging
8f5ad91b
SH
635on to it until the next statement.
636L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
be0006e0 637
1699f5c2
FC
638=item *
639
640Various cases where the name of a sub is used (autoload, overloading, error
641messages) used to crash for lexical subs, but have been fixed.
642
7e8b2071
FC
643=item *
644
645Bareword lookup now tries to avoid vivifying packages if it turns out the
646bareword is not going to be a subroutine name.
647
f9acf899
FC
648=item *
649
650Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
651deletes any subroutine named C<__ANON__> in the current package. Not only
652was C<*__ANON__{CODE}> cleared, but there was a memory leak, too. This bug
0d5b620e 653goes back to perl 5.8.0.
f9acf899 654
fd26b6f0
FC
655=item *
656
657Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
658constants of the same name declared by C<use constant>. This bug was
659introduced in perl 5.10.0.
660
499333dc
KW
661=item *
662
663Under some conditions a warning raised in compilation of regular
664expression patterns could be displayed multiple times. This is now
665fixed.
666
8f0cd35a
KW
667=item *
668
669C<qr/[\N{named sequence}]/> now works properly in many instances. Some
670names known to C<\N{...}> refer to a sequence of multiple characters,
671instead of the usual single character. Bracketed character classes
672generally only match single characters, but now special handling has
673been added so that they can match named sequences, but not if the class
674is inverted or the sequence is specified as the beginning or end of a
675range. In these cases, the only behavior change from before is a slight
676rewording of the fatal error message given when this class is part of a
677C<?[...])> construct. When the C<[...]> stands alone, the same
678non-fatal warning as before is raised, and only the first character in
679the sequence is used, again just as before.
680
aa292ef2
FC
681=item *
682
683Tainted constants evaluated at compile time no longer cause unrelated
8f5ad91b
SH
684statements to become tainted.
685L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
aa292ef2 686
739e9bee
FC
687=item *
688
689C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
690was not giving the handle the right reference count, so a double free could
691happen.
692
b23b2fdb
FC
693=item *
694
695When deciding that a bareword was a method name, the parser would get
696confused if an "our" sub with the same name existed, and look up the method
697in the package of the "our" sub, instead of the package of the invocant.
698
7d15b1a8
FC
699=item *
700
701The parser no longer gets confused by C<\U=> within a double-quoted string.
0d5b620e 702It used to produce a syntax error, but now compiles it correctly.
8f5ad91b 703L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
7d15b1a8 704
bbca64cf
KW
705=item *
706
707It has always been the intention for the C<-B> and C<-T> file test
708operators to treat UTF-8 encoded files as text.
709(L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
710Previously, it was possible for some files to be considered UTF-8 that
711actually weren't valid UTF-8. This is now fixed. The operators now
712work on EBCDIC platforms as well.
713
0064f8cc
KW
714=item *
715
716Under some conditions warning messages raised during regular expression
717pattern compilation were being output more than once. This has now been
718fixed.
719
6ff8f256
KW
720=item *
721
722A regression has been fixed that was introduced in v5.20.0 (fixed in
723v5.20.1 as well as here) in which a UTF-8 encoded regular expression
724pattern that contains a single ASCII lowercase letter does not match its
8f5ad91b
SH
725uppercase counterpart.
726L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
6ff8f256 727
80cc3290
FC
728=item *
729
730Constant folding could incorrectly suppress warnings if lexical warnings
731(C<use warnings> or C<no warnings>) were not in effect and C<$^W> were
732false at compile time and true at run time.
733
13dd5671
FC
734=item *
735
736Loading UTF8 tables during a regular expression match could cause assertion
737failures under debugging builds if the previous match used the very same
8f5ad91b
SH
738regular expression.
739L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
13dd5671 740
bdab7676
FC
741=item *
742
743Thread cloning used to work incorrectly for lexical subs, possibly causing
744crashes or double frees on exit.
745
3a085d00
FC
746=item *
747
748Since perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining
749an anonymous subroutine could corrupt things internally, resulting in
750L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data. This has
751been fixed.
752
caa66803
FC
753=item *
754
755C<(caller $n)[3]> now reports names of lexical subs, instead of treating
756them as "(unknown)".
757
91766151
FC
758=item *
759
760C<sort subname LIST> now supports lexical subs for the comparison routine.
761
dd593f1d
FC
762=item *
763
764Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention
765the two names for the same variable on either side, causing wrong values to
4c9184fd
SH
766be assigned.
767L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667>
dd593f1d 768
fb3b7425
FC
769=item *
770
771Long here-doc terminators could cause a bad read on short lines of input.
772This has been fixed. It is doubtful that any crash could have occurred.
773This bug goes back to when here-docs were introduced in perl 3.000
774twenty-five years ago.
775
b245455d
SH
776=item *
777
778An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
779unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
780it should not. This has been fixed. (Note, however, that C<split/^x/> does
781not behave like C<split/^x/m>, which is also considered to be a bug and will be
782fixed in a future version.)
783L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
784
39c4a6cf 785=back
b756670b 786
39c4a6cf 787=head1 Known Problems
b756670b 788
39c4a6cf
PM
789XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
790tests that had to be C<TODO>ed for the release would be noted here. Unfixed
791platform specific bugs also go here.
e917e94e 792
39c4a6cf
PM
793[ List each fix as a =item entry ]
794
795=over 4
e917e94e 796
26dd5fd6
PM
797=item *
798
39c4a6cf 799XXX
26dd5fd6 800
13900f93
A
801=back
802
39c4a6cf 803=head1 Errata From Previous Releases
e831f11a 804
39c4a6cf
PM
805=over 4
806
807=item *
ff433f2d 808
39c4a6cf
PM
809XXX Add anything here that we forgot to add, or were mistaken about, in
810the perldelta of a previous release.
ff433f2d 811
39c4a6cf
PM
812=back
813
814=head1 Obituary
ff433f2d 815
39c4a6cf
PM
816XXX If any significant core contributor has died, we've added a short obituary
817here.
ff433f2d 818
39c4a6cf 819=head1 Acknowledgements
ff433f2d 820
39c4a6cf 821XXX Generate this with:
e831f11a 822
39c4a6cf 823 perl Porting/acknowledgements.pl v5.21.3..HEAD
f5b73711 824
44691e6f
AB
825=head1 Reporting Bugs
826
e08634c5
SH
827If you find what you think is a bug, you might check the articles recently
828posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 829https://rt.perl.org/ . There may also be information at
7ef8b31d 830http://www.perl.org/ , the Perl Home Page.
44691e6f 831
e08634c5
SH
832If you believe you have an unreported bug, please run the L<perlbug> program
833included with your release. Be sure to trim your bug down to a tiny but
834sufficient test case. Your bug report, along with the output of C<perl -V>,
835will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
836
837If the bug you are reporting has security implications, which make it
e08634c5
SH
838inappropriate to send to a publicly archived mailing list, then please send it
839to perl5-security-report@perl.org. This points to a closed subscription
840unarchived mailing list, which includes all the core committers, who will be
841able to help assess the impact of issues, figure out a resolution, and help
f9001595 842co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
843platforms on which Perl is supported. Please only use this address for
844security issues in the Perl core, not for modules independently distributed on
845CPAN.
44691e6f
AB
846
847=head1 SEE ALSO
848
e08634c5
SH
849The F<Changes> file for an explanation of how to view exhaustive details on
850what changed.
44691e6f
AB
851
852The F<INSTALL> file for how to build Perl.
853
854The F<README> file for general stuff.
855
856The F<Artistic> and F<Copying> files for copyright information.
857
858=cut