4 This has been completed up to 7c5c3d9b except for:
5 a1da11a30dfa4f3543dcab00834ff535202f5085 (GNU/Hurd hints)
6 f0d0a205cc02c769ca48d6df00f3eea304ff91d8 (similar)
7 a058c51605ec2d38bf37f2e2c4f81926e3a90ea9 (Leon Timmermans; setresgid)
8 928b2f01177c40be013139c657d79c631790a916 (Reini Urban; Errno)
12 [ this is a template for a new perldelta file. Any text flagged as
13 XXX needs to be processed before release. ]
15 perldelta - what is new for perl v5.15.5
19 This document describes differences between the 5.15.4 release and
22 If you are upgrading from an earlier release such as 5.15.3, first read
23 L<perl5154delta>, which describes differences between 5.15.3 and
26 =head1 Core Enhancements
28 XXX New core language features go here. Summarise user-visible core language
29 enhancements. Particularly prominent performance optimisations could go
30 here, but most should go in the L</Performance Enhancements> section.
32 =head2 More consistent C<eval>
34 The C<eval> operator sometimes treats a string argument as a sequence of
35 characters and sometimes as a sequence of bytes, depending on the internal
36 encoding. The internal encoding is not supposed to make any difference,
37 but there is code that relies on this inconsistency.
39 Under C<use v5.15> and higher, the C<unicode_eval> and C<evalbytes>
40 features resolve this. The C<unicode_eval> feature causes C<eval $string>
41 to treat the string always as Unicode. The C<evalbytes> features provides
42 a function, itself called C<evalbytes>, which evaluates its argument always
45 These features also fix oddities with source filters leaking to outer
48 See L<feature> for more detail.
52 The C<$[> variable is back again, but is now implemented as a module, so
53 programs that do not mention it (i.e., most of them), will not incur any
54 run-time penalty. In a later release in the 5.15 branch it might be
55 disabled in the scope of C<use v5.16>.
57 The new implementation has some bug fixes. See L<arybase>.
61 XXX Any security-related notices go here. In particular, any security
62 vulnerabilities closed should be noted here rather than in the
63 L</Selected Bug Fixes> section.
65 [ List each security issue as a =head2 entry ]
67 =head1 Incompatible Changes
69 XXX For a release on a stable branch, this section aspires to be:
71 There are no changes intentionally incompatible with 5.XXX.XXX
72 If any exist, they are bugs and reports are welcome.
74 =head2 Certain deprecated Unicode properties are no longer supported by default
76 Perl should never have exposed certain Unicode properties that are used
77 by Unicode internally and not meant to be publicly available. Use of
78 these has generated deprecated warning messages since Perl 5.12. The
79 removed properties are Other_Alphabetic,
80 Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
81 Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
84 Perl may be recompiled to include any or all of them; instructions are
86 L<perluniprops/Unicode character properties that are NOT accepted by Perl>.
89 =head2 Dereferencing IO thingies as typeglobs
91 The C<*{...}> operator, when passed a reference to an IO thingy (as in
92 C<*{*STDIN{IO}}>), creates a new typeglob containing just that IO object.
94 Previously, it would stringify as an empty string, but some operators would
95 treat it as undefined, producing an "uninitialized" warning.
97 Having a typeglob appear as an empty string is a side effect of the
98 implementation that has caused various bugs over the years.
100 The solution was to make it stringify like a normal anonymous typeglob,
101 like those produced by C<open($foo->{bar}, ...)> [perl #96326].
105 XXX Any deprecated features, syntax, modules etc. should be listed here.
106 In particular, deprecated modules should be listed here even if they are
107 listed as an updated module in the L</Modules and Pragmata> section.
109 [ List each deprecation as a =head2 entry ]
111 =head2 Don't read the Unicode data base files in F<lib/unicore>
113 It is now deprecated to directly read the Unicode data base files.
114 These are stored in the F<lib/unicore> directory. Instead, you should
115 use the new functions in L<Unicode::UCD>. These provide a stable API,
116 and give complete information. (This API is, however, subject to change
117 somewhat during the 5.15 development cycle, as we gain experience and
118 get feedback from using it.)
120 Perl may at some point in the future change or remove the files. The
121 file most likely for applications to have used is F<lib/unicore/ToDigit.pl>.
122 L<Unicode::UCD/prop_invmap()> can be used to get at its data instead.
124 =head1 Performance Enhancements
126 XXX Changes which enhance performance without changing behaviour go here. There
127 may well be none in a stable release.
129 [ List each enhancement as a =item entry ]
135 Due to changes in L<File::Glob>, Perl's C<glob> function and its
136 C<< <...> >> equivalent are now much faster. The splitting of the pattern
137 into words has been rewritten in C, resulting in speed-ups of 20% in some
140 This does not affect VMS, as it does not use File::Glob.
144 =head1 Modules and Pragmata
146 =head2 New Modules and Pragmata
152 L<arybase> -- this new module implements the C<$[> variable.
156 =head2 Updated Modules and Pragmata
162 L<Archive::Extract> has been upgraded from version 0.56 to version 0.58.
166 L<B::Concise> has been upgraded from version 0.86 to version 0.87.
170 L<B::Deparse> has been upgraded from version 1.08 to version 1.09.
172 It now correctly deparses C<CORE::do>, C<CORE::glob> and slices of empty
177 L<CGI> has been upgraded from version 3.55 to version 3.58.
179 Use public and documented FCGI.pm API in CGI::Fast
180 CGI::Fast was using an FCGI API that was deprecated and removed from
181 documentation more than ten years ago. Usage of this deprecated API with
182 FCGI >= 0.70 or FCGI <= 0.73 introduces a security issue.
183 L<https://rt.cpan.org/Public/Bug/Display.html?id=68380>
184 L<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766>
188 L<charnames> has been upgraded from version 1.23 to version 1.24.
192 L<Compress::Raw::Bzip2> has been upgraded from version 2.037 to version 2.042.
196 L<Compress::Raw::Zlib> has been upgraded from version 2.037 to version 2.042.
200 L<Compress::Zlib> has been upgraded from version 2.037 to version 2.042.
204 L<CPANPLUS> has been upgraded from version 0.9111 to version 0.9112.
208 L<CPANPLUS::Dist::Build> has been upgraded from version 0.58 to version 0.60.
212 L<Digest::SHA> has been upgraded from version 5.62 to version 5.63.
214 Added code to allow very large data inputs all at once, which had previously been
215 limited to several hundred megabytes at a time
219 L<Errno> has been upgraded from version 1.14 to version 1.15.
223 L<ExtUtils::MakeMaker> has been upgraded from version 6.61_01 to version 6.63_02.
227 L<feature> has been upgraded from version 1.22 to version 1.23.
231 L<File::DosGlob> has been upgraded from version 1.05 to version 1.06.
235 L<File::Glob> has been upgraded from version 1.13 to version 1.14.
237 It has a new C<:bsd_glob> export tag, intended to replace C<:glob>. Like
238 C<:glob> it overrides C<glob> with a function that does not split the glob
239 pattern into words, but, unlike C<:glob>, it iterates properly in scalar
240 context, instead of returning the last file.
242 There are other changes affecting Perl's own C<glob> operator (which uses
243 File::Glob internally, except on VMS). See L</Performance Enhancements>
244 and L</Selected Bug Fixes>.
248 L<HTTP::Tiny> has been upgraded from version 0.013 to version 0.016.
250 Adds additional shorthand methods for all common HTTP verbs,
251 a C<post_form()> method for POST-ing x-www-form-urlencoded data and
252 a C<www_form_urlencode()> utility method.
256 L<Opcode> has been upgraded from version 1.20 to version 1.21.
260 L<perlfaq> has been upgraded from version 5.0150035 to version 5.0150036.
264 L<Socket> as been upgraded from version 1.94_01 to 1.94_02.
266 It has new functions and constants for handling IPv6 sockets:
282 L<Storable> has been upgraded from version 2.32 to 2.33.
284 The ability to add a fake entry to %INC to prevent Log::Agent from loading
285 has been restored. In version 2.27 (included with perl 5.14.0), Storable
286 starting producing an error instead.
290 L<strict> has been upgraded from version 1.04 to version 1.05.
294 L<Unicode::Collate> has been upgraded from version 0.80 to version 0.85.
296 Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv, uk,
297 zh__pinyin, zh__stroke
298 Newly supported locales: bn, fa, ml, mr, or, pa, sa, si, si__dictionary,
299 sr_Latn, sv__reformed, ta, te, th, ur, wae.
303 L<Unicode::UCD> has been upgraded from version 0.36 to version 0.37.
305 This adds four new functions: C<prop_aliases()>, and
306 C<prop_value_aliases()> which are used to find all the Unicode-approved
307 synonyms for property names, or to convert from one name to another;
308 C<prop_invlist> which returns all the code points matching a given
309 Unicode binary property; and C<prop_invmap> which returns the complete
310 specification of a given Unicode property.
314 L<UNIVERSAL> has been upgraded from version 1.09 to version 1.10.
320 The following additions or changes have been made to diagnostic output,
321 including warnings and fatal error messages. For the complete list of
322 diagnostic messages, see L<perldiag>.
324 =head2 New Diagnostics
332 L<Source filters apply only to byte streams|perldiag/"Source filters apply only to byte streams">
334 This new error occurs when you try to activate a source filter (usually by
335 loading a source filter module) within a string passed to C<eval> under the
336 C<unicode_eval> feature.
340 L<That use of $[ is unsupported|perldiag/"That use of $[ is unsupported">
342 This previously removed error has been restored with the re-implementation
343 of C<$[> as a module.
353 L<length() used on %s|perldiag/length() used on %s>
355 This new warning occurs when C<length> is used on an array or hash, instead
356 of C<scalar(@array)> or C<scalar(keys %hash)>.
360 L<$[ used in %s (did you mean $] ?)|perldiag/"$[ used in %s (did you mean $] ?)">
362 This new warning exists to catch the mistaken use of C<$[> in version
363 checks. C<$]>, not C<$[>, contains the version number. C<$[> in a numeric
364 comparison is almost always wrong.
368 <Use of assignment to $[ is deprecated|perldiag/"Use of assignment to $[ is deprecated">
370 This previously removed warning has been restored with the re-implementation
371 of C<$[> as a module.
375 =head2 Changes to Existing Diagnostics
381 The uninitialized warning for C<y///r> when C<$_> is implicit and undefined
382 now mentions the variable name, just like the non-/r variation of the
387 The "Applying pattern match..." or similar warning produced when an array
388 or hash is on the left-hand side of the C<=~> operator now mentions the
389 name of the variable.
393 =head1 Configuration and Compilation
399 F<pod/buildtoc>, used by the build process to build L<perltoc>, has been
400 refactored and simplified. It now only contains code to build L<perltoc>;
401 the code to regenerate Makefiles has been moved to F<Porting/pod_rules.pl>.
402 It's a bug if this change has any material effect on the build process.
406 =head1 Platform Support
408 XXX Any changes to platform support should be listed in the sections below.
410 [ Within the sections, list each platform as a =item entry with specific
411 changes as paragraphs below it. ]
415 XXX List any platforms that this version of perl compiles on, that previous
416 versions did not. These will either be enabled by new files in the F<hints/>
417 directories, or new subdirectories and F<README> files at the top level of the
422 =item XXX-some-platform
428 =head2 Discontinued Platforms
430 XXX List any platforms that this version of perl no longer compiles on.
434 =item XXX-some-platform
440 =head2 Platform-Specific Notes
442 XXX List any changes for specific platforms. This could include configuration
443 and compilation changes or changes in portability/compatibility. However,
444 changes within modules for platforms should generally be listed in the
445 L</Modules and Pragmata> section.
449 =item XXX-some-platform
455 =head1 Internal Changes
457 XXX Changes which affect the interface available to C<XS> code go here.
458 Other significant internal changes for future core maintainers should
461 [ List each change as a =item entry ]
467 C<PL_curstash> is now reference-counted.
471 =head1 Selected Bug Fixes
473 XXX Important bug fixes in the core language are summarised here.
474 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
475 L</Modules and Pragmata>.
477 [ List each fix as a =item entry ]
483 Perl now holds an extra reference count on the package that code is
484 currently compiling in. This means that the following code no longer crashes [perl #101486]:
487 BEGIN {*Foo:: = *Bar::}
492 F<dumpvar.pl>, and consequently the C<x> command in the debugger, have been
493 fixed to handle objects blessed into classes whose names contain "=". The
494 contents of such objects used not to be dumped [perl #101814].
498 The C<x> repetition operator no longer crashes on 64-bit builds with large
499 repeate counts [perl #94560].
503 A fix to C<glob> under miniperl (used to configure modules when perl itself
504 is built) in Perl 5.15.3 stopped C<< <~> >> from returning the home
505 directory, because it cleared %ENV before calling csh. Now C<$ENV{HOME}>
506 is preserved. This fix probably does not affect anything. If
507 L<File::Glob> fails to load for some reason, Perl reverts to using csh.
508 So it would apply in that case.
512 On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form)
513 use L<File::Glob> underneath. L<File::Glob> splits the pattern into words,
514 before feeding each word to its C<bsd_glob> function.
516 There were several inconsistencies in the way the split was done. Now
517 quotation marks (' and ") are always treated as shell-style word delimiters
518 (that allow whitespace as part of a word) and backslashes are always
519 preserved, unless they exist to escape quotation marks. Before, those
520 would only sometimes be the case, depending on whether the pattern
521 contained whitespace. Also, escaped whitespace at the end of the pattern
522 is no longer stripped [perl #40470].
526 C<CORE::glob> now works as a way to call the default globbing function. It
527 used to respect overrides, despite the C<CORE::> prefix.
531 In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the
532 opposite case. This has been fixed [perl #101970].
536 A regular expression match with an overloaded object on the right-hand side
537 would in some cases stringify the object too many times.
541 The C-level C<pregcomp> function could become confused as to whether the
542 pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise
543 magical scalar [perl #101940].
547 A regression has been fixed that was introduced in 5.14, in C</i>
548 regular expression matching, in which a match improperly fails if the
549 pattern is in UTF-8, the target string is not, and a Latin-1 character
550 precedes a character in the string that should match the pattern. [perl
555 C<@{"..."} = reverse ...> started crashing in 5.15.3. This has been fixed.
559 C<ref> in a tainted expression started producing an "sv_upgrade" error in
560 5.15.4. This has been fixed.
564 Weak references to lexical hashes going out of scope were not going stale
565 (becoming undefined), but continued to point to the hash.
569 Weak references to lexical variables going out of scope are now broken
570 before any magical methods (e.g., DESTROY on a tie object) are called.
571 This prevents such methods from modifying the variable that will be seen
572 the next time the scope is entered.
576 A C<keys> optimisation in Perl 5.12.0 to make it faster on empty hashes
577 caused C<each> not to reset the iterator if called after the last element
578 was deleted. This has been fixed.
582 The C<#line 42 foo> directive used not to update the arrays of lines used
583 by the debugger if it occurred in a string eval. This was partially fixed
584 in 5.14, but it only worked for a single C<#line 42 foo> in each eval. Now
585 it works for multiple.
589 String eval used not to localise C<%^H> when compiling its argument if it
590 was empty at the time the C<eval> call itself was compiled. This could
591 lead to scary side effects, like C<use re "/m"> enabling other flags that
592 the surrounding code was trying to enable for its caller [perl #68750].
596 Creating a BEGIN block from XS code (via C<newXS> or C<newATTRSUB>) would,
597 on completion, make the hints of the current compiling code the current
598 hints. This could cause warnings to occur in a non-warning scope.
602 C<eval $string> and C<require> no longer localise hints (C<$^H> and C<%^H>)
603 at run time, but only during compilation of the $string or required file.
604 This makes C<BEGIN { $^H{foo}=7 }> equivalent to
605 C<BEGIN { eval '$^H{foo}=7' }> [perl #70151].
609 When subroutine calls are intercepted by the debugger, the name of the
610 subroutine or a reference to it is stored in C<$DB::sub>, for the debugger
611 to access. In some cases (such as C<$foo = *bar; undef *bar; &$foo>)
612 C<$DB::sub> would be set to a name that could not be used to find the
613 subroutine, and so the debugger's attempt to call it would fail. Now the
614 check to see whether a reference is needed is more robust, so those
615 problems should not happen anymore [rt.cpan.org #69862].
619 Localising a tied scalar that returns a typeglob no longer stops it from
620 being tied till the end of the scope.
624 When C<open> is called with three arguments, the third being a file handle
625 (as in C<< open $fh, ">&", $fh2 >>), if the third argument is tied or a
626 reference to a tied variable, FETCH is now called exactly once, instead of
627 0, 2, or 3 times (all of which could occur in various circumstances).
631 C<sort> no longer ignores FETCH when passed a reference to a tied glob for
632 the comparison routine.
636 Warnings emitted by C<sort> when a custom comparison routine returns a
637 non-numeric value now show the line number of the C<sort> operator, rather
638 than the last line of the comparison routine. The warnings also occur now
639 only if warnings are enabled in the scope where C<sort> occurs. Previously
640 the warnings would occur if enabled in the comparison routine's scope.
644 =head1 Known Problems
646 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
647 tests that had to be C<TODO>ed for the release would be noted here, unless
648 they were specific to a particular platform (see below).
650 This is a list of some significant unfixed bugs, which are regressions
651 from either 5.XXX.XXX or 5.XXX.XXX.
653 [ List each fix as a =item entry ]
663 =head1 Acknowledgements
665 XXX Generate this with:
667 perl Porting/acknowledgements.pl v5.15.4..HEAD
669 =head1 Reporting Bugs
671 If you find what you think is a bug, you might check the articles
672 recently posted to the comp.lang.perl.misc newsgroup and the perl
673 bug database at http://rt.perl.org/perlbug/ . There may also be
674 information at http://www.perl.org/ , the Perl Home Page.
676 If you believe you have an unreported bug, please run the L<perlbug>
677 program included with your release. Be sure to trim your bug down
678 to a tiny but sufficient test case. Your bug report, along with the
679 output of C<perl -V>, will be sent off to perlbug@perl.org to be
680 analysed by the Perl porting team.
682 If the bug you are reporting has security implications, which make it
683 inappropriate to send to a publicly archived mailing list, then please send
684 it to perl5-security-report@perl.org. This points to a closed subscription
685 unarchived mailing list, which includes
686 all the core committers, who will be able
687 to help assess the impact of issues, figure out a resolution, and help
688 co-ordinate the release of patches to mitigate or fix the problem across all
689 platforms on which Perl is supported. Please only use this address for
690 security issues in the Perl core, not for modules independently
695 The F<Changes> file for an explanation of how to view exhaustive details
698 The F<INSTALL> file for how to build Perl.
700 The F<README> file for general stuff.
702 The F<Artistic> and F<Copying> files for copyright information.