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