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