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