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