This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix typo in perl5135delta
[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
e23837fb 75can avoid the whole issue by using (for Perls since 5.9.5):
8477b9ba
KW
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
e23837fb
KW
85If the actual stringification is important, or older Perls need to be
86supported, you can use something like the 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,
6481ebaf
FC
162like F<c:*.pl>
163L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
f5b89942
FC
164
165=item *
166
4d1599c3
FC
167C<File::Find> has been upgraded from version 1.17 to 1.18.
168
169It improves handling of backslashes on Windows, so that paths such as
6481ebaf
FC
170F<c:\dir\/file> are no longer generated
171L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
4d1599c3
FC
172
173=item *
174
de0e3ce7
FR
175C<NEXT> has been upgraded from version 0.64 to 0.65.
176
177=item *
178
1c2dcb3e
CBW
179C<PathTools> has been upgraded from version 3.31_01 to 3.33.
180
181=item *
182
6481ebaf
FC
183C<sigtrap> has been upgraded from version 1.04 to 1.05.
184
185It no longer tries to modify read-only arguments when generating a
186backtrace
187L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
188
189=item *
190
1393fe00
CBW
191C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
192
193=item *
194
1c2dcb3e 195C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
c9a84c8b 196
ee0887a9 197=back
c9a84c8b 198
ee0887a9 199=head2 Removed Modules and Pragmata
c9a84c8b 200
ee0887a9 201=over 4
4c793fe3 202
ee0887a9 203=item *
48c1efd2 204
ee0887a9 205XXX
4c793fe3
FR
206
207=back
208
209=head1 Documentation
210
ee0887a9
SH
211XXX Changes to files in F<pod/> go here. Consider grouping entries by
212file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4c793fe3 213
ee0887a9 214=head2 New Documentation
4c793fe3 215
ee0887a9 216XXX Changes which create B<new> files in F<pod/> go here.
4c793fe3 217
ee0887a9 218=head3 L<XXX>
4c793fe3 219
ee0887a9 220XXX Description of the purpose of the new file here
4c793fe3 221
ee0887a9 222=head2 Changes to Existing Documentation
fc1418b7 223
ee0887a9
SH
224XXX Changes which significantly change existing files in F<pod/> go here.
225However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
226section.
fc1418b7 227
ee0887a9 228=head3 L<XXX>
e2babdfb 229
7bc3efda
SH
230=over 4
231
232=item *
233
ee0887a9 234XXX Description of the change here
7bc3efda
SH
235
236=back
e2babdfb 237
4c793fe3
FR
238=head1 Diagnostics
239
240The following additions or changes have been made to diagnostic output,
241including warnings and fatal error messages. For the complete list of
242diagnostic messages, see L<perldiag>.
243
ee0887a9
SH
244XXX New or changed warnings emitted by the core's C<C> code go here. Also
245include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 246
ee0887a9 247[ Within each section, list entries as a =item entry ]
4c793fe3 248
ee0887a9 249=head2 New Diagnostics
4c793fe3 250
ee0887a9 251XXX Newly added diagnostic messages go here
fc1418b7 252
ee0887a9 253=over 4
fc1418b7
SH
254
255=item *
256
ee0887a9 257XXX
ebce6c40 258
4c793fe3
FR
259=back
260
ee0887a9 261=head2 Changes to Existing Diagnostics
4c793fe3 262
ee0887a9 263XXX Changes (i.e. rewording) of diagnostic messages go here
4c793fe3
FR
264
265=over 4
266
267=item *
268
ee0887a9 269XXX
4c793fe3
FR
270
271=back
272
ee0887a9 273=head1 Utility Changes
4c793fe3 274
ee0887a9
SH
275XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
276here. Most of these are built within the directories F<utils> and F<x2p>.
4c793fe3 277
ee0887a9
SH
278[ List utility changes as a =head3 entry for each utility and =item
279entries for each change
280Use L<XXX> with program names to get proper documentation linking. ]
fc1418b7 281
ee0887a9 282=head3 L<XXX>
fc1418b7 283
ee0887a9 284=over 4
4c793fe3 285
44428a46
FC
286=item *
287
ee0887a9 288XXX
44428a46 289
4c793fe3
FR
290=back
291
ee0887a9 292=head1 Configuration and Compilation
4c793fe3 293
ee0887a9
SH
294XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
295go here. Any other changes to the Perl build process should be listed here.
296However, any platform-specific changes should be listed in the
297L</Platform Support> section, instead.
4c793fe3 298
ee0887a9 299[ List changes as a =item entry ].
4c793fe3 300
0c692eed
FR
301=over 4
302
303=item *
304
ee0887a9 305XXX
0c692eed
FR
306
307=back
4c793fe3 308
ee0887a9 309=head1 Testing
0c692eed 310
ee0887a9
SH
311XXX Any significant changes to the testing of a freshly built perl should be
312listed here. Changes which create B<new> files in F<t/> go here as do any
313large changes to the testing harness (e.g. when parallel testing was added).
314Changes to existing files in F<t/> aren't worth summarising, although the bugs
315that they represent may be covered elsewhere.
0c692eed 316
ee0887a9 317[ List each test improvement as a =item entry ]
0c692eed 318
ee0887a9 319=over 4
0c692eed
FR
320
321=item *
322
ee0887a9 323XXX
4c793fe3
FR
324
325=back
326
ee0887a9 327=head1 Platform Support
4c793fe3 328
ee0887a9 329XXX Any changes to platform support should be listed in the sections below.
4c793fe3 330
ee0887a9
SH
331[ Within the sections, list each platform as a =item entry with specific
332changes as paragraphs below it. ]
4c793fe3 333
ee0887a9 334=head2 New Platforms
0c692eed 335
ee0887a9
SH
336XXX List any platforms that this version of perl compiles on, that previous
337versions did not. These will either be enabled by new files in the F<hints/>
338directories, or new subdirectories and F<README> files at the top level of the
339source tree.
0c692eed 340
ee0887a9 341=over 4
0c692eed 342
ee0887a9 343=item XXX-some-platform
0c692eed 344
ee0887a9 345XXX
0c692eed 346
ee0887a9 347=back
0c692eed 348
ee0887a9 349=head2 Discontinued Platforms
4c793fe3 350
ee0887a9 351XXX List any platforms that this version of perl no longer compiles on.
8ebb9810 352
ee0887a9 353=over 4
8ebb9810 354
ee0887a9 355=item XXX-some-platform
48c1efd2 356
ee0887a9 357XXX
48c1efd2 358
ee0887a9 359=back
44428a46 360
ee0887a9 361=head2 Platform-Specific Notes
44428a46 362
ee0887a9
SH
363XXX List any changes for specific platforms. This could include configuration
364and compilation changes or changes in portability/compatibility. However,
365changes within modules for platforms should generally be listed in the
366L</Modules and Pragmata> section.
f4beb78f 367
ee0887a9 368=over 4
f4beb78f 369
ee0887a9 370=item XXX-some-platform
ccb45ef4 371
ee0887a9 372XXX
ccb45ef4 373
ee0887a9 374=back
85318b69 375
ee0887a9 376=head1 Internal Changes
85318b69 377
ee0887a9
SH
378XXX Changes which affect the interface available to C<XS> code go here.
379Other significant internal changes for future core maintainers should
380be noted as well.
85318b69 381
ee0887a9 382[ List each test improvement as a =item entry ]
80b6a949 383
ee0887a9 384=over 4
80b6a949 385
e2babdfb
FR
386=item *
387
a5763045
FC
388See L</Regular expressions retain their localeness when interpolated>,
389above.
e2babdfb 390
ee0887a9 391=back
e2babdfb 392
ee0887a9 393=head1 Selected Bug Fixes
e2babdfb 394
ee0887a9
SH
395XXX Important bug fixes in the core language are summarised here.
396Bug fixes in files in F<ext/> and F<lib/> are best summarised in
397L</Modules and Pragmata>.
e2babdfb 398
ee0887a9 399[ List each fix as a =item entry ]
346e4e56 400
ee0887a9 401=over 4
346e4e56 402
78846812
FR
403=item *
404
4e9f151b
FC
405A regular expression match in the right-hand side of a global substitution
406(C<s///g>) that is in the same scope will no longer cause match variables
407to have the wrong values on subsequent iterations. This can happen when an
e54f3f30
FC
408array or hash subscript is interpolated in the right-hand side, as in
409C<s|(.)|@a{ print($1), /./ }|g>
410L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
411
412=item *
413
414Constant-folding used to cause
415
416 $text =~ ( 1 ? /phoo/ : /bear/)
417
418to turn into
419
420 $text =~ /phoo/
421
422at compile time. Now it correctly matches against C<$_>
423L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
78846812 424
a5763045
FC
425=item *
426
427Parsing Perl code (either with string C<eval> or by loading modules) from
428within a C<UNITCHECK> block no longer causes the interpreter to crash
429L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
430
5a9a79a4
FC
431=item *
432
433When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
434to the lines of the main program. In the past, this sometimes worked and
435sometimes did not, depending on what order things happened to be arranged
b45e2413
FC
436in memory
437L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
5a9a79a4 438
4c793fe3
FR
439=back
440
962fbe1d
SH
441=head1 Known Problems
442
ee0887a9
SH
443XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
444tests that had to be C<TODO>ed for the release would be noted here, unless
445they were specific to a particular platform (see below).
962fbe1d 446
ee0887a9
SH
447This is a list of some significant unfixed bugs, which are regressions
448from either 5.XXX.XXX or 5.XXX.XXX.
962fbe1d 449
ee0887a9
SH
450[ List each fix as a =item entry ]
451
452=over 4
08d032c0
SH
453
454=item *
455
ee0887a9 456XXX
962fbe1d
SH
457
458=back
459
ee0887a9 460=head1 Obituary
4c793fe3 461
ee0887a9
SH
462XXX If any significant core contributor has died, we've added a short obituary
463here.
0195fb5f 464
405fd67e
DG
465=head1 Errata
466
467=over 4
468
469=item *
470
471Fixed a typo in L<perl5135delta> regarding array slices and smart matching
472
473=back
474
ee0887a9 475=head1 Acknowledgements
0195fb5f 476
ee0887a9 477XXX The list of people to thank goes here.
4c793fe3
FR
478
479=head1 Reporting Bugs
480
481If you find what you think is a bug, you might check the articles
482recently posted to the comp.lang.perl.misc newsgroup and the perl
483bug database at http://rt.perl.org/perlbug/ . There may also be
484information at http://www.perl.org/ , the Perl Home Page.
485
486If you believe you have an unreported bug, please run the B<perlbug>
487program included with your release. Be sure to trim your bug down
488to a tiny but sufficient test case. Your bug report, along with the
489output of C<perl -V>, will be sent off to perlbug@perl.org to be
490analysed by the Perl porting team.
491
492If the bug you are reporting has security implications, which make it
493inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 494it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
495unarchived mailing list, which includes all the core committers, who be able
496to help assess the impact of issues, figure out a resolution, and help
497co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 498platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
499security issues in the Perl core, not for modules independently
500distributed on CPAN.
501
502=head1 SEE ALSO
503
504The F<Changes> file for an explanation of how to view exhaustive details
505on what changed.
506
507The F<INSTALL> file for how to build Perl.
508
509The F<README> file for general stuff.
510
511The F<Artistic> and F<Copying> files for copyright information.
512
513=cut