Commit | Line | Data |
---|---|---|
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 |
6 | XXX needs to be processed before release. ] | |
4c793fe3 | 7 | |
ee0887a9 | 8 | perldelta - what is new for perl v5.13.6 |
4c793fe3 | 9 | |
ee0887a9 | 10 | =head1 DESCRIPTION |
0c692eed | 11 | |
ee0887a9 SH |
12 | This document describes differences between the 5.13.5 release and |
13 | the 5.13.6 release. | |
0c692eed | 14 | |
ee0887a9 SH |
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 | |
17 | 5.13.5. | |
0c692eed | 18 | |
ee0887a9 | 19 | =head1 Notice |
0c692eed | 20 | |
ee0887a9 | 21 | XXX Any important notices here |
4c793fe3 | 22 | |
ee0887a9 | 23 | =head1 Core Enhancements |
85318b69 | 24 | |
ee0887a9 SH |
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. | |
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 | ||
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. | |
37 | ||
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>. | |
42 | ||
9de15fec KW |
43 | =head2 C<"d">, C<"l">, and C<"u"> regex modifiers added |
44 | ||
45 | These modifiers are currently only available within a C<(?...)> construct. | |
46 | ||
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. | |
49 | ||
50 | The C<"u"> modifier currently does nothing. | |
51 | ||
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)>. | |
55 | ||
ee0887a9 | 56 | =head1 Security |
85318b69 | 57 | |
ee0887a9 SH |
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. | |
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 | ||
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 | |
8477b9ba KW |
71 | not have to change (after this one time), as the stringification will |
72 | automatically incorporate the new modifiers. | |
fb85c044 KW |
73 | |
74 | Code that needs to work properly with both old- and new-style regexes | |
e23837fb | 75 | can 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 | ||
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> | |
83 | the actual pattern. | |
84 | ||
e23837fb KW |
85 | If the actual stringification is important, or older Perls need to be |
86 | supported, 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 | 91 | And then use C<$modifiers> instead of C<-xism>. |
44428a46 | 92 | |
9de15fec KW |
93 | =head2 Regular expressions retain their localeness when interpolated |
94 | ||
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. | |
98 | ||
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. | |
103 | ||
ee0887a9 | 104 | [ List each incompatible change as a =head2 entry ] |
4c793fe3 FR |
105 | |
106 | =head1 Deprecations | |
107 | ||
ee0887a9 SH |
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. | |
85318b69 | 111 | |
ee0887a9 | 112 | [ List each deprecation as a =head2 entry ] |
4c793fe3 FR |
113 | |
114 | =head1 Performance Enhancements | |
115 | ||
ee0887a9 SH |
116 | XXX Changes which enhance performance without changing behaviour go here. There |
117 | may 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 | 125 | XXX |
e2babdfb | 126 | |
4c793fe3 FR |
127 | =back |
128 | ||
129 | =head1 Modules and Pragmata | |
130 | ||
ee0887a9 SH |
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 | |
137 | cribbed. | |
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 | 147 | XXX |
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 |
157 | C<File::DosGlob> has been upgraded from version 1.02 to 1.03. |
158 | ||
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, | |
6481ebaf FC |
162 | like F<c:*.pl> |
163 | L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>. | |
f5b89942 FC |
164 | |
165 | =item * | |
166 | ||
4d1599c3 FC |
167 | C<File::Find> has been upgraded from version 1.17 to 1.18. |
168 | ||
169 | It improves handling of backslashes on Windows, so that paths such as | |
6481ebaf FC |
170 | F<c:\dir\/file> are no longer generated |
171 | L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>. | |
4d1599c3 FC |
172 | |
173 | =item * | |
174 | ||
de0e3ce7 FR |
175 | C<NEXT> has been upgraded from version 0.64 to 0.65. |
176 | ||
177 | =item * | |
178 | ||
1c2dcb3e CBW |
179 | C<PathTools> has been upgraded from version 3.31_01 to 3.33. |
180 | ||
181 | =item * | |
182 | ||
6481ebaf FC |
183 | C<sigtrap> has been upgraded from version 1.04 to 1.05. |
184 | ||
185 | It no longer tries to modify read-only arguments when generating a | |
186 | backtrace | |
187 | L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>. | |
188 | ||
189 | =item * | |
190 | ||
1393fe00 CBW |
191 | C<Unicode::Collate> has been upgraded from version 0.59 to 0.60 |
192 | ||
193 | =item * | |
194 | ||
1c2dcb3e | 195 | C<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 | 205 | XXX |
4c793fe3 FR |
206 | |
207 | =back | |
208 | ||
209 | =head1 Documentation | |
210 | ||
ee0887a9 SH |
211 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
212 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
4c793fe3 | 213 | |
ee0887a9 | 214 | =head2 New Documentation |
4c793fe3 | 215 | |
ee0887a9 | 216 | XXX Changes which create B<new> files in F<pod/> go here. |
4c793fe3 | 217 | |
ee0887a9 | 218 | =head3 L<XXX> |
4c793fe3 | 219 | |
ee0887a9 | 220 | XXX Description of the purpose of the new file here |
4c793fe3 | 221 | |
ee0887a9 | 222 | =head2 Changes to Existing Documentation |
fc1418b7 | 223 | |
ee0887a9 SH |
224 | XXX Changes which significantly change existing files in F<pod/> go here. |
225 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
226 | section. | |
fc1418b7 | 227 | |
ee0887a9 | 228 | =head3 L<XXX> |
e2babdfb | 229 | |
7bc3efda SH |
230 | =over 4 |
231 | ||
232 | =item * | |
233 | ||
ee0887a9 | 234 | XXX Description of the change here |
7bc3efda SH |
235 | |
236 | =back | |
e2babdfb | 237 | |
4c793fe3 FR |
238 | =head1 Diagnostics |
239 | ||
240 | The following additions or changes have been made to diagnostic output, | |
241 | including warnings and fatal error messages. For the complete list of | |
242 | diagnostic messages, see L<perldiag>. | |
243 | ||
ee0887a9 SH |
244 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
245 | include 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 | 251 | XXX Newly added diagnostic messages go here |
fc1418b7 | 252 | |
ee0887a9 | 253 | =over 4 |
fc1418b7 SH |
254 | |
255 | =item * | |
256 | ||
ee0887a9 | 257 | XXX |
ebce6c40 | 258 | |
4c793fe3 FR |
259 | =back |
260 | ||
ee0887a9 | 261 | =head2 Changes to Existing Diagnostics |
4c793fe3 | 262 | |
ee0887a9 | 263 | XXX Changes (i.e. rewording) of diagnostic messages go here |
4c793fe3 FR |
264 | |
265 | =over 4 | |
266 | ||
267 | =item * | |
268 | ||
ee0887a9 | 269 | XXX |
4c793fe3 FR |
270 | |
271 | =back | |
272 | ||
ee0887a9 | 273 | =head1 Utility Changes |
4c793fe3 | 274 | |
ee0887a9 SH |
275 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
276 | here. 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 |
279 | entries for each change | |
280 | Use 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 | 288 | XXX |
44428a46 | 289 | |
4c793fe3 FR |
290 | =back |
291 | ||
ee0887a9 | 292 | =head1 Configuration and Compilation |
4c793fe3 | 293 | |
ee0887a9 SH |
294 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
295 | go here. Any other changes to the Perl build process should be listed here. | |
296 | However, any platform-specific changes should be listed in the | |
297 | L</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 | 305 | XXX |
0c692eed FR |
306 | |
307 | =back | |
4c793fe3 | 308 | |
ee0887a9 | 309 | =head1 Testing |
0c692eed | 310 | |
ee0887a9 SH |
311 | XXX Any significant changes to the testing of a freshly built perl should be |
312 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
313 | large changes to the testing harness (e.g. when parallel testing was added). | |
314 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
315 | that 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 | 323 | XXX |
4c793fe3 FR |
324 | |
325 | =back | |
326 | ||
ee0887a9 | 327 | =head1 Platform Support |
4c793fe3 | 328 | |
ee0887a9 | 329 | XXX 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 |
332 | changes as paragraphs below it. ] | |
4c793fe3 | 333 | |
ee0887a9 | 334 | =head2 New Platforms |
0c692eed | 335 | |
ee0887a9 SH |
336 | XXX List any platforms that this version of perl compiles on, that previous |
337 | versions did not. These will either be enabled by new files in the F<hints/> | |
338 | directories, or new subdirectories and F<README> files at the top level of the | |
339 | source tree. | |
0c692eed | 340 | |
ee0887a9 | 341 | =over 4 |
0c692eed | 342 | |
ee0887a9 | 343 | =item XXX-some-platform |
0c692eed | 344 | |
ee0887a9 | 345 | XXX |
0c692eed | 346 | |
ee0887a9 | 347 | =back |
0c692eed | 348 | |
ee0887a9 | 349 | =head2 Discontinued Platforms |
4c793fe3 | 350 | |
ee0887a9 | 351 | XXX 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 | 357 | XXX |
48c1efd2 | 358 | |
ee0887a9 | 359 | =back |
44428a46 | 360 | |
ee0887a9 | 361 | =head2 Platform-Specific Notes |
44428a46 | 362 | |
ee0887a9 SH |
363 | XXX List any changes for specific platforms. This could include configuration |
364 | and compilation changes or changes in portability/compatibility. However, | |
365 | changes within modules for platforms should generally be listed in the | |
366 | L</Modules and Pragmata> section. | |
f4beb78f | 367 | |
ee0887a9 | 368 | =over 4 |
f4beb78f | 369 | |
ee0887a9 | 370 | =item XXX-some-platform |
ccb45ef4 | 371 | |
ee0887a9 | 372 | XXX |
ccb45ef4 | 373 | |
ee0887a9 | 374 | =back |
85318b69 | 375 | |
ee0887a9 | 376 | =head1 Internal Changes |
85318b69 | 377 | |
ee0887a9 SH |
378 | XXX Changes which affect the interface available to C<XS> code go here. |
379 | Other significant internal changes for future core maintainers should | |
380 | be 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 |
388 | See L</Regular expressions retain their localeness when interpolated>, |
389 | above. | |
e2babdfb | 390 | |
ee0887a9 | 391 | =back |
e2babdfb | 392 | |
ee0887a9 | 393 | =head1 Selected Bug Fixes |
e2babdfb | 394 | |
ee0887a9 SH |
395 | XXX Important bug fixes in the core language are summarised here. |
396 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
397 | L</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 |
405 | A 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 | |
407 | to have the wrong values on subsequent iterations. This can happen when an | |
e54f3f30 FC |
408 | array or hash subscript is interpolated in the right-hand side, as in |
409 | C<s|(.)|@a{ print($1), /./ }|g> | |
410 | L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>. | |
411 | ||
412 | =item * | |
413 | ||
414 | Constant-folding used to cause | |
415 | ||
416 | $text =~ ( 1 ? /phoo/ : /bear/) | |
417 | ||
418 | to turn into | |
419 | ||
420 | $text =~ /phoo/ | |
421 | ||
422 | at compile time. Now it correctly matches against C<$_> | |
423 | L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>. | |
78846812 | 424 | |
a5763045 FC |
425 | =item * |
426 | ||
427 | Parsing Perl code (either with string C<eval> or by loading modules) from | |
428 | within a C<UNITCHECK> block no longer causes the interpreter to crash | |
429 | L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>. | |
430 | ||
5a9a79a4 FC |
431 | =item * |
432 | ||
433 | When C<-d> is used on the shebang (C<#!>) line, the debugger now has access | |
434 | to the lines of the main program. In the past, this sometimes worked and | |
435 | sometimes did not, depending on what order things happened to be arranged | |
b45e2413 FC |
436 | in memory |
437 | L<[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 |
443 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
444 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
445 | they were specific to a particular platform (see below). | |
962fbe1d | 446 | |
ee0887a9 SH |
447 | This is a list of some significant unfixed bugs, which are regressions |
448 | from 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 | 456 | XXX |
962fbe1d SH |
457 | |
458 | =back | |
459 | ||
ee0887a9 | 460 | =head1 Obituary |
4c793fe3 | 461 | |
ee0887a9 SH |
462 | XXX If any significant core contributor has died, we've added a short obituary |
463 | here. | |
0195fb5f | 464 | |
ee0887a9 | 465 | =head1 Acknowledgements |
0195fb5f | 466 | |
ee0887a9 | 467 | XXX The list of people to thank goes here. |
4c793fe3 FR |
468 | |
469 | =head1 Reporting Bugs | |
470 | ||
471 | If you find what you think is a bug, you might check the articles | |
472 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
473 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
474 | information at http://www.perl.org/ , the Perl Home Page. | |
475 | ||
476 | If you believe you have an unreported bug, please run the B<perlbug> | |
477 | program included with your release. Be sure to trim your bug down | |
478 | to a tiny but sufficient test case. Your bug report, along with the | |
479 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
480 | analysed by the Perl porting team. | |
481 | ||
482 | If the bug you are reporting has security implications, which make it | |
483 | inappropriate to send to a publicly archived mailing list, then please send | |
ee0887a9 | 484 | it to perl5-security-report@perl.org. This points to a closed subscription |
4c793fe3 FR |
485 | unarchived mailing list, which includes all the core committers, who be able |
486 | to help assess the impact of issues, figure out a resolution, and help | |
487 | co-ordinate the release of patches to mitigate or fix the problem across all | |
ee0887a9 | 488 | platforms on which Perl is supported. Please only use this address for |
4c793fe3 FR |
489 | security issues in the Perl core, not for modules independently |
490 | distributed on CPAN. | |
491 | ||
492 | =head1 SEE ALSO | |
493 | ||
494 | The F<Changes> file for an explanation of how to view exhaustive details | |
495 | on what changed. | |
496 | ||
497 | The F<INSTALL> file for how to build Perl. | |
498 | ||
499 | The F<README> file for general stuff. | |
500 | ||
501 | The F<Artistic> and F<Copying> files for copyright information. | |
502 | ||
503 | =cut |