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