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