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