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