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