This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 96d7c888
[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
fe609065
FC
40=head2 Assignment to list repetition
41
42C<(...) x ...> can now be used within a list that is assigned to, as long
43as the left-hand side is a valid lvalue. This allows C<(undef,undef,$foo)
44= that_function()> to be written as C<((undef)x2, $foo) = that_function()>.
45
295f7815
FC
46=head2 C<close> now sets C<$!>
47
48When an I/O error occurs, the fact that there has been an error is recorded
49in the handle. C<close> returns false for such a handle. Previously, the
50value of C<$!> would be untouched by C<close>, so the common convention of
51writing C<close $fh or die $!> did not work reliably. Now the handle
52records the value of C<$!>, too, and C<close> restores it.
53
86372193 54=head1 Security
a5591204 55
86372193
A
56XXX Any security-related notices go here. In particular, any security
57vulnerabilities closed should be noted here rather than in the
58L</Selected Bug Fixes> section.
a5591204 59
86372193 60[ List each security issue as a =head2 entry ]
a5591204 61
86372193 62=head1 Incompatible Changes
a5591204 63
86372193 64XXX For a release on a stable branch, this section aspires to be:
a5591204 65
86372193
A
66 There are no changes intentionally incompatible with 5.XXX.XXX
67 If any exist, they are bugs, and we request that you submit a
68 report. See L</Reporting Bugs> below.
b15c1b56 69
86372193 70[ List each incompatible change as a =head2 entry ]
b15c1b56 71
86372193 72=head1 Deprecations
bb8c7e27 73
86372193 74XXX Any deprecated features, syntax, modules etc. should be listed here.
bb8c7e27 75
86372193 76=head2 Module removals
bb8c7e27 77
86372193 78XXX Remove this section if inapplicable.
9a88d663 79
86372193
A
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.
9a88d663 84
86372193
A
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.
5cfa0642 88
86372193
A
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.
ba474e87 93
86372193 94=over
8435afd1 95
86372193 96=item XXX
d0ab07ee 97
86372193
A
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.
cc4d09e1 100
86372193 101=back
cc4d09e1 102
86372193 103[ List each other deprecation as a =head2 entry ]
8435afd1 104
4475d0d2
KW
105=head2 Use of non-graphic characters in single-character variable names
106
107The syntax for single-character variable names is more lenient than
108for longer variable names, allowing the one-character name to be a
109punctuation character or even invisible (a non-graphic). Perl v5.20
110deprecated the ASCII-range controls as such a name. Now, all
111non-graphic characters that formerly were allowed are deprecated.
112The practical effect of this occurs only when not under C<S<"use
113utf8">>, and affects just the C1 controls (code points 0x80 through
1140xFF), NO-BREAK SPACE, and SOFT HYPHEN.
115
8c8d6154 116=head1 Performance Enhancements
5cfa0642 117
86372193
A
118XXX Changes which enhance performance without changing behaviour go here.
119There may well be none in a stable release.
5cfa0642 120
86372193 121[ List each enhancement as a =item entry ]
8435afd1 122
86372193 123=over 4
5cfa0642 124
5b306eef
DD
125=item *
126
25a8e2be
FC
127C<(...)x1>, C<("constant")x0> and C<($scalar)x0> are now optimised in list
128context. If the right-hand argument is a constant 1, the repetition
129operator disappears. If the right-hand argument is a constant 0, the whole
130expressions is optimised to the empty list, so long as the left-hand
131argument is a simple scalar or constant. C<(foo())x0> is not optimised.
5b306eef 132
86372193 133=back
357205d5 134
86372193 135=head1 Modules and Pragmata
357205d5 136
86372193
A
137XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
138go here. If Module::CoreList is updated, generate an initial draft of the
139following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
140for important changes should then be added by hand. In an ideal world,
141dual-life modules would have a F<Changes> file that could be cribbed.
f704f251 142
86372193 143[ Within each section, list entries as a =item entry ]
f704f251 144
86372193 145=head2 New Modules and Pragmata
0cb3abac 146
86372193 147=over 4
0cb3abac 148
deec1830
FC
149=item *
150
86372193 151XXX
deec1830 152
8c8d6154 153=back
d0ab07ee 154
8c8d6154 155=head2 Updated Modules and Pragmata
d99849ae 156
39c4a6cf 157=over 4
d99849ae 158
ff433f2d
PM
159=item *
160
bab69578
TC
161L<IO::Socket> has been upgraded from version 1.37 to 1.38.
162
163Document the limitations of the isconnected() method. [perl #123096]
cbfcbc14 164
bb6a367a
DD
165=item *
166
167L<DynaLoader> has been upgraded from version 1.27 to 1.28.
168
86372193 169=back
f348c3d8 170
86372193 171=head2 Removed Modules and Pragmata
f348c3d8 172
86372193 173=over 4
f348c3d8
A
174
175=item *
176
86372193 177XXX
f348c3d8 178
86372193 179=back
7635ad4d 180
86372193 181=head1 Documentation
7635ad4d 182
86372193
A
183XXX Changes to files in F<pod/> go here. Consider grouping entries by
184file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7635ad4d 185
86372193 186=head2 New Documentation
f348c3d8 187
86372193 188XXX Changes which create B<new> files in F<pod/> go here.
f348c3d8 189
86372193 190=head3 L<XXX>
f4eedc6b 191
86372193 192XXX Description of the purpose of the new file here
f4eedc6b 193
86372193 194=head2 Changes to Existing Documentation
f4eedc6b 195
86372193
A
196XXX Changes which significantly change existing files in F<pod/> go here.
197However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
198section.
f348c3d8 199
42327f06 200=head3 L<perldata/Identifier parsing>
f348c3d8 201
86372193 202=over 4
f348c3d8
A
203
204=item *
205
42327f06
KW
206The syntax of single-character variable names has been brought
207up-to-date and more fully explained.
f348c3d8 208
86372193 209=back
f348c3d8 210
86372193 211=head1 Diagnostics
f348c3d8 212
86372193
A
213The following additions or changes have been made to diagnostic output,
214including warnings and fatal error messages. For the complete list of
215diagnostic messages, see L<perldiag>.
f348c3d8 216
86372193
A
217XXX New or changed warnings emitted by the core's C<C> code go here. Also
218include any changes in L<perldiag> that reconcile it to the C<C> code.
f348c3d8 219
86372193 220=head2 New Diagnostics
f348c3d8 221
86372193
A
222XXX Newly added diagnostic messages go under here, separated into New Errors
223and New Warnings
f348c3d8 224
86372193 225=head3 New Errors
84d03adf 226
86372193 227=over 4
ff433f2d 228
4cd408ba
TC
229=item *
230
86372193 231XXX L<message|perldiag/"message">
f348c3d8 232
86372193 233=back
f348c3d8 234
86372193 235=head3 New Warnings
f4eedc6b 236
86372193 237=over 4
f4eedc6b
DD
238
239=item *
240
4475d0d2 241L<Use of literal non-graphic characters in variable names is deprecated|perldiag/"Use of literal non-graphic characters in variable names is deprecated">
f348c3d8 242
ab0b796c
KW
243=item *
244
8c6180a9
KW
245A new C<locale> warning category has been created, with the following warning
246messages currently in it:
247
248=over 4
249
250=item *
251
252L<Locale '%s' may not work well.%s|perldiag/Locale '%s' may not work well.%s>
253
254=item *
255
ab0b796c
KW
256L<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".>
257
86372193 258=back
0561e60b 259
dd200dff
FC
260=item *
261
262L<Warning: unable to close filehandle %s properly: %s|perldiag/"Warning: unable to close filehandle %s properly: %s">
263
8c6180a9
KW
264=back
265
86372193 266=head2 Changes to Existing Diagnostics
0561e60b 267
86372193 268XXX Changes (i.e. rewording) of diagnostic messages go here
0561e60b 269
86372193 270=over 4
4cd408ba 271
f348c3d8
A
272=item *
273
4a328228
FC
274L<Quantifier unexpected on zero-length expression in regex m/%s/|perldiag/"Quantifier unexpected on zero-length expression in regex m/%s/">.
275
276This message has had the S<"<-- HERE"> marker removed, as it was always
277placed at the end of the regular expression, regardless of where the
278problem actually occurred. [perl #122680]
4cd408ba 279
86372193 280=back
40a81b59 281
86372193 282=head1 Utility Changes
f348c3d8 283
86372193
A
284XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
285Most of these are built within the directory F<utils>.
f348c3d8 286
86372193
A
287[ List utility changes as a =head2 entry for each utility and =item
288entries for each change
289Use L<XXX> with program names to get proper documentation linking. ]
f348c3d8 290
86372193 291=head2 L<XXX>
f348c3d8 292
86372193 293=over 4
f348c3d8
A
294
295=item *
296
86372193 297XXX
40a81b59 298
13900f93 299=back
aac7f82f 300
86372193 301=head1 Configuration and Compilation
2a395b86 302
86372193
A
303XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
304go here. Any other changes to the Perl build process should be listed here.
305However, any platform-specific changes should be listed in the
306L</Platform Support> section, instead.
8435afd1 307
86372193 308[ List changes as a =item entry ].
8435afd1
SH
309
310=over 4
2a395b86 311
12d22d1f
JK
312=item *
313
c517e197 314F<Configure> with C<-Dmksymlinks> should now be faster. [perl #122002]
12d22d1f 315
2a395b86
PM
316=back
317
86372193 318=head1 Testing
2a395b86 319
86372193
A
320XXX Any significant changes to the testing of a freshly built perl should be
321listed here. Changes which create B<new> files in F<t/> go here as do any
322large changes to the testing harness (e.g. when parallel testing was added).
323Changes to existing files in F<t/> aren't worth summarizing, although the bugs
324that they represent may be covered elsewhere.
2a395b86 325
86372193 326[ List each test improvement as a =item entry ]
5cfa0642 327
8c8d6154 328=over 4
2a395b86
PM
329
330=item *
331
86372193 332XXX
bb8c7e27 333
86372193 334=back
bb8c7e27 335
86372193 336=head1 Platform Support
bb8c7e27 337
86372193 338XXX Any changes to platform support should be listed in the sections below.
bb8c7e27 339
86372193
A
340[ Within the sections, list each platform as a =item entry with specific
341changes as paragraphs below it. ]
2a395b86 342
86372193 343=head2 New Platforms
6d9b7c7c 344
86372193
A
345XXX List any platforms that this version of perl compiles on, that previous
346versions did not. These will either be enabled by new files in the F<hints/>
347directories, or new subdirectories and F<README> files at the top level of the
348source tree.
363d3025 349
8c8d6154 350=over 4
334464b3 351
86372193 352=item XXX-some-platform
334464b3 353
86372193 354XXX
ef5a9509 355
363d3025
FC
356=back
357
86372193
A
358=head2 Discontinued Platforms
359
360XXX List any platforms that this version of perl no longer compiles on.
d72cd2eb 361
0346c3a9 362=over 4
375f5f06 363
86372193 364=item XXX-some-platform
2884baee 365
86372193 366XXX
6f1a844b 367
8c8d6154 368=back
549ea8d4 369
8c8d6154 370=head2 Platform-Specific Notes
aa292ef2 371
86372193
A
372XXX List any changes for specific platforms. This could include configuration
373and compilation changes or changes in portability/compatibility. However,
374changes within modules for platforms should generally be listed in the
375L</Modules and Pragmata> section.
376
8c8d6154 377=over 4
739e9bee 378
86372193 379=item XXX-some-platform
739e9bee 380
86372193 381XXX
b23b2fdb 382
8c8d6154 383=back
b23b2fdb 384
83b69bfd
DD
385=head3 Win32
386
387=over 4
388
389=item *
390
391In the experimental C<:win32> layer, a crash in C<open> was fixed. Also
392opening C</dev/null>, which works the Win32 Perl's normal C<:unix> layer, was
393implemented for C<:win32>.
394L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224>
395
13adb056
SH
396=item *
397
398A new makefile option, C<USE_LONG_DOUBLE>, has been added to the Windows
399dmake makefile for gcc builds only. Set this to "define" if you want perl to
400use long doubles to give more accuracy and range for floating point numbers.
401
83b69bfd
DD
402=back
403
8c8d6154 404=head1 Internal Changes
7d15b1a8 405
86372193
A
406XXX Changes which affect the interface available to C<XS> code go here. Other
407significant internal changes for future core maintainers should be noted as
408well.
bbca64cf 409
86372193 410[ List each change as a =item entry ]
6ff8f256 411
86372193 412=over 4
28482d6c 413
28a42920
A
414=item *
415
f8d5a522
DD
416C<screaminstr> has been removed. Although marked as public API, it is
417undocumented and has no usage in modern perl versions on CPAN Grep. Calling it
418has been fatal since 5.17.0.
28a42920 419
d109137e
FC
420=item *
421
76acbf4f
FC
422C<newDEFSVOP>, C<block_start>, C<block_end> and C<intro_my> have been added
423to the API.
d109137e 424
cff8e04e
FC
425=item *
426
427The internal C<convert> function in F<op.c> has been renamed
428C<op_convert_list> and added to the API.
429
8c8d6154 430=back
6ff8f256 431
8c8d6154 432=head1 Selected Bug Fixes
80cc3290 433
86372193
A
434XXX Important bug fixes in the core language are summarized here. Bug fixes in
435files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
13dd5671 436
86372193 437[ List each fix as a =item entry ]
bdab7676 438
86372193 439=over 4
db98db4e 440
8818afe8
TC
441=item *
442
2ad9844a
TC
443fchmod() and futimes() now set C<$!> when they fail due to being
444passed a closed file handle. [perl #122703]
bb8c7e27 445
9ee757be
KW
446=item *
447
448Perl now comes with a corrected Unicode 7.0 for the erratum issued on
449October 21, 2014 (see L<http://www.unicode.org/errata/#current_errata>),
450dealing with glyph shaping in Arabic.
451
c93d2ba1
TC
452=item *
453
454op_free() no longer crashes due to a stack overflow when freeing a
455deeply recursive op tree. [perl #108276]
456
53795ef8
FC
457=item *
458
9d22ccf6
TC
459scalarvoid() would crash due to a stack overflow when processing a
460deeply recursive op tree. [perl #108276]
461
462=item *
463
53795ef8
FC
464In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off
465if accessed from a code block within a regular expression, effectively
466UTF8-encoding the value. This has been fixed. [perl #123135]
467
b7cd8332
FC
468=item *
469
470A failed C<semctl> call no longer overwrites existing items on the stack,
471causing C<(semctl(-1,0,0,0))[0]> to give an "uninitialized" warning.
472
480961b6
FC
473=item *
474
475C<else{foo()}> with no space before C<foo> is now better at assigning the
476right line number to that statement. [perl #122695]
477
94c9bf90
FC
478=item *
479
480Sometimes the assignment in C<@array = split> gets optimised and C<split>
481itself writes directly to the array. This caused a bug, preventing this
482assignment from being used in lvalue context. So
483C<(@a=split//,"foo")=bar()> was an error. (This bug probably goes back to
484Perl 3, when the optimisation was added.) This optimisation, and the bug,
485started to happen in more cases in 5.21.5. It has now been fixed.
486[perl #123057]
487
8af808bf
FC
488=item *
489
490When argument lists that fail the checks installed by subroutine
491signatures, the resulting error messages now give the file and line number
492of the caller, not of the called subroutine. [perl #121374]
493
fdcaecb7
FC
494=item *
495
496Flip-flop operators (C<..> and C<...> in scalar context) used to maintain
497a separate state for each recursion level (the number of times the
498enclosing sub was called recursively), contrary to the documentation. Now
499each closure has one internal state for each flip-flop. [perl #122829]
500
2af7c6b6
FC
501=item *
502
503C<use>, C<no>, statement labels, special blocks (C<BEGIN>) and pod are now
504permitted as the first thing in a C<map> or C<grep> block, the block after
505C<print> or C<say> (or other functions) returning a handle, and within
506C<${...}>, C<@{...}>, etc. [perl #122782]
507
86372193 508=back
bb8c7e27 509
86372193 510=head1 Known Problems
bb8c7e27 511
86372193
A
512XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
513tests that had to be C<TODO>ed for the release would be noted here. Unfixed
514platform specific bugs also go here.
bb8c7e27 515
86372193 516[ List each fix as a =item entry ]
bb8c7e27 517
86372193 518=over 4
bb8c7e27 519
74f9f9ed
A
520=item *
521
eacbb379
DD
522Starting in 5.21.6, accessing L<perlapi/CvPADLIST> in an XSUB is forbidden.
523CvPADLIST has be reused for a different internal purpose for XSUBs. Guard all
524CvPADLIST expressions with C<CvISXSUB()> if your code doesn't already block
525XSUB CV*s from going through optree CV* expecting code.
28a42920 526
86372193 527=back
28a42920 528
86372193 529=head1 Errata From Previous Releases
28a42920 530
86372193 531=over 4
28a42920
A
532
533=item *
534
857f4fb1
FC
535Due to a mistake in the string-copying logic, copying the value of a state
536variable could instead steal the value and undefine the variable. This
537bug, introduced in 5.20, would happen mostly for long strings (1250 chars
538or more), but could happen for any strings under builds with copy-on-write
539disabled. [perl #123029]
540
541This bug was actually fixed in 5.21.5, but it was not until after that
542release that this bug, and the fact that it had been fixed, were
543discovered.
28a42920 544
8c8d6154 545=back
3a085d00 546
86372193 547=head1 Obituary
01d42a22 548
86372193
A
549XXX If any significant core contributor has died, we've added a short obituary
550here.
01d42a22 551
86372193 552=head1 Acknowledgements
01d42a22 553
86372193 554XXX Generate this with:
01d42a22 555
86372193 556 perl Porting/acknowledgements.pl v5.21.5..HEAD
f5b73711 557
44691e6f
AB
558=head1 Reporting Bugs
559
e08634c5
SH
560If you find what you think is a bug, you might check the articles recently
561posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 562https://rt.perl.org/ . There may also be information at
7ef8b31d 563http://www.perl.org/ , the Perl Home Page.
44691e6f 564
e08634c5
SH
565If you believe you have an unreported bug, please run the L<perlbug> program
566included with your release. Be sure to trim your bug down to a tiny but
567sufficient test case. Your bug report, along with the output of C<perl -V>,
568will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
569
570If the bug you are reporting has security implications, which make it
e08634c5
SH
571inappropriate to send to a publicly archived mailing list, then please send it
572to perl5-security-report@perl.org. This points to a closed subscription
573unarchived mailing list, which includes all the core committers, who will be
574able to help assess the impact of issues, figure out a resolution, and help
f9001595 575co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
576platforms on which Perl is supported. Please only use this address for
577security issues in the Perl core, not for modules independently distributed on
578CPAN.
44691e6f
AB
579
580=head1 SEE ALSO
581
e08634c5
SH
582The F<Changes> file for an explanation of how to view exhaustive details on
583what changed.
44691e6f
AB
584
585The F<INSTALL> file for how to build Perl.
586
587The F<README> file for general stuff.
588
589The F<Artistic> and F<Copying> files for copyright information.
590
591=cut