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.2
12 This document describes differences between the 5.19.1 release and the 5.19.2
15 If you are upgrading from an earlier release such as 5.19.0, first read
16 L<perl5191delta>, which describes differences between 5.19.0 and 5.19.1.
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 =head2 More consistent prototype parsing
30 Multiple semicolons in subroutine prototypes have long been tolerated and
31 treated as a single semicolon. There was one case where this did not
32 happen. A subroutine whose prototype begins with "*" or ";*" can affect
33 whether a bareword is considered a method name or sub call. This now
34 applies also to ";;;*".
36 Whitespace has long been allowed inside subroutine prototypes, so
37 C<sub( $ $ )> is equivalent to C<sub($$)>. But it was stripped when the
38 subroutine was parse. Hence, whitespace was I<not> allowed in prototypes
39 set by C<Scalar::Util::set_prototype>. Now it is permitted, and the parser
40 no longer strips whitespace. This means C<prototype &mysub> returns the
41 original prototype, whitespace and all.
45 XXX Any security-related notices go here. In particular, any security
46 vulnerabilities closed should be noted here rather than in the
47 L</Selected Bug Fixes> section.
49 [ List each security issue as a =head2 entry ]
51 =head1 Incompatible Changes
53 XXX For a release on a stable branch, this section aspires to be:
55 There are no changes intentionally incompatible with 5.XXX.XXX
56 If any exist, they are bugs, and we request that you submit a
57 report. See L</Reporting Bugs> below.
59 [ List each incompatible change as a =head2 entry ]
63 XXX Any deprecated features, syntax, modules etc. should be listed here.
65 =head2 Module removals
67 XXX Remove this section if inapplicable.
69 The following modules will be removed from the core distribution in a
70 future release, and will at that time need to be installed from CPAN.
71 Distributions on CPAN which require these modules will need to list them as
74 The core versions of these modules will now issue C<"deprecated">-category
75 warnings to alert you to this fact. To silence these deprecation warnings,
76 install the modules in question from CPAN.
78 Note that these are (with rare exceptions) fine modules that you are encouraged
79 to continue to use. Their disinclusion from core primarily hinges on their
80 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
81 not usually on concerns over their design.
85 XXX Note that deprecated modules should be listed here even if they are listed
86 as an updated module in the L</Modules and Pragmata> section.
90 [ List each other deprecation as a =head2 entry ]
92 =head1 Performance Enhancements
94 XXX Changes which enhance performance without changing behaviour go here.
95 There may well be none in a stable release.
97 [ List each enhancement as a =item entry ]
107 =head1 Modules and Pragmata
109 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110 go here. If Module::CoreList is updated, generate an initial draft of the
111 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
112 entries to STDOUT. Results can be pasted in place of the '=head2' entries
113 below. A paragraph summary for important changes should then be added by hand.
114 In an ideal world, dual-life modules would have a F<Changes> file that could be
117 [ Within each section, list entries as a =item entry ]
119 =head2 New Modules and Pragmata
129 =head2 Updated Modules and Pragmata
135 L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.31
137 The generated C<C> code now incorporates bug fixes present in
138 F<miniperlmain.c>, and has whitespace changes. It now uses
139 C<#include "..."> for header files instead of C<< #include <...> >>.
140 This should not make any difference, unless programs embedding C<libperl>
141 happen to have local and incompatible files named F<EXTERN.h>, F<XSUB.h> or
142 F<perl.h>, as these will now be picked up instead of the installed Perl
147 L<ExtUtils::Miniperl> has been upgraded and given a version of 1.
148 Previously it did not have a version number.
150 C<writemain()> now takes an optional first argument. A reference to a scalar
151 is treated as a filename to be opened and written to. Any other reference is
152 used as the filehandle to write to. Otherwise the existing default remains,
153 to write to C<STDOUT>.
155 C<writemain()> has been refactored to use functions from L<ExtUtils::Embed>,
156 reducing code size and duplication. The internal function C<canon()> has been
161 L<POSIX> has been upgraded from version 1.33 to 1.34.
163 C<POSIX::AUTOLOAD> will no longer infinitely recurse if the shared
164 object fails to load.
168 L<Storable> has been upgraded from version 2.43 to 2.44.
170 Calling C<STORABLE_attach> hooks no longer leaks memory. [perl #118829]
174 =head2 Removed Modules and Pragmata
186 XXX Changes to files in F<pod/> go here. Consider grouping entries by
187 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
189 =head2 New Documentation
191 XXX Changes which create B<new> files in F<pod/> go here.
195 XXX Description of the purpose of the new file here
197 =head2 Changes to Existing Documentation
199 XXX Changes which significantly change existing files in F<pod/> go here.
200 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
203 =head3 L<perlexperiment>
209 Code in regular expressions, regular expression backtracking verbs,
210 and lvalue subroutines are no longer listed as experimental. (This
211 also affects L<perlre> and L<perlsub>.)
221 Since Perl v5.10, it has been possible for subroutines in @INC to return
222 a reference to a scalar holding initial source code to prepend to the file.
223 This is now documented.
229 The following additions or changes have been made to diagnostic output,
230 including warnings and fatal error messages. For the complete list of
231 diagnostic messages, see L<perldiag>.
233 XXX New or changed warnings emitted by the core's C<C> code go here. Also
234 include any changes in L<perldiag> that reconcile it to the C<C> code.
236 =head2 New Diagnostics
238 XXX Newly added diagnostic messages go under here, separated into New Errors
247 XXX L<message|perldiag/"message">
257 XXX L<message|perldiag/"message">
261 =head2 Changes to Existing Diagnostics
263 XXX Changes (i.e. rewording) of diagnostic messages go here
269 Under rare circumstances, one could get a "Can't coerce readonly REF to
270 string" instead of the customary "Modification of a read-only value". This
271 alternate error message has been removed.
275 =head1 Utility Changes
277 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
278 Most of these are built within the directories F<utils> and F<x2p>.
280 [ List utility changes as a =head3 entry for each utility and =item
281 entries for each change
282 Use L<XXX> with program names to get proper documentation linking. ]
294 =head1 Configuration and Compilation
296 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
297 go here. Any other changes to the Perl build process should be listed here.
298 However, any platform-specific changes should be listed in the
299 L</Platform Support> section, instead.
301 [ List changes as a =item entry ].
307 F<installperl> and F<installman>'s option handling has been refactored to use
308 L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and
309 are not installed, so these changes are only likely to affect custom
310 installation scripts.
316 single letter options now also have long names
320 invalid options are now rejected
324 command line arguments that are not options are now rejected
328 Each now has a C<--help> option to display the usage message.
332 The behaviour for all valid documented invocations is unchanged.
338 XXX Any significant changes to the testing of a freshly built perl should be
339 listed here. Changes which create B<new> files in F<t/> go here as do any
340 large changes to the testing harness (e.g. when parallel testing was added).
341 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
342 that they represent may be covered elsewhere.
344 [ List each test improvement as a =item entry ]
354 =head1 Platform Support
356 XXX Any changes to platform support should be listed in the sections below.
358 [ Within the sections, list each platform as a =item entry with specific
359 changes as paragraphs below it. ]
363 XXX List any platforms that this version of perl compiles on, that previous
364 versions did not. These will either be enabled by new files in the F<hints/>
365 directories, or new subdirectories and F<README> files at the top level of the
370 =item XXX-some-platform
376 =head2 Discontinued Platforms
378 XXX List any platforms that this version of perl no longer compiles on.
382 =item XXX-some-platform
388 =head2 Platform-Specific Notes
390 XXX List any changes for specific platforms. This could include configuration
391 and compilation changes or changes in portability/compatibility. However,
392 changes within modules for platforms should generally be listed in the
393 L</Modules and Pragmata> section.
399 C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been
400 deprecated on earlier versions. This caused the build environment to be
401 erroneously configured for C<a.out> rather than C<elf>. This has been now
406 =head1 Internal Changes
408 XXX Changes which affect the interface available to C<XS> code go here. Other
409 significant internal changes for future core maintainers should be noted as
412 [ List each change as a =item entry ]
418 The Makefile shortcut targets for many rarely (or never) used testing and
419 profiling targets have been removed, or merged into the only other Makefile
420 target that uses them. Specifically, these targets are gone, along with
421 documentation that referenced them or explained how to use them:
423 check.third check.utf16 check.utf8 coretest minitest.prep
424 minitest.utf16 perl.config.dashg perl.config.dashpg
425 perl.config.gcov perl.gcov perl.gprof perl.gprof.config
426 perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
427 perl.third perl.third.config perl.valgrind.config purecovperl
428 pureperl quantperl test.deparse test.taintwarn test.third
429 test.torture test.utf16 test.utf8 test_notty.deparse
430 test_notty.third test_notty.valgrind test_prep.third
431 test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
432 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind
434 It's still possible to run the relevant commands by "hand" - no underlying
435 functionality has been removed.
439 It is now possible to keep Perl from initializing locale handling.
440 For the most part, Perl doesn't pay attention to locale. (See
441 L<perllocale>.) Nonetheless, until now, on startup, it has always
442 initialized locale handling to the system default, just in case the
443 program being executed ends up using locales. (This is one of the first
444 things a locale-aware program should do, long before Perl knows if it
445 will actually be needed or not.) This works well except when Perl is
446 embedded in another application which wants a locale that isn't the
447 system default. Now, if the environment variable
448 C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this
449 initialization step is skipped. Prior to this, on Windows platforms,
450 the only workaround for this deficiency was to use a hacked-up copy of
451 internal Perl code. Applications that need to use older Perls can
452 discover if the embedded Perl they are using needs the workaround by
453 testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not
458 C<BmRARE> and C<BmPREVIOUS> have been removed. They were not used anywhere
459 and are not part of the API. For XS modules, they are now #defined as 0.
463 C<sv_force_normal>, which usually croaks on read-only values, used to allow
464 read-only values to be modified at compile time. This has been changed to
465 croak on read-only values regardless. This change uncovered several core
470 =head1 Selected Bug Fixes
472 XXX Important bug fixes in the core language are summarized here. Bug fixes in
473 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
475 [ List each fix as a =item entry ]
481 There have been several fixes related to Perl's handling of locales. perl
482 #38193 was described above in L</Internal Changes>.
483 Also fixed is #112208 in which the error string in C<$!> displayed as
484 garbage in many UTF-8 locales;
485 #118197, where the radix (decimal point) character had to be an ASCII
486 character (which doesn't work for some non-Western languages);
487 and #115808, in which C<POSIX::setlocale()> on failure returned an
488 C<undef> which didn't warn about not being defined even if those
489 warnings were enabled.
493 The dtrace sub-entry probe now works with lexical subs, instead of
494 crashing [perl #118305].
498 Compiling a C<split> operator whose third argument is a named constant
499 evaulating to 0 no longer causes the constant's value to change.
503 A named constant used as the second argument to C<index> no longer gets
504 coerced to a string if it is a reference, regular expression, dualvar, etc.
508 A named constant evaluating to the undefined value used as the second
509 argument to C<index> no longer produces "uninitialized" warnings at compile
510 time. It will still produce them at run time.
514 When a scalar was returned from a subroutine in @INC, the referenced scalar
515 was magically converted into an IO thingy, possibly resulting in "Bizarre
516 copy" errors if that scalar continued to be used elsewhere. Now Perl uses
517 an internal copy of the scalar instead.
521 Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef
522 &foo>) would result in a crash if warnings were turned on.
526 Certain uses of the C<sort> operator are optimised to modify an array in
527 place, such as C<@a = sort @a>. During the sorting, the array is made
528 read-only. If a sort block should happen to die, then the array remained
529 read-only even outside the C<sort>. This has been fixed.
533 C<$a> and C<$b> inside a sort block are aliased to the actual arguments to
534 C<sort>, so they can be modified through those two variables. This did not
535 always work, e.g., for lvalue subs and C<$#ary>, and probably many other
536 operators. It works now.
540 =head1 Known Problems
542 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
543 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
544 platform specific bugs also go here.
546 [ List each fix as a =item entry ]
558 XXX If any significant core contributor has died, we've added a short obituary
561 =head1 Acknowledgements
563 XXX Generate this with:
565 perl Porting/acknowledgements.pl v5.19.1..HEAD
567 =head1 Reporting Bugs
569 If you find what you think is a bug, you might check the articles recently
570 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
571 http://rt.perl.org/perlbug/ . There may also be information at
572 http://www.perl.org/ , the Perl Home Page.
574 If you believe you have an unreported bug, please run the L<perlbug> program
575 included with your release. Be sure to trim your bug down to a tiny but
576 sufficient test case. Your bug report, along with the output of C<perl -V>,
577 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
579 If the bug you are reporting has security implications, which make it
580 inappropriate to send to a publicly archived mailing list, then please send it
581 to perl5-security-report@perl.org. This points to a closed subscription
582 unarchived mailing list, which includes all the core committers, who will be
583 able to help assess the impact of issues, figure out a resolution, and help
584 co-ordinate the release of patches to mitigate or fix the problem across all
585 platforms on which Perl is supported. Please only use this address for
586 security issues in the Perl core, not for modules independently distributed on
591 The F<Changes> file for an explanation of how to view exhaustive details on
594 The F<INSTALL> file for how to build Perl.
596 The F<README> file for general stuff.
598 The F<Artistic> and F<Copying> files for copyright information.