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