5 [ this is a template for a new perldelta file. Any text flagged as XXX needs
6 to be processed before release. ]
8 perldelta - what is new for perl v5.19.4
12 This document describes differences between the 5.19.3 release and the 5.19.4
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.
20 XXX Any important notices here
22 =head1 Core Enhancements
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.
28 [ List each enhancement as a =head2 entry ]
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.
36 [ List each security issue as a =head2 entry ]
38 =head1 Incompatible Changes
40 =head2 Locale decimal point character no longer leaks outside of
41 S<C<use locale>> scope (with the exception of C<$!>)
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
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
55 Now, the only known place where C<'use locale'> is not respected is in the
56 stringification of L<$!|perlvar/$!>.
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
62 =head2 Module removals
64 XXX Remove this section if inapplicable.
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
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.
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.
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.
87 [ List each other deprecation as a =head2 entry ]
89 =head1 Performance Enhancements
95 The trie performance enhancement for regular expressions has now been extended
96 to those compiled under C</iaa>.
100 =head1 Modules and Pragmata
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
110 [ Within each section, list entries as a =item entry ]
112 =head2 New Modules and Pragmata
122 =head2 Updated Modules and Pragmata
128 L<B> has been upgraded from version 1.45 to 1.46.
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]
137 L<B::Concise> has been upgraded from version 0.98 to 0.99.
139 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
143 L<Carp> has been upgraded from version 1.31 to 1.32.
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.
155 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
160 C<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't
161 affect behaviour with current Perl.
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.
173 L<charnames> has been upgraded from version 1.38 to 1.39.
175 This module now works on EBCDIC platforms.
179 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
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.
186 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
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.
193 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
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.
198 In addition, an EBCDIC fix has been applied.
202 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
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.
208 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
213 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
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.
222 L<Encode> has been upgraded from version 2.52 to 2.54.
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.
229 L<Exporter> has been upgraded from version 5.69 to 5.70.
231 A number of typos have been corrected in the documentation.
235 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
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.
242 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
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.
249 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
251 Numerous updates and bug fixes are incorporated. See the F<Changes> file for
256 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
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.
263 L<File::Glob> has been upgraded from version 1.20 to 1.21.
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.
270 L<HTTP::Tiny> has been upgraded from version 0.34 to 0.35.
272 Encoded data from C<post_form> now preserves term order if data is provided as
273 an array reference. (They are still sorted for consistency if provided as a
278 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
280 Bosnian has now joined Croatian and Serbian in the lists of mutually
281 intelligible Slavic languages. [perl #72594]
285 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
287 This upgrade is part of a larger change to preserve referential identity when
288 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
289 nonexistent array elements.
293 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
295 New codes have been added and the (deprecated) set of FIPS-10 country codes has
300 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
302 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
303 consistent with other perl documentation. [perl #86686]
305 Added a bint() method for rounding towards zero. [perl #85296]
309 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
311 This upgrade is part of a larger change to make the array interface 64-bit safe
312 by using SSize_t instead of I32 for array indices.
316 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
318 The list of Perl versions covered has been updated.
322 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
324 C<requires> has been made more robust. [cpan #83728]
328 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
330 The module's DESCRIPTION has been re-worded regarding safety/security to
331 satisfy CVE-2013-1437.
335 L<mro> has been upgraded from version 1.13 to 1.14.
337 This upgrade is part of a larger change to make the array interface 64-bit safe
338 by using SSize_t instead of I32 for array indices.
342 L<parent> has been upgraded from version 0.226 to 0.227.
344 No changes have been made to the installed code other than the version bump to
345 keep in sync with the latest CPAN release.
349 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
351 No changes have been made to the installed code other than the version bump to
352 keep in sync with the latest CPAN release.
356 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
358 The Unix OSType 'bitrig' has been added.
362 L<re> has been upgraded from version 0.25 to 0.26.
364 A function signature has been corrected in the XS implementation.
368 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
370 The documentation of C<blessed> has been improved to mention the fact that
371 package "0" is defined but false.
375 L<Socket> has been upgraded from version 2.011 to 2.012.
377 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
381 L<Storable> has been upgraded from version 2.46 to 2.47.
383 This upgrade is part of a larger change to preserve referential identity when
384 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
385 nonexistent array elements.
389 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
391 Term::ReadLine::EditLine support has been added.
395 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
397 Day of year parsing (like "%y%j") has been fixed.
401 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
403 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
404 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
405 20. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
410 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
412 This module now works on EBCDIC platforms.
416 L<version> has been upgraded from version 0.9903 to 0.9904.
418 No changes have been made to the installed code other than the version bump to
419 keep in sync with the latest CPAN release.
423 L<warnings> has been upgraded from version 1.18 to 1.19.
425 The C<syscalls> warnings category has been added to check for embedded NUL
426 (C<"\0">) characters in pathnames and string arguments to other system calls.
430 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
434 =head2 Removed Modules and Pragmata
446 XXX Changes to files in F<pod/> go here. Consider grouping entries by
447 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
449 =head2 New Documentation
451 XXX Changes which create B<new> files in F<pod/> go here.
455 XXX Description of the purpose of the new file here
457 =head2 Changes to Existing Documentation
459 XXX Changes which significantly change existing files in F<pod/> go here.
460 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
469 XXX Description of the change here
475 The following additions or changes have been made to diagnostic output,
476 including warnings and fatal error messages. For the complete list of
477 diagnostic messages, see L<perldiag>.
479 XXX New or changed warnings emitted by the core's C<C> code go here. Also
480 include any changes in L<perldiag> that reconcile it to the C<C> code.
482 =head2 New Diagnostics
484 XXX Newly added diagnostic messages go under here, separated into New Errors
493 XXX L<message|perldiag/"message">
503 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
505 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
506 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
511 =head2 Changes to Existing Diagnostics
513 XXX Changes (i.e. rewording) of diagnostic messages go here
519 Warnings and errors from the regexp engine are now UTF-8 clean
523 The "Unknown switch condition" error message has some slight changes.
524 This error triggers when there is an unknown condition in a (?(foo))
525 conditional; The error message used to read:
527 Unknown switch condition (?(%s in regex;
529 But what %s could be was mostly up to luck; For (?(foobar)), you
530 might've seen "fo" or "f". For Unicode characters, you'd generally
531 get a corrupted string.
532 The message was changed to read:
534 Unknown switch condition (?(...)) in regex;
536 And additionally, the '<-- HERE' marker in the error will now point
537 to the correct spot in the regex.
541 =head1 Utility Changes
543 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
544 Most of these are built within the directories F<utils> and F<x2p>.
546 [ List utility changes as a =head3 entry for each utility and =item
547 entries for each change
548 Use L<XXX> with program names to get proper documentation linking. ]
556 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
560 =head1 Configuration and Compilation
562 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
563 go here. Any other changes to the Perl build process should be listed here.
564 However, any platform-specific changes should be listed in the
565 L</Platform Support> section, instead.
567 [ List changes as a =item entry ].
573 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
574 avoids a race condition during parallel makes, which could cause the build to
575 fail. This is the last known parallel make problem (on *nix platforms), and
576 therefore we believe that a parallel make should now always be error free.
580 Strictly only for a build where build files such as F<Makefile.SH> have not
581 been updated by C<git> in an already configured and built tree.
587 XXX Any significant changes to the testing of a freshly built perl should be
588 listed here. Changes which create B<new> files in F<t/> go here as do any
589 large changes to the testing harness (e.g. when parallel testing was added).
590 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
591 that they represent may be covered elsewhere.
593 [ List each test improvement as a =item entry ]
599 The test script F<t/bigmem/regexp.t> has been added to test that regular
600 expression matches on very large strings now succeed as expected.
604 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
605 now tested by the new test script F<t/op/rt119311.t>.
609 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
610 preserved across signal handlers by the Win32 signal emulation code.
614 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
615 program on platforms where it is practical to do so.
619 =head1 Platform Support
621 XXX Any changes to platform support should be listed in the sections below.
623 [ Within the sections, list each platform as a =item entry with specific
624 changes as paragraphs below it. ]
628 XXX List any platforms that this version of perl compiles on, that previous
629 versions did not. These will either be enabled by new files in the F<hints/>
630 directories, or new subdirectories and F<README> files at the top level of the
637 Compile support has been added for Bitrig, a fork of OpenBSD
641 =head2 Discontinued Platforms
643 XXX List any platforms that this version of perl no longer compiles on.
645 Configure hints and conditional code for several very old platforms
646 has been removed. We have not received reports for these in many years,
647 typically not since perl-5.6.0.
653 Configure support for the 3b1, also known as the AT&T Unix PC (and the
654 similar AT&T 7300), has been removed.
658 =head2 Platform-Specific Notes
660 XXX List any changes for specific platforms. This could include configuration
661 and compilation changes or changes in portability/compatibility. However,
662 changes within modules for platforms should generally be listed in the
663 L</Modules and Pragmata> section.
669 The building of XS modules has largely been restored. Several still cannot
670 (yet) be built but it is now possible to build Perl on WinCE with only a couple
671 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
676 =head1 Internal Changes
678 XXX Changes which affect the interface available to C<XS> code go here. Other
679 significant internal changes for future core maintainers should be noted as
682 [ List each change as a =item entry ]
688 The internal representation has changed for the match variables C<$1>, C<$2>
689 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
690 C<${^POSTMATCH>. It uses slightly less memory, avoids string comparisons
691 and numeric conversions during lookup, and uses 23 fewer lines of C. This
692 change should not affect any external code.
696 =head1 Selected Bug Fixes
698 XXX Important bug fixes in the core language are summarized here. Bug fixes in
699 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
701 [ List each fix as a =item entry ]
707 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
711 =head1 Known Problems
713 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
714 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
715 platform specific bugs also go here.
717 [ List each fix as a =item entry ]
729 XXX If any significant core contributor has died, we've added a short obituary
732 =head1 Acknowledgements
734 XXX Generate this with:
736 perl Porting/acknowledgements.pl v5.19.3..HEAD
738 =head1 Reporting Bugs
740 If you find what you think is a bug, you might check the articles recently
741 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
742 http://rt.perl.org/perlbug/ . There may also be information at
743 http://www.perl.org/ , the Perl Home Page.
745 If you believe you have an unreported bug, please run the L<perlbug> program
746 included with your release. Be sure to trim your bug down to a tiny but
747 sufficient test case. Your bug report, along with the output of C<perl -V>,
748 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
750 If the bug you are reporting has security implications, which make it
751 inappropriate to send to a publicly archived mailing list, then please send it
752 to perl5-security-report@perl.org. This points to a closed subscription
753 unarchived mailing list, which includes all the core committers, who will be
754 able to help assess the impact of issues, figure out a resolution, and help
755 co-ordinate the release of patches to mitigate or fix the problem across all
756 platforms on which Perl is supported. Please only use this address for
757 security issues in the Perl core, not for modules independently distributed on
762 The F<Changes> file for an explanation of how to view exhaustive details on
765 The F<INSTALL> file for how to build Perl.
767 The F<README> file for general stuff.
769 The F<Artistic> and F<Copying> files for copyright information.