This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update the perldelta for ExtUtils::Constant.
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to f869c5854, except for:
5 249534c343ab758089ce40786709465e328c8b2d
6 I may have missed a few module version bumps.
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
12
13 perldelta - what is new for perl v5.13.7
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.13.6 release and
18 the 5.13.7 release.
19
20 If you are upgrading from an earlier release such as 5.13.5, first read
21 L<perl5136delta>, which describes differences between 5.13.5 and
22 5.13.6.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 Single term prototype
37
38 The C<+> prototype is a special alternative to C<$> that will act like
39 C<\[@%]> when given a literal array or hash variable, but will otherwise
40 force scalar context on the argument.  This is useful for functions which
41 should accept either a literal array or an array reference as the argument:
42
43     sub smartpush (+@) {
44         my $aref = shift;
45         die "Not an array or arrayref" unless ref $aref eq 'ARRAY';
46         push @$aref, @_;
47     }
48
49 When using the C<+> prototype, your function must check that the argument
50 is of an acceptable type.
51
52 =head2 C<use re '/flags';>
53
54 The C<re> pragma now has the ability to turn on regular expression flags
55 till the end of the lexical scope:
56
57     use re '/x';
58     "foo" =~ / (.+) /;  # /x implied
59
60 See L<re/'/flags' mode> for details.
61
62 =head2 Statement labels can appear in more places
63
64 Statement labels can now occur before any type of statement or declaration,
65 such as C<package>.
66
67 =head2 C<use feature "unicode_strings"> now applies to more regex matching
68
69 Another chunk of the L<perlunicode/The "Unicode Bug"> is fixed in this
70 release.  Now, regular expressions compiled within the scope of the
71 "unicode_strings" feature (or under the "u" regex modifier (specifiable
72 currently only with infix notation C<(?u:...)> or via C<use re '/u'>)
73 will match the same whether or not the target string is encoded in utf8,
74 with regard to C<[[:posix:]]> character classes
75
76 Work is underway to add the case sensitive matching to the control of
77 this feature, but was not complete in time for this dot release.
78
79 =head2 Array and hash container functions accept references
80
81 All built-in functions that operate directly on array or hash
82 containers now also accept hard references to arrays or hashes:
83
84   |----------------------------+---------------------------|
85   | Traditional syntax         | Terse syntax              |
86   |----------------------------+---------------------------|
87   | push @$arrayref, @stuff    | push $arrayref, @stuff    |
88   | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
89   | pop @$arrayref             | pop $arrayref             |
90   | shift @$arrayref           | shift $arrayref           |
91   | splice @$arrayref, 0, 2    | splice $arrayref, 0, 2    |
92   | keys %$hashref             | keys $hashref             |
93   | keys @$arrayref            | keys $arrayref            |
94   | values %$hashref           | values $hashref           |
95   | values @$arrayref          | values $arrayref          |
96   | ($k,$v) = each %$hashref   | ($k,$v) = each $hashref   |
97   | ($k,$v) = each @$arrayref  | ($k,$v) = each $arrayref  |
98   |----------------------------+---------------------------|
99
100 This allows these built-in functions to act on long dereferencing chains
101 or on the return value of subroutines without needing to wrap them in
102 C<@{}> or C<%{}>:
103
104   push @{$obj->tags}, $new_tag;  # old way
105   push $obj->tags,    $new_tag;  # new way
106
107   for ( keys %{$hoh->{genres}{artists}} ) {...} # old way 
108   for ( keys $hoh->{genres}{artists}    ) {...} # new way 
109
110 For C<push>, C<unshift> and C<splice>, the reference will auto-vivify
111 if it is not defined, just as if it were wrapped with C<@{}>.
112
113 Calling C<keys> or C<values> directly on a reference gives a substantial
114 performance improvement over explicit dereferencing.
115
116 For C<keys>, C<values>, C<each>, when overloaded dereferencing is
117 present, the overloaded dereference is used instead of dereferencing the
118 underlying reftype.  Warnings are issued about assumptions made in the
119 following three ambiguous cases:
120
121   (a) If both %{} and @{} overloading exists, %{} is used
122   (b) If %{} overloading exists on a blessed arrayref, %{} is used
123   (c) If @{} overloading exists on a blessed hashref, @{} is used
124
125 =head2 y///r
126
127 The C</r> flag, which was added to C<s///> in 5.13.2, has been extended to
128 the C<y///> operator.
129
130 It causes it to perform the substitution on a I<copy> of its operand,
131 returning that copy instead of a character count.
132
133 =head2 New global variable C<${^GLOBAL_PHASE}>
134
135 A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow
136 introspection of the current phase of the perl interpreter. It's explained in
137 detail in L<perlvar/"${^GLOBAL_PHASE}"> and
138 L<perlmod/"BEGIN, UNITCHECK, CHECK, INIT and END">.
139
140 =head2 Unicode Version 6.0 is now supported (mostly)
141
142 Perl comes with the Unicode 6.0 data base, with one exception noted
143 below.
144 See L<http://unicode.org/versions/Unicode6.0.0> for details on the new
145 release.  Perl does not support any Unicode provisional properties,
146 including the new ones for this release, but their database files are
147 packaged with Perl.
148
149 Unicode 6.0 has chosen to use the name C<BELL> for the character at U+1F514,
150 which is a symbol that looks like a bell, and used in Japanese cell
151 phones.  This conflicts with the long-standing Perl usage of having
152 C<BELL> mean the ASCII C<BEL> character, U+0007.  In Perl 5.14,
153 C<\N{BELL}> will continue to mean U+0007, but its use will generate a
154 deprecated warning message, unless such warnings are turned off.  The
155 new name for U+0007 in Perl will be C<ALERT>, which corresponds nicely
156 with the existing shorthand sequence for it, C<"\a">.  C<\N{BEL}> will
157 mean U+0007, with no warning given.  The character at U+1F514 will not
158 have a name in 5.14, but can be referred to by C<\N{U+1F514}>.  The plan
159 is that in Perl 5.16, C<\N{BELL}> will refer to U+1F514, and so all code
160 that uses C<\N{BELL}> should convert by then to using C<\N{ALERT}>,
161 C<\N{BEL}>, or C<"\a"> instead.
162
163 =head2 Improved support for custom OPs
164
165 Custom ops can now be registered with the new C<custom_op_register> C
166 function and the C<XOP> structure. This will make it easier to add new
167 properties of custom ops in the future. Two new properties have been added
168 already, C<xop_class> and C<xop_peep>.
169
170 C<xop_class> is one of the OA_*OP constants, and allows L<B> and other
171 introspection mechanisms to work with custom ops that aren't BASEOPs.
172 C<xop_peep> is a pointer to a function that will be called for ops of this
173 type from C<Perl_rpeep>.
174
175 See L<perlguts/Custom Operators> and L<perlapi/Custom Operators> for more
176 detail.
177
178 The old C<PL_custom_op_names>/C<PL_custom_op_descs> interface is still
179 supported but discouraged.
180
181 =head1 Security
182
183 XXX Any security-related notices go here.  In particular, any security
184 vulnerabilities closed should be noted here rather than in the
185 L</Selected Bug Fixes> section.
186
187 [ List each security issue as a =head2 entry ]
188
189 =head1 Incompatible Changes
190
191 XXX For a release on a stable branch, this section aspires to be:
192
193     There are no changes intentionally incompatible with 5.XXX.XXX. If any
194     exist, they are bugs and reports are welcome.
195
196 [ List each incompatible change as a =head2 entry ]
197
198 =head2 Dereferencing typeglobs
199
200 If you assign a typeglob to a scalar variable:
201
202     $glob = *foo;
203
204 the glob that is copied to C<$glob> is marked with a special flag
205 indicating that the glob is just a copy. This allows subsequent assignments
206 to C<$glob> to overwrite the glob. The original glob, however, is
207 immutable.
208
209 Many Perl operators did not distinguish between these two types of globs.
210 This would result in strange behaviour in edge cases: C<untie $scalar>
211 would do nothing if the last thing assigned to the scalar was a glob
212 (because it treated it as C<untie *$scalar>, which unties a handle).
213 Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply
214 assign C<\@some_array> to C<$glob>.
215
216 To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms)
217 has been modified to make a new immutable glob if its operand is a glob
218 copy. Various operators that make a distinction between globs and scalars
219 have been modified to treat only immutable globs as globs.
220
221 This causes an incompatible change in code that assigns a glob to the
222 return value of C<*{}> when that operator was passed a glob copy. Take the
223 following code, for instance:
224
225     $glob = *foo;
226     *$glob = *bar;
227
228 The C<*$glob> on the second line returns a new immutable glob. That new
229 glob is made an alias to C<*bar>. Then it is discarded. So the second
230 assignment has no effect.
231
232 It also means that C<tie $handle> will now tie C<$handle> as a scalar, even
233 if it has had a glob assigned to it.
234
235 The upside to this incompatible change is that bugs
236 L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>,
237 L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>,
238 L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>,
239 L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>,
240 and
241 L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>,
242 and maybe others, too, have been fixed.
243
244 See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even
245 more detail.
246
247 =head2 Clearing stashes
248
249 Stash list assignment C<%foo:: = ()> used to make the stash anonymous
250 temporarily while it was being emptied. Consequently, any of its
251 subroutines referenced elsewhere would become anonymous (showing up as
252 "(unknown)" in C<caller>). Now they retain their package names, such that
253 C<caller> will return the original sub name if there is still a reference
254 to its typeglob, or "foo::__ANON__" otherwise
255 L<[perl #79208]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79208>.
256
257 =head1 Deprecations
258
259 XXX Any deprecated features, syntax, modules etc. should be listed here.
260 In particular, deprecated modules should be listed here even if they are
261 listed as an updated module in the L</Modules and Pragmata> section.
262
263 [ List each deprecation as a =head2 entry ]
264
265 =head2 C<\N{BELL}> is deprecated
266
267 This is because Unicode is using that name for a different character.
268 See L</Unicode Version 6.0 is now supported (mostly)> for more
269 explanation.
270
271 =head1 Performance Enhancements
272
273 XXX Changes which enhance performance without changing behaviour go here. There
274 may well be none in a stable release.
275
276 [ List each enhancement as a =item entry ]
277
278 =over 4
279
280 =item *
281
282 When an object has many weak references to it, freeing that object
283 can under some some circumstances take O(N^2) time to free (where N is the
284 number of references). The number of circumstances has been reduced.
285 L<[perl #75254]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75254>.
286
287 =back
288
289 =head1 Modules and Pragmata
290
291 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
292 go here.  If Module::CoreList is updated, generate an initial draft of the
293 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
294 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
295 below.  A paragraph summary for important changes should then be added by hand.
296 In an ideal world, dual-life modules would have a F<Changes> file that could be
297 cribbed.
298
299 [ Within each section, list entries as a =item entry ]
300
301 =head2 New Modules and Pragmata
302
303 =over 4
304
305 =item *
306
307 The following modules were added by the C<Unicode::Collate> 
308 upgrade from 0.63 to 0.67. See below for details.
309
310 C<Unicode::Collate::CJK::Big5>
311
312 C<Unicode::Collate::CJK::GB2312>
313
314 C<Unicode::Collate::CJK::JISX0208>
315
316 C<Unicode::Collate::CJK::Korean>
317
318 C<Unicode::Collate::CJK::Pinyin>
319
320 C<Unicode::Collate::CJK::Stroke>
321
322 =back
323
324 =head2 Updated Modules and Pragmata
325
326 =over 4
327
328 =item *
329
330 C<Archive::Extract> has been upgraded from 0.44 to 0.46
331
332 Resolves an issue with NetBSD-current and its new unzip 
333 executable.
334
335 =item *
336
337 C<Archive::Tar> has been upgraded from 1.68 to 1.72
338
339 This adds the ptargrep utility for using regular expressions against 
340 the contents of files in a tar archive.
341
342 =item *
343
344 C<B> has been upgraded from 1.24 to 1.26.
345
346 It no longer crashes when taking apart a C<y///> containing characters
347 outside the octet range or compiled in a C<use utf8> scope.
348
349 The size of the shared object has been reduced by about 40%, with no
350 reduction in functionality.
351
352 =item *
353
354 C<B::Deparse> has been upgraded from 0.99 to 1.01.
355
356 It fixes deparsing of C<our> followed by a variable with funny characters
357 (as permitted under the C<utf8> pragma)
358 L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>.
359
360 =item *
361
362 C<CGI> has been upgraded from 3.49 to 3.50
363
364 This provides the following security fixes: the MIME boundary in 
365 multipart_init is now random and improvements to the handling of 
366 newlines embedded in header values.
367
368 The documentation for param_fetch() has been corrected and clarified.
369
370 =item *
371
372 C<CPAN> has been upgraded from 1.94_61 to 1.94_62
373
374 =item *
375
376 C<CPANPLUS> has been upgraded from 0.9007 to 0.9010
377
378 Fixes for the SQLite source engine and resolving of issues with the
379 testsuite when run under local::lib and/or cpanminus
380
381 =item *
382
383 C<CPANPLUS::Dist::Build> has been upgraded from 0.48 to 0.50
384
385 =item *
386
387 C<Data::Dumper> has been upgraded from 2.129 to 2.130.
388
389 =item *
390
391 C<DynaLoader> has been upgraded from 1.10 to 1.11.
392
393 It fixes a buffer overflow when passed a very long file name.
394
395 =item *
396
397 C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
398
399 The C<AUTOLOAD> helper code generated by C<ExtUtils::Constant::ProxySubs>
400 can now C<croak> for missing constants, or generate a complete C<AUTOLOAD>
401 subroutine in XS, allowing simplification of many modules that use it.
402 (C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<I18N::Langinfo>, C<POSIX>, C<Socket>)
403
404 C<ExtUtils::Constant::ProxySubs> can now optionally push the names of all
405 constants onto the package's C{@EXPORT_OK}. This has been used to replace
406 less space-efficient code in C<B>, helping considerably shrink the size of its
407 shared object.
408
409 =item *
410
411 C<Fcntl> has been upgraded from 1.09 to 1.10.
412
413 =item *
414
415 C<File::Fetch> has been upgraded from 0.24 to 0.28
416
417 C<HTTP::Lite> is now supported for 'http' scheme.
418
419 The C<fetch> utility is supported on FreeBSD, NetBSD and
420 Dragonfly BSD for the C<http> and C<ftp> schemes.
421
422 =item *
423
424 C<File::Glob> has been upgraded from 1.09 to 1.10.
425
426 =item *
427
428 C<File::stat> has been upgraded from 1.03 to 1.04.
429
430 The C<-x> and C<-X> file test operators now work correctly under the root
431 user.
432
433 =item *
434
435 C<GDBM_File> has been upgraded from 1.11 to 1.12.
436
437 This fixes a memory leak when DBM filters are used.
438
439 =item *
440
441 C<Hash::Util> has been upgraded from 0.09 to 0.10.
442
443 =item *
444
445 C<Hash::Util::FieldHash> has been upgraded from 1.05 to 1.06.
446
447 =item *
448
449 C<I18N::Langinfo> has been upgraded from 0.06 to 0.07.
450
451 =item *
452
453 C<Locale::Maketext> has been upgraded from 1.16 to 1.17.
454
455 =item *
456
457 C<Math::BigInt> has been upgraded from 1.97 to 1.99.
458
459 =item *
460
461 C<Math::BigInt::FastCalc> has been upgraded from 0.22 to 0.24.
462
463 =item *
464
465 C<MIME::Base64> has been upgraded from 3.09 to 3.10
466
467 Includes new functions to calculate the length of encoded and decoded
468 base64 strings.
469
470 =item *
471
472 C<mro> has been upgraded from 1.04 to 1.05.
473
474 =item *
475
476 C<NDBM_File> has been upgraded from 1.09 to 1.10.
477
478 This fixes a memory leak when DBM filters are used.
479
480 =item *
481
482 C<ODBM_File> has been upgraded from 1.08 to 1.09.
483
484 This fixes a memory leak when DBM filters are used.
485
486 =item *
487
488 C<Opcode> has been upgraded from 1.16 to 1.17.
489
490 =item *
491
492 C<parent> has been upgraded from 0.223 to 0.224
493
494 =item *
495
496 C<Pod::Simple> has been upgraded from 3.14 to 3.15
497
498 Includes various fixes to C<HTML> and C<XHTML> handling.
499
500 =item *
501
502 C<POSIX> has been upgraded from 1.21 to 1.22.
503
504 =item *
505
506 C<re> has been upgraded from 0.13 to 0.14, for the sake of the new
507 C<use re "/flags"> pragma.
508
509 =item *
510
511 C<Safe> has been upgraded from 2.28 to 2.29.
512
513 It adds C<&version::vxs::VCMP> to the default share.
514
515 =item *
516
517 C<SDBM_File> has been upgraded from 1.07 to 1.08.
518
519 =item *
520
521 C<SelfLoader> has been upgraded from 1.17 to 1.18.
522
523 It now works in taint mode
524 L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>.
525
526 =item *
527
528 C<Socket> has been upgraded from 1.90 to 1.91.
529
530 =item *
531
532 C<Storable> has been upgraded from 2.22 to 2.24
533
534 Includes performance improvement for overloaded classes.
535
536 =item *
537
538 C<Sys::Hostname> has been upgraded from 1.13 to 1.14.
539
540 =item *
541
542 C<Unicode::Collate> has been upgraded from 0.63 to 0.67
543
544 This release newly adds locales C<ja> C<ko> and C<zh> and its variants 
545 ( C<zh__big5han>, C<zh__gb2312han>, C<zh__pinyin>, C<zh__stroke> ).
546
547 Supported UCA_Version 22 for Unicode 6.0.0.
548
549 The following modules have been added:
550
551 C<Unicode::Collate::CJK::Big5> for C<zh__big5han> which makes 
552 tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering.
553
554 C<Unicode::Collate::CJK::GB2312> for C<zh__gb2312han> which makes
555 tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering.
556
557 C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji 
558 (CJK Unified Ideographs) in the JIS X 0208 order.
559
560 C<Unicode::Collate::CJK::Korean> which makes tailoring of CJK Unified Ideographs 
561 in the order of CLDR's Korean ordering.
562
563 C<Unicode::Collate::CJK::Pinyin> for C<zh__pinyin> which makes
564 tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering.
565
566 C<Unicode::Collate::CJK::Stroke> for C<zh__stroke> which makes
567 tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering.
568
569 =back
570
571 =head2 Removed Modules and Pragmata
572
573 =over 4
574
575 =item *
576
577 XXX
578
579 =back
580
581 =head1 Documentation
582
583 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
584 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
585
586 L<perlvar> reorders the variables and groups them by topic. Each variable
587 introduced after Perl 5.000 notes the first version in which it is 
588 available. L<perlvar> also has a new section for deprecated variables to
589 note when they were removed.
590
591 =head2 New Documentation
592
593 XXX Changes which create B<new> files in F<pod/> go here.
594
595 =head3 L<XXX>
596
597 XXX Description of the purpose of the new file here
598
599 =head2 Changes to Existing Documentation
600
601 XXX Changes which significantly change existing files in F<pod/> go here.
602 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
603 section.
604
605 =over
606
607 =item *
608
609 Array and hash slices in scalar context are now documented in L<perldata>.
610
611 =item *
612
613 L<perlform> and L<perllocale> have been corrected to state that
614 C<use locale> affects formats.
615
616 =back
617
618 =head3 L<XXX>
619
620 =over 4
621
622 =item *
623
624 XXX Description of the change here
625
626 =back
627
628 =head1 Diagnostics
629
630 The following additions or changes have been made to diagnostic output,
631 including warnings and fatal error messages.  For the complete list of
632 diagnostic messages, see L<perldiag>.
633
634 XXX New or changed warnings emitted by the core's C<C> code go here. Also
635 include any changes in L<perldiag> that reconcile it to the C<C> code.
636
637 [ Within each section, list entries as a =item entry ]
638
639 =head2 New Diagnostics
640
641 XXX Newly added diagnostic messages go here
642
643 =over 4
644
645 =item *
646
647 "Using !~ with %s doesn't make sense": This message was actually added in
648 5.13.2, but was omitted from perldelta. It now applies also to the C<y///>
649 operator, and has been documented.
650
651 =back
652
653 =head2 Changes to Existing Diagnostics
654
655 XXX Changes (i.e. rewording) of diagnostic messages go here
656
657 =over 4
658
659 =item *
660
661 XXX
662
663 =back
664
665 =head1 Utility Changes
666
667 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
668 here. Most of these are built within the directories F<utils> and F<x2p>.
669
670 [ List utility changes as a =head3 entry for each utility and =item
671 entries for each change
672 Use L<XXX> with program names to get proper documentation linking. ]
673
674 =head3 L<ptargrep>
675
676 =over 4
677
678 =item *
679
680 L<ptargrep> is a utility to apply pattern matching to the contents of files 
681 in a tar archive. It comes with C<Archive::Tar>.
682
683 =back
684
685 =head1 Configuration and Compilation
686
687 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
688 go here.  Any other changes to the Perl build process should be listed here.
689 However, any platform-specific changes should be listed in the
690 L</Platform Support> section, instead.
691
692 [ List changes as a =item entry ].
693
694 =over 4
695
696 =item *
697
698 XXX
699
700 =back
701
702 =head1 Testing
703
704 XXX Any significant changes to the testing of a freshly built perl should be
705 listed here.  Changes which create B<new> files in F<t/> go here as do any
706 large changes to the testing harness (e.g. when parallel testing was added).
707 Changes to existing files in F<t/> aren't worth summarising, although the bugs
708 that they represent may be covered elsewhere.
709
710 [ List each test improvement as a =item entry ]
711
712 =over 4
713
714 =item *
715
716 The new F<t/mro/isa_aliases.t> has been added, which tests that
717 C<*Foo::ISA = *Bar::ISA> works properly.
718
719 =item *
720
721 F<t/mro/isarev.t> has been added, which tests that C<PL_isarev> (accessible
722 at the Perl level via C<mro::get_isarev>) is updated properly.
723
724 =item *
725
726 F<t/run/switchd-78586.t> has been added, which tests that
727 L<[perl #78586]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78586>
728 has been fixed (related to line numbers in the debbuger).
729
730 =back
731
732 =head1 Platform Support
733
734 XXX Any changes to platform support should be listed in the sections below.
735
736 [ Within the sections, list each platform as a =item entry with specific
737 changes as paragraphs below it. ]
738
739 =head2 New Platforms
740
741 XXX List any platforms that this version of perl compiles on, that previous
742 versions did not. These will either be enabled by new files in the F<hints/>
743 directories, or new subdirectories and F<README> files at the top level of the
744 source tree.
745
746 =over 4
747
748 =item XXX-some-platform
749
750 XXX
751
752 =back
753
754 =head2 Discontinued Platforms
755
756 XXX List any platforms that this version of perl no longer compiles on.
757
758 =over 4
759
760 =item XXX-some-platform
761
762 XXX
763
764 =back
765
766 =head2 Platform-Specific Notes
767
768 XXX List any changes for specific platforms. This could include configuration
769 and compilation changes or changes in portability/compatibility.  However,
770 changes within modules for platforms should generally be listed in the
771 L</Modules and Pragmata> section.
772
773 =over 4
774
775 =item Windows
776
777 Directory handles are now properly cloned when threads are created. In perl
778 5.13.6, child threads simply stopped inheriting directory handles. In
779 previous versions, threads would share handles, resulting in crashes.
780
781 Support for building with Visual C++ 2010 is now underway, but is not yet
782 complete. See F<README.win32> for more details.
783
784 =item VMS
785
786 Record-oriented files (record format variable or variable wih fixed control)
787 opened for write by the perlio layer will now be line buffered to prevent the
788 introduction of spurious line breaks whenever the perlio buffer fills up.
789
790 =back
791
792 =head1 Internal Changes
793
794 XXX Changes which affect the interface available to C<XS> code go here.
795 Other significant internal changes for future core maintainers should
796 be noted as well.
797
798 [ List each test improvement as a =item entry ]
799
800 =over 4
801
802 =item *
803
804 C<lex_start> has been added to the API, but is considered experimental.
805
806 =item *
807
808 A new C<parse_block> function has been added to the API
809 L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
810
811 =item *
812
813 A new, experimental API has been added for accessing the internal
814 structure that Perl uses for C<%^H>. See the functions beginning with
815 C<cophh_> in L<perlapi>.
816
817 =item *
818
819 A stash can now have a list of effective names in addition to its usual
820 name. The first effective name can be accessed via the C<HvENAME> macro,
821 which is now the recommended name to use in MRO linearisations (C<HvNAME>
822 being a fallback if there is no C<HvENAME>).
823
824 These names are added and deleted via C<hv_ename_add> and
825 C<hv_ename_delete>. These two functions are I<not> part of the API.
826
827 =item *
828
829 The way the parser handles labels has been cleaned up and refactored. As a
830 result, the C<newFOROP()> constructor function no longer takes a parameter
831 stating what label is to go in the state op.
832
833 =item *
834
835 The C<newWHILEOP()> and C<newFOROP()> functions no longer accept a line
836 number as a parameter.
837
838 =item *
839
840 A new C<parse_barestmt()> function has been added, for parsing a statement
841 without a label.
842
843 =item *
844
845 A new C<parse_label()> function has been added, that parses a statement
846 label, separate from statements.
847
848 =item *
849
850 The C<CvSTASH()> macro can now only be used as an rvalue. C<CvSTASH_set()>
851 has been added to replace assignment to C<CvSTASH()>. This is to ensure
852 that backreferences are handled properly. These macros are not part of the
853 API.
854
855 =item *
856
857 The C<op_scope()> and C<op_lvalue()> functions have been added to the API,
858 but are considered experimental.
859
860 =back
861
862 =head1 Selected Bug Fixes
863
864 XXX Important bug fixes in the core language are summarised here.
865 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
866 L</Modules and Pragmata>.
867
868 [ List each fix as a =item entry ]
869
870 =over 4
871
872 =item *
873
874 The C<parse_stmt> C function added in earlier in the 5.13.x series has been
875 fixed to work with statements ending with C<}>
876 L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
877
878 =item *
879
880 The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work
881 when called while an expression is being parsed.
882
883 =item *
884
885 Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match
886 themselves if the string happened to be UTF8-encoded internally, the
887 regular expression was not, and the character in the regular expression was
888 inside a repeated group (e.g.,
889 C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>)
890 L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>.
891
892 =item *
893
894 The C<(?d)> regular expression construct now overrides a previous C<(?u)>
895 or C<use feature "unicode_string">
896 L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>.
897
898 =item *
899
900 A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed
901 L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>.
902
903 =item *
904
905 Various bugs related to typeglob dereferencing have been fixed. See
906 L</Dereferencing typeglobs>, above.
907
908 =item *
909
910 The C<SvPVbyte> function available to XS modules now calls magic before
911 downgrading the SV, to avoid warnings about wide characters
912 L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>.
913
914 =item *
915
916 The C<=> operator used to ignore magic (e.g., tie methods) on its
917 right-hand side if the scalar happened to hold a typeglob. This could
918 happen if a typeglob was the last thing returned from or assigned to a tied
919 scalar
920 L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>.
921
922 =item *
923
924 C<sprintf> was ignoring locales when called with constant arguments
925 L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>.
926
927 =item *
928
929 A non-ASCII character in the Latin-1 range could match both a Posix
930 class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>.  This is
931 now fixed for regular expressions compiled under the C<"u"> modifier.
932 See L</C<use feature "unicode_strings"> now applies to more regex matching>.
933 L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>.
934
935 =item *
936
937 Concatenating long strings under C<use encoding> no longer causes perl to
938 crash
939 L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>.
940
941 =item *
942
943 Typeglob assignments would crash if the glob's stash no longer existed, so
944 long as the glob assigned to was named 'ISA' or the glob on either side of
945 the assignment contained a subroutine.
946
947 =item *
948
949 Calling C<< ->import >> on a class lacking an import method could corrupt the stack result in strange behaviour. For instance,
950
951   push @a, "foo", $b = bar->import;
952
953 would assign 'foo' to C<$b>
954 L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>.
955
956 =item *
957
958 Creating an alias to a package when that package had been detached from the
959 symbol table would result in corrupted isa caches
960 L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>.
961
962 =item *
963
964 C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/>
965 contained characters beyond the octet range and the scalar assigned to
966 happened to be encoded as UTF8 internally
967 L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>.
968
969 =item *
970
971 The C<recv> function could crash when called with the MSG_TRUNC flag
972 L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>.
973
974 =item *
975
976 Evaluating a simple glob (like C<*a>) was calling get-magic on the glob,
977 even when its contents were not being used
978 L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>.
979
980 This bug was introduced in 5.13.2 and did not affect earlier perl versions.
981
982 =item *
983
984 Matching a Unicode character against an alternation containing characters
985 that happened to match continuation bytes in the former's UTF8
986 representation (C<qq{\x{30ab}} =~ /\xab|\xa9/>) would cause erroneous
987 warnings
988 L<[perl #70998]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=70998>.
989
990 =item *
991
992 C<s///r> (added in 5.13.2) no longer leaks.
993
994 =item *
995
996 The trie optimisation was not taking empty groups into account, preventing
997 'foo' from matching C</\A(?:(?:)foo|bar|zot)\z/>
998 L<[perl #78356]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78356>.
999
1000 =item *
1001
1002 A pattern containing a C<+> inside a lookahead would sometimes cause an
1003 incorrect match failure in a global match (e.g., C</(?=(\S+))/g>)
1004 L<[perl #68564]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68564>.
1005
1006 =item *
1007
1008 Iterating with C<foreach> over an array returned by an lvalue sub now works
1009 L<[perl #23790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=23790>.
1010
1011 =item *
1012
1013 C<$@> is now localised during calls to C<binmode> to prevent action at a
1014 distance
1015 L<[perl #78844]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78844>.
1016
1017 =item *
1018
1019 C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now
1020 updated properly when packages are deleted or removed from the C<@ISA> of
1021 other classes. This allows many packages to be created and deleted without
1022 causing a memory leak
1023 L<[perl #75176]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75176>.
1024
1025 =item *
1026
1027 C<undef *Foo::> and C<undef *Foo::ISA> and C<delete $package::{ISA}>
1028 used not to update the internal isa caches if the
1029 stash or C<@ISA> array had a reference elsewhere. In
1030 fact, C<undef *Foo::ISA> would stop a new C<@Foo::ISA> array from updating
1031 caches.
1032
1033 =item *
1034
1035 C<@ISA> arrays can now be shared between classes via
1036 C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA>
1037 L<[perl #77238]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77238>.
1038
1039 =item *
1040
1041 The parser no longer hangs when encountering certain Unicode characters,
1042 such as U+387
1043 L<[perl #74022]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74022>.
1044
1045 =item *
1046
1047 C<formline> no longer crashes when passed a tainted format picture. It also
1048 taints C<$^A> now if its arguments are tainted
1049 L<[perl #79138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79138>.
1050
1051 =item *
1052
1053 A signal handler called within a signal handler could cause leaks or
1054 double-frees. Now fixed.
1055 L<[perl #76248]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76248>.
1056
1057 =back
1058
1059 =head1 Known Problems
1060
1061 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1062 tests that had to be C<TODO>ed for the release would be noted here, unless
1063 they were specific to a particular platform (see below).
1064
1065 This is a list of some significant unfixed bugs, which are regressions
1066 from either 5.XXX.XXX or 5.XXX.XXX.
1067
1068 [ List each fix as a =item entry ]
1069
1070 =over 4
1071
1072 =item *
1073
1074 XXX
1075
1076 =back
1077
1078 =head1 Obituary
1079
1080 XXX If any significant core contributor has died, we've added a short obituary
1081 here.
1082
1083 Randy Kobes, creator of the kobesearch alternative to search.cpan.org and
1084 contributor/maintainer to several core Perl toolchain modules, passed away
1085 on September 18, 2010 after a battle with lung cancer.  His contributions
1086 to the Perl community will be missed.
1087
1088 =head1 Acknowledgements
1089
1090 XXX The list of people to thank goes here.
1091
1092 =head1 Reporting Bugs
1093
1094 If you find what you think is a bug, you might check the articles
1095 recently posted to the comp.lang.perl.misc newsgroup and the perl
1096 bug database at http://rt.perl.org/perlbug/ .  There may also be
1097 information at http://www.perl.org/ , the Perl Home Page.
1098
1099 If you believe you have an unreported bug, please run the B<perlbug>
1100 program included with your release.  Be sure to trim your bug down
1101 to a tiny but sufficient test case.  Your bug report, along with the
1102 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1103 analysed by the Perl porting team.
1104
1105 If the bug you are reporting has security implications, which make it
1106 inappropriate to send to a publicly archived mailing list, then please send
1107 it to perl5-security-report@perl.org. This points to a closed subscription
1108 unarchived mailing list, which includes all the core committers, who be able
1109 to help assess the impact of issues, figure out a resolution, and help
1110 co-ordinate the release of patches to mitigate or fix the problem across all
1111 platforms on which Perl is supported. Please only use this address for
1112 security issues in the Perl core, not for modules independently
1113 distributed on CPAN.
1114
1115 =head1 SEE ALSO
1116
1117 The F<Changes> file for an explanation of how to view exhaustive details
1118 on what changed.
1119
1120 The F<INSTALL> file for how to build Perl.
1121
1122 The F<README> file for general stuff.
1123
1124 The F<Artistic> and F<Copying> files for copyright information.
1125
1126 =cut