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