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