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