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.13.6
12 This document describes differences between the 5.13.5 release and
15 If you are upgrading from an earlier release such as 5.13.4, first read
16 L<perl5135delta>, which describes differences between 5.13.4 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 C<(?^...)> regex construct added to signify default modifiers
33 A caret (also called a "cirumflex accent") C<"^"> immediately following
34 a C<"(?"> in a regular expression now means that the subexpression is to
35 not inherit the surrounding modifiers such as C</i>, but to revert to the
36 Perl defaults. Any modifiers following the caret override the defaults.
38 The stringification of regular expressions now uses this notation. The
39 main purpose of this is to allow tests that rely on the stringification
40 to not have to change when new modifiers are added. See
41 L<perlre/Extended Patterns>.
43 =head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
45 These modifiers are currently only available within a C<(?...)> construct.
47 The C<"l"> modifier says to compile the regular expression as if it were
48 in the scope of C<use locale>, even if it is not.
50 The C<"u"> modifier currently does nothing.
52 The C<"d"> modifier is used in the scope of C<use locale> to compile the
53 regular expression as if it were not in that scope.
54 See L<perlre/(?dlupimsx-imsx)>.
58 XXX Any security-related notices go here. In particular, any security
59 vulnerabilities closed should be noted here rather than in the
60 L</Selected Bug Fixes> section.
62 [ List each security issue as a =head2 entry ]
64 =head1 Incompatible Changes
66 =head2 Stringification of regexes has changed
68 Default regular expression modifiers are now notated by using
69 C<(?^...)>. Code relying on the old stringification will fail. The
70 purpose of this is so that when new modifiers are added, such code will
71 not have to change (after this one time), as the stringification will
72 automatically incorporate the new modifiers.
74 Code that needs to work properly with both old- and new-style regexes
75 can avoid the whole issue by using:
77 use re qw(regexp_pattern);
78 my ($pat, $mods) = regexp_pattern($re_ref);
80 where C<$re_ref> is a reference to a compiled regular expression. Upon
81 return, C<$mods> will be a string containing all the non-default
82 modifiers used when the regular expression was compiled, and C<$pattern>
85 If the actual stringification is important, you can use something like
88 # Accept both old and new-style stringification
89 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
91 And then use C<$modifiers> instead of C<-xism>.
93 =head2 Regular expressions retain their localeness when interpolated
95 Regular expressions compiled under C<"use locale"> now retain this when
96 interpolated into a new regular expression compiled outside a
97 C<"use locale">, and vice-versa.
99 Previously, a regular expression interpolated into another one inherited
100 the localeness of the surrounding one, losing whatever state it
101 originally had. This is considered a bug fix, but may trip up code that
102 has come to rely on the incorrect behavior.
104 [ List each incompatible change as a =head2 entry ]
108 XXX Any deprecated features, syntax, modules etc. should be listed here.
109 In particular, deprecated modules should be listed here even if they are
110 listed as an updated module in the L</Modules and Pragmata> section.
112 [ List each deprecation as a =head2 entry ]
114 =head1 Performance Enhancements
116 XXX Changes which enhance performance without changing behaviour go here. There
117 may well be none in a stable release.
119 [ List each enhancement as a =item entry ]
129 =head1 Modules and Pragmata
131 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
132 go here. If Module::CoreList is updated, generate an initial draft of the
133 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
134 entries to STDOUT. Results can be pasted in place of the '=head2' entries
135 below. A paragraph summary for important changes should then be added by hand.
136 In an ideal world, dual-life modules would have a F<Changes> file that could be
139 [ Within each section, list entries as a =item entry ]
141 =head2 New Modules and Pragmata
151 =head2 Updated Modules and Pragmata
157 C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
159 It allows patterns containing literal parentheses (they no longer need to
160 be escaped). On Windows, it no longer adds an extra F<./> to the file names
161 returned when the pattern is a relative glob with a drive specification,
166 C<File::Find> has been upgraded from version 1.17 to 1.18.
168 It improves handling of backslashes on Windows, so that paths such as
169 F<c:\dir\/file> are no longer generated.
173 C<NEXT> has been upgraded from version 0.64 to 0.65.
177 C<PathTools> has been upgraded from version 3.31_01 to 3.33.
181 C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
185 C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
189 =head2 Removed Modules and Pragmata
201 XXX Changes to files in F<pod/> go here. Consider grouping entries by
202 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
204 =head2 New Documentation
206 XXX Changes which create B<new> files in F<pod/> go here.
210 XXX Description of the purpose of the new file here
212 =head2 Changes to Existing Documentation
214 XXX Changes which significantly change existing files in F<pod/> go here.
215 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
224 XXX Description of the change here
230 The following additions or changes have been made to diagnostic output,
231 including warnings and fatal error messages. For the complete list of
232 diagnostic messages, see L<perldiag>.
234 XXX New or changed warnings emitted by the core's C<C> code go here. Also
235 include any changes in L<perldiag> that reconcile it to the C<C> code.
237 [ Within each section, list entries as a =item entry ]
239 =head2 New Diagnostics
241 XXX Newly added diagnostic messages go here
251 =head2 Changes to Existing Diagnostics
253 XXX Changes (i.e. rewording) of diagnostic messages go here
263 =head1 Utility Changes
265 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
266 here. Most of these are built within the directories F<utils> and F<x2p>.
268 [ List utility changes as a =head3 entry for each utility and =item
269 entries for each change
270 Use L<XXX> with program names to get proper documentation linking. ]
282 =head1 Configuration and Compilation
284 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
285 go here. Any other changes to the Perl build process should be listed here.
286 However, any platform-specific changes should be listed in the
287 L</Platform Support> section, instead.
289 [ List changes as a =item entry ].
301 XXX Any significant changes to the testing of a freshly built perl should be
302 listed here. Changes which create B<new> files in F<t/> go here as do any
303 large changes to the testing harness (e.g. when parallel testing was added).
304 Changes to existing files in F<t/> aren't worth summarising, although the bugs
305 that they represent may be covered elsewhere.
307 [ List each test improvement as a =item entry ]
317 =head1 Platform Support
319 XXX Any changes to platform support should be listed in the sections below.
321 [ Within the sections, list each platform as a =item entry with specific
322 changes as paragraphs below it. ]
326 XXX List any platforms that this version of perl compiles on, that previous
327 versions did not. These will either be enabled by new files in the F<hints/>
328 directories, or new subdirectories and F<README> files at the top level of the
333 =item XXX-some-platform
339 =head2 Discontinued Platforms
341 XXX List any platforms that this version of perl no longer compiles on.
345 =item XXX-some-platform
351 =head2 Platform-Specific Notes
353 XXX List any changes for specific platforms. This could include configuration
354 and compilation changes or changes in portability/compatibility. However,
355 changes within modules for platforms should generally be listed in the
356 L</Modules and Pragmata> section.
360 =item XXX-some-platform
366 =head1 Internal Changes
368 XXX Changes which affect the interface available to C<XS> code go here.
369 Other significant internal changes for future core maintainers should
372 [ List each test improvement as a =item entry ]
378 See L</Regular expressions retain their localeness when interpolated>,
383 =head1 Selected Bug Fixes
385 XXX Important bug fixes in the core language are summarised here.
386 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
387 L</Modules and Pragmata>.
389 [ List each fix as a =item entry ]
395 A regular expression match in the right-hand side of a global substitution
396 (C<s///g>) that is in the same scope will no longer cause match variables
397 to have the wrong values on subsequent iterations. This can happen when an
398 array or hash subscript is interpolated in the right-hand side, as in
399 C<s|(.)|@a{ print($1), /./ }|g>
400 L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
404 Constant-folding used to cause
406 $text =~ ( 1 ? /phoo/ : /bear/)
412 at compile time. Now it correctly matches against C<$_>
413 L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
417 Parsing Perl code (either with string C<eval> or by loading modules) from
418 within a C<UNITCHECK> block no longer causes the interpreter to crash
419 L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
423 When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
424 to the lines of the main program. In the past, this sometimes worked and
425 sometimes did not, depending on what order things happened to be arranged
430 =head1 Known Problems
432 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
433 tests that had to be C<TODO>ed for the release would be noted here, unless
434 they were specific to a particular platform (see below).
436 This is a list of some significant unfixed bugs, which are regressions
437 from either 5.XXX.XXX or 5.XXX.XXX.
439 [ List each fix as a =item entry ]
451 XXX If any significant core contributor has died, we've added a short obituary
454 =head1 Acknowledgements
456 XXX The list of people to thank goes here.
458 =head1 Reporting Bugs
460 If you find what you think is a bug, you might check the articles
461 recently posted to the comp.lang.perl.misc newsgroup and the perl
462 bug database at http://rt.perl.org/perlbug/ . There may also be
463 information at http://www.perl.org/ , the Perl Home Page.
465 If you believe you have an unreported bug, please run the B<perlbug>
466 program included with your release. Be sure to trim your bug down
467 to a tiny but sufficient test case. Your bug report, along with the
468 output of C<perl -V>, will be sent off to perlbug@perl.org to be
469 analysed by the Perl porting team.
471 If the bug you are reporting has security implications, which make it
472 inappropriate to send to a publicly archived mailing list, then please send
473 it to perl5-security-report@perl.org. This points to a closed subscription
474 unarchived mailing list, which includes all the core committers, who be able
475 to help assess the impact of issues, figure out a resolution, and help
476 co-ordinate the release of patches to mitigate or fix the problem across all
477 platforms on which Perl is supported. Please only use this address for
478 security issues in the Perl core, not for modules independently
483 The F<Changes> file for an explanation of how to view exhaustive details
486 The F<INSTALL> file for how to build Perl.
488 The F<README> file for general stuff.
490 The F<Artistic> and F<Copying> files for copyright information.