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