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