4 A Windows-specific commit that may need mention (does this have any
5 user-visible effects?):
6 0c38a57 Remove exports of dummy set[ug]id functions on Windows
10 [ this is a template for a new perldelta file. Any text flagged as XXX needs
11 to be processed before release. ]
13 perldelta - what is new for perl v5.17.5
17 This document describes differences between the 5.17.4 release and the 5.17.5
20 If you are upgrading from an earlier release such as 5.17.3, first read
21 L<perl5174delta>, which describes differences between 5.17.3 and 5.17.4.
25 XXX Any important notices here
27 =head1 Core Enhancements
29 XXX New core language features go here. Summarize user-visible core language
30 enhancements. Particularly prominent performance optimisations could go
31 here, but most should go in the L</Performance Enhancements> section.
33 [ List each enhancement as a =head2 entry ]
35 =head2 Upgrade to Unicode 6.2
37 Perl now supports the final version of Unicode 6.2. Earlier releases in
38 the 5.17 series supported Unicode 6.2 beta versions. There were no
39 substantive changes in the final Unicode 6.2 version from the most
40 recent beta, included in Perl 5.17.4. A list of changes from Unicode
41 6.1 is at L<http://www.unicode.org/versions/Unicode6.2.0>.
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 =head2 Avoid calling memset with a negative count
53 Poorly written perl code that allows an attacker to specify the count to perl's
54 C<x> string repeat operator can already cause a memory exhaustion
55 denial-of-service attack. A flaw in versions of perl before 5.15.5 can escalate
56 that into a heap buffer overrun; coupled with versions of glibc before 2.16, it
57 possibly allows the execution of arbitrary code.
59 The flaw addressed to this commit has been assigned identifier CVE-2012-5195.
61 =head1 Incompatible Changes
63 XXX For a release on a stable branch, this section aspires to be:
65 There are no changes intentionally incompatible with 5.XXX.XXX
66 If any exist, they are bugs, and we request that you submit a
67 report. See L</Reporting Bugs> below.
69 [ List each incompatible change as a =head2 entry ]
71 =head2 New Restrictions in Multi-Character Case-Insensitive Matching in Regular Expression Bracketed Character Classes
73 Unicode has now withdrawn their previous recommendation for regular
74 expressions to automatically handle cases where a single character can
75 match multiple characters case-insensitively; for example, the letter
76 LATIN SMALL LETTER SHARP S and the sequence C<ss>. This is because
77 it turns out to be impracticable to do this correctly in all
78 circumstances. Because Perl has tried to do this as best it can, it
79 will continue to do so. (We are considering an option to turn it off.)
80 However, a new restriction is being added on such matches when they
81 occur in [bracketed] character classes. People were specifying
82 things such as C</[\0-\xff]/i>, and being surprised that it matches the
83 two character sequence C<ss> (since LATIN SMALL LETTER SHARP S occurs in
84 this range). This behavior is also inconsistent with the using a
85 property instead of a range: C<\p{Block=Latin1}> also includes LATIN
86 SMALL LETTER SHARP S, but C</[\p{Block=Latin1}]/i> does not match C<ss>.
87 The new rule is that for there to be a multi-character case-insensitive
88 match within a bracketed character class, the character must be
89 explicitly listed, and not as an end point of a range. This more
90 closely obeys the Principle of Least Astonishment. See
91 L<perlrecharclass/Bracketed Character Classes>. Note that a bug [perl
92 #89774], now fixed as part of this change, prevented the previous
93 behavior from working fully.
95 =head2 Change to Warnings About Lexical Subroutines
97 The warnings category for lexical subroutines is now
98 "experimental::lexical_subs", with two colons, not
99 "experimental:lexical_subs";
103 XXX Any deprecated features, syntax, modules etc. should be listed here. In
104 particular, deprecated modules should be listed here even if they are listed as
105 an updated module in the L</Modules and Pragmata> section.
107 [ List each deprecation as a =head2 entry ]
109 =head1 Performance Enhancements
111 XXX Changes which enhance performance without changing behaviour go here.
112 There may well be none in a stable release.
114 [ List each enhancement as a =item entry ]
124 =head1 Modules and Pragmata
126 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
127 go here. If Module::CoreList is updated, generate an initial draft of the
128 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
129 entries to STDOUT. Results can be pasted in place of the '=head2' entries
130 below. A paragraph summary for important changes should then be added by hand.
131 In an ideal world, dual-life modules would have a F<Changes> file that could be
134 [ Within each section, list entries as a =item entry ]
136 =head2 New Modules and Pragmata
146 =head2 Updated Modules and Pragmata
152 L<AutoLoader> has been upgraded from version 5.72 to 5.73.
156 L<B::Deparse> has been upgraded from version 1.17 to 1.18. It no longer
157 dies when deparsing C<sort> without arguments. It now correctly omits the
158 comma for C<system $prog @args> and C<exec $prog @args>.
162 L<bignum>, L<bigint> and L<bigrat> have been upgraded from version 0.30 to
163 0.31. The overrides for C<hex> and C<oct> have been rewritten, eliminating
164 several problems, and making one incompatible change:
170 Formerly, whichever of C<use bigint> or C<use bigrat> was compiled later
171 would take precedence over the other, causing C<hex> and C<oct> not to
172 respect the other pragma when in scope.
176 Using any of these three pragmata would cause C<hex> and C<oct> anywhere
177 else in the program to evalute their arguments in list context and prevent
178 them from inferring $_ when called without arguments.
182 Using any of these three pragmata would make C<oct("1234")> return 1234
183 (for any number not beginning with 0) anywhere in the program. Now "1234"
184 is translated from octal to decimal, whether within the pragma's scope or
189 The global overrides that facilitate lexical use of C<hex> and C<oct> now
190 respect any existing overrides that were in place before the new overrides
191 were installed, falling back to them outside of the scope of C<use bignum>.
195 C<use bignum "hex">, C<use bignum "oct"> and similar invocations for bigint
196 and bigrat now export a C<hex> or C<oct> function, instead of providing a
203 L<Carp> has been upgraded from version 1.26 to 1.27. The C<longmess()> and
204 C<shortmess()> functions are now documented.
208 L<CPANPLUS> has been upgraded from version 0.9131 to 0.9133.
212 L<Data::Dumper> has been upgraded from version 2.135_07 to 2.136. This promotes
213 the previous development release to a stable release.
217 L<Digest::SHA> has been upgraded from version 5.71 to 5.72.
221 L<ExtUtils::CBuilder> has been upgraded from version 0.280208 to 0.280209. A
222 list of symbols to export can now be passed to C<link()> when on Windows, as on
223 other OSes [perl #115100].
227 L<feature> has been upgraded from version 1.30 to 1.31.
231 L<File::Glob> has been upgraded from version 1.17 to 1.18. A
232 space-separated list of patterns return long lists of results no longer
233 results in memory corruption or crashes. This bug was introduced in Perl
234 5.16.0. [perl #114984]
238 L<HTTP::Tiny> has been upgraded from version 0.022 to 0.024. This improves
243 L<Module::CoreList> has been upgraded from version 2.73 to 2.74.
247 L<PerlIO::encoding> has been upgraded from version 0.15 to 0.16. This is
248 the module implementing the ":encoding(...)" I/O layer. It no longer
249 corrupts memory or crashes when the encoding back-end reallocates the
250 buffer or gives it a typeglob or shared hash key scalar.
254 L<threads::shared> has been upgraded from version 1.41 to 1.42. This adds
255 support for dual-valued values as created by
256 L<Scalar::Util::dualvar|Scalar::Util/"dualvar NUM, STRING">.
260 L<Unicode::Collate> hsa been upgraded from version 0.89 to 0.90.
264 L<Unicode::Normalize> has been upgraded from version 1.14 to 1.15.
268 L<warnings> has been upgraded from version 1.14 to 1.15.
272 L<Win32CORE> has been upgraded from version 0.03 to 0.04.
276 =head2 Removed Modules and Pragmata
288 XXX Changes to files in F<pod/> go here. Consider grouping entries by
289 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
291 =head2 New Documentation
293 XXX Changes which create B<new> files in F<pod/> go here.
297 XXX Description of the purpose of the new file here
299 =head2 Changes to Existing Documentation
301 XXX Changes which significantly change existing files in F<pod/> go here.
302 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
311 XXX Description of the change here
317 The following additions or changes have been made to diagnostic output,
318 including warnings and fatal error messages. For the complete list of
319 diagnostic messages, see L<perldiag>.
321 XXX New or changed warnings emitted by the core's C<C> code go here. Also
322 include any changes in L<perldiag> that reconcile it to the C<C> code.
324 =head2 New Diagnostics
326 XXX Newly added diagnostic messages go under here, separated into New Errors
335 XXX L<message|perldiag/"message">
345 XXX L<message|perldiag/"message">
349 =head2 Changes to Existing Diagnostics
351 XXX Changes (i.e. rewording) of diagnostic messages go here
357 The error produced when a module cannot be loaded now includes a hint that
358 the module may need to be installed: "Can't locate hopping.pm in @INC (you
359 may need to install the hopping module) (@INC contains: ...)"
363 =head1 Utility Changes
365 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
366 Most of these are built within the directories F<utils> and F<x2p>.
368 [ List utility changes as a =head3 entry for each utility and =item
369 entries for each change
370 Use L<XXX> with program names to get proper documentation linking. ]
378 F<h2xs> no longer produces invalid code for empty defines. [perl #20636]
382 =head1 Configuration and Compilation
384 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
385 go here. Any other changes to the Perl build process should be listed here.
386 However, any platform-specific changes should be listed in the
387 L</Platform Support> section, instead.
389 [ List changes as a =item entry ].
401 XXX Any significant changes to the testing of a freshly built perl should be
402 listed here. Changes which create B<new> files in F<t/> go here as do any
403 large changes to the testing harness (e.g. when parallel testing was added).
404 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
405 that they represent may be covered elsewhere.
407 [ List each test improvement as a =item entry ]
417 =head1 Platform Support
419 XXX Any changes to platform support should be listed in the sections below.
421 [ Within the sections, list each platform as a =item entry with specific
422 changes as paragraphs below it. ]
426 XXX List any platforms that this version of perl compiles on, that previous
427 versions did not. These will either be enabled by new files in the F<hints/>
428 directories, or new subdirectories and F<README> files at the top level of the
433 =item XXX-some-platform
439 =head2 Discontinued Platforms
441 XXX List any platforms that this version of perl no longer compiles on.
447 Support for MPE/IX has been removed.
451 =head2 Platform-Specific Notes
453 XXX List any changes for specific platforms. This could include configuration
454 and compilation changes or changes in portability/compatibility. However,
455 changes within modules for platforms should generally be listed in the
456 L</Modules and Pragmata> section.
462 The option to build without USE_SOCKETS_AS_HANDLES has been removed.
466 =head1 Internal Changes
468 XXX Changes which affect the interface available to C<XS> code go here. Other
469 significant internal changes for future core maintainers should be noted as
472 [ List each change as a =item entry ]
478 Case-insensitive matching inside a [bracketed] character class with a
479 multi-character fold, no longer excludes one of the possibilities in the
480 circumstances that it used to. [perl #89774].
484 C<PL_formfeed> has been removed.
488 The regular expression engine no longer reads one byte past the end of the
489 target string. While for all internally well-formed scalars this should
490 never have been a problem, this change facilitates clever tricks with
491 string buffers in CPAN modules. [perl #73542]
495 Inside a BEGIN block, C<PL_compcv> now points to the currently-compiling
496 subroutine, rather than the BEGIN block itself.
500 C<mg_length> has been deprecated.
504 C<sv_len> now always returns a byte count and C<sv_len_utf8> a character
505 count. Previously, C<sv_len> and C<sv_len_utf8> were both buggy and would
506 sometimes returns bytes and sometimes characters. C<sv_len_utf8> no longer
507 assumes that its argument is in UTF8. Neither of these creates UTF8 caches
508 for tied or overloaded values or for non-PVs any more.
512 C<sv_mortalcopy> now copies string buffers of shared hash key scalars when
513 called from XS modules [perl #79824].
517 C<RXf_SPLIT> and C<RXf_SKIPWHITE> are no longer used. They are now
522 The new C<RXf_MODIFIES_VARS> flag can be set by custom regular expression
523 engines to indicate that the execution of the regular expression may cause
524 variables to be modified. This lets C<s///> know to skip certain
525 optimisations. Perl's own regular expression engine sets this flag for the
526 special backtracking verbs that set $REGMARK and $REGERROR.
530 =head1 Selected Bug Fixes
532 XXX Important bug fixes in the core language are summarized here. Bug fixes in
533 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
535 [ List each fix as a =item entry ]
541 A bug, case-insensitive regex with UTF8-flagged strings, introduced
542 earlier in the 5.17 series has been fixed. [perl #114982]
546 Attributes applied to lexical variables no longer leak memory.
551 C<dump>, C<goto>, C<last>, C<next>, C<redo> or C<require> followed by a
552 bareword (or version) and then an infix operator is no longer a syntax
553 error. It used to be for those infix operators (like C<+>) that have a
554 different meaning where a term is expected. [perl #105924]
558 C<require a::b . 1> and C<require a::b + 1> no longer produce erroneous
559 ambiguity warnings. [perl #107002]
563 Class method calls are now allowed on any string, and not just strings
564 beginning with an alphanumeric character. [perl #105922]
568 An empty pattern created with C<qr//> used in C<m///> no longer triggers
569 the "empty pattern reuses last pattern" behaviour. [perl #96230]
573 Tying a hash during iteration no longer results in a memory leak.
577 Freeing a tied hash during iteration no longer results in a memory leak.
581 List assignment to a tied array or hash that dies on STORE no longer
582 results in a memory leak.
586 If the hint hash (C<%^H>) is tied, compile-time scope entry (which copies
587 the hint hash) no longer leaks memory if FETCH dies. [perl #107000]
591 Constant folding no longer inappropriately triggers the special
592 C<split " "> behaviour. [perl #94490]
596 C<defined scalar(@array)>, C<defined do { &foo }>, and similar constructs
597 now treat the argument to C<defined> as a simple scalar. [perl #97466]
601 Running a custom debugging that defines no C<*DB::DB> glob or provides a
602 subroutine stub for C<&DB::DB> no longer results in a crash, but an error
603 instead. [perl #114990]
607 C<reset ""> now matches its documentation. C<reset> only resets C<m?...?>
608 patterns when called with no argument. An empty string for an argument now
609 does nothing. (It used to be treated as no argument.) [perl #97958]
613 C<printf> with an argument returning an empty list no longer reads past the
614 end of the stack, resulting in erratic behaviour. [perl #77094]
618 C<--subname> no longer produces erroneous ambiguity warnings.
623 C<v10> is now allowed as a label or package name. This was inadvertently
624 broken when v-strings were added in Perl 5.6. [perl #56880]
628 A regression introduced in 5.17.2 has been fixed, which made C</[\@\\]||/>
629 result in a "panic" error. [perl #115050]
633 C<length>, C<pos>, C<substr> and C<sprintf> could be confused by ties,
634 overloading, references and typeglobs if the stringification of such
635 changed the internal representation to or from UTF8. [perl #114410]
639 utf8::encode now calls FETCH and STORE on tied variables. utf8::decode now
640 calls STORE (it was already calling FETCH).
644 C<$tied =~ s/$non_utf8/$utf8/> no longer loops infinitely if the tied
645 variable returns a Latin-1 string, shared hash key scalar, or reference or
646 typeglob that stringifies as ASCII or Latin-1. This is a regression from
651 C<s///> without /e is now better at detecting when it needs to forego
652 certain optimisations, fixing some buggy cases:
658 Match variables in certain constructs (C<&&>, C<||>, C<..> and others) in
659 the replacement part; e.g., C<s/(.)/$l{$a||$1}/g>. [perl #26986]
663 Aliases to match variables in the replacement.
667 $REGERROR or $REGMARK in the replacement. [perl #49190]
671 An empty pattern (C<s//$foo/>) that causes the last-successful pattern to
672 be used, when that pattern contains code blocks that modify the variables
679 The taintedness of the replacement string no longer affects the taintedness
680 of the return value of C<s///e>.
684 The C<$|> autoflush variable is created on-the-fly when needed. If this
685 happened (e.g., if it was mentioned in a module or eval) when the
686 currently-selected filehandle was a typeglob with an empty IO slot, it used
687 to crash. [perl #115206]
691 Line numbers at the end of a string eval are no longer off by one.
696 @INC filters (subroutines returned by subroutines in @INC) that set $_ to a
697 copy-on-write scalar no longer cause the parser to modify that string
702 C<length($object)> no longer returns the undefined value if the object has
703 string overloading that returns undef. [perl #115260]
707 The use of C<PL_stashcache>, the stash name lookup cache for method calls, has
710 Commit da6b625f78f5f133 in August 2011 inadvertently broke the code that looks
711 up values in C<PL_stashcache>. As it's a only cache, quite correctly everything
712 carried on working without it.
716 =head1 Known Problems
718 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
719 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
720 platform specific bugs also go here.
722 [ List each fix as a =item entry ]
734 XXX If any significant core contributor has died, we've added a short obituary
737 =head1 Acknowledgements
739 XXX Generate this with:
741 perl Porting/acknowledgements.pl v5.17.4..HEAD
743 =head1 Reporting Bugs
745 If you find what you think is a bug, you might check the articles recently
746 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
747 http://rt.perl.org/perlbug/ . There may also be information at
748 http://www.perl.org/ , the Perl Home Page.
750 If you believe you have an unreported bug, please run the L<perlbug> program
751 included with your release. Be sure to trim your bug down to a tiny but
752 sufficient test case. Your bug report, along with the output of C<perl -V>,
753 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
755 If the bug you are reporting has security implications, which make it
756 inappropriate to send to a publicly archived mailing list, then please send it
757 to perl5-security-report@perl.org. This points to a closed subscription
758 unarchived mailing list, which includes all the core committers, who will be
759 able to help assess the impact of issues, figure out a resolution, and help
760 co-ordinate the release of patches to mitigate or fix the problem across all
761 platforms on which Perl is supported. Please only use this address for
762 security issues in the Perl core, not for modules independently distributed on
767 The F<Changes> file for an explanation of how to view exhaustive details on
770 The F<INSTALL> file for how to build Perl.
772 The F<README> file for general stuff.
774 The F<Artistic> and F<Copying> files for copyright information.