This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta addf67e13a08f45d3bb4c245c821b1ef2767c5a5
[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.27.7
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.27.6 release and the 5.27.7
13 release.
14
15 If you are upgrading from an earlier release such as 5.27.5, first read
16 L<perl5276delta>, which describes differences between 5.27.5 and 5.27.6.
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  The C<sprintf> C<%j> format size modifier is now available with
31 pre-C99 compilers
32
33 The actual size used depends on the platform, so remains unportable.
34
35 =head1 Security
36
37 XXX Any security-related notices go here.  In particular, any security
38 vulnerabilities closed should be noted here rather than in the
39 L</Selected Bug Fixes> section.
40
41 [ List each security issue as a =head2 entry ]
42
43 =head1 Incompatible Changes
44
45 XXX For a release on a stable branch, this section aspires to be:
46
47     There are no changes intentionally incompatible with 5.XXX.XXX
48     If any exist, they are bugs, and we request that you submit a
49     report.  See L</Reporting Bugs> below.
50
51 [ List each incompatible change as a =head2 entry ]
52
53 =head2 Over-radix digits in floating point literals
54
55 Octal and binary floating point literals used to permit any hexadecimal
56 digit to appear after the radix point.  The digits are now restricted
57 to those appropriate for the radix, as digits before the radix point
58 always were.
59
60 =head1 Deprecations
61
62 XXX Any deprecated features, syntax, modules etc. should be listed here.
63
64 =head2 Assignment to C<$[> will be fatal in Perl 5.30
65
66 Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
67 since Perl 5.12, but was never given a deadline for removal.  This has
68 now been scheduled for Perl 5.30.
69
70 =head2 hostname() won't accept arguments in Perl 5.32
71
72 Passing arguments to C<Sys::Hostname::hostname()> was already deprecated,
73 but didn't have a removal date.  This has now been scheduled for Perl
74 5.32.  [perl #124349]
75
76 =head2 Module removals
77
78 XXX Remove this section if not applicable.
79
80 The following modules will be removed from the core distribution in a
81 future release, and will at that time need to be installed from CPAN.
82 Distributions on CPAN which require these modules will need to list them as
83 prerequisites.
84
85 The core versions of these modules will now issue C<"deprecated">-category
86 warnings to alert you to this fact.  To silence these deprecation warnings,
87 install the modules in question from CPAN.
88
89 Note that these are (with rare exceptions) fine modules that you are encouraged
90 to continue to use.  Their disinclusion from core primarily hinges on their
91 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
92 not usually on concerns over their design.
93
94 =over
95
96 =item L<Locale::Codes> and its associated Country, Currency and Language modules
97
98 XXX Note that deprecated modules should be listed here even if they are listed
99 as an updated module in the L</Modules and Pragmata> section.
100
101 =back
102
103 [ List each other deprecation as a =head2 entry ]
104
105 =head1 Performance Enhancements
106
107 XXX Changes which enhance performance without changing behaviour go here.
108 There may well be none in a stable release.
109
110 [ List each enhancement as an =item entry ]
111
112 =over 4
113
114 =item *
115
116 XXX
117
118 =back
119
120 =head1 Modules and Pragmata
121
122 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
123 go here.  If Module::CoreList is updated, generate an initial draft of the
124 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
125 for important changes should then be added by hand.  In an ideal world,
126 dual-life modules would have a F<Changes> file that could be cribbed.
127
128 The list of new and updated modules is modified automatically as part of
129 preparing a Perl release, so the only reason to manually add entries here is if
130 you're summarising the important changes in the module update. (Also, if the
131 manually-added details don't match the automatically-generated ones, the
132 release manager will have to investigate the situation carefully.)
133
134 [ Within each section, list entries as an =item entry ]
135
136 =head2 New Modules and Pragmata
137
138 =over 4
139
140 =item *
141
142 XXX Remove this section if not applicable.
143
144 =back
145
146 =head2 Updated Modules and Pragmata
147
148 =over 4
149
150 =item *
151
152 L<Locale::Codes> has been upgraded from version 3.54 to 3.55
153
154 B<NOTE>: L<Locale::Codes> is deprecated in core and will be removed
155 from Perl 5.30.
156
157 =item *
158
159 L<threads> has been upgraded from version 2.19 to 2.20.
160 The documentation now better describes the problems that arise when
161 returning values from threads, and no longer warns about creating threads
162 in C<BEGIN> blocks.  [perl #96538]
163
164 =item *
165
166 L<Data::Dumper> has been upgraded from version 2.167_02 to 2.169.
167 Quoting of glob names now obeys the Useqq option [perl #119831].
168 Attempts to set an option to C<undef> through a combined getter/setter
169 method are no longer mistaken for getter calls [perl #113090].
170
171 =back
172
173 =head2 Removed Modules and Pragmata
174
175 =over 4
176
177 =item *
178
179 XXX
180
181 =back
182
183 =head1 Documentation
184
185 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
186 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
187
188 =head2 New Documentation
189
190 XXX Changes which create B<new> files in F<pod/> go here.
191
192 =head3 L<XXX>
193
194 XXX Description of the purpose of the new file here
195
196 =head2 Changes to Existing Documentation
197
198 We have attempted to update the documentation to reflect the changes
199 listed in this document.  If you find any we have missed, send email
200 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
201
202 XXX Changes which significantly change existing files in F<pod/> go here.
203 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
204 section.
205
206 Additionally, the following selected changes have been made:
207
208 =head3 L<perlapi>
209
210 The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
211 are now documented comprehensively, where previously the only
212 documentation was a reference to the L<perlembed> tutorial.
213
214 The documentation of C<newGIVENOP()> has been belatedly updated to
215 account for the removal of lexical C<$_>.
216
217 The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
218 documented much more comprehensively than before.
219
220 =head3 L<perlop>
221
222 The general explanation of operator precedence and associativity has
223 been corrected and clarified.  [perl #127391]
224
225 The documentation for the C<\> referencing operator now explains the
226 unusual context that it supplies to its operand.  [perl #131061]
227
228 =head3 L<perlsyn>
229
230 The means to disambiguate between code blocks and hash constructors,
231 already documented in L<perlref>, are now documented in L<perlsyn> too.
232 [perl #130958]
233
234 =head3 L<perlfunc>
235
236 The documentation for the C<exists> operator no longer says that
237 autovivification behaviour "may be fixed in a future release".
238 We've determined that we're not going to change the default behaviour.
239 [perl #127712]
240
241 A couple of small details in the documentation for the C<bless> operator
242 have been clarified.  [perl #124428]
243
244 The description of C<@INC> hooks in the documentation for C<require>
245 has been corrected to say that filter subroutines receive a useless
246 first argument.  [perl #115754]
247
248 The documentation of C<use> now explains what syntactically qualifies
249 as a version number for its module version checking feature.
250
251 =head3 L<perluniprops>
252
253 For each binary table or property, the documentation now includes which
254 characters in the range C<\x00-\xFF> it matches, as well as a list of
255 the first few ranges of code points matched above that.
256
257 =head3 L<perlobj>
258
259 The documentation about C<DESTROY> methods has been corrected, updated,
260 and revised, especially in regard to how they interact with exceptions.
261 [perl #122753]
262
263 =head3 L<perlsec>
264
265 The documentation about set-id scripts has been updated and revised.
266 [perl #74142]
267
268 A section about using C<sudo> to run Perl scripts has been added.
269
270 =head3 L<perlembed>
271
272 The examples in L<perlembed> have been made more portable in the way
273 they exit, and the example that gets an exit code from the embedded Perl
274 interpreter now gets it from the right place.  The examples that pass
275 a constructed argv to Perl now show the mandatory null C<argv[argc]>.
276
277 =head3 L<perldebguts>
278
279 The description of the conditions under which C<DB::sub()> will be called
280 has been clarified.  [perl #131672]
281
282 =head3 L<perlintern>
283
284 The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
285 now documented.
286
287 =head3 L<perlgit>
288
289 The precise rules for identifying C<smoke-me> branches are now stated.
290
291 =over 4
292
293 =item *
294
295 XXX Description of the change here
296
297 =back
298
299 =head1 Diagnostics
300
301 The following additions or changes have been made to diagnostic output,
302 including warnings and fatal error messages.  For the complete list of
303 diagnostic messages, see L<perldiag>.
304
305 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
306 include any changes in L<perldiag> that reconcile it to the C<C> code.
307
308 =head2 New Diagnostics
309
310 XXX Newly added diagnostic messages go under here, separated into New Errors
311 and New Warnings
312
313 =head3 New Errors
314
315 =over 4
316
317 =item *
318
319 L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
320
321 (F) A "goto" statement was executed to jump into the middle of a C<given>
322 block.  You can't get there from here.  See L<perlfunc/goto>.
323
324 =back
325
326 =head3 New Warnings
327
328 =over 4
329
330 =item *
331
332 L<Old package separator used in string|perldiag/"Old package separator used in string">
333
334 (W syntax) You used the old package separator, "'", in a variable
335 named inside a double-quoted string; e.g., C<"In $name's house">.  This
336 is equivalent to C<"In $name::s house">.  If you meant the former, put
337 a backslash before the apostrophe (C<"In $name\'s house">).
338
339 =back
340
341 =head2 Changes to Existing Diagnostics
342
343 XXX Changes (i.e. rewording) of diagnostic messages go here
344
345 =over 4
346
347 =item *
348
349 XXX Describe change here
350
351 =item *
352
353 Warnings that a variable or subroutine "masks earlier declaration in same
354 ...", or that an C<our> variable has been redeclared, have been moved to a
355 new warnings category "shadow".  Previously they were in category "misc".
356
357 =item *
358
359 The deprecation warning from C<Sys::Hostname::hostname()> saying that
360 it doesn't accept arguments now states the Perl version in which the
361 warning will be upgraded to an error.  [perl #124349]
362
363 =item *
364
365 The L<perldiag> entry for the error regarding a set-id script has been
366 expanded to make clear that the error is reporting a specific security
367 vulnerability, and to advise how to fix it.
368
369 =back
370
371 =head1 Utility Changes
372
373 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
374 Most of these are built within the directory F<utils>.
375
376 [ List utility changes as a =head2 entry for each utility and =item
377 entries for each change
378 Use L<XXX> with program names to get proper documentation linking. ]
379
380 =head2 L<XXX>
381
382 =over 4
383
384 =item *
385
386 XXX
387
388 =back
389
390 =head1 Configuration and Compilation
391
392 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
393 go here.  Any other changes to the Perl build process should be listed here.
394 However, any platform-specific changes should be listed in the
395 L</Platform Support> section, instead.
396
397 [ List changes as an =item entry ].
398
399 =over 4
400
401 =item *
402
403 XXX
404
405 =back
406
407 =head1 Testing
408
409 XXX Any significant changes to the testing of a freshly built perl should be
410 listed here.  Changes which create B<new> files in F<t/> go here as do any
411 large changes to the testing harness (e.g. when parallel testing was added).
412 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
413 that they represent may be covered elsewhere.
414
415 XXX If there were no significant test changes, say this:
416
417 Tests were added and changed to reflect the other additions and changes
418 in this release.
419
420 XXX If instead there were significant changes, say this:
421
422 Tests were added and changed to reflect the other additions and
423 changes in this release.  Furthermore, these significant changes were
424 made:
425
426 [ List each test improvement as an =item entry ]
427
428 =over 4
429
430 =item *
431
432 XXX
433
434 =back
435
436 =head1 Platform Support
437
438 XXX Any changes to platform support should be listed in the sections below.
439
440 [ Within the sections, list each platform as an =item entry with specific
441 changes as paragraphs below it. ]
442
443 =head2 New Platforms
444
445 XXX List any platforms that this version of perl compiles on, that previous
446 versions did not.  These will either be enabled by new files in the F<hints/>
447 directories, or new subdirectories and F<README> files at the top level of the
448 source tree.
449
450 =over 4
451
452 =item XXX-some-platform
453
454 XXX
455
456 =back
457
458 =head2 Discontinued Platforms
459
460 XXX List any platforms that this version of perl no longer compiles on.
461
462 =over 4
463
464 =item XXX-some-platform
465
466 XXX
467
468 =back
469
470 =head2 Platform-Specific Notes
471
472 XXX List any changes for specific platforms.  This could include configuration
473 and compilation changes or changes in portability/compatibility.  However,
474 changes within modules for platforms should generally be listed in the
475 L</Modules and Pragmata> section.
476
477 =over 4
478
479 =item Windows
480
481 We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
482 versions earlier than 14.1.
483
484 =back
485
486 =head1 Internal Changes
487
488 XXX Changes which affect the interface available to C<XS> code go here.  Other
489 significant internal changes for future core maintainers should be noted as
490 well.
491
492 =over 4
493
494 =item *
495
496 XS modules can now automatically get reentrant versions of system
497 functions on threaded perls.
498
499 By saying
500
501  #define PERL_REENTRANT
502
503 near the beginning of an C<XS> file, it will be compiled so that
504 whatever reentrant functions perl knows about on that system will
505 automatically and invisibly be used instead of the plain, non-reentrant
506 versions.  For example, if you write C<getpwnam()> in your code, on a
507 system that has C<pwnam_r()> all calls to the former will be translated
508 invisibly into the latter.  This does not happen except on threaded
509 perls, as they aren't needed otherwise.  Be aware that which functions
510 have reentrant versions varies from system to system.
511
512 =back
513
514 =head1 Selected Bug Fixes
515
516 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
517 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
518
519 [ List each fix as an =item entry ]
520
521 =over 4
522
523 =item *
524
525 XXX
526
527 =item *
528
529 Digits past the radix point in octal and binary floating point literals
530 now have the correct weight on platforms where a floating point
531 significand doesn't fit into an integer type.
532
533 =item *
534
535 C<exit(0)> in a C<UNITCHECK> or C<CHECK> block no longer permits the
536 main program to run, and C<exit(0)> in a C<BEGIN> block no longer permits
537 C<INIT> blocks to run before exiting.  [perl #2754]
538
539 =item *
540
541 The canonical truth value no longer has a spurious special meaning as
542 a callable.  It used to be a magic placeholder for a missing C<import>
543 or C<unimport> method.  It is now treated like any other string C<1>.
544 [perl #126042]
545
546 =item *
547
548 The C<readpipe()> built-in function now checks at compile time that
549 it has only one parameter expression, and puts it in scalar context,
550 thus ensuring that it doesn't corrupt the stack at runtime.  [perl #4574]
551
552 =item *
553
554 C<sort> now performs correct reference counting when aliasing C<$a> and
555 C<$b>, thus avoiding premature destruction and leakage of scalars if they
556 are re-aliased during execution of the sort comparator.  [perl #92264]
557
558 =item *
559
560 Perl's own C<malloc> no longer gets confused by attempts to allocate
561 more than a gigabyte on a 64-bit platform.  [perl #119829]
562
563 =item *
564
565 Stacked file test operators in a sort comparator expression no longer
566 cause a crash.  [perl #129347]
567
568 =item *
569
570 An identity C<tr///> transformation on a reference is no longer mistaken
571 for that reference for the purposes of deciding whether it can be
572 assigned to.  [perl #130578]
573
574 =item *
575
576 Lengthy hexadecimal, octal, or binary floating point literals no
577 longer cause undefined behaviour when parsing digits that are of such
578 low significance that they can't affect the floating point value.
579 [perl #131894]
580
581 =item *
582
583 C<open $$scalarref...> and similar invocations no longer leak the file
584 handle.  [perl #115814]
585
586 =item *
587
588 Some convoluted kinds of regexp no longer cause an arithmetic overflow
589 when compiled.  [perl #131893]
590
591 =item *
592
593 The default typemap, by avoiding C<newGVgen>, now no longer leaks when
594 XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
595
596 =item *
597
598 Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
599 crashes because of the early freeing of the subroutine.
600
601 =back
602
603 =head1 Known Problems
604
605 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
606 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
607 platform specific bugs also go here.
608
609 [ List each fix as an =item entry ]
610
611 =over 4
612
613 =item *
614
615 XXX
616
617 =back
618
619 =head1 Errata From Previous Releases
620
621 =over 4
622
623 =item *
624
625 XXX Add anything here that we forgot to add, or were mistaken about, in
626 the perldelta of a previous release.
627
628 =back
629
630 =head1 Obituary
631
632 XXX If any significant core contributor or member of the CPAN community has
633 died, add a short obituary here.
634
635 =head1 Acknowledgements
636
637 XXX Generate this with:
638
639   perl Porting/acknowledgements.pl v5.27.6..HEAD
640
641 =head1 Reporting Bugs
642
643 If you find what you think is a bug, you might check the perl bug database
644 at L<https://rt.perl.org/> .  There may also be information at
645 L<http://www.perl.org/> , the Perl Home Page.
646
647 If you believe you have an unreported bug, please run the L<perlbug> program
648 included with your release.  Be sure to trim your bug down to a tiny but
649 sufficient test case.  Your bug report, along with the output of C<perl -V>,
650 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
651
652 If the bug you are reporting has security implications which make it
653 inappropriate to send to a publicly archived mailing list, then see
654 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
655 for details of how to report the issue.
656
657 =head1 Give Thanks
658
659 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
660 you can do so by running the C<perlthanks> program:
661
662     perlthanks
663
664 This will send an email to the Perl 5 Porters list with your show of thanks.
665
666 =head1 SEE ALSO
667
668 The F<Changes> file for an explanation of how to view exhaustive details on
669 what changed.
670
671 The F<INSTALL> file for how to build Perl.
672
673 The F<README> file for general stuff.
674
675 The F<Artistic> and F<Copying> files for copyright information.
676
677 =cut