This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Skip testing for PL_warn_locale
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e5998677
SH
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.11
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
e5998677 12This document describes differences between the 5.21.10 release and the 5.21.11
238894db 13release.
c68523cb 14
e5998677
SH
15If you are upgrading from an earlier release such as 5.21.9, first read
16L<perl52110delta>, which describes differences between 5.21.9 and 5.21.10.
2ec11c70 17
e5998677 18=head1 Notice
ef8784b7 19
e5998677 20XXX Any important notices here
6798c95d 21
e5998677 22=head1 Core Enhancements
6798c95d 23
e5998677
SH
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.
cd7bac54 27
e5998677 28[ List each enhancement as a =head2 entry ]
cd7bac54 29
e5998677 30=head1 Security
0939a951 31
e5998677
SH
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
cd7bac54 35
e5998677 36[ List each security issue as a =head2 entry ]
cd7bac54 37
e5998677 38=head1 Incompatible Changes
cd7bac54 39
e5998677 40XXX For a release on a stable branch, this section aspires to be:
83a5d6b6 41
e5998677
SH
42 There are no changes intentionally incompatible with 5.XXX.XXX
43 If any exist, they are bugs, and we request that you submit a
44 report. See L</Reporting Bugs> below.
83a5d6b6 45
e5998677 46[ List each incompatible change as a =head2 entry ]
b9c683b3 47
e5998677 48=head1 Deprecations
b9c683b3 49
e5998677 50XXX Any deprecated features, syntax, modules etc. should be listed here.
b9c683b3 51
2e4abf26
DG
52=head2 Making all warnings fatal is discouraged
53
54The documentation for L<fatal warnings|warnings/Fatal Warnings> notes
55that C<< use warnings FATAL => 'all' >> is discouraged
56and provides stronger language about the risks of fatal warnings
57in general.
58
e5998677 59=head2 Module removals
b05565aa 60
e5998677 61XXX Remove this section if inapplicable.
b05565aa 62
e5998677
SH
63The following modules will be removed from the core distribution in a
64future release, and will at that time need to be installed from CPAN.
65Distributions on CPAN which require these modules will need to list them as
66prerequisites.
79116533 67
e5998677
SH
68The core versions of these modules will now issue C<"deprecated">-category
69warnings to alert you to this fact. To silence these deprecation warnings,
70install the modules in question from CPAN.
79116533 71
e5998677
SH
72Note that these are (with rare exceptions) fine modules that you are encouraged
73to continue to use. Their disinclusion from core primarily hinges on their
74necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
75not usually on concerns over their design.
79116533 76
e5998677 77=over
79116533 78
e5998677 79=item XXX
79116533 80
e5998677
SH
81XXX Note that deprecated modules should be listed here even if they are listed
82as an updated module in the L</Modules and Pragmata> section.
79116533 83
e5998677 84=back
79116533 85
e5998677 86[ List each other deprecation as a =head2 entry ]
79116533 87
e5998677 88=head1 Performance Enhancements
79116533 89
e5998677
SH
90XXX Changes which enhance performance without changing behaviour go here.
91There may well be none in a stable release.
79116533 92
e5998677 93[ List each enhancement as a =item entry ]
79116533 94
e5998677 95=over 4
79116533
SH
96
97=item *
98
e5998677 99XXX
79116533
SH
100
101=back
0939a951 102
e5998677 103=head1 Modules and Pragmata
fea59588 104
e5998677
SH
105XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
106go here. If Module::CoreList is updated, generate an initial draft of the
107following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
108for important changes should then be added by hand. In an ideal world,
109dual-life modules would have a F<Changes> file that could be cribbed.
fea59588 110
e5998677 111[ Within each section, list entries as a =item entry ]
83a5d6b6 112
e5998677 113=head2 New Modules and Pragmata
83a5d6b6 114
e5998677 115=over 4
338906ce
SH
116
117=item *
118
e5998677 119XXX
b05565aa 120
e5998677 121=back
83a5d6b6 122
e5998677 123=head2 Updated Modules and Pragmata
83a5d6b6 124
e5998677 125=over 4
e455391f
SH
126
127=item *
128
79a77127 129L<attributes> has been upgraded from version 0.26 to 0.27.
53902397 130
79a77127
SH
131=item *
132
c14a43b7
SH
133L<B> has been upgraded from version 1.57 to 1.58.
134
135=item *
136
137L<B::Deparse> has been upgraded from version 1.34 to 1.35.
138
47cb8ddb
SH
139C<< <<>> >> is now correctly deparsed.
140
c14a43b7
SH
141=item *
142
143L<Config::Perl::V> has been upgraded from version 0.23 to 0.24.
144
145=item *
146
79a77127 147L<Cwd> has been upgraded from version 3.55 to 3.56.
83a5d6b6 148
abec5bed
DIM
149=item *
150
151L<ExtUtils::Miniperl> has been upgraded from version 1.04 to 1.05.
152
153=item *
154
c14a43b7
SH
155L<ExtUtils::ParseXS> has been upgraded from version 3.27 to 3.28.
156
157=item *
158
159L<ExtUtils::Typemaps> has been upgraded from version 3.25 to 3.28.
160
161=item *
162
163L<File::Spec> has been upgraded from version 3.55 to 3.56.
164
165=item *
166
167L<if> has been upgraded from version 0.0603 to 0.0604.
168
169=item *
170
60dcce55
SH
171L<IO::Socket::IP> has been upgraded from version 0.36 to 0.37.
172
173=item *
174
79a77127
SH
175L<Module::CoreList> has been upgraded from version 5.20150320 to 5.20150420.
176
177Updated to cover the latest releases of Perl.
abec5bed
DIM
178
179=item *
180
9749148e
TC
181L<perl5db.pl> has been upgraded from 1.48 to 1.49.
182
183The debugger would cause an assertion failure. [perl #124127]
184
185=item *
186
abec5bed
DIM
187L<PerlIO::mmap> has been upgraded from version 0.013 to 0.014.
188
189=item *
190
79a77127 191L<utf8> has been upgraded from version 1.15 to 1.16.
abec5bed 192
2e4abf26
DG
193=item *
194
195L<warnings> has been upgraded from version 1.31 to 1.32.
196
e5998677 197=back
83a5d6b6 198
e5998677 199=head2 Removed Modules and Pragmata
83a5d6b6 200
e5998677 201=over 4
83a5d6b6
SH
202
203=item *
204
e5998677 205XXX
83a5d6b6 206
e5998677 207=back
83a5d6b6 208
e5998677 209=head1 Documentation
83a5d6b6 210
e5998677
SH
211XXX Changes to files in F<pod/> go here. Consider grouping entries by
212file and be sure to link to the appropriate page, e.g. L<perlfunc>.
83a5d6b6 213
e5998677 214=head2 New Documentation
b367c45d 215
e5998677 216XXX Changes which create B<new> files in F<pod/> go here.
b367c45d 217
e5998677 218=head3 L<XXX>
b367c45d 219
e5998677 220XXX Description of the purpose of the new file here
338906ce 221
e5998677 222=head2 Changes to Existing Documentation
338906ce 223
e5998677
SH
224XXX Changes which significantly change existing files in F<pod/> go here.
225However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
226section.
83a5d6b6 227
5de148ee
SH
228=head3 L<perlebcdic>
229
230=over 4
231
232=item *
233
234This document has been significantly updated in the light of recent
235improvements to EBCDIC support.
236
237=back
238
47cb8ddb
SH
239=head3 L<perlfunc>
240
241=over 4
242
243=item *
244
245Mention that C<study()> is currently a no-op.
246
247=back
248
249=head3 L<perlguts>
250
251=over 4
252
253=item *
254
255The OOK example has been updated to account for COW changes and a change in the
256storage of the offset.
257
258=back
259
5de148ee
SH
260=head3 L<perlhacktips>
261
262=over 4
263
264=item *
265
266Documentation has been added illustrating the perils of assuming the contents of
267static memory pointed to by the return values of Perl wrappers for C library
268functions doesn't change.
269
270=back
271
272=head3 L<perlvms>
83a5d6b6 273
e5998677 274=over 4
83a5d6b6
SH
275
276=item *
277
5de148ee 278Out-of-date and/or incorrect material has been removed.
83a5d6b6 279
e5998677 280=back
338906ce 281
e5998677 282=head1 Diagnostics
338906ce 283
e5998677
SH
284The following additions or changes have been made to diagnostic output,
285including warnings and fatal error messages. For the complete list of
286diagnostic messages, see L<perldiag>.
338906ce 287
e5998677
SH
288XXX New or changed warnings emitted by the core's C<C> code go here. Also
289include any changes in L<perldiag> that reconcile it to the C<C> code.
338906ce 290
e5998677 291=head2 New Diagnostics
9409f752 292
e5998677
SH
293XXX Newly added diagnostic messages go under here, separated into New Errors
294and New Warnings
9409f752 295
e5998677 296=head3 New Errors
03a97c81 297
e5998677 298=over 4
03a97c81
SH
299
300=item *
301
e5998677 302XXX L<message|perldiag/"message">
a790e348 303
e5998677 304=back
83a5d6b6 305
e5998677 306=head3 New Warnings
83a5d6b6 307
e5998677 308=over 4
126be117
JH
309
310=item *
311
e5998677 312XXX L<message|perldiag/"message">
83a5d6b6 313
a9c3e753 314=back
0939a951 315
e5998677 316=head2 Changes to Existing Diagnostics
d2fff9f6 317
e5998677 318XXX Changes (i.e. rewording) of diagnostic messages go here
e329daf3 319
cd7bac54 320=over 4
e329daf3 321
cd7bac54 322=item *
e329daf3 323
e5998677 324XXX Describe change here
83a5d6b6
SH
325
326=back
327
e5998677 328=head1 Utility Changes
83a5d6b6 329
e5998677
SH
330XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
331Most of these are built within the directory F<utils>.
83a5d6b6 332
e5998677
SH
333[ List utility changes as a =head2 entry for each utility and =item
334entries for each change
335Use L<XXX> with program names to get proper documentation linking. ]
83a5d6b6 336
e5998677 337=head2 L<XXX>
83a5d6b6
SH
338
339=over 4
340
341=item *
342
e5998677 343XXX
ba31029d 344
cd7bac54
S
345=back
346
e5998677 347=head1 Configuration and Compilation
cd7bac54 348
e5998677
SH
349XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
350go here. Any other changes to the Perl build process should be listed here.
351However, any platform-specific changes should be listed in the
352L</Platform Support> section, instead.
cd7bac54 353
e5998677 354[ List changes as a =item entry ].
cd7bac54
S
355
356=over 4
357
358=item *
359
e5998677 360XXX
cd7bac54
S
361
362=back
541e1e0d 363
a9c3e753 364=head1 Testing
cd7bac54 365
e5998677
SH
366XXX Any significant changes to the testing of a freshly built perl should be
367listed here. Changes which create B<new> files in F<t/> go here as do any
368large changes to the testing harness (e.g. when parallel testing was added).
369Changes to existing files in F<t/> aren't worth summarizing, although the bugs
370that they represent may be covered elsewhere.
371
372[ List each test improvement as a =item entry ]
373
b5d4d3b9 374=over 4
83b69bfd
DD
375
376=item *
377
62ddb720
SH
378F<t/porting/re_context.t> has been added to test that L<utf8> and its
379dependencies only use the subset of the C<$1..$n> capture vars that
380Perl_save_re_context() is hard-coded to localize, because that function has no
381efficient way of determining at runtime what vars to localize.
13adb056 382
b5d4d3b9 383=back
391823f2 384
a9c3e753 385=head1 Platform Support
6c8457e9 386
e5998677 387XXX Any changes to platform support should be listed in the sections below.
fdcaecb7 388
e5998677
SH
389[ Within the sections, list each platform as a =item entry with specific
390changes as paragraphs below it. ]
ce1e892e 391
e5998677 392=head2 New Platforms
2af7c6b6 393
e5998677
SH
394XXX List any platforms that this version of perl compiles on, that previous
395versions did not. These will either be enabled by new files in the F<hints/>
396directories, or new subdirectories and F<README> files at the top level of the
397source tree.
8c847e66 398
2ff1ebfe 399=over 4
d345f487 400
e5998677 401=item XXX-some-platform
d345f487 402
e5998677 403XXX
cd7bac54 404
4dc623f0 405=back
353075a0 406
e5998677 407=head2 Discontinued Platforms
9f122eef 408
e5998677 409XXX List any platforms that this version of perl no longer compiles on.
2ec11c70 410
e5998677 411=over 4
2ec11c70 412
e5998677 413=item XXX-some-platform
2683609f 414
e5998677 415XXX
338906ce 416
4dc623f0 417=back
c7f058f0 418
e5998677 419=head2 Platform-Specific Notes
2bf83140 420
e5998677
SH
421XXX List any changes for specific platforms. This could include configuration
422and compilation changes or changes in portability/compatibility. However,
423changes within modules for platforms should generally be listed in the
424L</Modules and Pragmata> section.
041a5927 425
e5998677 426=over 4
041a5927 427
86e0176a 428=item Win32
69e954a5 429
86e0176a
TC
430F<miniperl.exe> is now built with C<-fno-strict-aliasing>, allowing
43164-bit builds to complete on GCC 4.8. [perl #123976]
432
433C<test-prep> again depends on C<test-prep-gcc> for GCC builds. [perl
434#124221]
69e954a5 435
e5998677 436=back
20b5e916 437
e5998677 438=head1 Internal Changes
d76c14eb 439
532ecd00
DM
440=over 4
441
442=item *
d76c14eb 443
532ecd00
DM
4445.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes
445the last C<op_sibling> pointer to refer back to the parent rather than
446being C<NULL>, and where instead a new flag indicates the end of the
447chain. In this release, the new implementation has been revised; in
448particular:
d547bad0 449
e5998677 450=over 4
d547bad0 451
8a95d307
FC
452=item *
453
532ecd00
DM
454On C<PERL_OP_PARENT> builds, the C<op_sibling> field has been renamed
455C<op_sibparent> to reflect its new dual purpose. Since the intention is that
456this field should primarily be accessed via macros, this change should be
457transparent for code written to work under C<PERL_OP_PARENT>.
458
459=item *
460
461The newly-introduced C<op_lastsib> flag bit has been renamed C<op_moresib>
462and its logic inverted; i.e. it is initialised to zero in a new op, and is
463changed to 1 when an op gains a sibling.
464
465=item *
466
467The function C<Perl_op_parent> is now only available on C<PERL_OP_PARENT>
468builds. Using it on a plain build will be a compile-timer error.
469
470=item *
471
472Three new macros, C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set>
473have been added, which are intended to be be a low-level portable way to
474set C<op_sibling> / C<op_sibparent> while also updating C<op_moresib>.
475The first sets the sibling pointer to a new sibling, the second makes the
476op the last sibling, and the third conditionally does the first or second
477action. The C<op_sibling_splice()> function is retained as a higher-level
478interface that can also maintain consistency in the parent at the same time
479(e.g. by updating C<op_first> and C<op_last> where appropriate).
480
481=item *
482
483The macro C<OpSIBLING_set>, added in 5.21.2, has been removed. It didn't
484manipulate C<op_moresib> and has been superseded by C<OpMORESIB_set> et
485al.
486
487=item *
488
489The C<op_sibling_splice> function now accepts a null C<parent> argument
490where the splicing doesn't affect the first or last ops in the sibling
491chain, and thus where the parent doesn't need to be updated accordingly.
492
493=back
494
8a95d307 495
e5998677 496=back
338906ce 497
e5998677 498=head1 Selected Bug Fixes
338906ce 499
e5998677
SH
500XXX Important bug fixes in the core language are summarized here. Bug fixes in
501files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
338906ce 502
e5998677 503[ List each fix as a =item entry ]
338906ce 504
e5998677 505=over 4
338906ce
SH
506
507=item *
508
e42530d2
TC
509C<pack("D", $x)> and C<pack("F", $x)> now zero the padding on x86 long
510double builds. GCC 4.8 and later, under some build options, would
511either overwrite the zero-initialized padding, or bypass the
512initialized buffer entirely. This caused F<op/pack.t> to fail. [perl
513#123971]
2f304be9 514
9749148e
TC
515=item *
516
517Extending an array cloned from a parent thread could result in
518"Modification of a read-only value attempted" errors when attempting
519to modify the new elements. [perl #124127]
520
47cb8ddb
SH
521=item *
522
523An assertion failure and subsequent crash with C<< *x=<y> >> has been fixed.
524[perl #123790]
525
526=item *
527
528An optimization for state variable initialization introduced in Perl 5.21.6 has
529been reverted because it was found to exacerbate some other existing buggy
530behaviour. [perl #124160]
531
532=item *
533
534The extension of another optimization to cover more ops in Perl 5.21 has also
535been reverted to its Perl 5.20 state as a temporary fix for regression issues
536that it caused. [perl #123790]
537
a9c3e753 538=back
ea13b07e 539
a9c3e753 540=head1 Known Problems
b65adbec 541
e5998677
SH
542XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
543tests that had to be C<TODO>ed for the release would be noted here. Unfixed
544platform specific bugs also go here.
b94c7836 545
e5998677 546[ List each fix as a =item entry ]
ce1e892e
KW
547
548=over 4
549
550=item *
551
e5998677 552XXX
ce1e892e 553
e5998677 554=back
ce1e892e 555
e5998677 556=head1 Errata From Previous Releases
ce1e892e 557
e5998677 558=over 4
ce1e892e 559
e5998677 560=item *
ce1e892e 561
e5998677
SH
562XXX Add anything here that we forgot to add, or were mistaken about, in
563the perldelta of a previous release.
ce1e892e 564
a9c3e753 565=back
e3e8f263 566
e5998677 567=head1 Obituary
0d42058e 568
e5998677
SH
569XXX If any significant core contributor has died, we've added a short obituary
570here.
0d42058e 571
e5998677 572=head1 Acknowledgements
0d42058e 573
e5998677 574XXX Generate this with:
0d42058e 575
e5998677 576 perl Porting/acknowledgements.pl v5.21.10..HEAD
f5b73711 577
44691e6f
AB
578=head1 Reporting Bugs
579
e08634c5
SH
580If you find what you think is a bug, you might check the articles recently
581posted to the comp.lang.perl.misc newsgroup and the perl bug database at
e5998677
SH
582https://rt.perl.org/ . There may also be information at
583http://www.perl.org/ , the Perl Home Page.
44691e6f 584
e08634c5
SH
585If you believe you have an unreported bug, please run the L<perlbug> program
586included with your release. Be sure to trim your bug down to a tiny but
587sufficient test case. Your bug report, along with the output of C<perl -V>,
588will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
589
590If the bug you are reporting has security implications, which make it
e08634c5
SH
591inappropriate to send to a publicly archived mailing list, then please send it
592to perl5-security-report@perl.org. This points to a closed subscription
593unarchived mailing list, which includes all the core committers, who will be
594able to help assess the impact of issues, figure out a resolution, and help
f9001595 595co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
596platforms on which Perl is supported. Please only use this address for
597security issues in the Perl core, not for modules independently distributed on
598CPAN.
44691e6f
AB
599
600=head1 SEE ALSO
601
e08634c5
SH
602The F<Changes> file for an explanation of how to view exhaustive details on
603what changed.
44691e6f
AB
604
605The F<INSTALL> file for how to build Perl.
606
607The F<README> file for general stuff.
608
609The F<Artistic> and F<Copying> files for copyright information.
610
611=cut