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