This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Missing link in perldelta
[perl5.git] / pod / perldelta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
3=head1 NAME
4
ee0887a9
SH
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
4c793fe3 7
ee0887a9 8perldelta - what is new for perl v5.13.6
4c793fe3 9
ee0887a9 10=head1 DESCRIPTION
0c692eed 11
ee0887a9
SH
12This document describes differences between the 5.13.5 release and
13the 5.13.6 release.
0c692eed 14
ee0887a9
SH
15If you are upgrading from an earlier release such as 5.13.4, first read
16L<perl5135delta>, which describes differences between 5.13.4 and
175.13.5.
0c692eed 18
ee0887a9 19=head1 Notice
0c692eed 20
ee0887a9 21XXX Any important notices here
4c793fe3 22
ee0887a9 23=head1 Core Enhancements
85318b69 24
ee0887a9
SH
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
85318b69 28
ee0887a9 29[ List each enhancement as a =head2 entry ]
85318b69 30
fb85c044
KW
31=head2 C<(?^...)> regex construct added to signify default modifiers
32
33A caret (also called a "cirumflex accent") C<"^"> immediately following
34a C<"(?"> in a regular expression now means that the subexpression is to
35not inherit the surrounding modifiers such as C</i>, but to revert to the
36Perl defaults. Any modifiers following the caret override the defaults.
37
38The stringification of regular expressions now uses this notation. The
39main purpose of this is to allow tests that rely on the stringification
40to not have to change when new modifiers are added. See
41L<perlre/Extended Patterns>.
42
9de15fec
KW
43=head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
44
45These modifiers are currently only available within a C<(?...)> construct.
46
47The C<"l"> modifier says to compile the regular expression as if it were
48in the scope of C<use locale>, even if it is not.
49
50The C<"u"> modifier currently does nothing.
51
52The C<"d"> modifier is used in the scope of C<use locale> to compile the
53regular expression as if it were not in that scope.
54See L<perlre/(?dlupimsx-imsx)>.
55
ee0887a9 56=head1 Security
85318b69 57
ee0887a9
SH
58XXX Any security-related notices go here. In particular, any security
59vulnerabilities closed should be noted here rather than in the
60L</Selected Bug Fixes> section.
85318b69 61
ee0887a9 62[ List each security issue as a =head2 entry ]
4c793fe3
FR
63
64=head1 Incompatible Changes
65
fb85c044
KW
66=head2 Stringification of regexes has changed
67
68Default regular expression modifiers are now notated by using
69C<(?^...)>. Code relying on the old stringification will fail. The
70purpose of this is so that when new modifiers are added, such code will
8477b9ba
KW
71not have to change (after this one time), as the stringification will
72automatically incorporate the new modifiers.
fb85c044
KW
73
74Code that needs to work properly with both old- and new-style regexes
8477b9ba
KW
75can avoid the whole issue by using:
76
77 use re qw(regexp_pattern);
78 my ($pat, $mods) = regexp_pattern($re_ref);
79
80where C<$re_ref> is a reference to a compiled regular expression. Upon
81return, C<$mods> will be a string containing all the non-default
82modifiers used when the regular expression was compiled, and C<$pattern>
83the actual pattern.
84
85If the actual stringification is important, you can use something like
86the following:
fb85c044
KW
87
88 # Accept both old and new-style stringification
89 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
44428a46 90
fb85c044 91And then use C<$modifiers> instead of C<-xism>.
44428a46 92
9de15fec
KW
93=head2 Regular expressions retain their localeness when interpolated
94
95Regular expressions compiled under C<"use locale"> now retain this when
96interpolated into a new regular expression compiled outside a
97C<"use locale">, and vice-versa.
98
99Previously, a regular expression interpolated into another one inherited
100the localeness of the surrounding one, losing whatever state it
101originally had. This is considered a bug fix, but may trip up code that
102has come to rely on the incorrect behavior.
103
ee0887a9 104[ List each incompatible change as a =head2 entry ]
4c793fe3
FR
105
106=head1 Deprecations
107
ee0887a9
SH
108XXX Any deprecated features, syntax, modules etc. should be listed here.
109In particular, deprecated modules should be listed here even if they are
110listed as an updated module in the L</Modules and Pragmata> section.
85318b69 111
ee0887a9 112[ List each deprecation as a =head2 entry ]
4c793fe3
FR
113
114=head1 Performance Enhancements
115
ee0887a9
SH
116XXX Changes which enhance performance without changing behaviour go here. There
117may well be none in a stable release.
4c793fe3 118
ee0887a9 119[ List each enhancement as a =item entry ]
4c793fe3 120
ee0887a9 121=over 4
4c793fe3 122
e2babdfb
FR
123=item *
124
ee0887a9 125XXX
e2babdfb 126
4c793fe3
FR
127=back
128
129=head1 Modules and Pragmata
130
ee0887a9
SH
131XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
132go here. If Module::CoreList is updated, generate an initial draft of the
133following sections using F<Porting/corelist-perldelta.pl>, which prints stub
134entries to STDOUT. Results can be pasted in place of the '=head2' entries
135below. A paragraph summary for important changes should then be added by hand.
136In an ideal world, dual-life modules would have a F<Changes> file that could be
137cribbed.
fc1418b7 138
ee0887a9 139[ Within each section, list entries as a =item entry ]
df91fef1 140
ee0887a9 141=head2 New Modules and Pragmata
ccb45ef4 142
ee0887a9 143=over 4
df91fef1 144
ee0887a9 145=item *
df91fef1 146
ee0887a9 147XXX
e2babdfb 148
ee0887a9 149=back
e2babdfb 150
ee0887a9 151=head2 Updated Modules and Pragmata
fc1418b7 152
ee0887a9 153=over 4
fc1418b7 154
ee0887a9 155=item *
e2babdfb 156
f5b89942
FC
157C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
158
159It allows patterns containing literal parentheses (they no longer need to
160be escaped). On Windows, it no longer adds an extra F<./> to the file names
161returned when the pattern is a relative glob with a drive specification,
162like F<c:*.pl>.
163
164=item *
165
4d1599c3
FC
166C<File::Find> has been upgraded from version 1.17 to 1.18.
167
168It improves handling of backslashes on Windows, so that paths such as
169F<c:\dir\/file> are no longer generated.
170
171=item *
172
de0e3ce7
FR
173C<NEXT> has been upgraded from version 0.64 to 0.65.
174
175=item *
176
1c2dcb3e
CBW
177C<PathTools> has been upgraded from version 3.31_01 to 3.33.
178
179=item *
180
1393fe00
CBW
181C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
182
183=item *
184
1c2dcb3e 185C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
c9a84c8b 186
ee0887a9 187=back
c9a84c8b 188
ee0887a9 189=head2 Removed Modules and Pragmata
c9a84c8b 190
ee0887a9 191=over 4
4c793fe3 192
ee0887a9 193=item *
48c1efd2 194
ee0887a9 195XXX
4c793fe3
FR
196
197=back
198
199=head1 Documentation
200
ee0887a9
SH
201XXX Changes to files in F<pod/> go here. Consider grouping entries by
202file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4c793fe3 203
ee0887a9 204=head2 New Documentation
4c793fe3 205
ee0887a9 206XXX Changes which create B<new> files in F<pod/> go here.
4c793fe3 207
ee0887a9 208=head3 L<XXX>
4c793fe3 209
ee0887a9 210XXX Description of the purpose of the new file here
4c793fe3 211
ee0887a9 212=head2 Changes to Existing Documentation
fc1418b7 213
ee0887a9
SH
214XXX Changes which significantly change existing files in F<pod/> go here.
215However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
216section.
fc1418b7 217
ee0887a9 218=head3 L<XXX>
e2babdfb 219
7bc3efda
SH
220=over 4
221
222=item *
223
ee0887a9 224XXX Description of the change here
7bc3efda
SH
225
226=back
e2babdfb 227
4c793fe3
FR
228=head1 Diagnostics
229
230The following additions or changes have been made to diagnostic output,
231including warnings and fatal error messages. For the complete list of
232diagnostic messages, see L<perldiag>.
233
ee0887a9
SH
234XXX New or changed warnings emitted by the core's C<C> code go here. Also
235include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 236
ee0887a9 237[ Within each section, list entries as a =item entry ]
4c793fe3 238
ee0887a9 239=head2 New Diagnostics
4c793fe3 240
ee0887a9 241XXX Newly added diagnostic messages go here
fc1418b7 242
ee0887a9 243=over 4
fc1418b7
SH
244
245=item *
246
ee0887a9 247XXX
ebce6c40 248
4c793fe3
FR
249=back
250
ee0887a9 251=head2 Changes to Existing Diagnostics
4c793fe3 252
ee0887a9 253XXX Changes (i.e. rewording) of diagnostic messages go here
4c793fe3
FR
254
255=over 4
256
257=item *
258
ee0887a9 259XXX
4c793fe3
FR
260
261=back
262
ee0887a9 263=head1 Utility Changes
4c793fe3 264
ee0887a9
SH
265XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
266here. Most of these are built within the directories F<utils> and F<x2p>.
4c793fe3 267
ee0887a9
SH
268[ List utility changes as a =head3 entry for each utility and =item
269entries for each change
270Use L<XXX> with program names to get proper documentation linking. ]
fc1418b7 271
ee0887a9 272=head3 L<XXX>
fc1418b7 273
ee0887a9 274=over 4
4c793fe3 275
44428a46
FC
276=item *
277
ee0887a9 278XXX
44428a46 279
4c793fe3
FR
280=back
281
ee0887a9 282=head1 Configuration and Compilation
4c793fe3 283
ee0887a9
SH
284XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
285go here. Any other changes to the Perl build process should be listed here.
286However, any platform-specific changes should be listed in the
287L</Platform Support> section, instead.
4c793fe3 288
ee0887a9 289[ List changes as a =item entry ].
4c793fe3 290
0c692eed
FR
291=over 4
292
293=item *
294
ee0887a9 295XXX
0c692eed
FR
296
297=back
4c793fe3 298
ee0887a9 299=head1 Testing
0c692eed 300
ee0887a9
SH
301XXX Any significant changes to the testing of a freshly built perl should be
302listed here. Changes which create B<new> files in F<t/> go here as do any
303large changes to the testing harness (e.g. when parallel testing was added).
304Changes to existing files in F<t/> aren't worth summarising, although the bugs
305that they represent may be covered elsewhere.
0c692eed 306
ee0887a9 307[ List each test improvement as a =item entry ]
0c692eed 308
ee0887a9 309=over 4
0c692eed
FR
310
311=item *
312
ee0887a9 313XXX
4c793fe3
FR
314
315=back
316
ee0887a9 317=head1 Platform Support
4c793fe3 318
ee0887a9 319XXX Any changes to platform support should be listed in the sections below.
4c793fe3 320
ee0887a9
SH
321[ Within the sections, list each platform as a =item entry with specific
322changes as paragraphs below it. ]
4c793fe3 323
ee0887a9 324=head2 New Platforms
0c692eed 325
ee0887a9
SH
326XXX List any platforms that this version of perl compiles on, that previous
327versions did not. These will either be enabled by new files in the F<hints/>
328directories, or new subdirectories and F<README> files at the top level of the
329source tree.
0c692eed 330
ee0887a9 331=over 4
0c692eed 332
ee0887a9 333=item XXX-some-platform
0c692eed 334
ee0887a9 335XXX
0c692eed 336
ee0887a9 337=back
0c692eed 338
ee0887a9 339=head2 Discontinued Platforms
4c793fe3 340
ee0887a9 341XXX List any platforms that this version of perl no longer compiles on.
8ebb9810 342
ee0887a9 343=over 4
8ebb9810 344
ee0887a9 345=item XXX-some-platform
48c1efd2 346
ee0887a9 347XXX
48c1efd2 348
ee0887a9 349=back
44428a46 350
ee0887a9 351=head2 Platform-Specific Notes
44428a46 352
ee0887a9
SH
353XXX List any changes for specific platforms. This could include configuration
354and compilation changes or changes in portability/compatibility. However,
355changes within modules for platforms should generally be listed in the
356L</Modules and Pragmata> section.
f4beb78f 357
ee0887a9 358=over 4
f4beb78f 359
ee0887a9 360=item XXX-some-platform
ccb45ef4 361
ee0887a9 362XXX
ccb45ef4 363
ee0887a9 364=back
85318b69 365
ee0887a9 366=head1 Internal Changes
85318b69 367
ee0887a9
SH
368XXX Changes which affect the interface available to C<XS> code go here.
369Other significant internal changes for future core maintainers should
370be noted as well.
85318b69 371
ee0887a9 372[ List each test improvement as a =item entry ]
80b6a949 373
ee0887a9 374=over 4
80b6a949 375
e2babdfb
FR
376=item *
377
a5763045
FC
378See L</Regular expressions retain their localeness when interpolated>,
379above.
e2babdfb 380
ee0887a9 381=back
e2babdfb 382
ee0887a9 383=head1 Selected Bug Fixes
e2babdfb 384
ee0887a9
SH
385XXX Important bug fixes in the core language are summarised here.
386Bug fixes in files in F<ext/> and F<lib/> are best summarised in
387L</Modules and Pragmata>.
e2babdfb 388
ee0887a9 389[ List each fix as a =item entry ]
346e4e56 390
ee0887a9 391=over 4
346e4e56 392
78846812
FR
393=item *
394
4e9f151b
FC
395A 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
397to have the wrong values on subsequent iterations. This can happen when an
e54f3f30
FC
398array or hash subscript is interpolated in the right-hand side, as in
399C<s|(.)|@a{ print($1), /./ }|g>
400L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
401
402=item *
403
404Constant-folding used to cause
405
406 $text =~ ( 1 ? /phoo/ : /bear/)
407
408to turn into
409
410 $text =~ /phoo/
411
412at compile time. Now it correctly matches against C<$_>
413L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
78846812 414
a5763045
FC
415=item *
416
417Parsing Perl code (either with string C<eval> or by loading modules) from
418within a C<UNITCHECK> block no longer causes the interpreter to crash
419L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
420
5a9a79a4
FC
421=item *
422
423When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
424to the lines of the main program. In the past, this sometimes worked and
425sometimes did not, depending on what order things happened to be arranged
b45e2413
FC
426in memory
427L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
5a9a79a4 428
4c793fe3
FR
429=back
430
962fbe1d
SH
431=head1 Known Problems
432
ee0887a9
SH
433XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
434tests that had to be C<TODO>ed for the release would be noted here, unless
435they were specific to a particular platform (see below).
962fbe1d 436
ee0887a9
SH
437This is a list of some significant unfixed bugs, which are regressions
438from either 5.XXX.XXX or 5.XXX.XXX.
962fbe1d 439
ee0887a9
SH
440[ List each fix as a =item entry ]
441
442=over 4
08d032c0
SH
443
444=item *
445
ee0887a9 446XXX
962fbe1d
SH
447
448=back
449
ee0887a9 450=head1 Obituary
4c793fe3 451
ee0887a9
SH
452XXX If any significant core contributor has died, we've added a short obituary
453here.
0195fb5f 454
ee0887a9 455=head1 Acknowledgements
0195fb5f 456
ee0887a9 457XXX The list of people to thank goes here.
4c793fe3
FR
458
459=head1 Reporting Bugs
460
461If you find what you think is a bug, you might check the articles
462recently posted to the comp.lang.perl.misc newsgroup and the perl
463bug database at http://rt.perl.org/perlbug/ . There may also be
464information at http://www.perl.org/ , the Perl Home Page.
465
466If you believe you have an unreported bug, please run the B<perlbug>
467program included with your release. Be sure to trim your bug down
468to a tiny but sufficient test case. Your bug report, along with the
469output of C<perl -V>, will be sent off to perlbug@perl.org to be
470analysed by the Perl porting team.
471
472If the bug you are reporting has security implications, which make it
473inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 474it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
475unarchived mailing list, which includes all the core committers, who be able
476to help assess the impact of issues, figure out a resolution, and help
477co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 478platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
479security issues in the Perl core, not for modules independently
480distributed on CPAN.
481
482=head1 SEE ALSO
483
484The F<Changes> file for an explanation of how to view exhaustive details
485on what changed.
486
487The F<INSTALL> file for how to build Perl.
488
489The F<README> file for general stuff.
490
491The F<Artistic> and F<Copying> files for copyright information.
492
493=cut