This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for f9d9e965
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.21.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.3 release and the 5.21.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.2, first read
16 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 Infinity and NaN (not-a-number) handling improved
31
32 Floating point values are able to hold the special values infinity
33 (also -infinity), and NaN (not-a-number).  Now we more robustly recognize
34 and propagate the value in computations, and on output normalize them
35 to C<Inf> and C<NaN>.
36
37 See also the L<POSIX> enhancements.
38
39 =head1 Security
40
41 XXX Any security-related notices go here.  In particular, any security
42 vulnerabilities closed should be noted here rather than in the
43 L</Selected Bug Fixes> section.
44
45 [ List each security issue as a =head2 entry ]
46
47 =head1 Incompatible Changes
48
49 XXX For a release on a stable branch, this section aspires to be:
50
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.
54
55 [ List each incompatible change as a =head2 entry ]
56
57 =head2 Changes to the C<*> prototype
58
59 The C<*> character in a subroutine's prototype used to allow barewords
60 to take precedence over most, but not all subroutines.  It was never
61 consistent and exhibited buggy behaviour.
62
63 Now it has been changed, so subroutines always take precedence over
64 barewords, which brings it into conformity with similarly prototyped
65 built-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
74 =head1 Deprecations
75
76 XXX Any deprecated features, syntax, modules etc. should be listed here.
77
78 =head2 Module removals
79
80 XXX Remove this section if inapplicable.
81
82 The following modules will be removed from the core distribution in a
83 future release, and will at that time need to be installed from CPAN.
84 Distributions on CPAN which require these modules will need to list them as
85 prerequisites.
86
87 The core versions of these modules will now issue C<"deprecated">-category
88 warnings to alert you to this fact.  To silence these deprecation warnings,
89 install the modules in question from CPAN.
90
91 Note that these are (with rare exceptions) fine modules that you are encouraged
92 to continue to use.  Their disinclusion from core primarily hinges on their
93 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
94 not usually on concerns over their design.
95
96 =over
97
98 =item XXX
99
100 XXX Note that deprecated modules should be listed here even if they are listed
101 as an updated module in the L</Modules and Pragmata> section.
102
103 =back
104
105 [ List each other deprecation as a =head2 entry ]
106
107 =head1 Performance Enhancements
108
109 XXX Changes which enhance performance without changing behaviour go here.
110 There may well be none in a stable release.
111
112 [ List each enhancement as a =item entry ]
113
114 =over 4
115
116 =item *
117
118 Subroutines with an empty prototype and bodies containing just C<undef> are
119 now eligible for inlining.  [perl #122728]
120
121 =item *
122
123 Subroutines in packages no longer need to carry typeglobs around with them.
124 Declaring a subroutine will now put a simple sub reference in the stash if
125 possible, saving memory.  The typeglobs still notionally exist, so
126 accessing them will cause the subroutine reference to be upgraded to a
127 typeglob.  This optimisation does not currently apply to XSUBs or exported
128 subroutines, and method calls will undo it, since they cache things in
129 typeglobs.  [perl #120441]
130
131 =back
132
133 =head1 Modules and Pragmata
134
135 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
136 go here.  If Module::CoreList is updated, generate an initial draft of the
137 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
138 for important changes should then be added by hand.  In an ideal world,
139 dual-life modules would have a F<Changes> file that could be cribbed.
140
141 [ Within each section, list entries as a =item entry ]
142
143 =head2 New Modules and Pragmata
144
145 =over 4
146
147 =item *
148
149 XXX
150
151 =back
152
153 =head2 Updated Modules and Pragmata
154
155 =over 4
156
157 =item *
158
159 L<B> has been upgraded from version 1.50 to 1.51.
160
161 It provides a new C<B::safename> function, based on the existing
162 C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
163
164 =item *
165
166 L<B::Concise> has been upgraded from version 0.992 to 0.993.
167
168 =item *
169
170 L<B::Deparse> has been upgraded from version 1.27 to 1.28.
171
172 It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>)
173 correctly.
174
175 =item *
176
177 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
178
179 =item *
180
181 L<ExtUtils::CBuilder> has been upgraded from version 0.280216 to 0.280219.
182 [perl #122675].
183
184 =item *
185
186 L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.66.
187 [perl #122415].
188
189 =item *
190
191 L<ExtUtils::ParseXS>:  Documentation has been added to
192 F<ExtUtils-ParseXS/lib/perlxs.pod> concerning handling of locales when writing
193 XS code.
194
195 =item *
196
197 L<File::Find> has been upgraded from version 1.27 to 1.28.
198
199 C<find()> and C<finddepth()> will now warn if passed inappropriate or
200 misspelled options.
201
202 =item *
203
204 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
205
206 =item *
207
208 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.048.
209
210 =item *
211
212 L<Module::CoreList> has been upgraded from version 5.021003 to 5.021004.
213
214 =item *
215
216 L<POSIX> has been upgraded from version 1.42 to 1.43.
217
218 The C99 math functions and constants (for example acosh, round,
219 M_E, M_PI) have been added.
220
221 =item *
222
223 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
224
225 =item *
226
227 Scalar-List-Utils has been upgraded from version 1.40 to 1.41.
228
229 =item *
230
231 L<constant> has been upgraded from version 1.31 to 1.32.
232
233 It now accepts fully-qualified constant names, allowing constants to be
234 defined in packages other than the caller.
235
236 =item *
237
238 L<threads> has been upgraded from version 1.95 to 1.96.
239
240 =back
241
242 =head2 Removed Modules and Pragmata
243
244 =over 4
245
246 =item *
247
248 XXX
249
250 =back
251
252 =head1 Documentation
253
254 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
255 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
256
257 =head2 New Documentation
258
259 XXX Changes which create B<new> files in F<pod/> go here.
260
261 =head3 L<XXX>
262
263 XXX Description of the purpose of the new file here
264
265 =head2 Changes to Existing Documentation
266
267 XXX Changes which significantly change existing files in F<pod/> go here.
268 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
269 section.
270
271 =head3 L<XXX>
272
273 =over 4
274
275 =item *
276
277 XXX Description of the change here
278
279 =item *
280
281 L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has
282 been corrected. [perl #122661]
283
284 =back
285
286 =head1 Diagnostics
287
288 The following additions or changes have been made to diagnostic output,
289 including warnings and fatal error messages.  For the complete list of
290 diagnostic messages, see L<perldiag>.
291
292 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
293 include any changes in L<perldiag> that reconcile it to the C<C> code.
294
295 =head2 New Diagnostics
296
297 XXX Newly added diagnostic messages go under here, separated into New Errors
298 and New Warnings
299
300 =head3 New Errors
301
302 =over 4
303
304 =item *
305
306 XXX L<message|perldiag/"message">
307
308 =back
309
310 =head3 New Warnings
311
312 =over 4
313
314 =item *
315
316 XXX L<message|perldiag/"message">
317
318 =back
319
320 =head2 Changes to Existing Diagnostics
321
322 XXX Changes (i.e. rewording) of diagnostic messages go here
323
324 =over 4
325
326 =item *
327
328 XXX Describe change here
329
330 =back
331
332 =head2 Diagnostic Removals
333
334 =over 4
335
336 =item *
337
338 "Constant is not a FOO reference"
339
340 Compile-time checking of constant dereferencing (e.g.,
341 C<< my_constant->() >>) has been removed, since it was not taking
342 overloading into account.  [perl #69456] [perl #122607]
343
344 =item *
345
346 The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
347 There is actually no ambiguity here, and this impedes the use of negated
348 constants; e.g., C<-Inf>.
349
350 =item *
351
352 The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
353 could get confused in the scope of C<use utf8> if C<Class> were a constant
354 whose value contained Latin-1 characters.
355
356 =back
357
358 =head1 Utility Changes
359
360 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
361 Most of these are built within the directory F<utils>.
362
363 [ List utility changes as a =head2 entry for each utility and =item
364 entries for each change
365 Use L<XXX> with program names to get proper documentation linking. ]
366
367 =head2 L<XXX>
368
369 =over 4
370
371 =item *
372
373 XXX
374
375 =back
376
377 =head1 Configuration and Compilation
378
379 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
380 go here.  Any other changes to the Perl build process should be listed here.
381 However, any platform-specific changes should be listed in the
382 L</Platform Support> section, instead.
383
384 [ List changes as a =item entry ].
385
386 =over 4
387
388 =item *
389
390 XXX
391
392 =back
393
394 =head1 Testing
395
396 XXX Any significant changes to the testing of a freshly built perl should be
397 listed here.  Changes which create B<new> files in F<t/> go here as do any
398 large changes to the testing harness (e.g. when parallel testing was added).
399 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
400 that they represent may be covered elsewhere.
401
402 [ List each test improvement as a =item entry ]
403
404 =over 4
405
406 =item *
407
408 XXX
409
410 =back
411
412 =head1 Platform Support
413
414 XXX Any changes to platform support should be listed in the sections below.
415
416 [ Within the sections, list each platform as a =item entry with specific
417 changes as paragraphs below it. ]
418
419 =head2 New Platforms
420
421 XXX List any platforms that this version of perl compiles on, that previous
422 versions did not.  These will either be enabled by new files in the F<hints/>
423 directories, or new subdirectories and F<README> files at the top level of the
424 source tree.
425
426 =over 4
427
428 =item XXX-some-platform
429
430 XXX
431
432 =back
433
434 =head2 Discontinued Platforms
435
436 XXX List any platforms that this version of perl no longer compiles on.
437
438 =over 4
439
440 =item XXX-some-platform
441
442 XXX
443
444 =back
445
446 =head2 Platform-Specific Notes
447
448 XXX List any changes for specific platforms.  This could include configuration
449 and compilation changes or changes in portability/compatibility.  However,
450 changes within modules for platforms should generally be listed in the
451 L</Modules and Pragmata> section.
452
453 =over 4
454
455 =item XXX-some-platform
456
457 XXX
458
459 =back
460
461 =head1 Internal Changes
462
463 XXX Changes which affect the interface available to C<XS> code go here.  Other
464 significant internal changes for future core maintainers should be noted as
465 well.
466
467 [ List each change as a =item entry ]
468
469 =over 4
470
471 =item *
472
473 C<save_re_context> no longer does anything and has been moved to
474 F<mathoms.c>.
475
476 =item *
477
478 C<cv_name> is a new API function that can be passed a CV or GV.  It returns
479 an SV containing the name of the subroutine for use in diagnostics.
480 [perl #116735] [perl #120441]
481
482 =item *
483
484 C<cv_set_call_checker_flags> is a new API function that works like
485 C<cv_set_call_checker>, except that it allows the caller to specify whether
486 the call checker requires a full GV for reporting the subroutine's name, or
487 whether it could be passed a CV instead.  Whatever value is passed will be
488 acceptable to C<cv_name>.  C<cv_set_call_checker> guarantees there will be
489 a GV, but it may have to create one on the fly, which is inefficient.
490 [perl #116735]
491
492 =item *
493
494 C<CvGV> (which is not part of the API) is now a more complex macro, which
495 may call a function and reify a GV.  For those cases where is has been used
496 as a boolean, C<CvHASGV> has been added, which will return true for CVs
497 that notionally have GVs, but without reifying the GV.  C<CvGV> also
498 returns a GV now for lexical subs.  [perl #120441]
499
500 =back
501
502 =head1 Selected Bug Fixes
503
504 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
505 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
506
507 [ List each fix as a =item entry ]
508
509 =over 4
510
511 =item *
512
513 XXX
514
515 =item *
516
517 Constant dereferencing now works correctly for typeglob constants.
518 Previously the glob was stringified and its name looked up.  Now the glob
519 itself is used.  [perl #69456]
520
521 =item *
522
523 When parsing a funny character ($ @ % &) followed by braces, the parser no
524 longer tries to guess whether it is a block or a hash constructor (causing
525 a syntax error when it guesses the latter), since it can only be a block.
526
527 =item *
528
529 C<undef $reference> now frees the referent immediately, instead of hanging
530 on to it until the next statement.  [perl #122556]
531
532 =item *
533
534 Various cases where the name of a sub is used (autoload, overloading, error
535 messages) used to crash for lexical subs, but have been fixed.
536
537 =item *
538
539 Bareword lookup now tries to avoid vivifying packages if it turns out the
540 bareword is not going to be a subroutine name.
541
542 =item *
543
544 Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
545 deletes any subroutine named C<__ANON__> in the current package.  Not only
546 was C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug
547 goes back to perl 5.8.0. 
548
549 =item *
550
551 Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
552 constants of the same name declared by C<use constant>.  This bug was
553 introduced in perl 5.10.0.
554
555 =item *
556
557 Under some conditions a warning raised in compilation of regular
558 expression patterns could be displayed multiple times.  This is now
559 fixed.
560
561 =item *
562
563 C<qr/[\N{named sequence}]/> now works properly in many instances.  Some
564 names known to C<\N{...}> refer to a sequence of multiple characters,
565 instead of the usual single character.  Bracketed character classes
566 generally only match single characters, but now special handling has
567 been added so that they can match named sequences, but not if the class
568 is inverted or the sequence is specified as the beginning or end of a
569 range.  In these cases, the only behavior change from before is a slight
570 rewording of the fatal error message given when this class is part of a
571 C<?[...])> construct.  When the C<[...]> stands alone, the same
572 non-fatal warning as before is raised, and only the first character in
573 the sequence is used, again just as before.
574
575 =item *
576
577 Tainted constants evaluated at compile time no longer cause unrelated
578 statements to become tainted.  [perl #122669]
579
580 =item *
581
582 C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
583 was not giving the handle the right reference count, so a double free could
584 happen.
585
586 =item *
587
588 When deciding that a bareword was a method name, the parser would get
589 confused if an "our" sub with the same name existed, and look up the method
590 in the package of the "our" sub, instead of the package of the invocant.
591
592 =item *
593
594 The parser no longer gets confused by C<\U=> within a double-quoted string.
595 It used to roduce a syntax error, but now compiles it correctly.
596 [perl #80368]
597
598 =item *
599
600 It has always been the intention for the C<-B> and C<-T> file test
601 operators to treat UTF-8 encoded files as text.
602 (L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
603 Previously, it was possible for some files to be considered UTF-8 that
604 actually weren't valid UTF-8.  This is now fixed.  The operators now
605 work on EBCDIC platforms as well.
606
607 =item *
608
609 Under some conditions warning messages raised during regular expression
610 pattern compilation were being output more than once.  This has now been
611 fixed.
612
613 =item *
614
615 A regression has been fixed that was introduced in v5.20.0 (fixed in
616 v5.20.1 as well as here) in which a UTF-8 encoded regular expression
617 pattern that contains a single ASCII lowercase letter does not match its
618 uppercase counterpart. [perl #122655]
619
620 =item *
621
622 Constant folding could incorrectly suppress warnings if lexical warnings
623 (C<use warnings> or C<no warnings>) were not in effect and C<$^W> were
624 false at compile time and true at run time.
625
626 =item *
627
628 Loading UTF8 tables during a regular expression match could cause assertion
629 failures under debugging builds if the previous match used the very same
630 regular expression.  [perl #122747]
631
632 =item *
633
634 Thread cloning used to work incorrectly for lexical subs, possibly causing
635 crashes or double frees on exit.
636
637 =back
638
639 =head1 Known Problems
640
641 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
642 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
643 platform specific bugs also go here.
644
645 [ List each fix as a =item entry ]
646
647 =over 4
648
649 =item *
650
651 XXX
652
653 =back
654
655 =head1 Errata From Previous Releases
656
657 =over 4
658
659 =item *
660
661 XXX Add anything here that we forgot to add, or were mistaken about, in
662 the perldelta of a previous release.
663
664 =back
665
666 =head1 Obituary
667
668 XXX If any significant core contributor has died, we've added a short obituary
669 here.
670
671 =head1 Acknowledgements
672
673 XXX Generate this with:
674
675   perl Porting/acknowledgements.pl v5.21.3..HEAD
676
677 =head1 Reporting Bugs
678
679 If you find what you think is a bug, you might check the articles recently
680 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
681 https://rt.perl.org/ .  There may also be information at
682 http://www.perl.org/ , the Perl Home Page.
683
684 If you believe you have an unreported bug, please run the L<perlbug> program
685 included with your release.  Be sure to trim your bug down to a tiny but
686 sufficient test case.  Your bug report, along with the output of C<perl -V>,
687 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
688
689 If the bug you are reporting has security implications, which make it
690 inappropriate to send to a publicly archived mailing list, then please send it
691 to perl5-security-report@perl.org.  This points to a closed subscription
692 unarchived mailing list, which includes all the core committers, who will be
693 able to help assess the impact of issues, figure out a resolution, and help
694 co-ordinate the release of patches to mitigate or fix the problem across all
695 platforms on which Perl is supported.  Please only use this address for
696 security issues in the Perl core, not for modules independently distributed on
697 CPAN.
698
699 =head1 SEE ALSO
700
701 The F<Changes> file for an explanation of how to view exhaustive details on
702 what changed.
703
704 The F<INSTALL> file for how to build Perl.
705
706 The F<README> file for general stuff.
707
708 The F<Artistic> and F<Copying> files for copyright information.
709
710 =cut