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