This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Avoid ‘deprecated’ for non-deprecated module
[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
9e0909b2
Z
53=head2 Smartmatch and switch simplification
54
55The experimental smart match operator (C<~~>) and switch
56(C<given>/C<when>) constructs have been drastically simplified, in a
57way that will require most uses of them to be updated.
58
59The smart match operator no longer has its large table of matching rules.
60Instead there is just one rule: the right-hand operand must overload
61the operator. Overloaded objects now bear the entire responsibility
62for determining what kind of match to perform. The operator also no
63longer implicitly enreferences certain kinds of operand (such as arrays);
64instead the operands get regular scalar context.
65
d6374f3d
Z
66The C<when> construct no longer has its complicated rules about how
67to treat its argument. Instead it has been split into two distinct
68constructs. C<whereso> always uses the argument as a truth value,
69and C<whereis> always smart matches. Like the smart match operator,
70these also no longer implicitly enreference certain kinds of argument,
9e0909b2
Z
71instead supplying regular scalar context.
72
b1a6328e
Z
73The C<default> construct, which was misleading and essentially useless,
74has been removed.
75
9e0909b2
Z
76The C<given> construct also no longer implicitly enreferences certain
77kinds of arguments, instead supplying regular scalar context. In this
78case, the implicit enreferencement was undocumented anyway.
79
b1a6328e
Z
80Flow control of switch constructs has been unified with loop flow
81control. The concept of "topicalizer" (referring to a C<given> block
82or a C<foreach> loop acting on C<$_>) has been abolished. A C<given>
83construct now counts as a one-iteration loop, so responds to the loop
84control keywords. The C<break> keyword has consequently been removed,
85in favour of using C<next> or C<last> to exit a C<given>. The implicit
86jump at the end of a C<when> block is now a C<next>, and so is applicable
87not just to C<given> and some kinds of C<foreach> but to any loop.
88
9e0909b2
Z
89It is known that these changes will break some users of L<autodie>,
90the documentation of which has long recommended some uses of these
91experimental features that are not portable across these changes.
92
15397007
Z
93=head2 Over-radix digits in floating point literals
94
95Octal and binary floating point literals used to permit any hexadecimal
96digit to appear after the radix point. The digits are now restricted
97to those appropriate for the radix, as digits before the radix point
98always were.
99
e1b825c1
Z
100=head2 Return type of C<unpackstring()>
101
102The return types of the C API functions C<unpackstring()> and
103C<unpack_str()> have changed from C<I32> to C<SSize_t>, in order to
104accommodate datasets of more than two billion items.
105
25219f3f 106=head1 Deprecations
7d65f652 107
25219f3f 108XXX Any deprecated features, syntax, modules etc. should be listed here.
7d65f652 109
8e796115
DIM
110=head2 Assignment to C<$[> will be fatal in Perl 5.30
111
112Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
113since Perl 5.12, but was never given a deadline for removal. This has
114now been scheduled for Perl 5.30.
115
cab9f0b0
Z
116=head2 hostname() won't accept arguments in Perl 5.32
117
118Passing arguments to C<Sys::Hostname::hostname()> was already deprecated,
119but didn't have a removal date. This has now been scheduled for Perl
1205.32. [perl #124349]
121
25219f3f 122=head2 Module removals
4c46c124 123
25219f3f 124XXX Remove this section if not applicable.
7d65f652 125
25219f3f
KE
126The following modules will be removed from the core distribution in a
127future release, and will at that time need to be installed from CPAN.
128Distributions on CPAN which require these modules will need to list them as
129prerequisites.
e2091bb6 130
25219f3f
KE
131The core versions of these modules will now issue C<"deprecated">-category
132warnings to alert you to this fact. To silence these deprecation warnings,
133install the modules in question from CPAN.
a8ba758d 134
25219f3f
KE
135Note that these are (with rare exceptions) fine modules that you are encouraged
136to continue to use. Their disinclusion from core primarily hinges on their
137necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
138not usually on concerns over their design.
cf663f87 139
25219f3f 140=over
1b510166 141
183fb71f 142=item L<Locale::Codes> and its associated Country, Currency and Language modules
1b510166 143
25219f3f
KE
144XXX Note that deprecated modules should be listed here even if they are listed
145as an updated module in the L</Modules and Pragmata> section.
8ed1839e 146
25219f3f 147=back
8ed1839e 148
25219f3f 149[ List each other deprecation as a =head2 entry ]
8ed1839e 150
25219f3f 151=head1 Performance Enhancements
8ed1839e 152
25219f3f
KE
153XXX Changes which enhance performance without changing behaviour go here.
154There may well be none in a stable release.
8ed1839e 155
25219f3f 156[ List each enhancement as an =item entry ]
8ed1839e 157
25219f3f 158=over 4
d912eab8 159
7d65f652
FC
160=item *
161
25219f3f 162XXX
7d65f652 163
c83a3d01 164=back
d912eab8 165
c83a3d01 166=head1 Modules and Pragmata
af94b3ac 167
25219f3f
KE
168XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
169go here. If Module::CoreList is updated, generate an initial draft of the
170following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
171for important changes should then be added by hand. In an ideal world,
172dual-life modules would have a F<Changes> file that could be cribbed.
9b78f210 173
25219f3f
KE
174The list of new and updated modules is modified automatically as part of
175preparing a Perl release, so the only reason to manually add entries here is if
176you're summarising the important changes in the module update. (Also, if the
177manually-added details don't match the automatically-generated ones, the
178release manager will have to investigate the situation carefully.)
9b78f210 179
25219f3f 180[ Within each section, list entries as an =item entry ]
1218f5ba 181
25219f3f 182=head2 New Modules and Pragmata
e6a2e5ca
SH
183
184=over 4
64b9a139
SH
185
186=item *
187
25219f3f 188XXX Remove this section if not applicable.
b2a6778b 189
25219f3f 190=back
b2a6778b 191
25219f3f 192=head2 Updated Modules and Pragmata
b2a6778b 193
25219f3f 194=over 4
b2a6778b
KE
195
196=item *
197
8841d380
FC
198L<Data::Dumper> has been upgraded from version 2.167_02 to 2.169.
199Quoting of glob names now obeys the Useqq option [perl #119831].
200Attempts to set an option to C<undef> through a combined getter/setter
201method are no longer mistaken for getter calls [perl #113090].
b2a6778b 202
8841d380
FC
203=item *
204
205L<DynaLoader> has been upgraded from version 1.44 to 1.45.
206Its documentation now shows the use of C<__PACKAGE__> and direct object
207syntax [perl #132247].
208
209=item *
210
211L<GDBM_File> has been upgraded from version 1.16 to 1.17.
212Its documentation now explains that C<each> and C<delete> don't mix in
213hashes tied to this module [perl #117449].
214It will now retry opening with an acceptable block size if asking gdbm
215to default the block size failed [perl #119623].
b2a6778b 216
95609a20
Z
217=item *
218
364b8cf9
Z
219L<threads> has been upgraded from version 2.19 to 2.20.
220The documentation now better describes the problems that arise when
221returning values from threads, and no longer warns about creating threads
222in C<BEGIN> blocks. [perl #96538]
223
224=item *
225
8841d380
FC
226L<Locale::Codes> has been upgraded from version 3.54 to 3.55
227
228483d4 228B<NOTE>: L<Locale::Codes> scheduled to be removed from core in Perl 5.30.
95609a20 229
c3fac04c
Z
230=item *
231
232L<Pod::Html> has been upgraded from version 1.2203 to 1.23.
233A title for the HTML document will now be automatically generated by
234default from a "NAME" section in the POD document, as it used to be
235before the module was rewritten to use L<Pod::Simple::XHTML> to do the
236core of its job. [perl #110520]
237
3752113a
Z
238=item *
239
c933e4bb
FC
240L<warnings> has been upgraded from version 1.38 to 1.39.
241It now includes new functions with names ending in C<_at_level>, allowing
242callers to specify the exact call frame. [perl #132468]
243
244=item *
245
42034324
Z
246L<XSLoader> has been upgraded from version 0.28 to 0.29.
247Its documentation now shows the use of C<__PACKAGE__>, and direct object
248syntax for example C<DynaLoader> usage [perl #132247].
249
25219f3f 250=back
b2a6778b 251
25219f3f 252=head2 Removed Modules and Pragmata
b2a6778b 253
25219f3f 254=over 4
b2a6778b
KE
255
256=item *
257
25219f3f 258XXX
ad3f654c 259
25219f3f 260=back
7358a033 261
25219f3f 262=head1 Documentation
64b9a139 263
25219f3f
KE
264XXX Changes to files in F<pod/> go here. Consider grouping entries by
265file and be sure to link to the appropriate page, e.g. L<perlfunc>.
e6a2e5ca 266
25219f3f 267=head2 New Documentation
b2a6778b 268
25219f3f 269XXX Changes which create B<new> files in F<pod/> go here.
b2a6778b 270
25219f3f 271=head3 L<XXX>
b2a6778b 272
25219f3f 273XXX Description of the purpose of the new file here
b2a6778b 274
25219f3f 275=head2 Changes to Existing Documentation
b2a6778b 276
25219f3f
KE
277We have attempted to update the documentation to reflect the changes
278listed in this document. If you find any we have missed, send email
279to L<perlbug@perl.org|mailto:perlbug@perl.org>.
b2a6778b 280
25219f3f
KE
281XXX Changes which significantly change existing files in F<pod/> go here.
282However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
283section.
b2a6778b 284
25219f3f 285Additionally, the following selected changes have been made:
b2a6778b 286
497a8271
Z
287=head3 L<perlapi>
288
4dab62e3
Z
289The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
290are now documented comprehensively, where previously the only
291documentation was a reference to the L<perlembed> tutorial.
292
497a8271
Z
293The documentation of C<newGIVENOP()> has been belatedly updated to
294account for the removal of lexical C<$_>.
295
01d02537
Z
296The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
297documented much more comprehensively than before.
298
40a66856
Z
299=head3 L<perlop>
300
b782ddf4
Z
301The general explanation of operator precedence and associativity has
302been corrected and clarified. [perl #127391]
303
40a66856
Z
304The documentation for the C<\> referencing operator now explains the
305unusual context that it supplies to its operand. [perl #131061]
306
b32ad89c
Z
307=head3 L<perlsyn>
308
309The means to disambiguate between code blocks and hash constructors,
310already documented in L<perlref>, are now documented in L<perlsyn> too.
311[perl #130958]
312
f6c3d597
Z
313=head3 L<perlfunc>
314
a8b6459c
Z
315There is now a note that warnings generated by built-in functions are
316documented in L<perldiag> and L<warnings>. [perl #116080]
317
f6c3d597
Z
318The documentation for the C<exists> operator no longer says that
319autovivification behaviour "may be fixed in a future release".
320We've determined that we're not going to change the default behaviour.
321[perl #127712]
322
b6108eb9
Z
323A couple of small details in the documentation for the C<bless> operator
324have been clarified. [perl #124428]
325
e6b4f2eb
Z
326The description of C<@INC> hooks in the documentation for C<require>
327has been corrected to say that filter subroutines receive a useless
328first argument. [perl #115754]
329
f3c710fe
Z
330The documentation of C<ref> has been rewritten for clarity.
331
d2f4250c
Z
332The documentation of C<use> now explains what syntactically qualifies
333as a version number for its module version checking feature.
334
52e58e76
Z
335The documentation of C<warn> has been updated to reflect that since Perl
3365.14 it has treated complex exception objects in a manner equivalent
337to C<die>. [perl #121372]
338
339The documentation of C<die> and C<warn> has been revised for clarity.
340
56e48c10
KW
341=head3 L<perluniprops>
342
343For each binary table or property, the documentation now includes which
344characters in the range C<\x00-\xFF> it matches, as well as a list of
345the first few ranges of code points matched above that.
b2a6778b 346
415e5995
Z
347=head3 L<perlobj>
348
349The documentation about C<DESTROY> methods has been corrected, updated,
350and revised, especially in regard to how they interact with exceptions.
351[perl #122753]
352
9deb4e0b
Z
353=head3 L<perlsec>
354
355The documentation about set-id scripts has been updated and revised.
356[perl #74142]
357
358A section about using C<sudo> to run Perl scripts has been added.
359
4dab62e3
Z
360=head3 L<perlembed>
361
362The examples in L<perlembed> have been made more portable in the way
363they exit, and the example that gets an exit code from the embedded Perl
364interpreter now gets it from the right place. The examples that pass
365a constructed argv to Perl now show the mandatory null C<argv[argc]>.
366
86e03141
Z
367=head3 L<perldebguts>
368
369The description of the conditions under which C<DB::sub()> will be called
370has been clarified. [perl #131672]
371
01d02537
Z
372=head3 L<perlintern>
373
374The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
375now documented.
376
4914bebe
Z
377=head3 L<perlgit>
378
379The precise rules for identifying C<smoke-me> branches are now stated.
380
25219f3f 381=over 4
b2a6778b
KE
382
383=item *
384
25219f3f 385XXX Description of the change here
b2a6778b 386
25219f3f 387=back
b2a6778b 388
25219f3f 389=head1 Diagnostics
b2a6778b 390
25219f3f
KE
391The following additions or changes have been made to diagnostic output,
392including warnings and fatal error messages. For the complete list of
393diagnostic messages, see L<perldiag>.
b2a6778b 394
25219f3f
KE
395XXX New or changed warnings emitted by the core's C<C> code go here. Also
396include any changes in L<perldiag> that reconcile it to the C<C> code.
b2a6778b 397
25219f3f 398=head2 New Diagnostics
b2a6778b 399
25219f3f
KE
400XXX Newly added diagnostic messages go under here, separated into New Errors
401and New Warnings
b2a6778b 402
25219f3f 403=head3 New Errors
b2a6778b 404
25219f3f 405=over 4
b2a6778b
KE
406
407=item *
408
a01f4640
FC
409L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
410
411(F) A "goto" statement was executed to jump into the middle of a C<given>
412block. You can't get there from here. See L<perlfunc/goto>.
b2a6778b 413
25219f3f 414=back
b2a6778b 415
25219f3f 416=head3 New Warnings
b2a6778b 417
25219f3f 418=over 4
64b9a139
SH
419
420=item *
421
0b4678bf
FC
422L<Old package separator used in string|perldiag/"Old package separator used in string">
423
424(W syntax) You used the old package separator, "'", in a variable
425named inside a double-quoted string; e.g., C<"In $name's house">. This
426is equivalent to C<"In $name::s house">. If you meant the former, put
427a backslash before the apostrophe (C<"In $name\'s house">).
64b9a139 428
e6a2e5ca 429=back
64b9a139 430
25219f3f 431=head2 Changes to Existing Diagnostics
64b9a139 432
25219f3f 433XXX Changes (i.e. rewording) of diagnostic messages go here
e6a2e5ca 434
04f89ea7
Z
435=over 4
436
64b9a139
SH
437=item *
438
25219f3f 439XXX Describe change here
2b8b74b0 440
52e3acf8
Z
441=item *
442
9fca523d
Z
443The warning about useless use of a concatenation operator in void context
444is now generated for expressions with multiple concatenations, such as
445C<$a.$b.$c>, which used to mistakenly not warn. [perl #6997]
446
447=item *
448
52e3acf8
Z
449Warnings that a variable or subroutine "masks earlier declaration in same
450...", or that an C<our> variable has been redeclared, have been moved to a
451new warnings category "shadow". Previously they were in category "misc".
452
cab9f0b0
Z
453=item *
454
455The deprecation warning from C<Sys::Hostname::hostname()> saying that
456it doesn't accept arguments now states the Perl version in which the
457warning will be upgraded to an error. [perl #124349]
458
9deb4e0b
Z
459=item *
460
461The L<perldiag> entry for the error regarding a set-id script has been
462expanded to make clear that the error is reporting a specific security
463vulnerability, and to advise how to fix it.
464
25219f3f 465=back
e509fc38 466
25219f3f 467=head1 Utility Changes
e509fc38 468
25219f3f
KE
469XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
470Most of these are built within the directory F<utils>.
64b9a139 471
25219f3f
KE
472[ List utility changes as a =head2 entry for each utility and =item
473entries for each change
474Use L<XXX> with program names to get proper documentation linking. ]
64b9a139 475
25219f3f 476=head2 L<XXX>
64b9a139 477
25219f3f 478=over 4
64b9a139
SH
479
480=item *
481
25219f3f 482XXX
64b9a139 483
e6a2e5ca
SH
484=back
485
25219f3f 486=head1 Configuration and Compilation
64b9a139 487
25219f3f
KE
488XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
489go here. Any other changes to the Perl build process should be listed here.
490However, any platform-specific changes should be listed in the
491L</Platform Support> section, instead.
e6a2e5ca 492
25219f3f 493[ List changes as an =item entry ].
64b9a139 494
e6a2e5ca 495=over 4
64b9a139
SH
496
497=item *
498
25219f3f 499XXX
f99042c8 500
a8d9a219
Z
501=item *
502
503Where an HTML version of the doucmentation is installed, the HTML
504documents now use relative links to refer to each other. Links from
505the index page of L<perlipc> to the individual section documents are
506now correct. [perl #110056]
507
e6a2e5ca
SH
508=back
509
25219f3f 510=head1 Testing
e6a2e5ca 511
25219f3f
KE
512XXX Any significant changes to the testing of a freshly built perl should be
513listed here. Changes which create B<new> files in F<t/> go here as do any
514large changes to the testing harness (e.g. when parallel testing was added).
515Changes to existing files in F<t/> aren't worth summarizing, although the bugs
516that they represent may be covered elsewhere.
e6a2e5ca 517
25219f3f 518XXX If there were no significant test changes, say this:
64b9a139 519
25219f3f
KE
520Tests were added and changed to reflect the other additions and changes
521in this release.
64b9a139 522
25219f3f 523XXX If instead there were significant changes, say this:
e6a2e5ca 524
25219f3f
KE
525Tests were added and changed to reflect the other additions and
526changes in this release. Furthermore, these significant changes were
527made:
e6a2e5ca 528
25219f3f 529[ List each test improvement as an =item entry ]
e6a2e5ca 530
e6a2e5ca 531=over 4
64b9a139 532
25219f3f 533=item *
dea26044 534
25219f3f 535XXX
dea26044 536
25219f3f 537=back
dea26044 538
25219f3f 539=head1 Platform Support
dea26044 540
25219f3f 541XXX Any changes to platform support should be listed in the sections below.
dea26044 542
25219f3f
KE
543[ Within the sections, list each platform as an =item entry with specific
544changes as paragraphs below it. ]
dea26044 545
25219f3f 546=head2 New Platforms
dea26044 547
25219f3f
KE
548XXX List any platforms that this version of perl compiles on, that previous
549versions did not. These will either be enabled by new files in the F<hints/>
550directories, or new subdirectories and F<README> files at the top level of the
551source tree.
dea26044 552
25219f3f 553=over 4
dea26044 554
25219f3f 555=item XXX-some-platform
dea26044 556
25219f3f 557XXX
dea26044
MB
558
559=back
e6a2e5ca 560
e6a2e5ca
SH
561=head2 Discontinued Platforms
562
25219f3f
KE
563XXX List any platforms that this version of perl no longer compiles on.
564
e6a2e5ca
SH
565=over 4
566
25219f3f 567=item XXX-some-platform
e6a2e5ca 568
25219f3f 569XXX
e6a2e5ca
SH
570
571=back
572
a8ba758d
JSA
573=head2 Platform-Specific Notes
574
25219f3f
KE
575XXX List any changes for specific platforms. This could include configuration
576and compilation changes or changes in portability/compatibility. However,
577changes within modules for platforms should generally be listed in the
578L</Modules and Pragmata> section.
579
a8ba758d 580=over 4
9ef07b78 581
04139aa0 582=item Windows
a8ba758d 583
04139aa0
SH
584We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
585versions earlier than 14.1.
a8ba758d
JSA
586
587=back
588
e6a2e5ca
SH
589=head1 Internal Changes
590
25219f3f
KE
591XXX Changes which affect the interface available to C<XS> code go here. Other
592significant internal changes for future core maintainers should be noted as
593well.
8ed1839e 594
25219f3f 595=over 4
a8ba758d 596
ee5287f6
LM
597=item *
598
59eb8be1
KW
599XS modules can now automatically get reentrant versions of system
600functions on threaded perls.
601
602By saying
603
604 #define PERL_REENTRANT
605
606near the beginning of an C<XS> file, it will be compiled so that
607whatever reentrant functions perl knows about on that system will
608automatically and invisibly be used instead of the plain, non-reentrant
609versions. For example, if you write C<getpwnam()> in your code, on a
610system that has C<pwnam_r()> all calls to the former will be translated
611invisibly into the latter. This does not happen except on threaded
612perls, as they aren't needed otherwise. Be aware that which functions
613have reentrant versions varies from system to system.
ee5287f6 614
e6a2e5ca
SH
615=back
616
617=head1 Selected Bug Fixes
618
25219f3f
KE
619XXX Important bug fixes in the core language are summarized here. Bug fixes in
620files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
a155eb05 621
25219f3f 622[ List each fix as an =item entry ]
c2bb91f9 623
25219f3f 624=over 4
e6a2e5ca 625
4faa3060
TC
626=item *
627
25219f3f 628XXX
4faa3060 629
64072da0
Z
630=item *
631
e1b825c1
Z
632C<pack> and C<unpack> can now handle repeat counts and lengths that
633exceed two billion. [perl #119367]
634
635=item *
636
66d3c925
Z
637Digits past the radix point in octal and binary floating point literals
638now have the correct weight on platforms where a floating point
639significand doesn't fit into an integer type.
640
641=item *
642
4dab62e3
Z
643C<exit(0)> in a C<UNITCHECK> or C<CHECK> block no longer permits the
644main program to run, and C<exit(0)> in a C<BEGIN> block no longer permits
645C<INIT> blocks to run before exiting. [perl #2754]
646
647=item *
648
1b16b015
Z
649The canonical truth value no longer has a spurious special meaning as
650a callable. It used to be a magic placeholder for a missing C<import>
651or C<unimport> method. It is now treated like any other string C<1>.
652[perl #126042]
653
654=item *
655
64def2ae
Z
656C<system> now reduces its arguments to strings in the parent process, so
657any effects of stringifying them (such as overload methods being called
658or warnings being emitted) are visible in the way the program expects.
659[perl #121105]
660
661=item *
662
9a40fcb6
Z
663The C<readpipe()> built-in function now checks at compile time that
664it has only one parameter expression, and puts it in scalar context,
665thus ensuring that it doesn't corrupt the stack at runtime. [perl #4574]
666
667=item *
668
d679c20f
Z
669C<sort> now performs correct reference counting when aliasing C<$a> and
670C<$b>, thus avoiding premature destruction and leakage of scalars if they
671are re-aliased during execution of the sort comparator. [perl #92264]
672
673=item *
674
30f9405e
Z
675C<reverse> with no operand, reversing C<$_> by default, is no longer in
676danger of corrupting the stack. [perl #132544]
677
678=item *
679
222b5ca9
Z
680C<exec>, C<system>, et al are no longer liable to have their argument
681lists corrupted by reentrant calls and by magic such as tied scalars.
682[perl #129888]
683
684=item *
685
64072da0 686Perl's own C<malloc> no longer gets confused by attempts to allocate
7b9d2ba3 687more than a gigabyte on a 64-bit platform. [perl #119829]
64072da0 688
244d2682
FC
689=item *
690
8af6a5dc
Z
691Stacked file test operators in a sort comparator expression no longer
692cause a crash. [perl #129347]
693
694=item *
695
998753fe
Z
696An identity C<tr///> transformation on a reference is no longer mistaken
697for that reference for the purposes of deciding whether it can be
698assigned to. [perl #130578]
699
700=item *
701
53fff747
Z
702Lengthy hexadecimal, octal, or binary floating point literals no
703longer cause undefined behaviour when parsing digits that are of such
704low significance that they can't affect the floating point value.
705[perl #131894]
706
707=item *
708
244d2682
FC
709C<open $$scalarref...> and similar invocations no longer leak the file
710handle. [perl #115814]
711
712=item *
713
8f46363a
Z
714Some convoluted kinds of regexp no longer cause an arithmetic overflow
715when compiled. [perl #131893]
716
717=item *
718
244d2682
FC
719The default typemap, by avoiding C<newGVgen>, now no longer leaks when
720XSUBs return file handles (C<PerlIO *> or C<FILE *>). [perl #115814]
721
aa0c5741
Z
722=item *
723
724Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
725crashes because of the early freeing of the subroutine.
726
25219f3f 727=back
4faa3060 728
25219f3f 729=head1 Known Problems
4faa3060 730
25219f3f
KE
731XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
732tests that had to be C<TODO>ed for the release would be noted here. Unfixed
733platform specific bugs also go here.
d1ac83c4 734
25219f3f 735[ List each fix as an =item entry ]
d1ac83c4 736
25219f3f 737=over 4
c4f4b223
Z
738
739=item *
740
25219f3f 741XXX
02d43d4f 742
e6a2e5ca
SH
743=back
744
e6a2e5ca
SH
745=head1 Errata From Previous Releases
746
747=over 4
8abafd33 748
e6a2e5ca
SH
749=item *
750
25219f3f
KE
751XXX Add anything here that we forgot to add, or were mistaken about, in
752the perldelta of a previous release.
8abafd33 753
e6a2e5ca 754=back
b2e49ab9 755
25219f3f 756=head1 Obituary
060724e5 757
25219f3f
KE
758XXX If any significant core contributor or member of the CPAN community has
759died, add a short obituary here.
060724e5 760
25219f3f 761=head1 Acknowledgements
060724e5 762
25219f3f 763XXX Generate this with:
060724e5 764
25219f3f 765 perl Porting/acknowledgements.pl v5.27.6..HEAD
f5b73711 766
44691e6f
AB
767=head1 Reporting Bugs
768
b5cbfe35
S
769If you find what you think is a bug, you might check the perl bug database
770at L<https://rt.perl.org/> . There may also be information at
771L<http://www.perl.org/> , the Perl Home Page.
44691e6f 772
e08634c5
SH
773If you believe you have an unreported bug, please run the L<perlbug> program
774included with your release. Be sure to trim your bug down to a tiny but
775sufficient test case. Your bug report, along with the output of C<perl -V>,
b5cbfe35 776will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 777
87c118b9
DM
778If the bug you are reporting has security implications which make it
779inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
780L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
781for details of how to report the issue.
44691e6f 782
390ae6f9
S
783=head1 Give Thanks
784
785If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
786you can do so by running the C<perlthanks> program:
787
788 perlthanks
789
790This will send an email to the Perl 5 Porters list with your show of thanks.
791
44691e6f
AB
792=head1 SEE ALSO
793
e08634c5
SH
794The F<Changes> file for an explanation of how to view exhaustive details on
795what changed.
44691e6f
AB
796
797The F<INSTALL> file for how to build Perl.
798
799The F<README> file for general stuff.
800
801The F<Artistic> and F<Copying> files for copyright information.
802
803=cut