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 | ||
fb121860 KW |
56 | =head2 C<\N{...}> now handles Unicode named character sequences |
57 | ||
58 | Unicode has a number of named character sequences, in which particular sequences | |
59 | of code points are given names. C<\N{...}> now recognizes these. | |
60 | See L<charnames>. | |
61 | ||
62 | =head2 New function C<charnames::string_vianame()> | |
63 | ||
64 | This function is a run-time version of C<\N{...}>, returning the string | |
65 | of characters whose Unicode name is its parameter. It can handle | |
66 | Unicode named character sequences, whereas the pre-existing | |
67 | C<charnames::vianame()> cannot, as the latter returns a single code | |
68 | point. | |
69 | See L<charnames>. | |
70 | ||
ee0887a9 | 71 | =head1 Security |
85318b69 | 72 | |
ee0887a9 SH |
73 | XXX Any security-related notices go here. In particular, any security |
74 | vulnerabilities closed should be noted here rather than in the | |
75 | L</Selected Bug Fixes> section. | |
85318b69 | 76 | |
ee0887a9 | 77 | [ List each security issue as a =head2 entry ] |
4c793fe3 FR |
78 | |
79 | =head1 Incompatible Changes | |
80 | ||
fb85c044 KW |
81 | =head2 Stringification of regexes has changed |
82 | ||
83 | Default regular expression modifiers are now notated by using | |
84 | C<(?^...)>. Code relying on the old stringification will fail. The | |
85 | purpose of this is so that when new modifiers are added, such code will | |
8477b9ba KW |
86 | not have to change (after this one time), as the stringification will |
87 | automatically incorporate the new modifiers. | |
fb85c044 KW |
88 | |
89 | Code that needs to work properly with both old- and new-style regexes | |
e23837fb | 90 | can avoid the whole issue by using (for Perls since 5.9.5): |
8477b9ba KW |
91 | |
92 | use re qw(regexp_pattern); | |
93 | my ($pat, $mods) = regexp_pattern($re_ref); | |
94 | ||
95 | where C<$re_ref> is a reference to a compiled regular expression. Upon | |
96 | return, C<$mods> will be a string containing all the non-default | |
97 | modifiers used when the regular expression was compiled, and C<$pattern> | |
98 | the actual pattern. | |
99 | ||
e23837fb KW |
100 | If the actual stringification is important, or older Perls need to be |
101 | supported, you can use something like the following: | |
fb85c044 KW |
102 | |
103 | # Accept both old and new-style stringification | |
104 | my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism'; | |
44428a46 | 105 | |
fb85c044 | 106 | And then use C<$modifiers> instead of C<-xism>. |
44428a46 | 107 | |
9de15fec KW |
108 | =head2 Regular expressions retain their localeness when interpolated |
109 | ||
110 | Regular expressions compiled under C<"use locale"> now retain this when | |
111 | interpolated into a new regular expression compiled outside a | |
112 | C<"use locale">, and vice-versa. | |
113 | ||
114 | Previously, a regular expression interpolated into another one inherited | |
115 | the localeness of the surrounding one, losing whatever state it | |
116 | originally had. This is considered a bug fix, but may trip up code that | |
117 | has come to rely on the incorrect behavior. | |
118 | ||
ee0887a9 | 119 | [ List each incompatible change as a =head2 entry ] |
4c793fe3 | 120 | |
6904a83f FC |
121 | =head2 Directory handles not copied to threads |
122 | ||
123 | On systems that do not have a C<fchdir> function, newly-created threads no | |
124 | longer inherit directory handles from their parent threads. Such programs | |
125 | would probably have crashed anyway | |
126 | L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>. | |
127 | ||
94824daa FC |
128 | =head2 Negation treats strings differently from before |
129 | ||
130 | The unary negation operator C<-> now treats strings that look like numbers | |
131 | as numbers | |
132 | L<[perl #57706]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=57706>. | |
133 | ||
afa74577 FC |
134 | =head2 Negative zero |
135 | ||
136 | Negative zero (-0.0), when converted to a string, now becomes "0" on all | |
137 | platforms. It used to become "-0" on some, but "0" on others. | |
138 | ||
139 | If you still need to determine whether a zero is negative, use | |
140 | C<sprintf("%g", $zero) =~ /^-/> or the L<Data::Float> module on CPAN. | |
141 | ||
4c793fe3 FR |
142 | =head1 Deprecations |
143 | ||
ee0887a9 SH |
144 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
145 | In particular, deprecated modules should be listed here even if they are | |
146 | listed as an updated module in the L</Modules and Pragmata> section. | |
85318b69 | 147 | |
ee0887a9 | 148 | [ List each deprecation as a =head2 entry ] |
4c793fe3 FR |
149 | |
150 | =head1 Performance Enhancements | |
151 | ||
ee0887a9 SH |
152 | XXX Changes which enhance performance without changing behaviour go here. There |
153 | may well be none in a stable release. | |
4c793fe3 | 154 | |
ee0887a9 | 155 | [ List each enhancement as a =item entry ] |
4c793fe3 | 156 | |
ee0887a9 | 157 | =over 4 |
4c793fe3 | 158 | |
e2babdfb FR |
159 | =item * |
160 | ||
ee0887a9 | 161 | XXX |
e2babdfb | 162 | |
4c793fe3 FR |
163 | =back |
164 | ||
165 | =head1 Modules and Pragmata | |
166 | ||
ee0887a9 SH |
167 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
168 | go here. If Module::CoreList is updated, generate an initial draft of the | |
169 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
170 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
171 | below. A paragraph summary for important changes should then be added by hand. | |
172 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
173 | cribbed. | |
fc1418b7 | 174 | |
ee0887a9 | 175 | [ Within each section, list entries as a =item entry ] |
df91fef1 | 176 | |
ee0887a9 | 177 | =head2 New Modules and Pragmata |
ccb45ef4 | 178 | |
ee0887a9 | 179 | =over 4 |
df91fef1 | 180 | |
ee0887a9 | 181 | =item * |
df91fef1 | 182 | |
ee0887a9 | 183 | XXX |
e2babdfb | 184 | |
ee0887a9 | 185 | =back |
e2babdfb | 186 | |
ee0887a9 | 187 | =head2 Updated Modules and Pragmata |
fc1418b7 | 188 | |
ee0887a9 | 189 | =over 4 |
fc1418b7 | 190 | |
ee0887a9 | 191 | =item * |
e2babdfb | 192 | |
a6696b92 CBW |
193 | C<Archive::Extract> has been upgraded from version 0.42 to 0.44 |
194 | ||
195 | =item * | |
196 | ||
75484d6b FC |
197 | C<Carp> has been upgraded from version 1.18 to 1.19. |
198 | ||
199 | It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it | |
200 | started doing in 1.18, which was released with perl 5.13.4 | |
201 | L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082> | |
202 | ||
203 | =item * | |
204 | ||
e2941eb0 FC |
205 | C<Data::Dumper> has been upgraded from version 2.128 to 2.129. |
206 | ||
207 | C<Dumpxs> no longer crashes with globs returned by C<*$io_ref> | |
208 | L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>. | |
209 | ||
210 | =item * | |
211 | ||
c059848d | 212 | C<Digest::MD5> has been upgraded from version 2.40 to 2.51. |
62d37bf0 FR |
213 | |
214 | It is now safe to use this module in combination with threads. | |
215 | ||
216 | =item * | |
217 | ||
f5b89942 FC |
218 | C<File::DosGlob> has been upgraded from version 1.02 to 1.03. |
219 | ||
220 | It allows patterns containing literal parentheses (they no longer need to | |
221 | be escaped). On Windows, it no longer adds an extra F<./> to the file names | |
222 | returned when the pattern is a relative glob with a drive specification, | |
6481ebaf FC |
223 | like F<c:*.pl> |
224 | L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>. | |
f5b89942 FC |
225 | |
226 | =item * | |
227 | ||
4d1599c3 FC |
228 | C<File::Find> has been upgraded from version 1.17 to 1.18. |
229 | ||
230 | It improves handling of backslashes on Windows, so that paths such as | |
6481ebaf FC |
231 | F<c:\dir\/file> are no longer generated |
232 | L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>. | |
4d1599c3 FC |
233 | |
234 | =item * | |
235 | ||
f1c82292 CBW |
236 | C<if> has been upgraded from version 0.05 to 0.06 |
237 | ||
238 | =item * | |
239 | ||
25e68b8b FC |
240 | C<IPC::Open3> has been upgraded from version 1.06 to 1.07. |
241 | ||
242 | The internal C<xclose> routine now knows how to handle file descriptors, as | |
243 | documented, so duplicating STDIN in a child process using its file | |
244 | descriptor now works | |
245 | L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>. | |
246 | ||
247 | =item * | |
248 | ||
9607a449 FC |
249 | C<Locale::Maketext> has been upgraded from version 1.15 to 1.16. |
250 | ||
251 | It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when | |
252 | working with tainted values | |
253 | (L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>). | |
254 | ||
edf72ff9 FC |
255 | C<< ->maketext >> calls will now backup and restore C<$@> so that error |
256 | messages are not supressed | |
257 | (L<CPAN RT #34182|https://rt.cpan.org/Public/Bug/Display.html?id=34182>). | |
258 | ||
9607a449 FC |
259 | =item * |
260 | ||
733e2929 FR |
261 | C<Math::BigInt> has been upgraded from version 1.95 to 1.96. |
262 | ||
263 | =item * | |
264 | ||
de0e3ce7 FR |
265 | C<NEXT> has been upgraded from version 0.64 to 0.65. |
266 | ||
267 | =item * | |
268 | ||
56f08af2 FC |
269 | C<overload> has been upgraded from version 1.10 to 1.11. |
270 | ||
271 | C<overload::Method> can now handle subroutines that are themselves blessed | |
272 | into overloaded classes | |
273 | L<[perl #71998]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71998>. | |
274 | ||
275 | =item * | |
276 | ||
f8a8dd49 | 277 | C<PathTools> has been upgraded from version 3.31_01 to 3.34. |
1c2dcb3e CBW |
278 | |
279 | =item * | |
280 | ||
6481ebaf FC |
281 | C<sigtrap> has been upgraded from version 1.04 to 1.05. |
282 | ||
283 | It no longer tries to modify read-only arguments when generating a | |
284 | backtrace | |
285 | L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>. | |
286 | ||
287 | =item * | |
288 | ||
dfa4c013 JH |
289 | C<threads> has been upgrade from version 1.77_03 to 1.81 |
290 | ||
291 | =item * | |
292 | ||
c02ee425 CBW |
293 | C<Unicode::Collate> has been upgraded from version 0.59 to 0.61 |
294 | ||
295 | U::C::Locale newly supports locales: de__phonebook, nso, om, tn, vi, hr, ig, sq | |
1393fe00 CBW |
296 | |
297 | =item * | |
298 | ||
1c2dcb3e | 299 | C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07 |
c9a84c8b | 300 | |
ee0887a9 | 301 | =back |
c9a84c8b | 302 | |
ee0887a9 | 303 | =head2 Removed Modules and Pragmata |
c9a84c8b | 304 | |
ee0887a9 | 305 | =over 4 |
4c793fe3 | 306 | |
ee0887a9 | 307 | =item * |
48c1efd2 | 308 | |
ee0887a9 | 309 | XXX |
4c793fe3 FR |
310 | |
311 | =back | |
312 | ||
313 | =head1 Documentation | |
314 | ||
ee0887a9 SH |
315 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
316 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
4c793fe3 | 317 | |
ee0887a9 | 318 | =head2 New Documentation |
4c793fe3 | 319 | |
ee0887a9 | 320 | XXX Changes which create B<new> files in F<pod/> go here. |
4c793fe3 | 321 | |
ee0887a9 | 322 | =head3 L<XXX> |
4c793fe3 | 323 | |
ee0887a9 | 324 | XXX Description of the purpose of the new file here |
4c793fe3 | 325 | |
ee0887a9 | 326 | =head2 Changes to Existing Documentation |
fc1418b7 | 327 | |
ee0887a9 SH |
328 | XXX Changes which significantly change existing files in F<pod/> go here. |
329 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
330 | section. | |
fc1418b7 | 331 | |
ee0887a9 | 332 | =head3 L<XXX> |
e2babdfb | 333 | |
7bc3efda SH |
334 | =over 4 |
335 | ||
336 | =item * | |
337 | ||
a7e93501 FC |
338 | The documentation for the C<SvTRUE> macro was simply wrong in stating that |
339 | get-magic is not processed. It has been corrected. | |
7bc3efda SH |
340 | |
341 | =back | |
e2babdfb | 342 | |
4c793fe3 FR |
343 | =head1 Diagnostics |
344 | ||
345 | The following additions or changes have been made to diagnostic output, | |
346 | including warnings and fatal error messages. For the complete list of | |
347 | diagnostic messages, see L<perldiag>. | |
348 | ||
ee0887a9 SH |
349 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
350 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
4c793fe3 | 351 | |
ee0887a9 | 352 | [ Within each section, list entries as a =item entry ] |
4c793fe3 | 353 | |
ee0887a9 | 354 | =head2 New Diagnostics |
4c793fe3 | 355 | |
ee0887a9 | 356 | XXX Newly added diagnostic messages go here |
fc1418b7 | 357 | |
ee0887a9 | 358 | =over 4 |
fc1418b7 SH |
359 | |
360 | =item * | |
361 | ||
ee0887a9 | 362 | XXX |
ebce6c40 | 363 | |
4c793fe3 FR |
364 | =back |
365 | ||
ee0887a9 | 366 | =head2 Changes to Existing Diagnostics |
4c793fe3 | 367 | |
ee0887a9 | 368 | XXX Changes (i.e. rewording) of diagnostic messages go here |
4c793fe3 FR |
369 | |
370 | =over 4 | |
371 | ||
372 | =item * | |
373 | ||
dc08898c FC |
374 | The 'Layer does not match this perl' error message has been replaced with |
375 | these more helpful messages: | |
376 | ||
377 | =over 4 | |
378 | ||
379 | =item * | |
380 | ||
381 | PerlIO layer function table size (%d) does not match size expected by this | |
382 | perl (%d) | |
383 | ||
384 | =item * | |
385 | ||
386 | PerlIO layer instance size (%d) does not match size expected by this perl | |
387 | (%d) | |
388 | ||
389 | =back | |
390 | ||
391 | L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754> | |
4c793fe3 FR |
392 | |
393 | =back | |
394 | ||
ee0887a9 | 395 | =head1 Utility Changes |
4c793fe3 | 396 | |
ee0887a9 SH |
397 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
398 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
4c793fe3 | 399 | |
ee0887a9 SH |
400 | [ List utility changes as a =head3 entry for each utility and =item |
401 | entries for each change | |
402 | Use L<XXX> with program names to get proper documentation linking. ] | |
fc1418b7 | 403 | |
ee0887a9 | 404 | =head3 L<XXX> |
fc1418b7 | 405 | |
ee0887a9 | 406 | =over 4 |
4c793fe3 | 407 | |
44428a46 FC |
408 | =item * |
409 | ||
ee0887a9 | 410 | XXX |
44428a46 | 411 | |
4c793fe3 FR |
412 | =back |
413 | ||
ee0887a9 | 414 | =head1 Configuration and Compilation |
4c793fe3 | 415 | |
ee0887a9 SH |
416 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
417 | go here. Any other changes to the Perl build process should be listed here. | |
418 | However, any platform-specific changes should be listed in the | |
419 | L</Platform Support> section, instead. | |
4c793fe3 | 420 | |
ee0887a9 | 421 | [ List changes as a =item entry ]. |
4c793fe3 | 422 | |
0c692eed FR |
423 | =over 4 |
424 | ||
425 | =item * | |
426 | ||
ee0887a9 | 427 | XXX |
0c692eed FR |
428 | |
429 | =back | |
4c793fe3 | 430 | |
ee0887a9 | 431 | =head1 Testing |
0c692eed | 432 | |
ee0887a9 SH |
433 | XXX Any significant changes to the testing of a freshly built perl should be |
434 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
435 | large changes to the testing harness (e.g. when parallel testing was added). | |
436 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
437 | that they represent may be covered elsewhere. | |
0c692eed | 438 | |
ee0887a9 | 439 | [ List each test improvement as a =item entry ] |
0c692eed | 440 | |
ee0887a9 | 441 | =over 4 |
0c692eed FR |
442 | |
443 | =item * | |
444 | ||
bd6920d7 FC |
445 | The script F<t/op/threads-dirh.t> has been added, which tests interaction |
446 | of threads and directory handles. | |
4c793fe3 FR |
447 | |
448 | =back | |
449 | ||
ee0887a9 | 450 | =head1 Platform Support |
4c793fe3 | 451 | |
ee0887a9 | 452 | XXX Any changes to platform support should be listed in the sections below. |
4c793fe3 | 453 | |
ee0887a9 SH |
454 | [ Within the sections, list each platform as a =item entry with specific |
455 | changes as paragraphs below it. ] | |
4c793fe3 | 456 | |
ee0887a9 | 457 | =head2 New Platforms |
0c692eed | 458 | |
ee0887a9 SH |
459 | XXX List any platforms that this version of perl compiles on, that previous |
460 | versions did not. These will either be enabled by new files in the F<hints/> | |
461 | directories, or new subdirectories and F<README> files at the top level of the | |
462 | source tree. | |
0c692eed | 463 | |
ee0887a9 | 464 | =over 4 |
0c692eed | 465 | |
ee0887a9 | 466 | =item XXX-some-platform |
0c692eed | 467 | |
ee0887a9 | 468 | XXX |
0c692eed | 469 | |
ee0887a9 | 470 | =back |
0c692eed | 471 | |
ee0887a9 | 472 | =head2 Discontinued Platforms |
4c793fe3 | 473 | |
ee0887a9 | 474 | XXX List any platforms that this version of perl no longer compiles on. |
8ebb9810 | 475 | |
ee0887a9 | 476 | =over 4 |
8ebb9810 | 477 | |
ee0887a9 | 478 | =item XXX-some-platform |
48c1efd2 | 479 | |
ee0887a9 | 480 | XXX |
48c1efd2 | 481 | |
ee0887a9 | 482 | =back |
44428a46 | 483 | |
ee0887a9 | 484 | =head2 Platform-Specific Notes |
44428a46 | 485 | |
ee0887a9 SH |
486 | XXX List any changes for specific platforms. This could include configuration |
487 | and compilation changes or changes in portability/compatibility. However, | |
488 | changes within modules for platforms should generally be listed in the | |
489 | L</Modules and Pragmata> section. | |
f4beb78f | 490 | |
ee0887a9 | 491 | =over 4 |
f4beb78f | 492 | |
810f3b7c FC |
493 | =item IRIX |
494 | ||
495 | Conversion of strings to floating-point numbers is now more accurate on | |
496 | IRIX systems | |
497 | L<[perl #32380]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=32380>. | |
498 | ||
6034bceb FC |
499 | =item Mac OS X |
500 | ||
501 | Early versions of Mac OS X (Darwin) had buggy implementations of the | |
502 | C<setregid>, C<setreuid>, C<setrgid> and C<setruid> functions, so perl | |
503 | would pretend they did not exist. | |
504 | ||
505 | These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and | |
506 | higher, as they have been fixed | |
507 | L<[perl #72990]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72990>. | |
508 | ||
810f3b7c FC |
509 | =item OpenVOS |
510 | ||
511 | perl now builds again with OpenVOS (formerly known as Stratus VOS) | |
512 | L<[perl #78132]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78132>. | |
513 | ||
2ffefa5a | 514 | =item Windows |
ccb45ef4 | 515 | |
2ffefa5a FC |
516 | C<$Config{gccversion}> is now set correctly when perl is built using the |
517 | mingw64 compiler from L<http://mingw64.org> | |
518 | L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>. | |
519 | ||
f8a8dd49 FC |
520 | The build process proceeds more smoothly with mingw and dmake when |
521 | F<C:\MSYS\bin> is in the PATH, due to a C<Cwd> fix. | |
522 | ||
2ffefa5a | 523 | =back |
ccb45ef4 | 524 | |
ee0887a9 | 525 | =head1 Internal Changes |
85318b69 | 526 | |
ee0887a9 SH |
527 | XXX Changes which affect the interface available to C<XS> code go here. |
528 | Other significant internal changes for future core maintainers should | |
529 | be noted as well. | |
85318b69 | 530 | |
ee0887a9 | 531 | [ List each test improvement as a =item entry ] |
80b6a949 | 532 | |
ee0887a9 | 533 | =over 4 |
80b6a949 | 534 | |
e2babdfb FR |
535 | =item * |
536 | ||
a5763045 FC |
537 | See L</Regular expressions retain their localeness when interpolated>, |
538 | above. | |
e2babdfb | 539 | |
a7e93501 FC |
540 | =item * |
541 | ||
542 | The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and | |
543 | C<sv_collxfrm_flags> functions have been added. These are like their | |
544 | non-_flags counterparts, but allow one to specify whether get-magic is | |
545 | processed. | |
546 | ||
547 | The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have | |
548 | been replaced with wrappers around the new functions. | |
549 | ||
550 | =item * | |
551 | ||
552 | A new C<sv_2bool_flags> function has been added. | |
553 | ||
554 | This is like C<sv_2bool>, but it lets the calling code decide whether | |
555 | get-magic is handled. C<sv_2bool> is now a macro that calls the new | |
556 | function. | |
557 | ||
558 | =item * | |
559 | ||
560 | A new macro, C<SvTRUE_nomg>, has been added. | |
561 | ||
562 | This is like C<SvTRUE>, except that it does not process magic. It uses the | |
563 | new C<sv_2bool_flags> function. | |
564 | ||
565 | =item * | |
566 | ||
567 | C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the | |
568 | source string) if the flags passed to it do not include SV_GMAGIC. So it | |
569 | now matches what the documentation says it does. | |
570 | ||
ee0887a9 | 571 | =back |
e2babdfb | 572 | |
ee0887a9 | 573 | =head1 Selected Bug Fixes |
e2babdfb | 574 | |
ee0887a9 SH |
575 | XXX Important bug fixes in the core language are summarised here. |
576 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
577 | L</Modules and Pragmata>. | |
e2babdfb | 578 | |
ee0887a9 | 579 | [ List each fix as a =item entry ] |
346e4e56 | 580 | |
ee0887a9 | 581 | =over 4 |
346e4e56 | 582 | |
78846812 FR |
583 | =item * |
584 | ||
4e9f151b FC |
585 | A regular expression match in the right-hand side of a global substitution |
586 | (C<s///g>) that is in the same scope will no longer cause match variables | |
587 | to have the wrong values on subsequent iterations. This can happen when an | |
e54f3f30 FC |
588 | array or hash subscript is interpolated in the right-hand side, as in |
589 | C<s|(.)|@a{ print($1), /./ }|g> | |
590 | L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>. | |
591 | ||
592 | =item * | |
593 | ||
594 | Constant-folding used to cause | |
595 | ||
596 | $text =~ ( 1 ? /phoo/ : /bear/) | |
597 | ||
598 | to turn into | |
599 | ||
600 | $text =~ /phoo/ | |
601 | ||
602 | at compile time. Now it correctly matches against C<$_> | |
603 | L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>. | |
78846812 | 604 | |
a5763045 FC |
605 | =item * |
606 | ||
607 | Parsing Perl code (either with string C<eval> or by loading modules) from | |
608 | within a C<UNITCHECK> block no longer causes the interpreter to crash | |
609 | L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>. | |
610 | ||
5a9a79a4 FC |
611 | =item * |
612 | ||
613 | When C<-d> is used on the shebang (C<#!>) line, the debugger now has access | |
614 | to the lines of the main program. In the past, this sometimes worked and | |
615 | sometimes did not, depending on what order things happened to be arranged | |
b45e2413 FC |
616 | in memory |
617 | L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>. | |
5a9a79a4 | 618 | |
a7e93501 FC |
619 | =item * |
620 | ||
621 | The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH> | |
622 | method of a tie) on its left-hand side just once, not twice | |
623 | L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. | |
624 | ||
625 | =item * | |
626 | ||
627 | String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and | |
628 | C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic | |
629 | (e.g., tie methods) twice on their operands | |
630 | L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. | |
631 | ||
632 | This bug was introduced in an earlier 5.13 release, and does not affect | |
633 | perl 5.12. | |
634 | ||
635 | =item * | |
636 | ||
637 | When a tied (or other magic) variable is used as, or in, a regular | |
638 | expression, it no longer has its C<FETCH> method called twice | |
639 | L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. | |
640 | ||
641 | This bug was introduced in an earlier 5.13 release, and does not affect | |
642 | perl 5.12. | |
643 | ||
d4a59e54 FC |
644 | =item * |
645 | ||
8420a925 | 646 | The C<-C> command line option can now be followed by other options |
d4a59e54 FC |
647 | L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>. |
648 | ||
dc08898c FC |
649 | =item * |
650 | ||
651 | Assigning a glob to a PVLV used to convert it to a plain string. Now it | |
652 | works correctly, and a PVLV can hold a glob. This would happen when a | |
653 | nonexistent hash or array element was passed to a subroutine: | |
654 | ||
655 | sub { $_[0] = *foo }->($hash{key}); | |
656 | # $_[0] would have been the string "*main::foo" | |
657 | ||
658 | It also happened when a glob was assigned to, or returned from, an element | |
659 | of a tied array or hash | |
660 | L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>. | |
661 | ||
6904a83f FC |
662 | =item * |
663 | ||
664 | Creating a new thread when directory handles were open used to cause a | |
665 | crash, because the handles were not cloned, but simply passed to the new | |
666 | thread, resulting in a double free. | |
667 | ||
668 | Now directory handles are properly, on systems that have a C<fchdir> | |
669 | function. On other systems, new threads simply do not inherit directory | |
670 | handles from their parent threads | |
671 | L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>. | |
672 | ||
cffb3698 FC |
673 | =item * |
674 | ||
ab4c2c27 FC |
675 | The regular expression parser no longer hangs when parsing C<\18> and |
676 | C<\88>. | |
677 | ||
678 | This bug was introduced in version 5.13.5 and did not affect earlier | |
679 | versions | |
680 | L<[perl #78058]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78058>. | |
681 | ||
be1cc451 FC |
682 | =item * |
683 | ||
684 | Subroutine redefinition works once more in the debugger | |
685 | L<[perl #48332]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48332>. | |
686 | ||
b20c4ee1 FC |
687 | =item * |
688 | ||
689 | The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments | |
690 | L<[perl #20661]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=20661>. | |
691 | ||
afa74577 FC |
692 | =item * |
693 | ||
694 | Stringifying a scalar containing -0.0 no longer has the affect of turning | |
695 | false into true | |
696 | L<[perl #45133]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45133>. | |
697 | ||
4c793fe3 FR |
698 | =back |
699 | ||
962fbe1d SH |
700 | =head1 Known Problems |
701 | ||
ee0887a9 SH |
702 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
703 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
704 | they were specific to a particular platform (see below). | |
962fbe1d | 705 | |
ee0887a9 SH |
706 | This is a list of some significant unfixed bugs, which are regressions |
707 | from either 5.XXX.XXX or 5.XXX.XXX. | |
962fbe1d | 708 | |
ee0887a9 SH |
709 | [ List each fix as a =item entry ] |
710 | ||
711 | =over 4 | |
08d032c0 SH |
712 | |
713 | =item * | |
714 | ||
ee0887a9 | 715 | XXX |
962fbe1d SH |
716 | |
717 | =back | |
718 | ||
ee0887a9 | 719 | =head1 Obituary |
4c793fe3 | 720 | |
ee0887a9 SH |
721 | XXX If any significant core contributor has died, we've added a short obituary |
722 | here. | |
0195fb5f | 723 | |
405fd67e DG |
724 | =head1 Errata |
725 | ||
726 | =over 4 | |
727 | ||
728 | =item * | |
729 | ||
730 | Fixed a typo in L<perl5135delta> regarding array slices and smart matching | |
731 | ||
732 | =back | |
733 | ||
ee0887a9 | 734 | =head1 Acknowledgements |
0195fb5f | 735 | |
ee0887a9 | 736 | XXX The list of people to thank goes here. |
4c793fe3 FR |
737 | |
738 | =head1 Reporting Bugs | |
739 | ||
740 | If you find what you think is a bug, you might check the articles | |
741 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
742 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
743 | information at http://www.perl.org/ , the Perl Home Page. | |
744 | ||
745 | If you believe you have an unreported bug, please run the B<perlbug> | |
746 | program included with your release. Be sure to trim your bug down | |
747 | to a tiny but sufficient test case. Your bug report, along with the | |
748 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
749 | analysed by the Perl porting team. | |
750 | ||
751 | If the bug you are reporting has security implications, which make it | |
752 | inappropriate to send to a publicly archived mailing list, then please send | |
ee0887a9 | 753 | it to perl5-security-report@perl.org. This points to a closed subscription |
4c793fe3 FR |
754 | unarchived mailing list, which includes all the core committers, who be able |
755 | to help assess the impact of issues, figure out a resolution, and help | |
756 | co-ordinate the release of patches to mitigate or fix the problem across all | |
ee0887a9 | 757 | platforms on which Perl is supported. Please only use this address for |
4c793fe3 FR |
758 | security issues in the Perl core, not for modules independently |
759 | distributed on CPAN. | |
760 | ||
761 | =head1 SEE ALSO | |
762 | ||
763 | The F<Changes> file for an explanation of how to view exhaustive details | |
764 | on what changed. | |
765 | ||
766 | The F<INSTALL> file for how to build Perl. | |
767 | ||
768 | The F<README> file for general stuff. | |
769 | ||
770 | The F<Artistic> and F<Copying> files for copyright information. | |
771 | ||
772 | =cut |