This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
94c9ef3fb81d7f82848cf4df8869dfe37f38a134
[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 =item *
172
173 L<Pod::Html> has been upgraded from version 1.2203 to 1.23.
174 A title for the HTML document will now be automatically generated by
175 default from a "NAME" section in the POD document, as it used to be
176 before the module was rewritten to use L<Pod::Simple::XHTML> to do the
177 core of its job.  [perl #110520]
178
179 =back
180
181 =head2 Removed Modules and Pragmata
182
183 =over 4
184
185 =item *
186
187 XXX
188
189 =back
190
191 =head1 Documentation
192
193 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
194 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
195
196 =head2 New Documentation
197
198 XXX Changes which create B<new> files in F<pod/> go here.
199
200 =head3 L<XXX>
201
202 XXX Description of the purpose of the new file here
203
204 =head2 Changes to Existing Documentation
205
206 We have attempted to update the documentation to reflect the changes
207 listed in this document.  If you find any we have missed, send email
208 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
209
210 XXX Changes which significantly change existing files in F<pod/> go here.
211 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
212 section.
213
214 Additionally, the following selected changes have been made:
215
216 =head3 L<perlapi>
217
218 The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
219 are now documented comprehensively, where previously the only
220 documentation was a reference to the L<perlembed> tutorial.
221
222 The documentation of C<newGIVENOP()> has been belatedly updated to
223 account for the removal of lexical C<$_>.
224
225 The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
226 documented much more comprehensively than before.
227
228 =head3 L<perlop>
229
230 The general explanation of operator precedence and associativity has
231 been corrected and clarified.  [perl #127391]
232
233 The documentation for the C<\> referencing operator now explains the
234 unusual context that it supplies to its operand.  [perl #131061]
235
236 =head3 L<perlsyn>
237
238 The means to disambiguate between code blocks and hash constructors,
239 already documented in L<perlref>, are now documented in L<perlsyn> too.
240 [perl #130958]
241
242 =head3 L<perlfunc>
243
244 The documentation for the C<exists> operator no longer says that
245 autovivification behaviour "may be fixed in a future release".
246 We've determined that we're not going to change the default behaviour.
247 [perl #127712]
248
249 A couple of small details in the documentation for the C<bless> operator
250 have been clarified.  [perl #124428]
251
252 The description of C<@INC> hooks in the documentation for C<require>
253 has been corrected to say that filter subroutines receive a useless
254 first argument.  [perl #115754]
255
256 The documentation of C<use> now explains what syntactically qualifies
257 as a version number for its module version checking feature.
258
259 =head3 L<perluniprops>
260
261 For each binary table or property, the documentation now includes which
262 characters in the range C<\x00-\xFF> it matches, as well as a list of
263 the first few ranges of code points matched above that.
264
265 =head3 L<perlobj>
266
267 The documentation about C<DESTROY> methods has been corrected, updated,
268 and revised, especially in regard to how they interact with exceptions.
269 [perl #122753]
270
271 =head3 L<perlsec>
272
273 The documentation about set-id scripts has been updated and revised.
274 [perl #74142]
275
276 A section about using C<sudo> to run Perl scripts has been added.
277
278 =head3 L<perlembed>
279
280 The examples in L<perlembed> have been made more portable in the way
281 they exit, and the example that gets an exit code from the embedded Perl
282 interpreter now gets it from the right place.  The examples that pass
283 a constructed argv to Perl now show the mandatory null C<argv[argc]>.
284
285 =head3 L<perldebguts>
286
287 The description of the conditions under which C<DB::sub()> will be called
288 has been clarified.  [perl #131672]
289
290 =head3 L<perlintern>
291
292 The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
293 now documented.
294
295 =head3 L<perlgit>
296
297 The precise rules for identifying C<smoke-me> branches are now stated.
298
299 =over 4
300
301 =item *
302
303 XXX Description of the change here
304
305 =back
306
307 =head1 Diagnostics
308
309 The following additions or changes have been made to diagnostic output,
310 including warnings and fatal error messages.  For the complete list of
311 diagnostic messages, see L<perldiag>.
312
313 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
314 include any changes in L<perldiag> that reconcile it to the C<C> code.
315
316 =head2 New Diagnostics
317
318 XXX Newly added diagnostic messages go under here, separated into New Errors
319 and New Warnings
320
321 =head3 New Errors
322
323 =over 4
324
325 =item *
326
327 L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
328
329 (F) A "goto" statement was executed to jump into the middle of a C<given>
330 block.  You can't get there from here.  See L<perlfunc/goto>.
331
332 =back
333
334 =head3 New Warnings
335
336 =over 4
337
338 =item *
339
340 L<Old package separator used in string|perldiag/"Old package separator used in string">
341
342 (W syntax) You used the old package separator, "'", in a variable
343 named inside a double-quoted string; e.g., C<"In $name's house">.  This
344 is equivalent to C<"In $name::s house">.  If you meant the former, put
345 a backslash before the apostrophe (C<"In $name\'s house">).
346
347 =back
348
349 =head2 Changes to Existing Diagnostics
350
351 XXX Changes (i.e. rewording) of diagnostic messages go here
352
353 =over 4
354
355 =item *
356
357 XXX Describe change here
358
359 =item *
360
361 The warning about useless use of a concatenation operator in void context
362 is now generated for expressions with multiple concatenations, such as
363 C<$a.$b.$c>, which used to mistakenly not warn.  [perl #6997]
364
365 =item *
366
367 Warnings that a variable or subroutine "masks earlier declaration in same
368 ...", or that an C<our> variable has been redeclared, have been moved to a
369 new warnings category "shadow".  Previously they were in category "misc".
370
371 =item *
372
373 The deprecation warning from C<Sys::Hostname::hostname()> saying that
374 it doesn't accept arguments now states the Perl version in which the
375 warning will be upgraded to an error.  [perl #124349]
376
377 =item *
378
379 The L<perldiag> entry for the error regarding a set-id script has been
380 expanded to make clear that the error is reporting a specific security
381 vulnerability, and to advise how to fix it.
382
383 =back
384
385 =head1 Utility Changes
386
387 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
388 Most of these are built within the directory F<utils>.
389
390 [ List utility changes as a =head2 entry for each utility and =item
391 entries for each change
392 Use L<XXX> with program names to get proper documentation linking. ]
393
394 =head2 L<XXX>
395
396 =over 4
397
398 =item *
399
400 XXX
401
402 =back
403
404 =head1 Configuration and Compilation
405
406 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
407 go here.  Any other changes to the Perl build process should be listed here.
408 However, any platform-specific changes should be listed in the
409 L</Platform Support> section, instead.
410
411 [ List changes as an =item entry ].
412
413 =over 4
414
415 =item *
416
417 XXX
418
419 =item *
420
421 Where an HTML version of the doucmentation is installed, the HTML
422 documents now use relative links to refer to each other.  Links from
423 the index page of L<perlipc> to the individual section documents are
424 now correct.  [perl #110056]
425
426 =back
427
428 =head1 Testing
429
430 XXX Any significant changes to the testing of a freshly built perl should be
431 listed here.  Changes which create B<new> files in F<t/> go here as do any
432 large changes to the testing harness (e.g. when parallel testing was added).
433 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
434 that they represent may be covered elsewhere.
435
436 XXX If there were no significant test changes, say this:
437
438 Tests were added and changed to reflect the other additions and changes
439 in this release.
440
441 XXX If instead there were significant changes, say this:
442
443 Tests were added and changed to reflect the other additions and
444 changes in this release.  Furthermore, these significant changes were
445 made:
446
447 [ List each test improvement as an =item entry ]
448
449 =over 4
450
451 =item *
452
453 XXX
454
455 =back
456
457 =head1 Platform Support
458
459 XXX Any changes to platform support should be listed in the sections below.
460
461 [ Within the sections, list each platform as an =item entry with specific
462 changes as paragraphs below it. ]
463
464 =head2 New Platforms
465
466 XXX List any platforms that this version of perl compiles on, that previous
467 versions did not.  These will either be enabled by new files in the F<hints/>
468 directories, or new subdirectories and F<README> files at the top level of the
469 source tree.
470
471 =over 4
472
473 =item XXX-some-platform
474
475 XXX
476
477 =back
478
479 =head2 Discontinued Platforms
480
481 XXX List any platforms that this version of perl no longer compiles on.
482
483 =over 4
484
485 =item XXX-some-platform
486
487 XXX
488
489 =back
490
491 =head2 Platform-Specific Notes
492
493 XXX List any changes for specific platforms.  This could include configuration
494 and compilation changes or changes in portability/compatibility.  However,
495 changes within modules for platforms should generally be listed in the
496 L</Modules and Pragmata> section.
497
498 =over 4
499
500 =item Windows
501
502 We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
503 versions earlier than 14.1.
504
505 =back
506
507 =head1 Internal Changes
508
509 XXX Changes which affect the interface available to C<XS> code go here.  Other
510 significant internal changes for future core maintainers should be noted as
511 well.
512
513 =over 4
514
515 =item *
516
517 XS modules can now automatically get reentrant versions of system
518 functions on threaded perls.
519
520 By saying
521
522  #define PERL_REENTRANT
523
524 near the beginning of an C<XS> file, it will be compiled so that
525 whatever reentrant functions perl knows about on that system will
526 automatically and invisibly be used instead of the plain, non-reentrant
527 versions.  For example, if you write C<getpwnam()> in your code, on a
528 system that has C<pwnam_r()> all calls to the former will be translated
529 invisibly into the latter.  This does not happen except on threaded
530 perls, as they aren't needed otherwise.  Be aware that which functions
531 have reentrant versions varies from system to system.
532
533 =back
534
535 =head1 Selected Bug Fixes
536
537 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
538 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
539
540 [ List each fix as an =item entry ]
541
542 =over 4
543
544 =item *
545
546 XXX
547
548 =item *
549
550 Digits past the radix point in octal and binary floating point literals
551 now have the correct weight on platforms where a floating point
552 significand doesn't fit into an integer type.
553
554 =item *
555
556 C<exit(0)> in a C<UNITCHECK> or C<CHECK> block no longer permits the
557 main program to run, and C<exit(0)> in a C<BEGIN> block no longer permits
558 C<INIT> blocks to run before exiting.  [perl #2754]
559
560 =item *
561
562 The canonical truth value no longer has a spurious special meaning as
563 a callable.  It used to be a magic placeholder for a missing C<import>
564 or C<unimport> method.  It is now treated like any other string C<1>.
565 [perl #126042]
566
567 =item *
568
569 The C<readpipe()> built-in function now checks at compile time that
570 it has only one parameter expression, and puts it in scalar context,
571 thus ensuring that it doesn't corrupt the stack at runtime.  [perl #4574]
572
573 =item *
574
575 C<sort> now performs correct reference counting when aliasing C<$a> and
576 C<$b>, thus avoiding premature destruction and leakage of scalars if they
577 are re-aliased during execution of the sort comparator.  [perl #92264]
578
579 =item *
580
581 C<reverse> with no operand, reversing C<$_> by default, is no longer in
582 danger of corrupting the stack.  [perl #132544]
583
584 =item *
585
586 Perl's own C<malloc> no longer gets confused by attempts to allocate
587 more than a gigabyte on a 64-bit platform.  [perl #119829]
588
589 =item *
590
591 Stacked file test operators in a sort comparator expression no longer
592 cause a crash.  [perl #129347]
593
594 =item *
595
596 An identity C<tr///> transformation on a reference is no longer mistaken
597 for that reference for the purposes of deciding whether it can be
598 assigned to.  [perl #130578]
599
600 =item *
601
602 Lengthy hexadecimal, octal, or binary floating point literals no
603 longer cause undefined behaviour when parsing digits that are of such
604 low significance that they can't affect the floating point value.
605 [perl #131894]
606
607 =item *
608
609 C<open $$scalarref...> and similar invocations no longer leak the file
610 handle.  [perl #115814]
611
612 =item *
613
614 Some convoluted kinds of regexp no longer cause an arithmetic overflow
615 when compiled.  [perl #131893]
616
617 =item *
618
619 The default typemap, by avoiding C<newGVgen>, now no longer leaks when
620 XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
621
622 =item *
623
624 Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
625 crashes because of the early freeing of the subroutine.
626
627 =back
628
629 =head1 Known Problems
630
631 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
632 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
633 platform specific bugs also go here.
634
635 [ List each fix as an =item entry ]
636
637 =over 4
638
639 =item *
640
641 XXX
642
643 =back
644
645 =head1 Errata From Previous Releases
646
647 =over 4
648
649 =item *
650
651 XXX Add anything here that we forgot to add, or were mistaken about, in
652 the perldelta of a previous release.
653
654 =back
655
656 =head1 Obituary
657
658 XXX If any significant core contributor or member of the CPAN community has
659 died, add a short obituary here.
660
661 =head1 Acknowledgements
662
663 XXX Generate this with:
664
665   perl Porting/acknowledgements.pl v5.27.6..HEAD
666
667 =head1 Reporting Bugs
668
669 If you find what you think is a bug, you might check the perl bug database
670 at L<https://rt.perl.org/> .  There may also be information at
671 L<http://www.perl.org/> , the Perl Home Page.
672
673 If you believe you have an unreported bug, please run the L<perlbug> program
674 included with your release.  Be sure to trim your bug down to a tiny but
675 sufficient test case.  Your bug report, along with the output of C<perl -V>,
676 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
677
678 If the bug you are reporting has security implications which make it
679 inappropriate to send to a publicly archived mailing list, then see
680 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
681 for details of how to report the issue.
682
683 =head1 Give Thanks
684
685 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
686 you can do so by running the C<perlthanks> program:
687
688     perlthanks
689
690 This will send an email to the Perl 5 Porters list with your show of thanks.
691
692 =head1 SEE ALSO
693
694 The F<Changes> file for an explanation of how to view exhaustive details on
695 what changed.
696
697 The F<INSTALL> file for how to build Perl.
698
699 The F<README> file for general stuff.
700
701 The F<Artistic> and F<Copying> files for copyright information.
702
703 =cut