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