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