This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 3c6ef0a5 / #103260 / #123071
[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
173=item *
174
d2fff9f6
FC
175L<Safe> has been upgraded from version 2.38 to 2.39.
176
177C<reval> was not propagating void context properly.
178
b5d4d3b9 179=back
ba31029d 180
b5d4d3b9 181=head2 Removed Modules and Pragmata
b045b8b5 182
b5d4d3b9 183=over 4
aa67537d 184
4c7a0d98
DD
185=item *
186
b5d4d3b9 187XXX
4c7a0d98 188
b5d4d3b9 189=back
4c7a0d98 190
b5d4d3b9 191=head1 Documentation
f4eedc6b 192
b5d4d3b9
MM
193XXX Changes to files in F<pod/> go here. Consider grouping entries by
194file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f4eedc6b 195
b5d4d3b9 196=head2 New Documentation
6ed80d55 197
b5d4d3b9 198XXX Changes which create B<new> files in F<pod/> go here.
f348c3d8 199
b5d4d3b9 200=head3 L<XXX>
f348c3d8 201
b5d4d3b9 202XXX Description of the purpose of the new file here
f348c3d8 203
b5d4d3b9 204=head2 Changes to Existing Documentation
f348c3d8 205
b5d4d3b9
MM
206XXX Changes which significantly change existing files in F<pod/> go here.
207However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
208section.
f348c3d8 209
b5d4d3b9 210=head3 L<XXX>
f348c3d8 211
b5d4d3b9 212=over 4
6ed80d55 213
60dde9d3 214=item *
f348c3d8 215
b5d4d3b9 216XXX Description of the change here
4dc623f0 217
b5d4d3b9 218=back
84d03adf 219
b5d4d3b9 220=head1 Diagnostics
ff433f2d 221
b5d4d3b9
MM
222The following additions or changes have been made to diagnostic output,
223including warnings and fatal error messages. For the complete list of
224diagnostic messages, see L<perldiag>.
4cd408ba 225
b5d4d3b9
MM
226XXX New or changed warnings emitted by the core's C<C> code go here. Also
227include any changes in L<perldiag> that reconcile it to the C<C> code.
6ed80d55 228
b5d4d3b9 229=head2 New Diagnostics
6ed80d55 230
b5d4d3b9
MM
231XXX Newly added diagnostic messages go under here, separated into New Errors
232and New Warnings
6ed80d55 233
b5d4d3b9 234=head3 New Errors
f348c3d8 235
b5d4d3b9 236=over 4
ab0b796c 237
60dde9d3 238=item *
8c6180a9 239
b5d4d3b9 240XXX L<message|perldiag/"message">
8c6180a9 241
b5d4d3b9 242=back
0561e60b 243
b5d4d3b9 244=head3 New Warnings
dd200dff 245
b5d4d3b9 246=over 4
dd200dff 247
73e793fc
FC
248=item *
249
b5d4d3b9 250XXX L<message|perldiag/"message">
73e793fc 251
613abc6d
KW
252=item *
253
254L<Wide character (U+%X) in %s|perldiag/"Wide character (U+%X) in %s">
255
b5d4d3b9 256=back
8c6180a9 257
b5d4d3b9 258=head2 Changes to Existing Diagnostics
0561e60b 259
b5d4d3b9 260XXX Changes (i.e. rewording) of diagnostic messages go here
4a328228 261
b5d4d3b9 262=over 4
4cd408ba 263
1861205d
FC
264=item *
265
b5d4d3b9 266XXX Describe change here
1861205d 267
780fcc9f
KW
268The message
269L<Locale '%s' may not work well.%s|perldiag/"Locale '%s' may not work well.%s">
270is no longer raised unless the problemtatic locale is actually used in
271the Perl program. Previously it was raised if it merely was the
272underlying locale. All Perl programs have an underlying locale at all
273times, but something like a C<S<use locale>> is needed for that locale
274to actually have some effect. This message will not be raised when
275the underlying locale is hidden.
276
b5d4d3b9 277=back
40a81b59 278
b5d4d3b9 279=head1 Utility Changes
2a395b86 280
b5d4d3b9
MM
281XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
282Most of these are built within the directory F<utils>.
2a395b86 283
b5d4d3b9
MM
284[ List utility changes as a =head2 entry for each utility and =item
285entries for each change
286Use L<XXX> with program names to get proper documentation linking. ]
12d22d1f 287
b5d4d3b9 288=head2 L<XXX>
2a395b86 289
b5d4d3b9 290=over 4
2a395b86
PM
291
292=item *
293
b5d4d3b9 294XXX
bb8c7e27 295
b5d4d3b9 296=back
bb8c7e27 297
b5d4d3b9 298=head1 Configuration and Compilation
bb8c7e27 299
b5d4d3b9
MM
300XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
301go here. Any other changes to the Perl build process should be listed here.
302However, any platform-specific changes should be listed in the
303L</Platform Support> section, instead.
aa292ef2 304
b5d4d3b9 305[ List changes as a =item entry ].
83b69bfd 306
b5d4d3b9 307=over 4
83b69bfd
DD
308
309=item *
310
b5d4d3b9 311XXX
13adb056 312
b5d4d3b9 313=back
391823f2 314
b5d4d3b9 315=head1 Testing
6ff8f256 316
b5d4d3b9
MM
317XXX Any significant changes to the testing of a freshly built perl should be
318listed here. Changes which create B<new> files in F<t/> go here as do any
319large changes to the testing harness (e.g. when parallel testing was added).
320Changes to existing files in F<t/> aren't worth summarizing, although the bugs
321that they represent may be covered elsewhere.
80cc3290 322
b5d4d3b9 323[ List each test improvement as a =item entry ]
60dde9d3 324
b5d4d3b9 325=over 4
db98db4e 326
8818afe8
TC
327=item *
328
b5d4d3b9 329XXX
9d22ccf6 330
b5d4d3b9 331=back
480961b6 332
b5d4d3b9 333=head1 Platform Support
480961b6 334
b5d4d3b9 335XXX Any changes to platform support should be listed in the sections below.
94c9bf90 336
b5d4d3b9
MM
337[ Within the sections, list each platform as a =item entry with specific
338changes as paragraphs below it. ]
94c9bf90 339
b5d4d3b9 340=head2 New Platforms
8af808bf 341
b5d4d3b9
MM
342XXX List any platforms that this version of perl compiles on, that previous
343versions did not. These will either be enabled by new files in the F<hints/>
344directories, or new subdirectories and F<README> files at the top level of the
345source tree.
8af808bf 346
b5d4d3b9 347=over 4
fdcaecb7 348
b5d4d3b9 349=item XXX-some-platform
fdcaecb7 350
b5d4d3b9 351XXX
2af7c6b6 352
4dc623f0 353=back
2af7c6b6 354
b5d4d3b9 355=head2 Discontinued Platforms
60dde9d3 356
b5d4d3b9 357XXX List any platforms that this version of perl no longer compiles on.
c0b32823 358
4dc623f0 359=over 4
b1a4e8b3 360
b5d4d3b9 361=item XXX-some-platform
b1a4e8b3 362
b5d4d3b9 363XXX
9e26817d 364
4dc623f0 365=back
9e26817d 366
4dc623f0 367=head2 Platform-Specific Notes
70cee83f 368
b5d4d3b9
MM
369XXX List any changes for specific platforms. This could include configuration
370and compilation changes or changes in portability/compatibility. However,
371changes within modules for platforms should generally be listed in the
372L</Modules and Pragmata> section.
70cee83f 373
b5d4d3b9 374=over 4
e5fbfbc1 375
b4045391 376=item Win32
e5fbfbc1 377
b4045391
DD
378=over 4
379
380=item *
381
382Previously, on Visual C++ for Win64 built Perls only, when compiling every Perl
383XS module (including CPAN ones) and Perl aware .c file with a 64 bit Visual C++,
384would uncondtionally have around a dozen warnings from hv_func.h. These
385warnings have been silenced. GCC all bitness and Visual C++ for Win32 were
386not affected.
387
8c847e66
SH
388=item *
389
390Support for building without PerlIO has been removed from the Windows
391makefiles. Non-PerlIO builds were all but deprecated in Perl 5.18.0 and are
392already not supported by F<Configure> on POSIX systems.
393
d345f487
DD
394=item *
395
396Between 2 and 6 ms and 7 I/O calls have been saved per attempt to open a perl
397module for each path in C<@INC>.
398
b4045391 399=back
353075a0 400
4dc623f0 401=back
353075a0 402
4dc623f0 403=head1 Internal Changes
9f122eef 404
b5d4d3b9
MM
405XXX Changes which affect the interface available to C<XS> code go here. Other
406significant internal changes for future core maintainers should be noted as
407well.
bd2aa467 408
b5d4d3b9 409[ List each change as a =item entry ]
2ec11c70 410
b5d4d3b9 411=over 4
2ec11c70
DM
412
413=item *
414
2683609f
YO
415Added Perl_sv_get_backrefs() to determine if an SV is a weak-referent.
416
417Function either returns an SV * of type AV, which contains the set of
418weakreferences which reference the passed in SV, or a simple RV * which
419is the only weakref to this item.
420
421=item *
422
819b139d
DD
423C<gv_add_by_type> which was added to public API in 5.11.0 but undocumented and
424shows no CPAN usage has been removed from public API. Please use public API
425C<GvSVn> C<GvIOn> C<GvAVn> and C<GvHVn> for adding elements to a GV.
426
427=item *
428
429C<GvSVn> C<GvIOn> C<GvAVn> and C<GvHVn> have been made rvalues, previously they
430were lvalues. If you are assigning a SV to C<GvSVn> C<GvIOn> C<GvAVn> and
431C<GvHVn> you are leaking memory. If you want an lvalue, use C<GvSV> C<GvIO>
432C<GvAV> and C<GvHV>.
433
434=item *
435
b5d4d3b9 436XXX
2ec11c70 437
4dc623f0 438=back
c7f058f0 439
4dc623f0 440=head1 Selected Bug Fixes
0ef4323a 441
b5d4d3b9
MM
442XXX Important bug fixes in the core language are summarized here. Bug fixes in
443files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
279aef25 444
b5d4d3b9 445[ List each fix as a =item entry ]
00ba25b8 446
b5d4d3b9 447=over 4
00ba25b8 448
567291b6
FC
449=item *
450
1a4efbb7
KW
451A bug in regular expression patterns that could lead to segfaults and
452other crashes has been fixed. This occurred only in patterns compiled
453with C<"/i">, while taking into account the current POSIX locale (this usually
454means they have to be compiled within the scope of C<S<"use locale">>),
455and there must be a string of at least 128 consecutive bytes to match.
6471c6b0 456[perl #123539]
fcfb7b86 457
c7fdd20b
FC
458=item *
459
460C<s///> now works on very long strings instead of dying with 'Substitution
461loop'. [perl #103260] [perl #123071]
462
b5d4d3b9 463=back
fcfb7b86 464
b5d4d3b9 465=head1 Known Problems
8bb83ec2 466
b5d4d3b9
MM
467XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
468tests that had to be C<TODO>ed for the release would be noted here. Unfixed
469platform specific bugs also go here.
8bb83ec2 470
b5d4d3b9 471[ List each fix as a =item entry ]
1318b6d7 472
b5d4d3b9 473=over 4
1318b6d7 474
6f67fbfe
FC
475=item *
476
b5d4d3b9 477XXX
070733df 478
b5d4d3b9 479=back
219f8441 480
b5d4d3b9 481=head1 Errata From Previous Releases
219f8441 482
b5d4d3b9 483=over 4
5747f88b 484
61a8c397
FC
485=item *
486
b5d4d3b9
MM
487XXX Add anything here that we forgot to add, or were mistaken about, in
488the perldelta of a previous release.
61a8c397 489
86372193 490=back
bb8c7e27 491
b5d4d3b9 492=head1 Obituary
3a085d00 493
b5d4d3b9
MM
494XXX If any significant core contributor has died, we've added a short obituary
495here.
01d42a22 496
b5d4d3b9 497=head1 Acknowledgements
01d42a22 498
b5d4d3b9 499XXX Generate this with:
01d42a22 500
b5d4d3b9 501 perl Porting/acknowledgements.pl v5.21.7..HEAD
f5b73711 502
44691e6f
AB
503=head1 Reporting Bugs
504
e08634c5
SH
505If you find what you think is a bug, you might check the articles recently
506posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 507https://rt.perl.org/ . There may also be information at
7ef8b31d 508http://www.perl.org/ , the Perl Home Page.
44691e6f 509
e08634c5
SH
510If you believe you have an unreported bug, please run the L<perlbug> program
511included with your release. Be sure to trim your bug down to a tiny but
512sufficient test case. Your bug report, along with the output of C<perl -V>,
513will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
514
515If the bug you are reporting has security implications, which make it
e08634c5
SH
516inappropriate to send to a publicly archived mailing list, then please send it
517to perl5-security-report@perl.org. This points to a closed subscription
518unarchived mailing list, which includes all the core committers, who will be
519able to help assess the impact of issues, figure out a resolution, and help
f9001595 520co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
521platforms on which Perl is supported. Please only use this address for
522security issues in the Perl core, not for modules independently distributed on
523CPAN.
44691e6f
AB
524
525=head1 SEE ALSO
526
e08634c5
SH
527The F<Changes> file for an explanation of how to view exhaustive details on
528what changed.
44691e6f
AB
529
530The F<INSTALL> file for how to build Perl.
531
532The F<README> file for general stuff.
533
534The F<Artistic> and F<Copying> files for copyright information.
535
536=cut