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