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