This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta b3893bfa90e8810497e2f81458a5a46db611cadf
[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
201The documentation of C<newGIVENOP()> has been belatedly updated to
202account for the removal of lexical C<$_>.
203
01d02537
Z
204The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
205documented much more comprehensively than before.
206
40a66856
Z
207=head3 L<perlop>
208
b782ddf4
Z
209The general explanation of operator precedence and associativity has
210been corrected and clarified. [perl #127391]
211
40a66856
Z
212The documentation for the C<\> referencing operator now explains the
213unusual context that it supplies to its operand. [perl #131061]
214
b32ad89c
Z
215=head3 L<perlsyn>
216
217The means to disambiguate between code blocks and hash constructors,
218already documented in L<perlref>, are now documented in L<perlsyn> too.
219[perl #130958]
220
f6c3d597
Z
221=head3 L<perlfunc>
222
223The documentation for the C<exists> operator no longer says that
224autovivification behaviour "may be fixed in a future release".
225We've determined that we're not going to change the default behaviour.
226[perl #127712]
227
b6108eb9
Z
228A couple of small details in the documentation for the C<bless> operator
229have been clarified. [perl #124428]
230
56e48c10
KW
231=head3 L<perluniprops>
232
233For each binary table or property, the documentation now includes which
234characters in the range C<\x00-\xFF> it matches, as well as a list of
235the first few ranges of code points matched above that.
b2a6778b 236
86e03141
Z
237=head3 L<perldebguts>
238
239The description of the conditions under which C<DB::sub()> will be called
240has been clarified. [perl #131672]
241
01d02537
Z
242=head3 L<perlintern>
243
244The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
245now documented.
246
25219f3f 247=over 4
b2a6778b
KE
248
249=item *
250
25219f3f 251XXX Description of the change here
b2a6778b 252
25219f3f 253=back
b2a6778b 254
25219f3f 255=head1 Diagnostics
b2a6778b 256
25219f3f
KE
257The following additions or changes have been made to diagnostic output,
258including warnings and fatal error messages. For the complete list of
259diagnostic messages, see L<perldiag>.
b2a6778b 260
25219f3f
KE
261XXX New or changed warnings emitted by the core's C<C> code go here. Also
262include any changes in L<perldiag> that reconcile it to the C<C> code.
b2a6778b 263
25219f3f 264=head2 New Diagnostics
b2a6778b 265
25219f3f
KE
266XXX Newly added diagnostic messages go under here, separated into New Errors
267and New Warnings
b2a6778b 268
25219f3f 269=head3 New Errors
b2a6778b 270
25219f3f 271=over 4
b2a6778b
KE
272
273=item *
274
a01f4640
FC
275L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
276
277(F) A "goto" statement was executed to jump into the middle of a C<given>
278block. You can't get there from here. See L<perlfunc/goto>.
b2a6778b 279
25219f3f 280=back
b2a6778b 281
25219f3f 282=head3 New Warnings
b2a6778b 283
25219f3f 284=over 4
64b9a139
SH
285
286=item *
287
0b4678bf
FC
288L<Old package separator used in string|perldiag/"Old package separator used in string">
289
290(W syntax) You used the old package separator, "'", in a variable
291named inside a double-quoted string; e.g., C<"In $name's house">. This
292is equivalent to C<"In $name::s house">. If you meant the former, put
293a backslash before the apostrophe (C<"In $name\'s house">).
64b9a139 294
e6a2e5ca 295=back
64b9a139 296
25219f3f 297=head2 Changes to Existing Diagnostics
64b9a139 298
25219f3f 299XXX Changes (i.e. rewording) of diagnostic messages go here
e6a2e5ca 300
04f89ea7
Z
301=over 4
302
64b9a139
SH
303=item *
304
25219f3f 305XXX Describe change here
2b8b74b0 306
52e3acf8
Z
307=item *
308
309Warnings that a variable or subroutine "masks earlier declaration in same
310...", or that an C<our> variable has been redeclared, have been moved to a
311new warnings category "shadow". Previously they were in category "misc".
312
cab9f0b0
Z
313=item *
314
315The deprecation warning from C<Sys::Hostname::hostname()> saying that
316it doesn't accept arguments now states the Perl version in which the
317warning will be upgraded to an error. [perl #124349]
318
25219f3f 319=back
e509fc38 320
25219f3f 321=head1 Utility Changes
e509fc38 322
25219f3f
KE
323XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
324Most of these are built within the directory F<utils>.
64b9a139 325
25219f3f
KE
326[ List utility changes as a =head2 entry for each utility and =item
327entries for each change
328Use L<XXX> with program names to get proper documentation linking. ]
64b9a139 329
25219f3f 330=head2 L<XXX>
64b9a139 331
25219f3f 332=over 4
64b9a139
SH
333
334=item *
335
25219f3f 336XXX
64b9a139 337
e6a2e5ca
SH
338=back
339
25219f3f 340=head1 Configuration and Compilation
64b9a139 341
25219f3f
KE
342XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
343go here. Any other changes to the Perl build process should be listed here.
344However, any platform-specific changes should be listed in the
345L</Platform Support> section, instead.
e6a2e5ca 346
25219f3f 347[ List changes as an =item entry ].
64b9a139 348
e6a2e5ca 349=over 4
64b9a139
SH
350
351=item *
352
25219f3f 353XXX
f99042c8 354
e6a2e5ca
SH
355=back
356
25219f3f 357=head1 Testing
e6a2e5ca 358
25219f3f
KE
359XXX Any significant changes to the testing of a freshly built perl should be
360listed here. Changes which create B<new> files in F<t/> go here as do any
361large changes to the testing harness (e.g. when parallel testing was added).
362Changes to existing files in F<t/> aren't worth summarizing, although the bugs
363that they represent may be covered elsewhere.
e6a2e5ca 364
25219f3f 365XXX If there were no significant test changes, say this:
64b9a139 366
25219f3f
KE
367Tests were added and changed to reflect the other additions and changes
368in this release.
64b9a139 369
25219f3f 370XXX If instead there were significant changes, say this:
e6a2e5ca 371
25219f3f
KE
372Tests were added and changed to reflect the other additions and
373changes in this release. Furthermore, these significant changes were
374made:
e6a2e5ca 375
25219f3f 376[ List each test improvement as an =item entry ]
e6a2e5ca 377
e6a2e5ca 378=over 4
64b9a139 379
25219f3f 380=item *
dea26044 381
25219f3f 382XXX
dea26044 383
25219f3f 384=back
dea26044 385
25219f3f 386=head1 Platform Support
dea26044 387
25219f3f 388XXX Any changes to platform support should be listed in the sections below.
dea26044 389
25219f3f
KE
390[ Within the sections, list each platform as an =item entry with specific
391changes as paragraphs below it. ]
dea26044 392
25219f3f 393=head2 New Platforms
dea26044 394
25219f3f
KE
395XXX List any platforms that this version of perl compiles on, that previous
396versions did not. These will either be enabled by new files in the F<hints/>
397directories, or new subdirectories and F<README> files at the top level of the
398source tree.
dea26044 399
25219f3f 400=over 4
dea26044 401
25219f3f 402=item XXX-some-platform
dea26044 403
25219f3f 404XXX
dea26044
MB
405
406=back
e6a2e5ca 407
e6a2e5ca
SH
408=head2 Discontinued Platforms
409
25219f3f
KE
410XXX List any platforms that this version of perl no longer compiles on.
411
e6a2e5ca
SH
412=over 4
413
25219f3f 414=item XXX-some-platform
e6a2e5ca 415
25219f3f 416XXX
e6a2e5ca
SH
417
418=back
419
a8ba758d
JSA
420=head2 Platform-Specific Notes
421
25219f3f
KE
422XXX List any changes for specific platforms. This could include configuration
423and compilation changes or changes in portability/compatibility. However,
424changes within modules for platforms should generally be listed in the
425L</Modules and Pragmata> section.
426
a8ba758d 427=over 4
9ef07b78 428
04139aa0 429=item Windows
a8ba758d 430
04139aa0
SH
431We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
432versions earlier than 14.1.
a8ba758d
JSA
433
434=back
435
e6a2e5ca
SH
436=head1 Internal Changes
437
25219f3f
KE
438XXX Changes which affect the interface available to C<XS> code go here. Other
439significant internal changes for future core maintainers should be noted as
440well.
8ed1839e 441
25219f3f 442=over 4
a8ba758d 443
ee5287f6
LM
444=item *
445
59eb8be1
KW
446XS modules can now automatically get reentrant versions of system
447functions on threaded perls.
448
449By saying
450
451 #define PERL_REENTRANT
452
453near the beginning of an C<XS> file, it will be compiled so that
454whatever reentrant functions perl knows about on that system will
455automatically and invisibly be used instead of the plain, non-reentrant
456versions. For example, if you write C<getpwnam()> in your code, on a
457system that has C<pwnam_r()> all calls to the former will be translated
458invisibly into the latter. This does not happen except on threaded
459perls, as they aren't needed otherwise. Be aware that which functions
460have reentrant versions varies from system to system.
ee5287f6 461
e6a2e5ca
SH
462=back
463
464=head1 Selected Bug Fixes
465
25219f3f
KE
466XXX Important bug fixes in the core language are summarized here. Bug fixes in
467files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
a155eb05 468
25219f3f 469[ List each fix as an =item entry ]
c2bb91f9 470
25219f3f 471=over 4
e6a2e5ca 472
4faa3060
TC
473=item *
474
25219f3f 475XXX
4faa3060 476
64072da0
Z
477=item *
478
1b16b015
Z
479The canonical truth value no longer has a spurious special meaning as
480a callable. It used to be a magic placeholder for a missing C<import>
481or C<unimport> method. It is now treated like any other string C<1>.
482[perl #126042]
483
484=item *
485
64072da0 486Perl's own C<malloc> no longer gets confused by attempts to allocate
7b9d2ba3 487more than a gigabyte on a 64-bit platform. [perl #119829]
64072da0 488
244d2682
FC
489=item *
490
998753fe
Z
491An identity C<tr///> transformation on a reference is no longer mistaken
492for that reference for the purposes of deciding whether it can be
493assigned to. [perl #130578]
494
495=item *
496
53fff747
Z
497Lengthy hexadecimal, octal, or binary floating point literals no
498longer cause undefined behaviour when parsing digits that are of such
499low significance that they can't affect the floating point value.
500[perl #131894]
501
502=item *
503
244d2682
FC
504C<open $$scalarref...> and similar invocations no longer leak the file
505handle. [perl #115814]
506
507=item *
508
509The default typemap, by avoiding C<newGVgen>, now no longer leaks when
510XSUBs return file handles (C<PerlIO *> or C<FILE *>). [perl #115814]
511
aa0c5741
Z
512=item *
513
514Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
515crashes because of the early freeing of the subroutine.
516
25219f3f 517=back
4faa3060 518
25219f3f 519=head1 Known Problems
4faa3060 520
25219f3f
KE
521XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
522tests that had to be C<TODO>ed for the release would be noted here. Unfixed
523platform specific bugs also go here.
d1ac83c4 524
25219f3f 525[ List each fix as an =item entry ]
d1ac83c4 526
25219f3f 527=over 4
c4f4b223
Z
528
529=item *
530
25219f3f 531XXX
02d43d4f 532
e6a2e5ca
SH
533=back
534
e6a2e5ca
SH
535=head1 Errata From Previous Releases
536
537=over 4
8abafd33 538
e6a2e5ca
SH
539=item *
540
25219f3f
KE
541XXX Add anything here that we forgot to add, or were mistaken about, in
542the perldelta of a previous release.
8abafd33 543
e6a2e5ca 544=back
b2e49ab9 545
25219f3f 546=head1 Obituary
060724e5 547
25219f3f
KE
548XXX If any significant core contributor or member of the CPAN community has
549died, add a short obituary here.
060724e5 550
25219f3f 551=head1 Acknowledgements
060724e5 552
25219f3f 553XXX Generate this with:
060724e5 554
25219f3f 555 perl Porting/acknowledgements.pl v5.27.6..HEAD
f5b73711 556
44691e6f
AB
557=head1 Reporting Bugs
558
b5cbfe35
S
559If you find what you think is a bug, you might check the perl bug database
560at L<https://rt.perl.org/> . There may also be information at
561L<http://www.perl.org/> , the Perl Home Page.
44691e6f 562
e08634c5
SH
563If you believe you have an unreported bug, please run the L<perlbug> program
564included with your release. Be sure to trim your bug down to a tiny but
565sufficient test case. Your bug report, along with the output of C<perl -V>,
b5cbfe35 566will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 567
87c118b9
DM
568If the bug you are reporting has security implications which make it
569inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
570L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
571for details of how to report the issue.
44691e6f 572
390ae6f9
S
573=head1 Give Thanks
574
575If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
576you can do so by running the C<perlthanks> program:
577
578 perlthanks
579
580This will send an email to the Perl 5 Porters list with your show of thanks.
581
44691e6f
AB
582=head1 SEE ALSO
583
e08634c5
SH
584The F<Changes> file for an explanation of how to view exhaustive details on
585what changed.
44691e6f
AB
586
587The F<INSTALL> file for how to build Perl.
588
589The F<README> file for general stuff.
590
591The F<Artistic> and F<Copying> files for copyright information.
592
593=cut