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