This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
readd noreturn and silence "noreturn that returns" warning on MSVC
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
86372193
A
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.21.6
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
86372193 12This document describes differences between the 5.21.5 release and the 5.21.6
238894db 13release.
c68523cb 14
86372193
A
15If you are upgrading from an earlier release such as 5.21.4, first read
16L<perl5215delta>, which describes differences between 5.21.4 and 5.21.5.
8435afd1 17
86372193 18=head1 Notice
5cfa0642 19
86372193 20XXX Any important notices here
4cad5dc8 21
86372193 22=head1 Core Enhancements
4cad5dc8 23
86372193
A
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.
a5591204 27
86372193 28[ List each enhancement as a =head2 entry ]
a5591204 29
518159a1
TC
30=head2 List form of pipe open implemented for Win32
31
32The list form of pipe:
33
34 open my $fh, "-|", "program", @arguments;
35
36is now implemented on Win32. It has the same limitations as C<system
37LIST> on Win32, since the Win32 API doesn't accept program arguments
38as a list.
39
86372193 40=head1 Security
a5591204 41
86372193
A
42XXX Any security-related notices go here. In particular, any security
43vulnerabilities closed should be noted here rather than in the
44L</Selected Bug Fixes> section.
a5591204 45
86372193 46[ List each security issue as a =head2 entry ]
a5591204 47
86372193 48=head1 Incompatible Changes
a5591204 49
86372193 50XXX For a release on a stable branch, this section aspires to be:
a5591204 51
86372193
A
52 There are no changes intentionally incompatible with 5.XXX.XXX
53 If any exist, they are bugs, and we request that you submit a
54 report. See L</Reporting Bugs> below.
b15c1b56 55
86372193 56[ List each incompatible change as a =head2 entry ]
b15c1b56 57
86372193 58=head1 Deprecations
bb8c7e27 59
86372193 60XXX Any deprecated features, syntax, modules etc. should be listed here.
bb8c7e27 61
86372193 62=head2 Module removals
bb8c7e27 63
86372193 64XXX Remove this section if inapplicable.
9a88d663 65
86372193
A
66The following modules will be removed from the core distribution in a
67future release, and will at that time need to be installed from CPAN.
68Distributions on CPAN which require these modules will need to list them as
69prerequisites.
9a88d663 70
86372193
A
71The core versions of these modules will now issue C<"deprecated">-category
72warnings to alert you to this fact. To silence these deprecation warnings,
73install the modules in question from CPAN.
5cfa0642 74
86372193
A
75Note that these are (with rare exceptions) fine modules that you are encouraged
76to continue to use. Their disinclusion from core primarily hinges on their
77necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78not usually on concerns over their design.
ba474e87 79
86372193 80=over
8435afd1 81
86372193 82=item XXX
d0ab07ee 83
86372193
A
84XXX Note that deprecated modules should be listed here even if they are listed
85as an updated module in the L</Modules and Pragmata> section.
cc4d09e1 86
86372193 87=back
cc4d09e1 88
86372193 89[ List each other deprecation as a =head2 entry ]
8435afd1 90
4475d0d2
KW
91=head2 Use of non-graphic characters in single-character variable names
92
93The syntax for single-character variable names is more lenient than
94for longer variable names, allowing the one-character name to be a
95punctuation character or even invisible (a non-graphic). Perl v5.20
96deprecated the ASCII-range controls as such a name. Now, all
97non-graphic characters that formerly were allowed are deprecated.
98The practical effect of this occurs only when not under C<S<"use
99utf8">>, and affects just the C1 controls (code points 0x80 through
1000xFF), NO-BREAK SPACE, and SOFT HYPHEN.
101
8c8d6154 102=head1 Performance Enhancements
5cfa0642 103
86372193
A
104XXX Changes which enhance performance without changing behaviour go here.
105There may well be none in a stable release.
5cfa0642 106
86372193 107[ List each enhancement as a =item entry ]
8435afd1 108
86372193 109=over 4
5cfa0642 110
5b306eef
DD
111=item *
112
86372193 113XXX
5b306eef 114
86372193 115=back
357205d5 116
86372193 117=head1 Modules and Pragmata
357205d5 118
86372193
A
119XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
120go here. If Module::CoreList is updated, generate an initial draft of the
121following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
122for important changes should then be added by hand. In an ideal world,
123dual-life modules would have a F<Changes> file that could be cribbed.
f704f251 124
86372193 125[ Within each section, list entries as a =item entry ]
f704f251 126
86372193 127=head2 New Modules and Pragmata
0cb3abac 128
86372193 129=over 4
0cb3abac 130
deec1830
FC
131=item *
132
86372193 133XXX
deec1830 134
8c8d6154 135=back
d0ab07ee 136
8c8d6154 137=head2 Updated Modules and Pragmata
d99849ae 138
39c4a6cf 139=over 4
d99849ae 140
ff433f2d
PM
141=item *
142
bab69578
TC
143L<IO::Socket> has been upgraded from version 1.37 to 1.38.
144
145Document the limitations of the isconnected() method. [perl #123096]
cbfcbc14 146
86372193 147=back
f348c3d8 148
86372193 149=head2 Removed Modules and Pragmata
f348c3d8 150
86372193 151=over 4
f348c3d8
A
152
153=item *
154
86372193 155XXX
f348c3d8 156
86372193 157=back
7635ad4d 158
86372193 159=head1 Documentation
7635ad4d 160
86372193
A
161XXX Changes to files in F<pod/> go here. Consider grouping entries by
162file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7635ad4d 163
86372193 164=head2 New Documentation
f348c3d8 165
86372193 166XXX Changes which create B<new> files in F<pod/> go here.
f348c3d8 167
86372193 168=head3 L<XXX>
f4eedc6b 169
86372193 170XXX Description of the purpose of the new file here
f4eedc6b 171
86372193 172=head2 Changes to Existing Documentation
f4eedc6b 173
86372193
A
174XXX Changes which significantly change existing files in F<pod/> go here.
175However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
176section.
f348c3d8 177
42327f06 178=head3 L<perldata/Identifier parsing>
f348c3d8 179
86372193 180=over 4
f348c3d8
A
181
182=item *
183
42327f06
KW
184The syntax of single-character variable names has been brought
185up-to-date and more fully explained.
f348c3d8 186
86372193 187=back
f348c3d8 188
86372193 189=head1 Diagnostics
f348c3d8 190
86372193
A
191The following additions or changes have been made to diagnostic output,
192including warnings and fatal error messages. For the complete list of
193diagnostic messages, see L<perldiag>.
f348c3d8 194
86372193
A
195XXX New or changed warnings emitted by the core's C<C> code go here. Also
196include any changes in L<perldiag> that reconcile it to the C<C> code.
f348c3d8 197
86372193 198=head2 New Diagnostics
f348c3d8 199
86372193
A
200XXX Newly added diagnostic messages go under here, separated into New Errors
201and New Warnings
f348c3d8 202
86372193 203=head3 New Errors
84d03adf 204
86372193 205=over 4
ff433f2d 206
4cd408ba
TC
207=item *
208
86372193 209XXX L<message|perldiag/"message">
f348c3d8 210
86372193 211=back
f348c3d8 212
86372193 213=head3 New Warnings
f4eedc6b 214
86372193 215=over 4
f4eedc6b
DD
216
217=item *
218
4475d0d2 219L<Use of literal non-graphic characters in variable names is deprecated|perldiag/"Use of literal non-graphic characters in variable names is deprecated">
f348c3d8 220
ab0b796c
KW
221=item *
222
8c6180a9
KW
223A new C<locale> warning category has been created, with the following warning
224messages currently in it:
225
226=over 4
227
228=item *
229
230L<Locale '%s' may not work well.%s|perldiag/Locale '%s' may not work well.%s>
231
232=item *
233
ab0b796c
KW
234L<Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".|perldiag/Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".>
235
86372193 236=back
0561e60b 237
8c6180a9
KW
238=back
239
86372193 240=head2 Changes to Existing Diagnostics
0561e60b 241
86372193 242XXX Changes (i.e. rewording) of diagnostic messages go here
0561e60b 243
86372193 244=over 4
4cd408ba 245
f348c3d8
A
246=item *
247
86372193 248XXX Describe change here
4cd408ba 249
86372193 250=back
40a81b59 251
86372193 252=head1 Utility Changes
f348c3d8 253
86372193
A
254XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
255Most of these are built within the directory F<utils>.
f348c3d8 256
86372193
A
257[ List utility changes as a =head2 entry for each utility and =item
258entries for each change
259Use L<XXX> with program names to get proper documentation linking. ]
f348c3d8 260
86372193 261=head2 L<XXX>
f348c3d8 262
86372193 263=over 4
f348c3d8
A
264
265=item *
266
86372193 267XXX
40a81b59 268
13900f93 269=back
aac7f82f 270
86372193 271=head1 Configuration and Compilation
2a395b86 272
86372193
A
273XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
274go here. Any other changes to the Perl build process should be listed here.
275However, any platform-specific changes should be listed in the
276L</Platform Support> section, instead.
8435afd1 277
86372193 278[ List changes as a =item entry ].
8435afd1
SH
279
280=over 4
2a395b86 281
12d22d1f
JK
282=item *
283
c517e197 284F<Configure> with C<-Dmksymlinks> should now be faster. [perl #122002]
12d22d1f 285
2a395b86
PM
286=back
287
86372193 288=head1 Testing
2a395b86 289
86372193
A
290XXX Any significant changes to the testing of a freshly built perl should be
291listed here. Changes which create B<new> files in F<t/> go here as do any
292large changes to the testing harness (e.g. when parallel testing was added).
293Changes to existing files in F<t/> aren't worth summarizing, although the bugs
294that they represent may be covered elsewhere.
2a395b86 295
86372193 296[ List each test improvement as a =item entry ]
5cfa0642 297
8c8d6154 298=over 4
2a395b86
PM
299
300=item *
301
86372193 302XXX
bb8c7e27 303
86372193 304=back
bb8c7e27 305
86372193 306=head1 Platform Support
bb8c7e27 307
86372193 308XXX Any changes to platform support should be listed in the sections below.
bb8c7e27 309
86372193
A
310[ Within the sections, list each platform as a =item entry with specific
311changes as paragraphs below it. ]
2a395b86 312
86372193 313=head2 New Platforms
6d9b7c7c 314
86372193
A
315XXX List any platforms that this version of perl compiles on, that previous
316versions did not. These will either be enabled by new files in the F<hints/>
317directories, or new subdirectories and F<README> files at the top level of the
318source tree.
363d3025 319
8c8d6154 320=over 4
334464b3 321
86372193 322=item XXX-some-platform
334464b3 323
86372193 324XXX
ef5a9509 325
363d3025
FC
326=back
327
86372193
A
328=head2 Discontinued Platforms
329
330XXX List any platforms that this version of perl no longer compiles on.
d72cd2eb 331
0346c3a9 332=over 4
375f5f06 333
86372193 334=item XXX-some-platform
2884baee 335
86372193 336XXX
6f1a844b 337
8c8d6154 338=back
549ea8d4 339
8c8d6154 340=head2 Platform-Specific Notes
aa292ef2 341
86372193
A
342XXX List any changes for specific platforms. This could include configuration
343and compilation changes or changes in portability/compatibility. However,
344changes within modules for platforms should generally be listed in the
345L</Modules and Pragmata> section.
346
8c8d6154 347=over 4
739e9bee 348
86372193 349=item XXX-some-platform
739e9bee 350
86372193 351XXX
b23b2fdb 352
8c8d6154 353=back
b23b2fdb 354
83b69bfd
DD
355=head3 Win32
356
357=over 4
358
359=item *
360
361In the experimental C<:win32> layer, a crash in C<open> was fixed. Also
362opening C</dev/null>, which works the Win32 Perl's normal C<:unix> layer, was
363implemented for C<:win32>.
364L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224>
365
13adb056
SH
366=item *
367
368A new makefile option, C<USE_LONG_DOUBLE>, has been added to the Windows
369dmake makefile for gcc builds only. Set this to "define" if you want perl to
370use long doubles to give more accuracy and range for floating point numbers.
371
83b69bfd
DD
372=back
373
8c8d6154 374=head1 Internal Changes
7d15b1a8 375
86372193
A
376XXX Changes which affect the interface available to C<XS> code go here. Other
377significant internal changes for future core maintainers should be noted as
378well.
bbca64cf 379
86372193 380[ List each change as a =item entry ]
6ff8f256 381
86372193 382=over 4
28482d6c 383
28a42920
A
384=item *
385
f8d5a522
DD
386C<screaminstr> has been removed. Although marked as public API, it is
387undocumented and has no usage in modern perl versions on CPAN Grep. Calling it
388has been fatal since 5.17.0.
28a42920 389
8c8d6154 390=back
6ff8f256 391
8c8d6154 392=head1 Selected Bug Fixes
80cc3290 393
86372193
A
394XXX Important bug fixes in the core language are summarized here. Bug fixes in
395files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
13dd5671 396
86372193 397[ List each fix as a =item entry ]
bdab7676 398
86372193 399=over 4
db98db4e 400
8818afe8
TC
401=item *
402
2ad9844a
TC
403fchmod() and futimes() now set C<$!> when they fail due to being
404passed a closed file handle. [perl #122703]
bb8c7e27 405
9ee757be
KW
406=item *
407
408Perl now comes with a corrected Unicode 7.0 for the erratum issued on
409October 21, 2014 (see L<http://www.unicode.org/errata/#current_errata>),
410dealing with glyph shaping in Arabic.
411
c93d2ba1
TC
412=item *
413
414op_free() no longer crashes due to a stack overflow when freeing a
415deeply recursive op tree. [perl #108276]
416
53795ef8
FC
417=item *
418
9d22ccf6
TC
419scalarvoid() would crash due to a stack overflow when processing a
420deeply recursive op tree. [perl #108276]
421
422=item *
423
53795ef8
FC
424In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off
425if accessed from a code block within a regular expression, effectively
426UTF8-encoding the value. This has been fixed. [perl #123135]
427
86372193 428=back
bb8c7e27 429
86372193 430=head1 Known Problems
bb8c7e27 431
86372193
A
432XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
433tests that had to be C<TODO>ed for the release would be noted here. Unfixed
434platform specific bugs also go here.
bb8c7e27 435
86372193 436[ List each fix as a =item entry ]
bb8c7e27 437
86372193 438=over 4
bb8c7e27 439
74f9f9ed
A
440=item *
441
eacbb379
DD
442Starting in 5.21.6, accessing L<perlapi/CvPADLIST> in an XSUB is forbidden.
443CvPADLIST has be reused for a different internal purpose for XSUBs. Guard all
444CvPADLIST expressions with C<CvISXSUB()> if your code doesn't already block
445XSUB CV*s from going through optree CV* expecting code.
28a42920 446
86372193 447=back
28a42920 448
86372193 449=head1 Errata From Previous Releases
28a42920 450
86372193 451=over 4
28a42920
A
452
453=item *
454
86372193
A
455XXX Add anything here that we forgot to add, or were mistaken about, in
456the perldelta of a previous release.
28a42920 457
8c8d6154 458=back
3a085d00 459
86372193 460=head1 Obituary
01d42a22 461
86372193
A
462XXX If any significant core contributor has died, we've added a short obituary
463here.
01d42a22 464
86372193 465=head1 Acknowledgements
01d42a22 466
86372193 467XXX Generate this with:
01d42a22 468
86372193 469 perl Porting/acknowledgements.pl v5.21.5..HEAD
f5b73711 470
44691e6f
AB
471=head1 Reporting Bugs
472
e08634c5
SH
473If you find what you think is a bug, you might check the articles recently
474posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 475https://rt.perl.org/ . There may also be information at
7ef8b31d 476http://www.perl.org/ , the Perl Home Page.
44691e6f 477
e08634c5
SH
478If you believe you have an unreported bug, please run the L<perlbug> program
479included with your release. Be sure to trim your bug down to a tiny but
480sufficient test case. Your bug report, along with the output of C<perl -V>,
481will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
482
483If the bug you are reporting has security implications, which make it
e08634c5
SH
484inappropriate to send to a publicly archived mailing list, then please send it
485to perl5-security-report@perl.org. This points to a closed subscription
486unarchived mailing list, which includes all the core committers, who will be
487able to help assess the impact of issues, figure out a resolution, and help
f9001595 488co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
489platforms on which Perl is supported. Please only use this address for
490security issues in the Perl core, not for modules independently distributed on
491CPAN.
44691e6f
AB
492
493=head1 SEE ALSO
494
e08634c5
SH
495The F<Changes> file for an explanation of how to view exhaustive details on
496what changed.
44691e6f
AB
497
498The F<INSTALL> file for how to build Perl.
499
500The F<README> file for general stuff.
501
502The F<Artistic> and F<Copying> files for copyright information.
503
504=cut