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