Commit | Line | Data |
---|---|---|
4c793fe3 FR |
1 | =encoding utf8 |
2 | ||
c39f7439 | 3 | =for comment |
9e2ac5d4 | 4 | This has been completed up to 7fd683ff3c3, except for: |
48ea5431 FC |
5 | 04777d295957ad270188e4debf51b523e07cc5b0 |
6 | c565ab54dc649bb62cd4d57149d7b2abb21df5f3 | |
a5e71717 | 7 | 1c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c |
9e2ac5d4 FC |
8 | 51698cb360d5bba06e12496ef9c7bf82e3352b71 |
9 | 0c4d3b5ea916cf640ea163c5a6bcffefade55a1b | |
c39f7439 | 10 | |
4c793fe3 FR |
11 | =head1 NAME |
12 | ||
8f97a47a TM |
13 | [ this is a template for a new perldelta file. Any text flagged as |
14 | XXX needs to be processed before release. ] | |
4c793fe3 | 15 | |
8f97a47a | 16 | perldelta - what is new for perl v5.13.7 |
a12cf05f | 17 | |
8f97a47a | 18 | =head1 DESCRIPTION |
fb121860 | 19 | |
8f97a47a TM |
20 | This document describes differences between the 5.13.6 release and |
21 | the 5.13.7 release. | |
eb32ee41 | 22 | |
8f97a47a TM |
23 | If you are upgrading from an earlier release such as 5.13.5, first read |
24 | L<perl5136delta>, which describes differences between 5.13.5 and | |
25 | 5.13.6. | |
eb32ee41 | 26 | |
8f97a47a | 27 | =head1 Notice |
eb32ee41 | 28 | |
8f97a47a | 29 | XXX Any important notices here |
5e26bbbe | 30 | |
8f97a47a | 31 | =head1 Core Enhancements |
5e26bbbe | 32 | |
8f97a47a TM |
33 | XXX New core language features go here. Summarise user-visible core language |
34 | enhancements. Particularly prominent performance optimisations could go | |
35 | here, but most should go in the L</Performance Enhancements> section. | |
5e26bbbe | 36 | |
8f97a47a | 37 | [ List each enhancement as a =head2 entry ] |
4f65bc30 | 38 | |
c035a075 DG |
39 | =head2 Single term prototype |
40 | ||
41 | The C<+> prototype is a special alternative to C<$> that will act like | |
42 | C<\[@%]> when given a literal array or hash variable, but will otherwise | |
43 | force scalar context on the argument. This is useful for functions which | |
44 | should accept either a literal array or an array reference as the argument: | |
45 | ||
46 | sub smartpush (+@) { | |
47 | my $aref = shift; | |
48 | die "Not an array or arrayref" unless ref $aref eq 'ARRAY'; | |
49 | push @$aref, @_; | |
50 | } | |
51 | ||
52 | When using the C<+> prototype, your function must check that the argument | |
53 | is of an acceptable type. | |
54 | ||
b7bd32cc FC |
55 | =head2 C<use re '/flags';> |
56 | ||
57 | The C<re> pragma now has the ability to turn on regular expression flags | |
58 | till the end of the lexical scope: | |
59 | ||
60 | use re '/x'; | |
61 | "foo" =~ / (.+) /; # /x implied | |
62 | ||
63 | See L<re/'/flags' mode> for details. | |
64 | ||
a5e71717 FC |
65 | =head2 Statement labels can appear in more places |
66 | ||
67 | Statement labels can now occur before any type of statement or declaration, | |
68 | such as C<package>. | |
69 | ||
9b7c43ba KW |
70 | =head2 C<use feature "unicode_strings"> now applies to more regex matching |
71 | ||
72 | Another chunk of the L<perlunicode/The "Unicode Bug"> is fixed in this | |
73 | release. Now, regular expressions compiled within the scope of the | |
74 | "unicode_strings" feature (or under the "u" regex modifier (specifiable | |
75 | currently only with infix notation C<(?u:...)> or via C<use re '/u'>) | |
76 | will match the same whether or not the target string is encoded in utf8, | |
77 | with regard to C<[[:posix:]]> character classes | |
78 | ||
79 | Work is underway to add the case sensitive matching to the control of | |
80 | this feature, but was not complete in time for this dot release. | |
81 | ||
cba5a3b0 DG |
82 | =head2 Array and hash container functions accept references |
83 | ||
84 | All built-in functions that operate directly on array or hash | |
85 | containers now also accept hard references to arrays or hashes: | |
86 | ||
87 | |----------------------------+---------------------------| | |
88 | | Traditional syntax | Terse syntax | | |
89 | |----------------------------+---------------------------| | |
90 | | push @$arrayref, @stuff | push $arrayref, @stuff | | |
91 | | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | | |
92 | | pop @$arrayref | pop $arrayref | | |
93 | | shift @$arrayref | shift $arrayref | | |
94 | | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | | |
95 | | keys %$hashref | keys $hashref | | |
96 | | keys @$arrayref | keys $arrayref | | |
97 | | values %$hashref | values $hashref | | |
98 | | values @$arrayref | values $arrayref | | |
99 | | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | | |
100 | | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | | |
101 | |----------------------------+---------------------------| | |
102 | ||
103 | This allows these built-in functions to act on long dereferencing chains | |
104 | or on the return value of subroutines without needing to wrap them in | |
105 | C<@{}> or C<%{}>: | |
106 | ||
107 | push @{$obj->tags}, $new_tag; # old way | |
108 | push $obj->tags, $new_tag; # new way | |
109 | ||
110 | for ( keys %{$hoh->{genres}{artists}} ) {...} # old way | |
111 | for ( keys $hoh->{genres}{artists} ) {...} # new way | |
112 | ||
113 | For C<push>, C<unshift> and C<splice>, the reference will auto-vivify | |
114 | if it is not defined, just as if it were wrapped with C<@{}>. | |
115 | ||
116 | Calling C<keys> or C<values> directly on a reference gives a substantial | |
117 | performance improvement over explicit dereferencing. | |
118 | ||
119 | For C<keys>, C<values>, C<each>, when overloaded dereferencing is | |
120 | present, the overloaded dereference is used instead of dereferencing the | |
121 | underlying reftype. Warnings are issued about assumptions made in the | |
122 | following three ambiguous cases: | |
123 | ||
124 | (a) If both %{} and @{} overloading exists, %{} is used | |
125 | (b) If %{} overloading exists on a blessed arrayref, %{} is used | |
126 | (c) If @{} overloading exists on a blessed hashref, @{} is used | |
127 | ||
8f97a47a | 128 | =head1 Security |
4f65bc30 | 129 | |
8f97a47a TM |
130 | XXX Any security-related notices go here. In particular, any security |
131 | vulnerabilities closed should be noted here rather than in the | |
132 | L</Selected Bug Fixes> section. | |
0eec0a4c | 133 | |
8f97a47a | 134 | [ List each security issue as a =head2 entry ] |
0eec0a4c | 135 | |
4c793fe3 FR |
136 | =head1 Incompatible Changes |
137 | ||
8f97a47a | 138 | XXX For a release on a stable branch, this section aspires to be: |
9de15fec | 139 | |
8f97a47a TM |
140 | There are no changes intentionally incompatible with 5.XXX.XXX. If any |
141 | exist, they are bugs and reports are welcome. | |
9de15fec | 142 | |
8f97a47a | 143 | [ List each incompatible change as a =head2 entry ] |
9de15fec | 144 | |
a638ba6f FC |
145 | =head2 Dereferencing typeglobs |
146 | ||
147 | If you assign a typeglob to a scalar variable: | |
148 | ||
149 | $glob = *foo; | |
150 | ||
151 | the glob that is copied to C<$glob> is marked with a special flag | |
152 | indicating that the glob is just a copy. This allows subsequent assignments | |
153 | to C<$glob> to overwrite the glob. The original glob, however, is | |
154 | immutable. | |
155 | ||
156 | Many Perl operators did not distinguish between these two types of globs. | |
157 | This would result in strange behaviour in edge cases: C<untie $scalar> | |
158 | would do nothing if the last thing assigned to the scalar was a glob | |
159 | (because it treated it as C<untie *$scalar>, which unties a handle). | |
0b6a3b5a | 160 | Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply |
a638ba6f FC |
161 | assign C<\@some_array> to C<$glob>. |
162 | ||
163 | To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms) | |
164 | has been modified to make a new immutable glob if its operand is a glob | |
165 | copy. Various operators that make a distinction between globs and scalars | |
166 | have been modified to treat only immutable globs as globs. | |
167 | ||
168 | This causes an incompatible change in code that assigns a glob to the | |
169 | return value of C<*{}> when that operator was passed a glob copy. Take the | |
170 | following code, for instance: | |
171 | ||
172 | $glob = *foo; | |
173 | *$glob = *bar; | |
174 | ||
175 | The C<*$glob> on the second line returns a new immutable glob. That new | |
176 | glob is made an alias to C<*bar>. Then it is discarded. | |
177 | ||
178 | The upside to this incompatible change is that bugs | |
179 | L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>, | |
180 | L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>, | |
181 | L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>, | |
182 | L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>, | |
183 | and | |
184 | L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>, | |
185 | and maybe others, too, have been fixed. | |
186 | ||
0b6a3b5a FC |
187 | See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even |
188 | more detail. | |
a638ba6f | 189 | |
8f97a47a | 190 | =head1 Deprecations |
6904a83f | 191 | |
8f97a47a TM |
192 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
193 | In particular, deprecated modules should be listed here even if they are | |
194 | listed as an updated module in the L</Modules and Pragmata> section. | |
6904a83f | 195 | |
8f97a47a | 196 | [ List each deprecation as a =head2 entry ] |
afa74577 | 197 | |
4c793fe3 FR |
198 | =head1 Performance Enhancements |
199 | ||
8f97a47a TM |
200 | XXX Changes which enhance performance without changing behaviour go here. There |
201 | may well be none in a stable release. | |
4c793fe3 | 202 | |
8f97a47a | 203 | [ List each enhancement as a =item entry ] |
e2babdfb | 204 | |
8f97a47a | 205 | =over 4 |
e2babdfb | 206 | |
b141c43c FR |
207 | =item * |
208 | ||
8f97a47a | 209 | XXX |
b141c43c | 210 | |
4c793fe3 FR |
211 | =back |
212 | ||
213 | =head1 Modules and Pragmata | |
214 | ||
8f97a47a TM |
215 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
216 | go here. If Module::CoreList is updated, generate an initial draft of the | |
217 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
218 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
219 | below. A paragraph summary for important changes should then be added by hand. | |
220 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
221 | cribbed. | |
e2941eb0 | 222 | |
8f97a47a | 223 | [ Within each section, list entries as a =item entry ] |
e2941eb0 | 224 | |
8f97a47a | 225 | =head2 New Modules and Pragmata |
25e68b8b | 226 | |
8f97a47a | 227 | =over 4 |
463da0ac CBW |
228 | |
229 | =item * | |
230 | ||
539ce3d8 CBW |
231 | C<Unicode::Collate::CJK::JISX0208> module was added by the C<Unicode::Collate> |
232 | upgrade from 0.63 to 0.64. See below. | |
6481ebaf | 233 | |
8f97a47a | 234 | =back |
6481ebaf | 235 | |
8f97a47a | 236 | =head2 Updated Modules and Pragmata |
6481ebaf | 237 | |
8f97a47a | 238 | =over 4 |
ac4c9720 CBW |
239 | |
240 | =item * | |
241 | ||
9f1eb87f CBW |
242 | C<Archive::Extract> has been upgraded from 0.44 to 0.46 |
243 | ||
244 | Resolves an issue with NetBSD-current and its new unzip | |
245 | executable. | |
246 | ||
247 | =item * | |
248 | ||
a5e71717 FC |
249 | C<B> has been upgraded from 1.24 to 1.25. |
250 | ||
251 | =item * | |
252 | ||
b293762b | 253 | C<B::Deparse> has been upgraded from 0.99 to 1.01. |
b7bd32cc FC |
254 | |
255 | It fixes deparsing of C<our> followed by a variable with funny characters | |
256 | (as permitted under the C<utf8> pragma) | |
257 | L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>. | |
258 | ||
259 | =item * | |
260 | ||
07be2ace CBW |
261 | C<CPAN> has been upgraded from 1.94_61 to 1.94_62 |
262 | ||
263 | =item * | |
264 | ||
59af3f66 CBW |
265 | C<CPANPLUS> has been upgraded from 0.9007 to 0.9010 |
266 | ||
267 | Fixes for the SQLite source engine and resolving of issues with the | |
268 | testsuite when run under local::lib and/or cpanminus | |
269 | ||
270 | =item * | |
271 | ||
f5c34353 CBW |
272 | C<CPANPLUS::Dist::Build> has been upgraded from 0.48 to 0.50 |
273 | ||
274 | =item * | |
275 | ||
9e2ac5d4 FC |
276 | C<DynaLoader> has been upgraded from 1.10 to 1.11. |
277 | ||
278 | It fixes a buffer overflow when passed a very long file name. | |
279 | ||
280 | =item * | |
281 | ||
48ea5431 FC |
282 | C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23. |
283 | ||
284 | =item * | |
285 | ||
286 | C<Fcntl> has been upgraded from 1.09 to 1.10. | |
287 | ||
288 | =item * | |
289 | ||
290 | C<File::Glob> has been upgraded from 1.09 to 1.10. | |
291 | ||
292 | =item * | |
293 | ||
c39f7439 FC |
294 | C<GDBM_File> has been upgraded from 1.11 to 1.12. |
295 | ||
296 | This fixes a memory leak when DBM filters are used. | |
297 | ||
298 | =item * | |
299 | ||
48ea5431 FC |
300 | C<Hash::Util> has been upgraded from 0.09 to 0.10. |
301 | ||
b293762b FC |
302 | =item * |
303 | ||
304 | C<Hash::Util::FieldHash> has been upgraded from 1.05 to 1.06. | |
48ea5431 FC |
305 | |
306 | =item * | |
307 | ||
308 | C<I18N::Langinfo> has been upgraded from 0.06 to 0.07. | |
309 | ||
310 | =item * | |
311 | ||
e1be28b4 TR |
312 | C<Locale::Maketext> has been upgraded from 1.16 to 1.17 |
313 | ||
314 | =item * | |
315 | ||
b293762b FC |
316 | C<Math::BigInt::FastCalc> has been upgraded from 0.22 to 0.23. |
317 | ||
318 | =item * | |
319 | ||
8ff01ef0 FC |
320 | C<mro> has been upgraded from 1.04 to 1.05. |
321 | ||
322 | =item * | |
323 | ||
c39f7439 FC |
324 | C<NDBM_File> has been upgraded from 1.09 to 1.10. |
325 | ||
326 | This fixes a memory leak when DBM filters are used. | |
327 | ||
328 | =item * | |
329 | ||
330 | C<ODBM_File> has been upgraded from 1.08 to 1.09. | |
331 | ||
332 | This fixes a memory leak when DBM filters are used. | |
333 | ||
334 | =item * | |
335 | ||
a9aeb2f1 CBW |
336 | C<parent> has been upgraded from 0.223 to 0.224 |
337 | ||
338 | =item * | |
339 | ||
48ea5431 FC |
340 | C<POSIX> has been upgraded from 1.21 to 1.22. |
341 | ||
342 | =item * | |
343 | ||
b7bd32cc FC |
344 | C<re> has been upgraded from 0.13 to 0.14, for the sake of the new |
345 | C<use re "/flags"> pragma. | |
dfa4c013 | 346 | |
48ea5431 FC |
347 | =item * |
348 | ||
8ff01ef0 FC |
349 | C<Safe> has been upgraded from 2.28 to 2.29. |
350 | ||
351 | It adds C<&version::vxs::VCMP> to the default share. | |
352 | ||
353 | =item * | |
354 | ||
48ea5431 FC |
355 | C<SDBM_File> has been upgraded from 1.07 to 1.08. |
356 | ||
357 | =item * | |
358 | ||
a5e71717 FC |
359 | C<SelfLoader> has been upgraded from 1.17 to 1.18. |
360 | ||
361 | It now works in taint mode | |
362 | L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>. | |
363 | ||
364 | =item * | |
365 | ||
48ea5431 FC |
366 | C<Socket> has been upgraded from 1.90 to 1.91. |
367 | ||
a5e71717 FC |
368 | =item * |
369 | ||
370 | C<Sys::Hostname> has been upgraded from 1.13 to 1.14. | |
371 | ||
539ce3d8 CBW |
372 | =item * |
373 | ||
374 | C<Unicode::Collate> has been upgraded from 0.63 to 0.64 | |
375 | ||
376 | This release newly adds locale C<ja> and the module | |
377 | C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji | |
378 | (CJK Unified Ideographs) in the JIS X 0208 order. | |
379 | ||
8f97a47a | 380 | =back |
dfa4c013 | 381 | |
8f97a47a | 382 | =head2 Removed Modules and Pragmata |
c02ee425 | 383 | |
8f97a47a | 384 | =over 4 |
1393fe00 CBW |
385 | |
386 | =item * | |
387 | ||
8f97a47a | 388 | XXX |
c9a84c8b | 389 | |
8f97a47a | 390 | =back |
918184d1 | 391 | |
8f97a47a | 392 | =head1 Documentation |
918184d1 | 393 | |
8f97a47a TM |
394 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
395 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
918184d1 | 396 | |
570c3caa | 397 | L<perlvar> reorders the variables and groups them by topic. Each variable |
398 | introduced after Perl 5.000 notes the first version in which it is | |
399 | available. L<perlvar> also has a new section for deprecated variables to | |
400 | note when they were removed. | |
401 | ||
8f97a47a | 402 | =head2 New Documentation |
dca41e57 | 403 | |
8f97a47a | 404 | XXX Changes which create B<new> files in F<pod/> go here. |
dca41e57 | 405 | |
8f97a47a | 406 | =head3 L<XXX> |
c9a84c8b | 407 | |
8f97a47a | 408 | XXX Description of the purpose of the new file here |
4c793fe3 | 409 | |
ee0887a9 | 410 | =head2 Changes to Existing Documentation |
fc1418b7 | 411 | |
8f97a47a TM |
412 | XXX Changes which significantly change existing files in F<pod/> go here. |
413 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
414 | section. | |
415 | ||
7eb82171 DG |
416 | =over |
417 | ||
48ea5431 FC |
418 | =item * |
419 | ||
a5e71717 | 420 | Array and hash slices in scalar context are now documented in L<perldata>. |
48ea5431 | 421 | |
b293762b FC |
422 | =item * |
423 | ||
424 | L<perlform> and L<perllocale> have been corrected to state that | |
425 | C<use locale> affects formats. | |
426 | ||
7eb82171 DG |
427 | =back |
428 | ||
8f97a47a | 429 | =head3 L<XXX> |
e2babdfb | 430 | |
7bc3efda SH |
431 | =over 4 |
432 | ||
433 | =item * | |
434 | ||
8f97a47a | 435 | XXX Description of the change here |
7bc3efda SH |
436 | |
437 | =back | |
e2babdfb | 438 | |
4c793fe3 FR |
439 | =head1 Diagnostics |
440 | ||
441 | The following additions or changes have been made to diagnostic output, | |
442 | including warnings and fatal error messages. For the complete list of | |
443 | diagnostic messages, see L<perldiag>. | |
444 | ||
8f97a47a TM |
445 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
446 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
4c793fe3 | 447 | |
8f97a47a | 448 | [ Within each section, list entries as a =item entry ] |
4c793fe3 | 449 | |
8f97a47a | 450 | =head2 New Diagnostics |
4c793fe3 | 451 | |
8f97a47a | 452 | XXX Newly added diagnostic messages go here |
dc08898c FC |
453 | |
454 | =over 4 | |
455 | ||
456 | =item * | |
457 | ||
8f97a47a | 458 | XXX |
dc08898c FC |
459 | |
460 | =back | |
461 | ||
8f97a47a | 462 | =head2 Changes to Existing Diagnostics |
4c793fe3 | 463 | |
8f97a47a | 464 | XXX Changes (i.e. rewording) of diagnostic messages go here |
0c692eed | 465 | |
ee0887a9 | 466 | =over 4 |
0c692eed FR |
467 | |
468 | =item * | |
469 | ||
8f97a47a | 470 | XXX |
4c793fe3 FR |
471 | |
472 | =back | |
473 | ||
8f97a47a | 474 | =head1 Utility Changes |
810f3b7c | 475 | |
8f97a47a TM |
476 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
477 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
a9e68e41 | 478 | |
8f97a47a TM |
479 | [ List utility changes as a =head3 entry for each utility and =item |
480 | entries for each change | |
481 | Use L<XXX> with program names to get proper documentation linking. ] | |
a9e68e41 | 482 | |
8f97a47a | 483 | =head3 L<XXX> |
85318b69 | 484 | |
ee0887a9 | 485 | =over 4 |
80b6a949 | 486 | |
e2babdfb FR |
487 | =item * |
488 | ||
8f97a47a | 489 | XXX |
9ae8c3d9 | 490 | |
ee0887a9 | 491 | =back |
e2babdfb | 492 | |
8f97a47a | 493 | =head1 Configuration and Compilation |
e2babdfb | 494 | |
8f97a47a TM |
495 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
496 | go here. Any other changes to the Perl build process should be listed here. | |
497 | However, any platform-specific changes should be listed in the | |
498 | L</Platform Support> section, instead. | |
346e4e56 | 499 | |
8f97a47a | 500 | [ List changes as a =item entry ]. |
78846812 | 501 | |
8f97a47a | 502 | =over 4 |
e54f3f30 FC |
503 | |
504 | =item * | |
505 | ||
8f97a47a | 506 | XXX |
e54f3f30 | 507 | |
8f97a47a | 508 | =back |
a5763045 | 509 | |
8f97a47a | 510 | =head1 Testing |
5a9a79a4 | 511 | |
8f97a47a TM |
512 | XXX Any significant changes to the testing of a freshly built perl should be |
513 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
514 | large changes to the testing harness (e.g. when parallel testing was added). | |
515 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
516 | that they represent may be covered elsewhere. | |
5a9a79a4 | 517 | |
8f97a47a | 518 | [ List each test improvement as a =item entry ] |
a7e93501 | 519 | |
8f97a47a | 520 | =over 4 |
a7e93501 FC |
521 | |
522 | =item * | |
523 | ||
8f97a47a | 524 | XXX |
a7e93501 | 525 | |
8f97a47a | 526 | =back |
a7e93501 | 527 | |
8f97a47a | 528 | =head1 Platform Support |
a7e93501 | 529 | |
8f97a47a | 530 | XXX Any changes to platform support should be listed in the sections below. |
a7e93501 | 531 | |
8f97a47a TM |
532 | [ Within the sections, list each platform as a =item entry with specific |
533 | changes as paragraphs below it. ] | |
a7e93501 | 534 | |
8f97a47a | 535 | =head2 New Platforms |
d4a59e54 | 536 | |
8f97a47a TM |
537 | XXX List any platforms that this version of perl compiles on, that previous |
538 | versions did not. These will either be enabled by new files in the F<hints/> | |
539 | directories, or new subdirectories and F<README> files at the top level of the | |
540 | source tree. | |
d4a59e54 | 541 | |
8f97a47a | 542 | =over 4 |
dc08898c | 543 | |
8f97a47a | 544 | =item XXX-some-platform |
dc08898c | 545 | |
8f97a47a | 546 | XXX |
dc08898c | 547 | |
8f97a47a | 548 | =back |
6904a83f | 549 | |
8f97a47a | 550 | =head2 Discontinued Platforms |
6904a83f | 551 | |
8f97a47a | 552 | XXX List any platforms that this version of perl no longer compiles on. |
6904a83f | 553 | |
8f97a47a | 554 | =over 4 |
cffb3698 | 555 | |
8f97a47a | 556 | =item XXX-some-platform |
ab4c2c27 | 557 | |
8f97a47a | 558 | XXX |
ab4c2c27 | 559 | |
8f97a47a | 560 | =back |
be1cc451 | 561 | |
8f97a47a | 562 | =head2 Platform-Specific Notes |
be1cc451 | 563 | |
8f97a47a TM |
564 | XXX List any changes for specific platforms. This could include configuration |
565 | and compilation changes or changes in portability/compatibility. However, | |
566 | changes within modules for platforms should generally be listed in the | |
567 | L</Modules and Pragmata> section. | |
b20c4ee1 | 568 | |
8f97a47a | 569 | =over 4 |
b20c4ee1 | 570 | |
b293762b | 571 | =item Windows |
afa74577 | 572 | |
b293762b FC |
573 | Directory handles are now properly cloned when threads are created. In perl |
574 | 5.13.6, child threads simply stopped inheriting directory handles. In | |
575 | previous versions, threads would share handles, resulting in crashes. | |
afa74577 | 576 | |
8f97a47a | 577 | =back |
c8bbf675 | 578 | |
8f97a47a | 579 | =head1 Internal Changes |
c8bbf675 | 580 | |
8f97a47a TM |
581 | XXX Changes which affect the interface available to C<XS> code go here. |
582 | Other significant internal changes for future core maintainers should | |
583 | be noted as well. | |
07d5f7aa | 584 | |
8f97a47a | 585 | [ List each test improvement as a =item entry ] |
07d5f7aa | 586 | |
8f97a47a | 587 | =over 4 |
07d5f7aa | 588 | |
9ae8c3d9 FC |
589 | =item * |
590 | ||
b7bd32cc FC |
591 | C<lex_start> has been added to the API, but is considered experimental. |
592 | ||
593 | =item * | |
594 | ||
595 | A new C<parse_block> function has been added to the API | |
596 | L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. | |
597 | ||
598 | =item * | |
599 | ||
c678e617 | 600 | A new, experimental API has been added for accessing the internal |
b7bd32cc FC |
601 | structure that Perl uses for C<%^H>. See the functions beginning with |
602 | C<cophh_> in L<perlapi>. | |
9ae8c3d9 | 603 | |
a5e71717 FC |
604 | =item * |
605 | ||
606 | A stash can now have a list of effective names in addition to its usual | |
8ff01ef0 FC |
607 | name. The first effective name can be accessed via the C<HvENAME> macro, |
608 | which is now the recommended name to use in MRO linearisations (C<HvNAME> | |
609 | being a fallback if there is no C<HvENAME>). | |
610 | ||
611 | These names are added and deleted via C<hv_ename_add> and | |
612 | C<hv_ename_delete>. These two functions are I<not> part of the API. | |
a5e71717 | 613 | |
b293762b FC |
614 | =item * |
615 | ||
616 | The way the parser handles labels has been cleaned up and refactored. As a | |
617 | result, the C<newFOROP()> constructor function no longer takes a parameter | |
618 | stating what label is to go in the state op. | |
619 | ||
620 | =item * | |
621 | ||
622 | The C<newWHILEOP()> and C<newFOROP()> functions no longer accept a line | |
623 | number as a parameter. | |
624 | ||
625 | =item * | |
626 | ||
627 | A new C<parse_barestmt()> function has been added, for parsing a statement | |
628 | without a label. | |
629 | ||
630 | =item * | |
631 | ||
632 | A new C<parse_label()> function has been added, that parses a statement | |
633 | labels, separate from statements. | |
634 | ||
635 | =item * | |
636 | ||
637 | The C<CvSTASH()> macro can now only be used as an rvalue. C<CvSTASH_set()> | |
638 | has been added to replace assignment to C<CvSTASH()>. This is to ensure | |
639 | that backreferences are handled properly. These macros are not part of the | |
640 | API. | |
641 | ||
642 | =item * | |
643 | ||
644 | The C<op_scope()> and C<op_lvalue()> functions have been added to the API, | |
645 | but are considered experimental. | |
646 | ||
8f97a47a | 647 | =back |
825563b9 | 648 | |
8f97a47a | 649 | =head1 Selected Bug Fixes |
825563b9 | 650 | |
8f97a47a TM |
651 | XXX Important bug fixes in the core language are summarised here. |
652 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
653 | L</Modules and Pragmata>. | |
825563b9 | 654 | |
8f97a47a | 655 | [ List each fix as a =item entry ] |
825563b9 | 656 | |
8f97a47a | 657 | =over 4 |
825563b9 | 658 | |
020fe755 AB |
659 | =item * |
660 | ||
b7bd32cc FC |
661 | The C<parse_stmt> C function added in earlier in the 5.13.x series has been |
662 | fixed to work with statements ending with C<}> | |
663 | L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. | |
664 | ||
665 | =item * | |
666 | ||
667 | The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work | |
668 | when called while an expression is being parsed. | |
669 | ||
670 | =item * | |
671 | ||
672 | Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match | |
673 | themselves if the string happened to be UTF8-encoded internally, the | |
674 | regular expression was not, and the character in the regular expression was | |
675 | inside a repeated group (e.g., | |
c678e617 | 676 | C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>) |
b7bd32cc FC |
677 | L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>. |
678 | ||
679 | =item * | |
680 | ||
681 | The C<(?d)> regular expression construct now overrides a previous C<(?u)> | |
682 | or C<use feature "unicode_string"> | |
683 | L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>. | |
684 | ||
685 | =item * | |
686 | ||
687 | A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed | |
688 | L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>. | |
020fe755 | 689 | |
b293762b FC |
690 | =item * |
691 | ||
692 | Various bugs related to typeglob dereferencing have been fixed. See | |
693 | L</Dereferencing typeglobs>, above. | |
694 | ||
695 | =item * | |
696 | ||
697 | The C<SvPVbyte> function available to XS modules now calls magic before | |
698 | downgrading the SV, to avoid warnings about wide characters | |
699 | L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>. | |
700 | ||
701 | =item * | |
702 | ||
703 | The C<=> operator used to ignore magic (e.g., tie methods) on its | |
704 | right-hand side if the scalar happened to hold a typeglob. This could | |
705 | happen if a typeglob was the last thing returned from or assigned to a tied | |
706 | scalar | |
707 | L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>. | |
708 | ||
709 | =item * | |
710 | ||
711 | C<sprintf> was ignoring locales when called with constant arguments | |
712 | L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>. | |
713 | ||
9b7c43ba KW |
714 | =item * |
715 | ||
716 | A non-ASCII character in the Latin-1 range could match both a Posix | |
717 | class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>. This is | |
718 | now fixed for regular expressions compiled under the C<"u"> modifier. | |
719 | See L</C<use feature "unicode_strings"> now applies to more regex matching>. | |
720 | L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>. | |
721 | ||
8ff01ef0 FC |
722 | =item * |
723 | ||
724 | Concatenating long strings under C<use encoding> no longer causes perl to | |
725 | crash | |
726 | L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>. | |
727 | ||
728 | =item * | |
729 | ||
730 | Typeglob assignments would crash if the glob's stash no longer existed, if | |
731 | the glob assigned to was named 'ISA' or the glob on either side of the | |
732 | assignment contained a subroutine. | |
733 | ||
734 | =item * | |
735 | ||
736 | Calling C<< ->import >> on a class lacking an import method could corrupt the stack result in strange behaviour. For instance, | |
737 | ||
738 | push @a, "foo", $b = bar->import; | |
739 | ||
740 | would assign 'foo' to C<$b> | |
741 | L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>. | |
742 | ||
743 | =item * | |
744 | ||
745 | Creating an alias to a package when that package had been detached from the | |
746 | symbol table would result in corrupted isa caches | |
747 | L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>. | |
748 | ||
749 | =item * | |
750 | ||
751 | C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/> | |
752 | contained characters beyond the octet range and the scalar assigned to | |
753 | happened to be encoded as UTF8 internally | |
754 | L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>. | |
755 | ||
756 | =item * | |
757 | ||
758 | The C<recv> function could crash when called with the MSG_TRUNC flag | |
759 | L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>. | |
760 | ||
9e2ac5d4 FC |
761 | =item * |
762 | ||
763 | Evaluating a simple glob (like C<*a>) was calling get-magic on the glob, | |
764 | even when its contents were not being used | |
765 | L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>. | |
766 | ||
767 | This bug was introduced in 5.13.2 and did not affect earlier perl versions. | |
768 | ||
8f97a47a | 769 | =back |
020fe755 | 770 | |
8f97a47a | 771 | =head1 Known Problems |
020fe755 | 772 | |
8f97a47a TM |
773 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
774 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
775 | they were specific to a particular platform (see below). | |
62ff64ce | 776 | |
8f97a47a TM |
777 | This is a list of some significant unfixed bugs, which are regressions |
778 | from either 5.XXX.XXX or 5.XXX.XXX. | |
62ff64ce | 779 | |
8f97a47a | 780 | [ List each fix as a =item entry ] |
62ff64ce | 781 | |
8f97a47a | 782 | =over 4 |
62ff64ce FC |
783 | |
784 | =item * | |
785 | ||
8f97a47a | 786 | XXX |
62ff64ce | 787 | |
4c793fe3 FR |
788 | =back |
789 | ||
8f97a47a | 790 | =head1 Obituary |
405fd67e | 791 | |
8f97a47a TM |
792 | XXX If any significant core contributor has died, we've added a short obituary |
793 | here. | |
405fd67e | 794 | |
ee0887a9 | 795 | =head1 Acknowledgements |
0195fb5f | 796 | |
8f97a47a | 797 | XXX The list of people to thank goes here. |
4c793fe3 FR |
798 | |
799 | =head1 Reporting Bugs | |
800 | ||
801 | If you find what you think is a bug, you might check the articles | |
802 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
803 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
804 | information at http://www.perl.org/ , the Perl Home Page. | |
805 | ||
806 | If you believe you have an unreported bug, please run the B<perlbug> | |
807 | program included with your release. Be sure to trim your bug down | |
808 | to a tiny but sufficient test case. Your bug report, along with the | |
809 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
810 | analysed by the Perl porting team. | |
811 | ||
812 | If the bug you are reporting has security implications, which make it | |
813 | inappropriate to send to a publicly archived mailing list, then please send | |
ee0887a9 | 814 | it to perl5-security-report@perl.org. This points to a closed subscription |
4c793fe3 FR |
815 | unarchived mailing list, which includes all the core committers, who be able |
816 | to help assess the impact of issues, figure out a resolution, and help | |
817 | co-ordinate the release of patches to mitigate or fix the problem across all | |
ee0887a9 | 818 | platforms on which Perl is supported. Please only use this address for |
4c793fe3 FR |
819 | security issues in the Perl core, not for modules independently |
820 | distributed on CPAN. | |
821 | ||
822 | =head1 SEE ALSO | |
823 | ||
824 | The F<Changes> file for an explanation of how to view exhaustive details | |
825 | on what changed. | |
826 | ||
827 | The F<INSTALL> file for how to build Perl. | |
828 | ||
829 | The F<README> file for general stuff. | |
830 | ||
831 | The F<Artistic> and F<Copying> files for copyright information. | |
832 | ||
833 | =cut |