This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for f605e527
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
b5d4d3b9
MM
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.8
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
b5d4d3b9 12This document describes differences between the 5.21.7 release and the 5.21.8
238894db 13release.
c68523cb 14
b5d4d3b9
MM
15If you are upgrading from an earlier release such as 5.21.6, first read
16L<perl5217delta>, which describes differences between 5.21.6 and 5.21.7.
2ec11c70 17
b5d4d3b9 18=head1 Notice
2ec11c70 19
b5d4d3b9 20XXX Any important notices here
67f2cc75 21
b5d4d3b9 22=head1 Core Enhancements
67f2cc75 23
b5d4d3b9
MM
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.
67f2cc75 27
b5d4d3b9 28[ List each enhancement as a =head2 entry ]
295f7815 29
ea5519d6
AB
30=head2 The warnings pragma now supports warnings outside of "all"
31
32Ever since perl v5.6.0 we've had no way of adding new warnings without
33retroactively adding them to all existing programs that used C<-w>,
34C<-W> or C<use warnings>.
35
36This caused us to not add new useful warnings out of fear that they
37might unduly burden users who just wanted to upgrade perl and didn't
38want to deal with a bunch of warnings from their existing code.
39
40We now support a way to have our cake and eat it too, and can add new
41warnings to the core going forward through other top-level warning
42categories. See L<the warnings documentation|warnings/Top-level
43warning categories & associated confusion> for details.
44
25941dca
MH
45=head2 Non-Capturing Regular Expression Flag
46
47Regular expressions now support a C</n> flag that disables capturing
48and filling in C<$1>, C<$2>, etc... inside of groups:
49
50 "hello" =~ /(hi|hello)/n; # $1 is not set
51
52This is equivalent to putting C<?:> at the beginning of every capturing group.
53
54See L<perlre/"n"> for more information.
55
ea13b07e
FC
56=head2 C<prototype> with no arguments
57
58C<prototype()> with no arguments now infers C<$_>. [perl #123514]
59
b5d4d3b9 60=head1 Security
3f22ed99 61
b5d4d3b9
MM
62XXX Any security-related notices go here. In particular, any security
63vulnerabilities closed should be noted here rather than in the
64L</Selected Bug Fixes> section.
3f22ed99 65
b5d4d3b9 66[ List each security issue as a =head2 entry ]
aafa61ee 67
b5d4d3b9 68=head1 Incompatible Changes
ef8784b7 69
b5d4d3b9 70XXX For a release on a stable branch, this section aspires to be:
ef8784b7 71
b5d4d3b9
MM
72 There are no changes intentionally incompatible with 5.XXX.XXX
73 If any exist, they are bugs, and we request that you submit a
74 report. See L</Reporting Bugs> below.
0a7766ab 75
b5d4d3b9 76[ List each incompatible change as a =head2 entry ]
0a7766ab 77
4dc623f0 78=head1 Deprecations
5b306eef 79
b5d4d3b9 80XXX Any deprecated features, syntax, modules etc. should be listed here.
c0659f73 81
b5d4d3b9 82=head2 Module removals
c0659f73 83
b5d4d3b9 84XXX Remove this section if inapplicable.
6ed80d55 85
b5d4d3b9
MM
86The following modules will be removed from the core distribution in a
87future release, and will at that time need to be installed from CPAN.
88Distributions on CPAN which require these modules will need to list them as
89prerequisites.
6ed80d55 90
b5d4d3b9
MM
91The core versions of these modules will now issue C<"deprecated">-category
92warnings to alert you to this fact. To silence these deprecation warnings,
93install the modules in question from CPAN.
6ed80d55 94
b5d4d3b9
MM
95Note that these are (with rare exceptions) fine modules that you are encouraged
96to continue to use. Their disinclusion from core primarily hinges on their
97necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
98not usually on concerns over their design.
6ed80d55 99
b5d4d3b9 100=over
bb6a367a 101
b5d4d3b9 102=item XXX
6ed80d55 103
b5d4d3b9
MM
104XXX Note that deprecated modules should be listed here even if they are listed
105as an updated module in the L</Modules and Pragmata> section.
f348c3d8 106
b5d4d3b9 107=back
7635ad4d 108
b5d4d3b9 109[ List each other deprecation as a =head2 entry ]
7635ad4d 110
b5d4d3b9 111=head1 Performance Enhancements
7635ad4d 112
b5d4d3b9
MM
113XXX Changes which enhance performance without changing behaviour go here.
114There may well be none in a stable release.
60dde9d3 115
b5d4d3b9 116[ List each enhancement as a =item entry ]
60dde9d3 117
b5d4d3b9 118=over 4
f348c3d8 119
6ed80d55 120=item *
f348c3d8 121
b5d4d3b9 122XXX
cd3802ac 123
b5d4d3b9 124=back
cd3802ac 125
b5d4d3b9 126=head1 Modules and Pragmata
d6c13051 127
b5d4d3b9
MM
128XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
129go here. If Module::CoreList is updated, generate an initial draft of the
130following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
131for important changes should then be added by hand. In an ideal world,
132dual-life modules would have a F<Changes> file that could be cribbed.
02a0bddf 133
b5d4d3b9 134[ Within each section, list entries as a =item entry ]
128f4e12 135
b5d4d3b9 136=head2 New Modules and Pragmata
cd3802ac 137
b5d4d3b9 138=over 4
60dde9d3
MM
139
140=item *
141
b5d4d3b9 142XXX
3aba4f3d 143
b5d4d3b9 144=back
af292847 145
b5d4d3b9 146=head2 Updated Modules and Pragmata
190f5bb6 147
b5d4d3b9 148=over 4
b045b8b5
TC
149
150=item *
151
b5d4d3b9 152L<XXX> has been upgraded from version A.xx to B.yy.
190f5bb6 153
a462fa00
DD
154=item *
155
595f54ae
SH
156L<attributes> has been upgraded from version 0.24 to 0.25.
157
158Minor internal change only.
159
160=item *
161
a462fa00
DD
162L<B> has been upgraded from version 1.54 to 1.55.
163
164A bug where, after an ithread creation or psuedofork, special/immortal SVs in
165the child ithread/psuedoprocess did not have the correct class of
166C<B::SPECIAL>, has been fixed.
167
5d42e1d7
FC
168The C<id> and C<outid> PADLIST methods have been added.
169
d2fff9f6
FC
170=item *
171
3d37dc2e
FC
172L<B::Deparse> has been upgraded from version 1.31 to 1.32.
173
174Deparsing C<BEGIN { undef &foo }> with the B<-w> switch enabled started to
175emit 'uninitialized' warnings in Perl 5.14. This has been fixed.
176
bba618d2
FC
177Deparsing calls to subs with a C<(;+)> prototype resulted in an infinite
178loop. The C<(;$>) C<(_)> and C<(;_)> prototypes were given the wrong
179precedence, causing C<foo($a<$b)> to be deparsed without the parentheses.
180
3d37dc2e
FC
181=item *
182
d2fff9f6
FC
183L<Safe> has been upgraded from version 2.38 to 2.39.
184
185C<reval> was not propagating void context properly.
186
b5d4d3b9 187=back
ba31029d 188
b5d4d3b9 189=head2 Removed Modules and Pragmata
b045b8b5 190
b5d4d3b9 191=over 4
aa67537d 192
4c7a0d98
DD
193=item *
194
b5d4d3b9 195XXX
4c7a0d98 196
b5d4d3b9 197=back
4c7a0d98 198
b5d4d3b9 199=head1 Documentation
f4eedc6b 200
b5d4d3b9
MM
201XXX Changes to files in F<pod/> go here. Consider grouping entries by
202file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f4eedc6b 203
b5d4d3b9 204=head2 New Documentation
6ed80d55 205
b5d4d3b9 206XXX Changes which create B<new> files in F<pod/> go here.
f348c3d8 207
b5d4d3b9 208=head3 L<XXX>
f348c3d8 209
b5d4d3b9 210XXX Description of the purpose of the new file here
f348c3d8 211
b5d4d3b9 212=head2 Changes to Existing Documentation
f348c3d8 213
b5d4d3b9
MM
214XXX Changes which significantly change existing files in F<pod/> go here.
215However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
216section.
f348c3d8 217
b5d4d3b9 218=head3 L<XXX>
f348c3d8 219
b5d4d3b9 220=over 4
6ed80d55 221
60dde9d3 222=item *
f348c3d8 223
b5d4d3b9 224XXX Description of the change here
4dc623f0 225
b5d4d3b9 226=back
84d03adf 227
b5d4d3b9 228=head1 Diagnostics
ff433f2d 229
b5d4d3b9
MM
230The following additions or changes have been made to diagnostic output,
231including warnings and fatal error messages. For the complete list of
232diagnostic messages, see L<perldiag>.
4cd408ba 233
b5d4d3b9
MM
234XXX New or changed warnings emitted by the core's C<C> code go here. Also
235include any changes in L<perldiag> that reconcile it to the C<C> code.
6ed80d55 236
b5d4d3b9 237=head2 New Diagnostics
6ed80d55 238
b5d4d3b9
MM
239XXX Newly added diagnostic messages go under here, separated into New Errors
240and New Warnings
6ed80d55 241
b5d4d3b9 242=head3 New Errors
f348c3d8 243
b5d4d3b9 244=over 4
ab0b796c 245
60dde9d3 246=item *
8c6180a9 247
b5d4d3b9 248XXX L<message|perldiag/"message">
8c6180a9 249
b5d4d3b9 250=back
0561e60b 251
b5d4d3b9 252=head3 New Warnings
dd200dff 253
b5d4d3b9 254=over 4
dd200dff 255
73e793fc
FC
256=item *
257
b5d4d3b9 258XXX L<message|perldiag/"message">
73e793fc 259
613abc6d
KW
260=item *
261
262L<Wide character (U+%X) in %s|perldiag/"Wide character (U+%X) in %s">
263
b5d4d3b9 264=back
8c6180a9 265
b5d4d3b9 266=head2 Changes to Existing Diagnostics
0561e60b 267
b5d4d3b9 268XXX Changes (i.e. rewording) of diagnostic messages go here
4a328228 269
b5d4d3b9 270=over 4
4cd408ba 271
1861205d
FC
272=item *
273
b5d4d3b9 274XXX Describe change here
1861205d 275
780fcc9f
KW
276The message
277L<Locale '%s' may not work well.%s|perldiag/"Locale '%s' may not work well.%s">
278is no longer raised unless the problemtatic locale is actually used in
279the Perl program. Previously it was raised if it merely was the
280underlying locale. All Perl programs have an underlying locale at all
281times, but something like a C<S<use locale>> is needed for that locale
282to actually have some effect. This message will not be raised when
283the underlying locale is hidden.
284
b5d4d3b9 285=back
40a81b59 286
b5d4d3b9 287=head1 Utility Changes
2a395b86 288
b5d4d3b9
MM
289XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
290Most of these are built within the directory F<utils>.
2a395b86 291
b5d4d3b9
MM
292[ List utility changes as a =head2 entry for each utility and =item
293entries for each change
294Use L<XXX> with program names to get proper documentation linking. ]
12d22d1f 295
b5d4d3b9 296=head2 L<XXX>
2a395b86 297
b5d4d3b9 298=over 4
2a395b86
PM
299
300=item *
301
b5d4d3b9 302XXX
bb8c7e27 303
b5d4d3b9 304=back
bb8c7e27 305
b5d4d3b9 306=head1 Configuration and Compilation
bb8c7e27 307
b5d4d3b9
MM
308XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
309go here. Any other changes to the Perl build process should be listed here.
310However, any platform-specific changes should be listed in the
311L</Platform Support> section, instead.
aa292ef2 312
b5d4d3b9 313[ List changes as a =item entry ].
83b69bfd 314
b5d4d3b9 315=over 4
83b69bfd
DD
316
317=item *
318
b5d4d3b9 319XXX
13adb056 320
b5d4d3b9 321=back
391823f2 322
b5d4d3b9 323=head1 Testing
6ff8f256 324
b5d4d3b9
MM
325XXX Any significant changes to the testing of a freshly built perl should be
326listed here. Changes which create B<new> files in F<t/> go here as do any
327large changes to the testing harness (e.g. when parallel testing was added).
328Changes to existing files in F<t/> aren't worth summarizing, although the bugs
329that they represent may be covered elsewhere.
80cc3290 330
b5d4d3b9 331[ List each test improvement as a =item entry ]
60dde9d3 332
b5d4d3b9 333=over 4
db98db4e 334
8818afe8
TC
335=item *
336
b5d4d3b9 337XXX
9d22ccf6 338
b5d4d3b9 339=back
480961b6 340
b5d4d3b9 341=head1 Platform Support
480961b6 342
b5d4d3b9 343XXX Any changes to platform support should be listed in the sections below.
94c9bf90 344
b5d4d3b9
MM
345[ Within the sections, list each platform as a =item entry with specific
346changes as paragraphs below it. ]
94c9bf90 347
b5d4d3b9 348=head2 New Platforms
8af808bf 349
b5d4d3b9
MM
350XXX List any platforms that this version of perl compiles on, that previous
351versions did not. These will either be enabled by new files in the F<hints/>
352directories, or new subdirectories and F<README> files at the top level of the
353source tree.
8af808bf 354
b5d4d3b9 355=over 4
fdcaecb7 356
b5d4d3b9 357=item XXX-some-platform
fdcaecb7 358
b5d4d3b9 359XXX
2af7c6b6 360
4dc623f0 361=back
2af7c6b6 362
b5d4d3b9 363=head2 Discontinued Platforms
60dde9d3 364
b5d4d3b9 365XXX List any platforms that this version of perl no longer compiles on.
c0b32823 366
4dc623f0 367=over 4
b1a4e8b3 368
b5d4d3b9 369=item XXX-some-platform
b1a4e8b3 370
b5d4d3b9 371XXX
9e26817d 372
4dc623f0 373=back
9e26817d 374
4dc623f0 375=head2 Platform-Specific Notes
70cee83f 376
b5d4d3b9
MM
377XXX List any changes for specific platforms. This could include configuration
378and compilation changes or changes in portability/compatibility. However,
379changes within modules for platforms should generally be listed in the
380L</Modules and Pragmata> section.
70cee83f 381
b5d4d3b9 382=over 4
e5fbfbc1 383
b4045391 384=item Win32
e5fbfbc1 385
b4045391
DD
386=over 4
387
388=item *
389
390Previously, on Visual C++ for Win64 built Perls only, when compiling every Perl
391XS module (including CPAN ones) and Perl aware .c file with a 64 bit Visual C++,
392would uncondtionally have around a dozen warnings from hv_func.h. These
393warnings have been silenced. GCC all bitness and Visual C++ for Win32 were
394not affected.
395
8c847e66
SH
396=item *
397
398Support for building without PerlIO has been removed from the Windows
399makefiles. Non-PerlIO builds were all but deprecated in Perl 5.18.0 and are
400already not supported by F<Configure> on POSIX systems.
401
d345f487
DD
402=item *
403
404Between 2 and 6 ms and 7 I/O calls have been saved per attempt to open a perl
405module for each path in C<@INC>.
406
b4045391 407=back
353075a0 408
4dc623f0 409=back
353075a0 410
4dc623f0 411=head1 Internal Changes
9f122eef 412
b5d4d3b9
MM
413XXX Changes which affect the interface available to C<XS> code go here. Other
414significant internal changes for future core maintainers should be noted as
415well.
bd2aa467 416
b5d4d3b9 417[ List each change as a =item entry ]
2ec11c70 418
b5d4d3b9 419=over 4
2ec11c70
DM
420
421=item *
422
2683609f
YO
423Added Perl_sv_get_backrefs() to determine if an SV is a weak-referent.
424
425Function either returns an SV * of type AV, which contains the set of
426weakreferences which reference the passed in SV, or a simple RV * which
427is the only weakref to this item.
428
429=item *
430
819b139d
DD
431C<gv_add_by_type> which was added to public API in 5.11.0 but undocumented and
432shows no CPAN usage has been removed from public API. Please use public API
433C<GvSVn> C<GvIOn> C<GvAVn> and C<GvHVn> for adding elements to a GV.
434
435=item *
436
437C<GvSVn> C<GvIOn> C<GvAVn> and C<GvHVn> have been made rvalues, previously they
438were lvalues. If you are assigning a SV to C<GvSVn> C<GvIOn> C<GvAVn> and
439C<GvHVn> you are leaking memory. If you want an lvalue, use C<GvSV> C<GvIO>
440C<GvAV> and C<GvHV>.
441
442=item *
443
b5d4d3b9 444XXX
2ec11c70 445
4dc623f0 446=back
c7f058f0 447
4dc623f0 448=head1 Selected Bug Fixes
0ef4323a 449
b5d4d3b9
MM
450XXX Important bug fixes in the core language are summarized here. Bug fixes in
451files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
279aef25 452
b5d4d3b9 453[ List each fix as a =item entry ]
00ba25b8 454
b5d4d3b9 455=over 4
00ba25b8 456
567291b6
FC
457=item *
458
1a4efbb7
KW
459A bug in regular expression patterns that could lead to segfaults and
460other crashes has been fixed. This occurred only in patterns compiled
461with C<"/i">, while taking into account the current POSIX locale (this usually
462means they have to be compiled within the scope of C<S<"use locale">>),
463and there must be a string of at least 128 consecutive bytes to match.
6471c6b0 464[perl #123539]
fcfb7b86 465
c7fdd20b
FC
466=item *
467
468C<s///> now works on very long strings instead of dying with 'Substitution
469loop'. [perl #103260] [perl #123071]
470
436f6503
FC
471=item *
472
473C<gmtime> no longer crashes with not-a-number values. [perl #123495]
474
f44e0270
FC
475=item *
476
8bfe3865
FC
477C<\()> (reference to an empty list) and C<y///> with lexical $_ in scope
478could do a bad write past the end of the stack. They have been fixed
f44e0270
FC
479to extend the stack first.
480
ea13b07e
FC
481=item *
482
483C<prototype()> with no arguments used to read the previous item on the
484stack, so C<print "foo", prototype()> would print foo's prototype. It has
485been fixed to infer $_ instead. [perl #123514]
486
b5d4d3b9 487=back
fcfb7b86 488
b5d4d3b9 489=head1 Known Problems
8bb83ec2 490
b5d4d3b9
MM
491XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
492tests that had to be C<TODO>ed for the release would be noted here. Unfixed
493platform specific bugs also go here.
8bb83ec2 494
b5d4d3b9 495[ List each fix as a =item entry ]
1318b6d7 496
b5d4d3b9 497=over 4
1318b6d7 498
6f67fbfe
FC
499=item *
500
b5d4d3b9 501XXX
070733df 502
b5d4d3b9 503=back
219f8441 504
b5d4d3b9 505=head1 Errata From Previous Releases
219f8441 506
b5d4d3b9 507=over 4
5747f88b 508
61a8c397
FC
509=item *
510
b5d4d3b9
MM
511XXX Add anything here that we forgot to add, or were mistaken about, in
512the perldelta of a previous release.
61a8c397 513
86372193 514=back
bb8c7e27 515
b5d4d3b9 516=head1 Obituary
3a085d00 517
b5d4d3b9
MM
518XXX If any significant core contributor has died, we've added a short obituary
519here.
01d42a22 520
b5d4d3b9 521=head1 Acknowledgements
01d42a22 522
b5d4d3b9 523XXX Generate this with:
01d42a22 524
b5d4d3b9 525 perl Porting/acknowledgements.pl v5.21.7..HEAD
f5b73711 526
44691e6f
AB
527=head1 Reporting Bugs
528
e08634c5
SH
529If you find what you think is a bug, you might check the articles recently
530posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 531https://rt.perl.org/ . There may also be information at
7ef8b31d 532http://www.perl.org/ , the Perl Home Page.
44691e6f 533
e08634c5
SH
534If you believe you have an unreported bug, please run the L<perlbug> program
535included with your release. Be sure to trim your bug down to a tiny but
536sufficient test case. Your bug report, along with the output of C<perl -V>,
537will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
538
539If the bug you are reporting has security implications, which make it
e08634c5
SH
540inappropriate to send to a publicly archived mailing list, then please send it
541to perl5-security-report@perl.org. This points to a closed subscription
542unarchived mailing list, which includes all the core committers, who will be
543able to help assess the impact of issues, figure out a resolution, and help
f9001595 544co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
545platforms on which Perl is supported. Please only use this address for
546security issues in the Perl core, not for modules independently distributed on
547CPAN.
44691e6f
AB
548
549=head1 SEE ALSO
550
e08634c5
SH
551The F<Changes> file for an explanation of how to view exhaustive details on
552what changed.
44691e6f
AB
553
554The F<INSTALL> file for how to build Perl.
555
556The F<README> file for general stuff.
557
558The F<Artistic> and F<Copying> files for copyright information.
559
560=cut