This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Update with remaining changes
[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
be39acb2
SH
169The documentation now notes that this module also works with C<no>.
170
c14a43b7
SH
171=item *
172
60dcce55
SH
173L<IO::Socket::IP> has been upgraded from version 0.36 to 0.37.
174
175=item *
176
79a77127
SH
177L<Module::CoreList> has been upgraded from version 5.20150320 to 5.20150420.
178
be39acb2
SH
179Updated to cover the latest releases of Perl. Also fixes a fencepost error in
180is_core() and copes with versions that do not match x.yyyzzz.
abec5bed
DIM
181
182=item *
183
9749148e
TC
184L<perl5db.pl> has been upgraded from 1.48 to 1.49.
185
186The debugger would cause an assertion failure. [perl #124127]
187
188=item *
189
abec5bed
DIM
190L<PerlIO::mmap> has been upgraded from version 0.013 to 0.014.
191
192=item *
193
79a77127 194L<utf8> has been upgraded from version 1.15 to 1.16.
abec5bed 195
be39acb2
SH
196Minor documentation update only.
197
2e4abf26
DG
198=item *
199
200L<warnings> has been upgraded from version 1.31 to 1.32.
201
e5998677 202=back
83a5d6b6 203
e5998677 204=head2 Removed Modules and Pragmata
83a5d6b6 205
e5998677 206=over 4
83a5d6b6
SH
207
208=item *
209
e5998677 210XXX
83a5d6b6 211
e5998677 212=back
83a5d6b6 213
e5998677 214=head1 Documentation
83a5d6b6 215
e5998677
SH
216XXX Changes to files in F<pod/> go here. Consider grouping entries by
217file and be sure to link to the appropriate page, e.g. L<perlfunc>.
83a5d6b6 218
e5998677 219=head2 New Documentation
b367c45d 220
e5998677 221XXX Changes which create B<new> files in F<pod/> go here.
b367c45d 222
e5998677 223=head3 L<XXX>
b367c45d 224
e5998677 225XXX Description of the purpose of the new file here
338906ce 226
e5998677 227=head2 Changes to Existing Documentation
338906ce 228
e5998677
SH
229XXX Changes which significantly change existing files in F<pod/> go here.
230However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
231section.
83a5d6b6 232
5de148ee
SH
233=head3 L<perlebcdic>
234
235=over 4
236
237=item *
238
239This document has been significantly updated in the light of recent
240improvements to EBCDIC support.
241
242=back
243
47cb8ddb
SH
244=head3 L<perlfunc>
245
246=over 4
247
248=item *
249
250Mention that C<study()> is currently a no-op.
251
252=back
253
254=head3 L<perlguts>
255
256=over 4
257
258=item *
259
260The OOK example has been updated to account for COW changes and a change in the
261storage of the offset.
262
263=back
264
5de148ee
SH
265=head3 L<perlhacktips>
266
267=over 4
268
269=item *
270
271Documentation has been added illustrating the perils of assuming the contents of
272static memory pointed to by the return values of Perl wrappers for C library
273functions doesn't change.
274
275=back
276
be39acb2
SH
277=head3 L<perlport>
278
279=over 4
280
281=item *
282
283Out-of-date VMS-specific information has been fixed/simplified.
284
285=back
286
287=head3 L<perluniintro>
288
289=over 4
290
291=item *
292
293Advice for how to make sure your strings and regular expression patterns are
294interpreted as Unicode has been revised to account for the new 5.22 EBCDIC
295handling.
296
297=back
298
5de148ee 299=head3 L<perlvms>
83a5d6b6 300
e5998677 301=over 4
83a5d6b6
SH
302
303=item *
304
5de148ee 305Out-of-date and/or incorrect material has been removed.
83a5d6b6 306
e5998677 307=back
338906ce 308
e5998677 309=head1 Diagnostics
338906ce 310
e5998677
SH
311The following additions or changes have been made to diagnostic output,
312including warnings and fatal error messages. For the complete list of
313diagnostic messages, see L<perldiag>.
338906ce 314
e5998677
SH
315XXX New or changed warnings emitted by the core's C<C> code go here. Also
316include any changes in L<perldiag> that reconcile it to the C<C> code.
338906ce 317
e5998677 318=head2 New Diagnostics
9409f752 319
e5998677
SH
320XXX Newly added diagnostic messages go under here, separated into New Errors
321and New Warnings
9409f752 322
e5998677 323=head3 New Errors
03a97c81 324
e5998677 325=over 4
03a97c81
SH
326
327=item *
328
e5998677 329XXX L<message|perldiag/"message">
a790e348 330
e5998677 331=back
83a5d6b6 332
e5998677 333=head3 New Warnings
83a5d6b6 334
e5998677 335=over 4
126be117
JH
336
337=item *
338
e5998677 339XXX L<message|perldiag/"message">
83a5d6b6 340
a9c3e753 341=back
0939a951 342
e5998677 343=head2 Changes to Existing Diagnostics
d2fff9f6 344
e5998677 345XXX Changes (i.e. rewording) of diagnostic messages go here
e329daf3 346
cd7bac54 347=over 4
e329daf3 348
cd7bac54 349=item *
e329daf3 350
e5998677 351XXX Describe change here
83a5d6b6
SH
352
353=back
354
e5998677 355=head1 Utility Changes
83a5d6b6 356
e5998677
SH
357XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
358Most of these are built within the directory F<utils>.
83a5d6b6 359
e5998677
SH
360[ List utility changes as a =head2 entry for each utility and =item
361entries for each change
362Use L<XXX> with program names to get proper documentation linking. ]
83a5d6b6 363
e5998677 364=head2 L<XXX>
83a5d6b6
SH
365
366=over 4
367
368=item *
369
e5998677 370XXX
ba31029d 371
cd7bac54
S
372=back
373
e5998677 374=head1 Configuration and Compilation
cd7bac54 375
e5998677
SH
376XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
377go here. Any other changes to the Perl build process should be listed here.
378However, any platform-specific changes should be listed in the
379L</Platform Support> section, instead.
cd7bac54 380
e5998677 381[ List changes as a =item entry ].
cd7bac54
S
382
383=over 4
384
385=item *
386
e5998677 387XXX
cd7bac54
S
388
389=back
541e1e0d 390
a9c3e753 391=head1 Testing
cd7bac54 392
e5998677
SH
393XXX Any significant changes to the testing of a freshly built perl should be
394listed here. Changes which create B<new> files in F<t/> go here as do any
395large changes to the testing harness (e.g. when parallel testing was added).
396Changes to existing files in F<t/> aren't worth summarizing, although the bugs
397that they represent may be covered elsewhere.
398
399[ List each test improvement as a =item entry ]
400
b5d4d3b9 401=over 4
83b69bfd
DD
402
403=item *
404
62ddb720
SH
405F<t/porting/re_context.t> has been added to test that L<utf8> and its
406dependencies only use the subset of the C<$1..$n> capture vars that
407Perl_save_re_context() is hard-coded to localize, because that function has no
408efficient way of determining at runtime what vars to localize.
13adb056 409
b5d4d3b9 410=back
391823f2 411
a9c3e753 412=head1 Platform Support
6c8457e9 413
e5998677 414XXX Any changes to platform support should be listed in the sections below.
fdcaecb7 415
e5998677
SH
416[ Within the sections, list each platform as a =item entry with specific
417changes as paragraphs below it. ]
ce1e892e 418
e5998677 419=head2 New Platforms
2af7c6b6 420
e5998677
SH
421XXX List any platforms that this version of perl compiles on, that previous
422versions did not. These will either be enabled by new files in the F<hints/>
423directories, or new subdirectories and F<README> files at the top level of the
424source tree.
8c847e66 425
2ff1ebfe 426=over 4
d345f487 427
e5998677 428=item XXX-some-platform
d345f487 429
e5998677 430XXX
cd7bac54 431
4dc623f0 432=back
353075a0 433
e5998677 434=head2 Discontinued Platforms
9f122eef 435
e5998677 436XXX List any platforms that this version of perl no longer compiles on.
2ec11c70 437
e5998677 438=over 4
2ec11c70 439
e5998677 440=item XXX-some-platform
2683609f 441
e5998677 442XXX
338906ce 443
4dc623f0 444=back
c7f058f0 445
e5998677 446=head2 Platform-Specific Notes
2bf83140 447
e5998677
SH
448XXX List any changes for specific platforms. This could include configuration
449and compilation changes or changes in portability/compatibility. However,
450changes within modules for platforms should generally be listed in the
451L</Modules and Pragmata> section.
041a5927 452
e5998677 453=over 4
041a5927 454
86e0176a 455=item Win32
69e954a5 456
86e0176a
TC
457F<miniperl.exe> is now built with C<-fno-strict-aliasing>, allowing
45864-bit builds to complete on GCC 4.8. [perl #123976]
459
460C<test-prep> again depends on C<test-prep-gcc> for GCC builds. [perl
461#124221]
69e954a5 462
e5998677 463=back
20b5e916 464
e5998677 465=head1 Internal Changes
d76c14eb 466
532ecd00
DM
467=over 4
468
469=item *
d76c14eb 470
532ecd00
DM
4715.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes
472the last C<op_sibling> pointer to refer back to the parent rather than
473being C<NULL>, and where instead a new flag indicates the end of the
474chain. In this release, the new implementation has been revised; in
475particular:
d547bad0 476
e5998677 477=over 4
d547bad0 478
8a95d307
FC
479=item *
480
532ecd00
DM
481On C<PERL_OP_PARENT> builds, the C<op_sibling> field has been renamed
482C<op_sibparent> to reflect its new dual purpose. Since the intention is that
483this field should primarily be accessed via macros, this change should be
484transparent for code written to work under C<PERL_OP_PARENT>.
485
486=item *
487
488The newly-introduced C<op_lastsib> flag bit has been renamed C<op_moresib>
489and its logic inverted; i.e. it is initialised to zero in a new op, and is
490changed to 1 when an op gains a sibling.
491
492=item *
493
494The function C<Perl_op_parent> is now only available on C<PERL_OP_PARENT>
495builds. Using it on a plain build will be a compile-timer error.
496
497=item *
498
499Three new macros, C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set>
500have been added, which are intended to be be a low-level portable way to
501set C<op_sibling> / C<op_sibparent> while also updating C<op_moresib>.
502The first sets the sibling pointer to a new sibling, the second makes the
503op the last sibling, and the third conditionally does the first or second
504action. The C<op_sibling_splice()> function is retained as a higher-level
505interface that can also maintain consistency in the parent at the same time
506(e.g. by updating C<op_first> and C<op_last> where appropriate).
507
508=item *
509
510The macro C<OpSIBLING_set>, added in 5.21.2, has been removed. It didn't
511manipulate C<op_moresib> and has been superseded by C<OpMORESIB_set> et
512al.
513
514=item *
515
516The C<op_sibling_splice> function now accepts a null C<parent> argument
517where the splicing doesn't affect the first or last ops in the sibling
518chain, and thus where the parent doesn't need to be updated accordingly.
519
520=back
521
8a95d307 522
e5998677 523=back
338906ce 524
e5998677 525=head1 Selected Bug Fixes
338906ce 526
e5998677
SH
527XXX Important bug fixes in the core language are summarized here. Bug fixes in
528files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
338906ce 529
e5998677 530[ List each fix as a =item entry ]
338906ce 531
e5998677 532=over 4
338906ce
SH
533
534=item *
535
e42530d2
TC
536C<pack("D", $x)> and C<pack("F", $x)> now zero the padding on x86 long
537double builds. GCC 4.8 and later, under some build options, would
538either overwrite the zero-initialized padding, or bypass the
539initialized buffer entirely. This caused F<op/pack.t> to fail. [perl
540#123971]
2f304be9 541
9749148e
TC
542=item *
543
544Extending an array cloned from a parent thread could result in
545"Modification of a read-only value attempted" errors when attempting
546to modify the new elements. [perl #124127]
547
47cb8ddb
SH
548=item *
549
550An assertion failure and subsequent crash with C<< *x=<y> >> has been fixed.
551[perl #123790]
552
553=item *
554
555An optimization for state variable initialization introduced in Perl 5.21.6 has
556been reverted because it was found to exacerbate some other existing buggy
557behaviour. [perl #124160]
558
559=item *
560
561The extension of another optimization to cover more ops in Perl 5.21 has also
562been reverted to its Perl 5.20 state as a temporary fix for regression issues
563that it caused. [perl #123790]
564
be39acb2
SH
565=item *
566
567New bitwise ops added in Perl 5.21.9 accidentally caused C<$^H |= 0x1c020000>
568to enable all features. This has now been fixed.
569
570=item *
571
572A possible crashing/looping bug has been fixed. [perl #124099]
573
574=item *
575
576UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document
577terminators and UTF-8 function names all now work correctly. [perl #124113]
578
579=item *
580
581Breakage in C<require(VERSION)> (with parentheses), introduced in Perl 5.21.6,
582has been fixed. [perl #124135]
583
584=item *
585
586Wide char warnings, wrongly raised in UTF-8 locales since Perl 5.21.8, are now
587suppressed. [perl #123527]
588
589=item *
590
591A subtle bug introduced in Perl 5.21.4 involving UTF-8 in regular expressions
592and sometimes causing a crash has been fixed. A new test script has been added
593to test this fix; see under L</Testing>. [perl #124109]
594
595=item *
596
597A change introduced in Perl 5.21.10 that broke the autovivification CPAN module
598has been reverted.
599
600=item *
601
602A bug whereby C<< 'FOO'->f() >> lost the read-only status of C<FOO>, introduced
603in Perl 5.21.7, has been fixed. [perl #123619]
604
605=item *
606
607A regression in Perl 5.21 in the matching of C</[A-Z]/ai> has been fixed.
608
a9c3e753 609=back
ea13b07e 610
a9c3e753 611=head1 Known Problems
b65adbec 612
e5998677
SH
613XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
614tests that had to be C<TODO>ed for the release would be noted here. Unfixed
615platform specific bugs also go here.
b94c7836 616
e5998677 617[ List each fix as a =item entry ]
ce1e892e
KW
618
619=over 4
620
621=item *
622
e5998677 623XXX
ce1e892e 624
e5998677 625=back
ce1e892e 626
e5998677 627=head1 Errata From Previous Releases
ce1e892e 628
e5998677 629=over 4
ce1e892e 630
e5998677 631=item *
ce1e892e 632
e5998677
SH
633XXX Add anything here that we forgot to add, or were mistaken about, in
634the perldelta of a previous release.
ce1e892e 635
a9c3e753 636=back
e3e8f263 637
e5998677 638=head1 Obituary
0d42058e 639
e5998677
SH
640XXX If any significant core contributor has died, we've added a short obituary
641here.
0d42058e 642
e5998677 643=head1 Acknowledgements
0d42058e 644
e5998677 645XXX Generate this with:
0d42058e 646
e5998677 647 perl Porting/acknowledgements.pl v5.21.10..HEAD
f5b73711 648
44691e6f
AB
649=head1 Reporting Bugs
650
e08634c5
SH
651If you find what you think is a bug, you might check the articles recently
652posted to the comp.lang.perl.misc newsgroup and the perl bug database at
e5998677
SH
653https://rt.perl.org/ . There may also be information at
654http://www.perl.org/ , the Perl Home Page.
44691e6f 655
e08634c5
SH
656If you believe you have an unreported bug, please run the L<perlbug> program
657included with your release. Be sure to trim your bug down to a tiny but
658sufficient test case. Your bug report, along with the output of C<perl -V>,
659will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
660
661If the bug you are reporting has security implications, which make it
e08634c5
SH
662inappropriate to send to a publicly archived mailing list, then please send it
663to perl5-security-report@perl.org. This points to a closed subscription
664unarchived mailing list, which includes all the core committers, who will be
665able to help assess the impact of issues, figure out a resolution, and help
f9001595 666co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
667platforms on which Perl is supported. Please only use this address for
668security issues in the Perl core, not for modules independently distributed on
669CPAN.
44691e6f
AB
670
671=head1 SEE ALSO
672
e08634c5
SH
673The F<Changes> file for an explanation of how to view exhaustive details on
674what changed.
44691e6f
AB
675
676The F<INSTALL> file for how to build Perl.
677
678The F<README> file for general stuff.
679
680The F<Artistic> and F<Copying> files for copyright information.
681
682=cut