5 [ this is a template for a new perldelta file. Any text flagged as
6 XXX needs to be processed before release. ]
8 perldelta - what is new for perl v5.17.1
12 This document describes differences between the 5.17.0 release and
15 If you are upgrading from an earlier release such as 5.16.0, first read
16 L<perl5170delta>, which describes differences between 5.16.0 and
21 XXX Any important notices here
23 =head1 Core Enhancements
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
29 [ List each enhancement as a =head2 entry ]
31 =head2 More CORE:: subs
33 Several more built-in functions have been added as subroutines to the
34 CORE:: namespace, namely, those non-overridable keywords that can be
35 implemented without custom parsers: C<defined>, C<delete>, C<exists>,
36 C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, C<undef>,
38 As some of these have prototypes, C<prototype('CORE::...')> has been
39 changed not to make a distinction between overridable and non-overridable
40 keywords. This is to make C<prototype('CORE::pos')> consistent with
41 C<prototype(&CORE::pos)>.
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 =head2 C</(?{})/> and C</(??{}> have been heavily reworked.
61 The implementation of this feature has been almost completely written.
62 Although its main intent is is to fix bugs, some behaviours, especially
63 related to the scope of lexical variables, will have changed. This is
64 described more fully in the L</Selected Bug Fixes> section.
66 =head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
68 Unicode 6.0 reused the name "BELL" for a different code point than it
69 traditionally had meant. Since Perl v5.14, use of this name still
70 referred to U+0007, but would raise a deprecated warning. Now, "BELL"
71 refers to U+1F514, and the name for U+0007 is "ALERT". All the
72 functions in L<charnames> have been correspondingly updated.
74 =head2 Alphanumeric operators must now be separated from the closing
75 delimter of regular expressions
77 You may no longer write something like:
81 Instead you must write
85 with whitespace separating the operator from the closing delimiter of
86 the regular expression. Not having whitespace has resulted in a
87 deprecated warning since Perl v5.14.0.
91 XXX Any deprecated features, syntax, modules etc. should be listed here.
92 In particular, deprecated modules should be listed here even if they are
93 listed as an updated module in the L</Modules and Pragmata> section.
95 [ List each deprecation as a =head2 entry ]
97 =head1 Performance Enhancements
99 XXX Changes which enhance performance without changing behaviour go here. There
100 may well be none in a stable release.
102 [ List each enhancement as a =item entry ]
112 =head1 Modules and Pragmata
114 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
115 go here. If Module::CoreList is updated, generate an initial draft of the
116 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
117 entries to STDOUT. Results can be pasted in place of the '=head2' entries
118 below. A paragraph summary for important changes should then be added by hand.
119 In an ideal world, dual-life modules would have a F<Changes> file that could be
122 [ Within each section, list entries as a =item entry ]
124 =head2 New Modules and Pragmata
134 =head2 Updated Modules and Pragmata
140 L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
142 Manifest files are now correctly embedded for those versions of VC++ which
147 L<B> has been upgraded from version 1.35 to 1.36.
149 C<B::COP::stashlen> has been replaced with C<B::COP::stashoff>.
151 C<B::COP::stashpv> now supports UTF8 package names and embedded nulls.
155 L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
157 It no longer fails when trying to embed manifests on Windows
158 [perl #111782, #111798].
162 L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
164 There are no visible changes, only minor internal refactorings.
168 L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
170 C<abs2rel> could produce incorrect results when given two relative paths or
171 the root directory twice [perl #111510].
175 L<IO> has been upgraded from version 1.25_06 to 1.25_07.
177 C<sync()> can now be called on read-only file handles [perl #64772].
181 L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
183 The option C<--libpods> has been re-instated. It is deprecated, and its use
184 does nothing other than issue a warning that it is no longer supported.
188 L<Unicode::UCD> has been upgraded from version 0.43 to 0.44.
190 This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
191 that returns all the casefolds.
195 L<Scalar::Util> has been upgraded from version 1.23 to version 1.25.
199 =head2 Removed Modules and Pragmata
211 XXX Changes to files in F<pod/> go here. Consider grouping entries by
212 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
214 =head2 New Documentation
216 XXX Changes which create B<new> files in F<pod/> go here.
220 XXX Description of the purpose of the new file here
222 =head2 Changes to Existing Documentation
224 XXX Changes which significantly change existing files in F<pod/> go here.
225 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
234 L<perlfaq> has been synchronised with version 5.0150040 from C<CPAN>.
240 The following additions or changes have been made to diagnostic output,
241 including warnings and fatal error messages. For the complete list of
242 diagnostic messages, see L<perldiag>.
244 XXX New or changed warnings emitted by the core's C<C> code go here. Also
245 include any changes in L<perldiag> that reconcile it to the C<C> code.
247 [ Within each section, list entries as a =item entry that links to perldiag,
252 L<Invalid version object|perldiag/"Invalid version object">
255 =head2 New Diagnostics
257 XXX Newly added diagnostic messages go here
265 XXX L<message|perldiag/"message">
275 XXX L<message|perldiag/"message">
279 =head2 Changes to Existing Diagnostics
281 XXX Changes (i.e. rewording) of diagnostic messages go here
287 XXX Describe change here
291 =head2 Removals of Diagnostics
297 The "Runaway prototype" warning that occurs in bizarre cases has been
298 removed as being unhelpful and inconsistent.
302 The "Not a format reference" error has been removed, as the only case in
303 which it could be triggered was a bug.
307 =head1 Utility Changes
309 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
310 here. Most of these are built within the directories F<utils> and F<x2p>.
312 [ List utility changes as a =head3 entry for each utility and =item
313 entries for each change
314 Use L<XXX> with program names to get proper documentation linking. ]
326 =head1 Configuration and Compilation
328 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
329 go here. Any other changes to the Perl build process should be listed here.
330 However, any platform-specific changes should be listed in the
331 L</Platform Support> section, instead.
333 [ List changes as a =item entry ].
345 XXX Any significant changes to the testing of a freshly built perl should be
346 listed here. Changes which create B<new> files in F<t/> go here as do any
347 large changes to the testing harness (e.g. when parallel testing was added).
348 Changes to existing files in F<t/> aren't worth summarising, although the bugs
349 that they represent may be covered elsewhere.
351 [ List each test improvement as a =item entry ]
361 =head1 Platform Support
363 XXX Any changes to platform support should be listed in the sections below.
365 [ Within the sections, list each platform as a =item entry with specific
366 changes as paragraphs below it. ]
370 XXX List any platforms that this version of perl compiles on, that previous
371 versions did not. These will either be enabled by new files in the F<hints/>
372 directories, or new subdirectories and F<README> files at the top level of the
377 =item XXX-some-platform
383 =head2 Discontinued Platforms
385 XXX List any platforms that this version of perl no longer compiles on.
389 =item XXX-some-platform
395 =head2 Platform-Specific Notes
397 XXX List any changes for specific platforms. This could include configuration
398 and compilation changes or changes in portability/compatibility. However,
399 changes within modules for platforms should generally be listed in the
400 L</Modules and Pragmata> section.
406 C<link> on Win32 now attempts to set C<$!> to more appropriate values
407 based on the Win32 API error code. [perl #112272]
411 =head1 Internal Changes
413 XXX Changes which affect the interface available to C<XS> code go here.
414 Other significant internal changes for future core maintainers should
417 [ List each change as a =item entry ]
423 The C<study> function was made a no-op in 5.16. It was simply disabled via
424 a C<return> statement; the code was left in place. Now the code supporting
425 what C<study> used to do has been removed.
429 Under threaded perls, there is no longer a separate PV allocated for every
430 COP to store its package name (C<< cop->stashpv >>). Instead, there is an
431 offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
432 holds stash pointers.
436 In the pluggable regex API, the C<regexp_engine> struct has acquired a new
437 field C<op_comp>, which is currently just for perl's internal use, and
438 should be initialised to NULL by other regexp plugin modules.
442 =head1 Selected Bug Fixes
444 XXX Important bug fixes in the core language are summarised here.
445 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
446 L</Modules and Pragmata>.
448 [ List each fix as a =item entry ]
454 The implementation of code blocks in regular expressions, such as C<(?{})>
455 and C<(??{})> has been heavily reworked to eliminate a whole slew of bugs.
456 The main user-visible changes are:
462 Code blocks within patterns are now parsed in the same pass as the
463 surrounding code; in particular it is no longer necessary to have balanced
464 braces: this now works:
468 This means that this error message is longer generated:
470 Sequence (?{...}) not terminated or not {}-balanced in regex
472 but a new error may be seen:
474 Sequence (?{...}) not terminated with ')'
476 In addition, literal code blocks within run-time patterns are only
477 compiled once, at perl compile-time:
480 # this 'FOO' block of code is compiled once,
481 # at the same time as the surrounding 'for' loop
487 Lexical variables are now sane as regards scope, recursion and closure
488 behaviour. In particular, C</A(?{B})C/> behaves (from a closure viewpoint)
489 exactly like C</A/ && do { B } && /C/>, while C<qr/A(?{B})C/> is like
490 C<sub {/A/ && do { B } && /C/}>. So this code now works how you might
491 expect, creating three regexes that match 0, 1, and 2:
494 push @r, qr/^(??{$i})$/;
496 "1" =~ $r[1]; # matches
500 The C<use re 'eval'> pragma is now only required for code blocks defined
501 at runtime; in particular in the following, the text of the $r pattern is
502 still interpolated into the new pattern and recompiled, but the individual
503 compiled code-blocks within $r are reused rather than being recompiled,
504 and C<use re 'eval'> isn't needed any more:
506 my $r = qr/abc(?{....})def/;
511 Flow control operators no longer crash. Each code block runs in a new
512 dynamic scope, so C<next> etc. will not see any enclosing loops and
513 C<caller> will not see any calling subroutines. C<return> returns a value
514 from the code block, not from any enclosing subroutine.
518 Perl normally caches the compilation of run-time patterns, and doesn't
519 recompile if the pattern hasn't changed; but this is now disabled if
520 required for the correct behaviour of closures; for example:
522 my $code = '(??{$x})';
524 # recompile to see fresh value of $x each time
531 The C</msix> and C<(?msix)> etc. flags are now propagated into the return
532 value from C<(??{})>; this now works:
534 "AB" =~ /a(??{'b'})/i;
538 Warnings and errors will appear to come from the surrounding code (or for
539 run-time code blocks, from an eval) rather than from an C<re_eval>:
541 use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
546 foo at (re_eval 1) line 1.
547 foo at (re_eval 2) line 1.
551 foo at (eval 1) line 1.
552 foo at /some/prog line 2.
558 Perl now works as well as can be expected on all releases of Unicode so
559 far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
560 various bugs for earlier releases; the older the release the more
565 C<vec> no longer produces "uninitialized" warnings in lvalue context
570 An optimisation involving fixed strings in regular expressions could cause
571 a severe performance penalty in edge cases. This has been fixed
576 The "Can't find an opnumber" message that C<prototype> produces when passed
577 a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
578 nulls through unchanged [perl #97478].
582 C<prototype> now treats magical variables like C<$1> the same way as
583 non-magical variables when checking for the CORE:: prefix, instead of
584 treating them as subroutine names.
588 Under threaded perls, a run-time code block in a regular expression could
589 corrupt the package name stored in the op tree, resulting in bad reads
590 in C<caller>, and possibly crashes [perl #113060].
594 Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
595 closure) no longer results in a copy of the subroutine (or assertion
596 failures on debugging builds).
600 C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
601 the current package has been assigned over (as in
602 C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
606 If a package is deleted by code that it calls, it is possible for C<caller>
607 to see a stack frame belonging to that deleted package. C<caller> could
608 crash if the stash's memory address was reused for a scalar and a
609 substitution was performed on the same scalar [perl #113486].
613 C<UNIVERSAL::can> no longer treats its first argument differently
614 depending on whether it is a string or number internally.
618 C<open> with "<&" for the mode checks to see whether the third argument is
619 a number, in determining whether to treat it as a file descriptor or a
620 handle name. Magical variables like C<$1> were always failing the numeric
621 check and being treated as handle names.
625 C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
626 fixes. FETCH is only called once now on a tied argument or a tied C<$@>
627 [perl #97480]. Tied variables returning objects that stringify as "" are
628 no longer ignored. A tied C<$@> that happened to return a reference the
629 I<previous> time is was used is no longer ignored.
633 C<warn ""> now treats C<$@> with a number in it the same way, regardless of
634 whether it happened via C<$@=3> or C<$@="3">. It used to ignore the
635 former. Now it appends "\t...caught", as it has always done with
640 Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
641 floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms
646 Unary negation no longer treats a string as a number if the string happened
647 to be used as a number some time. So, if $x contains the string "dogs",
648 C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
652 In Perl 5.14, C<-'-10'> was fixed to return "10", not "+10". But magical
653 variables (C<$1>, ties) were not fixed till now [perl #57706].
657 Unary negation now treats strings consistently, regardless of the internal
662 A regression introduced in Perl v5.16.0 involving
663 C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed. Only the first
664 instance is supposed to be meaningful if a character appears more than
665 once in C<I<SEARCHLIST>>. Under some circumstances, the final instance
666 was overriding all earlier ones. [perl #113584]
670 Regular expressions like C<qr/\87/> previously silently inserted a NUL
671 character, thus matching as if it had been written C<qr/\00087/>. Now it
672 matchs as if it had been written as C<qr/87/>, with a message that the
673 sequence C<"\8"> is unrecognized.
677 =head1 Known Problems
679 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
680 tests that had to be C<TODO>ed for the release would be noted here, unless
681 they were specific to a particular platform (see below).
683 This is a list of some significant unfixed bugs, which are regressions
684 from either 5.XXX.XXX or 5.XXX.XXX.
686 [ List each fix as a =item entry ]
698 XXX If any significant core contributor has died, we've added a short obituary
701 =head1 Acknowledgements
703 XXX Generate this with:
705 perl Porting/acknowledgements.pl v5.17.0..HEAD
707 =head1 Reporting Bugs
709 If you find what you think is a bug, you might check the articles
710 recently posted to the comp.lang.perl.misc newsgroup and the perl
711 bug database at http://rt.perl.org/perlbug/ . There may also be
712 information at http://www.perl.org/ , the Perl Home Page.
714 If you believe you have an unreported bug, please run the L<perlbug>
715 program included with your release. Be sure to trim your bug down
716 to a tiny but sufficient test case. Your bug report, along with the
717 output of C<perl -V>, will be sent off to perlbug@perl.org to be
718 analysed by the Perl porting team.
720 If the bug you are reporting has security implications, which make it
721 inappropriate to send to a publicly archived mailing list, then please send
722 it to perl5-security-report@perl.org. This points to a closed subscription
723 unarchived mailing list, which includes
724 all the core committers, who will be able
725 to help assess the impact of issues, figure out a resolution, and help
726 co-ordinate the release of patches to mitigate or fix the problem across all
727 platforms on which Perl is supported. Please only use this address for
728 security issues in the Perl core, not for modules independently
733 The F<Changes> file for an explanation of how to view exhaustive details
736 The F<INSTALL> file for how to build Perl.
738 The F<README> file for general stuff.
740 The F<Artistic> and F<Copying> files for copyright information.