This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Two more module upgrades
[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.19.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.3 release and the 5.19.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.2, first read
16 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
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 =head2 Locale decimal point character no longer leaks outside of
41 S<C<use locale>> scope (with the exception of C<$!>)
42
43 This is actually a bug fix, but some code has come to rely on the bug being
44 present, so this change is listed here.  The current locale that the program is
45 running under is not supposed to be visible to Perl code except within the
46 scope of a S<C<use locale>>.  However, until now under certain circumstances,
47 the character used for a decimal point (often a comma) leaked outside the
48 scope.
49
50 This continues the work released in Perl 5.19.1.  It turns out that that did
51 not catch all the leaks, including C<printf> and C<sprintf> not respecting
52 S<C<use locale>>.  If your code is affected by this change, simply add a
53 S<C<use locale>>.
54
55 Now, the only known place where C<'use locale'> is not respected is in the
56 stringification of L<$!|perlvar/$!>.
57
58 =head1 Deprecations
59
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
61
62 =head2 Module removals
63
64 XXX Remove this section if inapplicable.
65
66 The following modules will be removed from the core distribution in a
67 future release, and will at that time need to be installed from CPAN.
68 Distributions on CPAN which require these modules will need to list them as
69 prerequisites.
70
71 The core versions of these modules will now issue C<"deprecated">-category
72 warnings to alert you to this fact.  To silence these deprecation warnings,
73 install the modules in question from CPAN.
74
75 Note that these are (with rare exceptions) fine modules that you are encouraged
76 to continue to use.  Their disinclusion from core primarily hinges on their
77 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78 not usually on concerns over their design.
79
80 =over
81
82 XXX Note that deprecated modules should be listed here even if they are listed
83 as an updated module in the L</Modules and Pragmata> section.
84
85 =back
86
87 [ List each other deprecation as a =head2 entry ]
88
89 =head1 Performance Enhancements
90
91 =over 4
92
93 =item *
94
95 The trie performance enhancement for regular expressions has now been extended
96 to those compiled under C</iaa>.
97
98 =back
99
100 =head1 Modules and Pragmata
101
102 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
103 go here.  If Module::CoreList is updated, generate an initial draft of the
104 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
105 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
106 below.  A paragraph summary for important changes should then be added by hand.
107 In an ideal world, dual-life modules would have a F<Changes> file that could be
108 cribbed.
109
110 [ Within each section, list entries as a =item entry ]
111
112 =head2 New Modules and Pragmata
113
114 =over 4
115
116 =item *
117
118 XXX
119
120 =back
121
122 =head2 Updated Modules and Pragmata
123
124 =over 4
125
126 =item *
127
128 L<B> has been upgraded from version 1.45 to 1.46.
129
130 The fix for [perl #118525] introduced a regression in the behaviour of
131 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
132 C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL>
133 object in this case. [perl #119351]
134
135 =item *
136
137 L<B::Concise> has been upgraded from version 0.98 to 0.99.
138
139 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
140
141 =item *
142
143 L<Carp> has been upgraded from version 1.31 to 1.32.
144
145 =over 4
146
147 =item *
148
149 In stack traces, subroutine arguments that are strings are now quoted in a
150 consistent manner, regardless of what characters they contain and how they're
151 internally represented.
152
153 =item *
154
155 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
156 C<overload> stash.
157
158 =item *
159
160 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
161 affect behaviour with current Perl.
162
163 =item *
164
165 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
166 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
167 expects C<Carp::Heavy> to provide subroutines.
168
169 =back
170
171 =item *
172
173 L<charnames> has been upgraded from version 1.38 to 1.39.
174
175 This module now works on EBCDIC platforms.
176
177 =item *
178
179 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
180
181 No changes have been made to the installed code other than the version bump to
182 keep in sync with the latest CPAN release.
183
184 =item *
185
186 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
187
188 No changes have been made to the installed code other than the version bump to
189 keep in sync with the latest CPAN release.
190
191 =item *
192
193 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
194
195 This upgrade is part of a larger change to make the array interface 64-bit safe
196 by using SSize_t instead of I32 for array indices.
197
198 In addition, an EBCDIC fix has been applied.
199
200 =item *
201
202 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
203
204 This upgrade is part of a larger change to preserve referential identity when
205 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
206 nonexistent array elements.
207
208 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
209 fixed.
210
211 =item *
212
213 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
214
215 The documentation now makes it clear, as has always been the case, that
216 C<dl_unload_file> is only called automatically to unload all loaded shared
217 objects if the perl interpreter was built with the C macro
218 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
219
220 =item *
221
222 L<Encode> has been upgraded from version 2.52 to 2.54.
223
224 An erroneous early return in C<decode_utf8> has been removed, and a bug in
225 C<_utf8_on> under COW has been fixed.
226
227 =item *
228
229 L<Exporter> has been upgraded from version 5.69 to 5.70.
230
231 A number of typos have been corrected in the documentation.
232
233 =item *
234
235 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
236
237 No changes have been made to the installed code other than the version bump to
238 keep in sync with the latest CPAN release.
239
240 =item *
241
242 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
243
244 No changes have been made to the installed code other than the version bump to
245 keep in sync with the latest CPAN release.
246
247 =item *
248
249 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
250
251 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
252 full details.
253
254 =item *
255
256 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
257
258 No changes have been made to the installed code other than the version bump to
259 keep in sync with the latest CPAN release.
260
261 =item *
262
263 L<File::Glob> has been upgraded from version 1.20 to 1.21.
264
265 C<glob()> now warns in the context of C<use warnings "syscalls";> if the
266 supplied pattern has an internal NUL (C<"\0">) character.
267
268 =item *
269
270 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
271
272 Bosnian has now joined Croatian and Serbian in the lists of mutually
273 intelligible Slavic languages. [perl #72594]
274
275 =item *
276
277 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
278
279 This upgrade is part of a larger change to preserve referential identity when
280 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
281 nonexistent array elements.
282
283 =item *
284
285 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
286
287 New codes have been added and the (deprecated) set of FIPS-10 country codes has
288 been removed.
289
290 =item *
291
292 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
293
294 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
295 consistent with other perl documentation. [perl #86686]
296
297 Added a bint() method for rounding towards zero. [perl #85296]
298
299 =item *
300
301 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
302
303 This upgrade is part of a larger change to make the array interface 64-bit safe
304 by using SSize_t instead of I32 for array indices.
305
306 =item *
307
308 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
309
310 The list of Perl versions covered has been updated.
311
312 =item *
313
314 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
315
316 C<requires> has been made more robust. [cpan #83728]
317
318 =item *
319
320 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
321
322 The module's DESCRIPTION has been re-worded regarding safety/security to
323 satisfy CVE-2013-1437.
324
325 =item *
326
327 L<mro> has been upgraded from version 1.13 to 1.14.
328
329 This upgrade is part of a larger change to make the array interface 64-bit safe
330 by using SSize_t instead of I32 for array indices.
331
332 =item *
333
334 L<parent> has been upgraded from version 0.226 to 0.227.
335
336 No changes have been made to the installed code other than the version bump to
337 keep in sync with the latest CPAN release.
338
339 =item *
340
341 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
342
343 No changes have been made to the installed code other than the version bump to
344 keep in sync with the latest CPAN release.
345
346 =item *
347
348 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
349
350 The Unix OSType 'bitrig' has been added.
351
352 =item *
353
354 L<re> has been upgraded from version 0.25 to 0.26.
355
356 A function signature has been corrected in the XS implementation.
357
358 =item *
359
360 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
361
362 The documentation of C<blessed> has been improved to mention the fact that
363 package "0" is defined but false.
364
365 =item *
366
367 L<Socket> has been upgraded from version 2.011 to 2.012.
368
369 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
370
371 =item *
372
373 L<Storable> has been upgraded from version 2.46 to 2.47.
374
375 This upgrade is part of a larger change to preserve referential identity when
376 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
377 nonexistent array elements.
378
379 =item *
380
381 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
382
383 Term::ReadLine::EditLine support has been added.
384
385 =item *
386
387 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
388
389 Day of year parsing (like "%y%j") has been fixed.
390
391 =item *
392
393 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
394
395 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
396 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
397 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
398 overridden.
399
400 =item *
401
402 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
403
404 This module now works on EBCDIC platforms.
405
406 =item *
407
408 L<version> has been upgraded from version 0.9903 to 0.9904.
409
410 No changes have been made to the installed code other than the version bump to
411 keep in sync with the latest CPAN release.
412
413 =item *
414
415 L<warnings> has been upgraded from version 1.18 to 1.19.
416
417 The C<syscalls> warnings category has been added to check for embedded NUL
418 (C<"\0">) characters in pathnames and string arguments to other system calls.
419
420 =item *
421
422 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
423
424 =back
425
426 =head2 Removed Modules and Pragmata
427
428 =over 4
429
430 =item *
431
432 XXX
433
434 =back
435
436 =head1 Documentation
437
438 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
439 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
440
441 =head2 New Documentation
442
443 XXX Changes which create B<new> files in F<pod/> go here.
444
445 =head3 L<XXX>
446
447 XXX Description of the purpose of the new file here
448
449 =head2 Changes to Existing Documentation
450
451 XXX Changes which significantly change existing files in F<pod/> go here.
452 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
453 section.
454
455 =head3 L<XXX>
456
457 =over 4
458
459 =item *
460
461 XXX Description of the change here
462
463 =back
464
465 =head1 Diagnostics
466
467 The following additions or changes have been made to diagnostic output,
468 including warnings and fatal error messages.  For the complete list of
469 diagnostic messages, see L<perldiag>.
470
471 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
472 include any changes in L<perldiag> that reconcile it to the C<C> code.
473
474 =head2 New Diagnostics
475
476 XXX Newly added diagnostic messages go under here, separated into New Errors
477 and New Warnings
478
479 =head3 New Errors
480
481 =over 4
482
483 =item *
484
485 XXX L<message|perldiag/"message">
486
487 =back
488
489 =head3 New Warnings
490
491 =over 4
492
493 =item *
494
495 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
496
497 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
498 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
499 system calls.
500
501 =back
502
503 =head2 Changes to Existing Diagnostics
504
505 XXX Changes (i.e. rewording) of diagnostic messages go here
506
507 =over 4
508
509 =item *
510
511 XXX Describe change here
512
513 =back
514
515 =head1 Utility Changes
516
517 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
518 Most of these are built within the directories F<utils> and F<x2p>.
519
520 [ List utility changes as a =head3 entry for each utility and =item
521 entries for each change
522 Use L<XXX> with program names to get proper documentation linking. ]
523
524 =head3 L<find2perl>
525
526 =over 4
527
528 =item *
529
530 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
531
532 =back
533
534 =head1 Configuration and Compilation
535
536 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
537 go here.  Any other changes to the Perl build process should be listed here.
538 However, any platform-specific changes should be listed in the
539 L</Platform Support> section, instead.
540
541 [ List changes as a =item entry ].
542
543 =over 4
544
545 =item *
546
547 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
548 avoids a race condition during parallel makes, which could cause the build to
549 fail.  This is the last known parallel make problem (on *nix platforms), and
550 therefore we believe that a parallel make should now always be error free.
551
552 =for comment
553
554 Strictly only for a build where build files such as F<Makefile.SH> have not
555 been updated by C<git> in an already configured and built tree.
556
557 =back
558
559 =head1 Testing
560
561 XXX Any significant changes to the testing of a freshly built perl should be
562 listed here.  Changes which create B<new> files in F<t/> go here as do any
563 large changes to the testing harness (e.g. when parallel testing was added).
564 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
565 that they represent may be covered elsewhere.
566
567 [ List each test improvement as a =item entry ]
568
569 =over 4
570
571 =item *
572
573 The test script F<t/bigmem/regexp.t> has been added to test that regular
574 expression matches on very large strings now succeed as expected.
575
576 =item *
577
578 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
579 now tested by the new test script F<t/op/rt119311.t>.
580
581 =item *
582
583 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
584 preserved across signal handlers by the Win32 signal emulation code.
585
586 =item *
587
588 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
589 program on platforms where it is practical to do so.
590
591 =back
592
593 =head1 Platform Support
594
595 XXX Any changes to platform support should be listed in the sections below.
596
597 [ Within the sections, list each platform as a =item entry with specific
598 changes as paragraphs below it. ]
599
600 =head2 New Platforms
601
602 XXX List any platforms that this version of perl compiles on, that previous
603 versions did not.  These will either be enabled by new files in the F<hints/>
604 directories, or new subdirectories and F<README> files at the top level of the
605 source tree.
606
607 =over 4
608
609 =item Bitrig
610
611 Compile support has been added for Bitrig, a fork of OpenBSD
612
613 =back
614
615 =head2 Discontinued Platforms
616
617 XXX List any platforms that this version of perl no longer compiles on.
618
619 Configure hints and conditional code for several very old platforms
620 has been removed.  We have not received reports for these in many years,
621 typically not since perl-5.6.0.
622
623 =over 4
624
625 =item AT&T 3b1
626
627 Configure support for the 3b1, also known as the AT&T Unix PC (and the
628 similar AT&T 7300), has been removed.
629
630 =back
631
632 =head2 Platform-Specific Notes
633
634 XXX List any changes for specific platforms.  This could include configuration
635 and compilation changes or changes in portability/compatibility.  However,
636 changes within modules for platforms should generally be listed in the
637 L</Modules and Pragmata> section.
638
639 =over 4
640
641 =item WinCE
642
643 The building of XS modules has largely been restored. Several still cannot
644 (yet) be built but it is now possible to build Perl on WinCE with only a couple
645 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
646 incorporated soon.
647
648 =back
649
650 =head1 Internal Changes
651
652 XXX Changes which affect the interface available to C<XS> code go here.  Other
653 significant internal changes for future core maintainers should be noted as
654 well.
655
656 [ List each change as a =item entry ]
657
658 =over 4
659
660 =item *
661
662 The internal representation has changed for the match variables C<$1>, C<$2>
663 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
664 C<${^POSTMATCH>.  It uses slightly less memory, avoids string comparisons
665 and numeric conversions during lookup, and uses 23 fewer lines of C.  This
666 change should not affect any external code.
667
668 =back
669
670 =head1 Selected Bug Fixes
671
672 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
673 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
674
675 [ List each fix as a =item entry ]
676
677 =over 4
678
679 =item *
680
681 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
682
683 =back
684
685 =head1 Known Problems
686
687 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
688 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
689 platform specific bugs also go here.
690
691 [ List each fix as a =item entry ]
692
693 =over 4
694
695 =item *
696
697 XXX
698
699 =back
700
701 =head1 Obituary
702
703 XXX If any significant core contributor has died, we've added a short obituary
704 here.
705
706 =head1 Acknowledgements
707
708 XXX Generate this with:
709
710   perl Porting/acknowledgements.pl v5.19.3..HEAD
711
712 =head1 Reporting Bugs
713
714 If you find what you think is a bug, you might check the articles recently
715 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
716 http://rt.perl.org/perlbug/ .  There may also be information at
717 http://www.perl.org/ , the Perl Home Page.
718
719 If you believe you have an unreported bug, please run the L<perlbug> program
720 included with your release.  Be sure to trim your bug down to a tiny but
721 sufficient test case.  Your bug report, along with the output of C<perl -V>,
722 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
723
724 If the bug you are reporting has security implications, which make it
725 inappropriate to send to a publicly archived mailing list, then please send it
726 to perl5-security-report@perl.org.  This points to a closed subscription
727 unarchived mailing list, which includes all the core committers, who will be
728 able to help assess the impact of issues, figure out a resolution, and help
729 co-ordinate the release of patches to mitigate or fix the problem across all
730 platforms on which Perl is supported.  Please only use this address for
731 security issues in the Perl core, not for modules independently distributed on
732 CPAN.
733
734 =head1 SEE ALSO
735
736 The F<Changes> file for an explanation of how to view exhaustive details on
737 what changed.
738
739 The F<INSTALL> file for how to build Perl.
740
741 The F<README> file for general stuff.
742
743 The F<Artistic> and F<Copying> files for copyright information.
744
745 =cut