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