This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Maintainers.pl and perldelta.pod for Storable update.
[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
40fcdb56
CBW
417C<Pod::Simple> has been upgraded from 3.14 to 3.15
418
419Includes various fixes to C<HTML> and C<XHTML> handling.
420
421=item *
422
48ea5431
FC
423C<POSIX> has been upgraded from 1.21 to 1.22.
424
425=item *
426
b7bd32cc
FC
427C<re> has been upgraded from 0.13 to 0.14, for the sake of the new
428C<use re "/flags"> pragma.
dfa4c013 429
48ea5431
FC
430=item *
431
8ff01ef0
FC
432C<Safe> has been upgraded from 2.28 to 2.29.
433
434It adds C<&version::vxs::VCMP> to the default share.
435
436=item *
437
48ea5431
FC
438C<SDBM_File> has been upgraded from 1.07 to 1.08.
439
440=item *
441
a5e71717
FC
442C<SelfLoader> has been upgraded from 1.17 to 1.18.
443
444It now works in taint mode
445L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>.
446
447=item *
448
48ea5431
FC
449C<Socket> has been upgraded from 1.90 to 1.91.
450
a5e71717
FC
451=item *
452
fd0eba19
CBW
453C<Storable> has been upgraded from 2.22 to 2.24
454
455Includes performance improvement for overloaded classes.
456
457=item *
458
a5e71717
FC
459C<Sys::Hostname> has been upgraded from 1.13 to 1.14.
460
539ce3d8
CBW
461=item *
462
584e761d 463C<Unicode::Collate> has been upgraded from 0.63 to 0.66
028d3bfa 464
584e761d 465This release newly adds locales C<ja> C<ko> and C<zh> and its variants
028d3bfa
CBW
466( C<zh__big5han>, C<zh__gb2312han>, C<zh__pinyin>, C<zh__stroke> ).
467
468The following modules have been added:
539ce3d8 469
028d3bfa
CBW
470C<Unicode::Collate::CJK::Big5> for C<zh__big5han> which makes
471tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering.
472
473C<Unicode::Collate::CJK::GB2312> for C<zh__gb2312han> which makes
474tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering.
475
584e761d
CBW
476C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji
477(CJK Unified Ideographs) in the JIS X 0208 order.
478
479C<Unicode::Collate::CJK::Korean> which makes tailoring of CJK Unified Ideographs
480in the order of CLDR's Korean ordering.
481
028d3bfa
CBW
482C<Unicode::Collate::CJK::Pinyin> for C<zh__pinyin> which makes
483tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering.
484
485C<Unicode::Collate::CJK::Stroke> for C<zh__stroke> which makes
486tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering.
487
8f97a47a 488=back
dfa4c013 489
8f97a47a 490=head2 Removed Modules and Pragmata
c02ee425 491
8f97a47a 492=over 4
1393fe00
CBW
493
494=item *
495
8f97a47a 496XXX
c9a84c8b 497
8f97a47a 498=back
918184d1 499
8f97a47a 500=head1 Documentation
918184d1 501
8f97a47a
TM
502XXX Changes to files in F<pod/> go here. Consider grouping entries by
503file and be sure to link to the appropriate page, e.g. L<perlfunc>.
918184d1 504
570c3caa 505L<perlvar> reorders the variables and groups them by topic. Each variable
506introduced after Perl 5.000 notes the first version in which it is
507available. L<perlvar> also has a new section for deprecated variables to
508note when they were removed.
509
8f97a47a 510=head2 New Documentation
dca41e57 511
8f97a47a 512XXX Changes which create B<new> files in F<pod/> go here.
dca41e57 513
8f97a47a 514=head3 L<XXX>
c9a84c8b 515
8f97a47a 516XXX Description of the purpose of the new file here
4c793fe3 517
ee0887a9 518=head2 Changes to Existing Documentation
fc1418b7 519
8f97a47a
TM
520XXX Changes which significantly change existing files in F<pod/> go here.
521However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
522section.
523
7eb82171
DG
524=over
525
48ea5431
FC
526=item *
527
a5e71717 528Array and hash slices in scalar context are now documented in L<perldata>.
48ea5431 529
b293762b
FC
530=item *
531
532L<perlform> and L<perllocale> have been corrected to state that
533C<use locale> affects formats.
534
7eb82171
DG
535=back
536
8f97a47a 537=head3 L<XXX>
e2babdfb 538
7bc3efda
SH
539=over 4
540
541=item *
542
8f97a47a 543XXX Description of the change here
7bc3efda
SH
544
545=back
e2babdfb 546
4c793fe3
FR
547=head1 Diagnostics
548
549The following additions or changes have been made to diagnostic output,
550including warnings and fatal error messages. For the complete list of
551diagnostic messages, see L<perldiag>.
552
8f97a47a
TM
553XXX New or changed warnings emitted by the core's C<C> code go here. Also
554include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 555
8f97a47a 556[ Within each section, list entries as a =item entry ]
4c793fe3 557
8f97a47a 558=head2 New Diagnostics
4c793fe3 559
8f97a47a 560XXX Newly added diagnostic messages go here
dc08898c
FC
561
562=over 4
563
564=item *
565
15bc3b4f
FC
566"Using !~ with %s doesn't make sense": This message was actually added in
5675.13.2, but was omitted from perldelta. It now applies also to the C<y///>
568operator, and has been documented.
dc08898c
FC
569
570=back
571
8f97a47a 572=head2 Changes to Existing Diagnostics
4c793fe3 573
8f97a47a 574XXX Changes (i.e. rewording) of diagnostic messages go here
0c692eed 575
ee0887a9 576=over 4
0c692eed
FR
577
578=item *
579
8f97a47a 580XXX
4c793fe3
FR
581
582=back
583
8f97a47a 584=head1 Utility Changes
810f3b7c 585
8f97a47a
TM
586XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
587here. Most of these are built within the directories F<utils> and F<x2p>.
a9e68e41 588
8f97a47a
TM
589[ List utility changes as a =head3 entry for each utility and =item
590entries for each change
591Use L<XXX> with program names to get proper documentation linking. ]
a9e68e41 592
8f97a47a 593=head3 L<XXX>
85318b69 594
ee0887a9 595=over 4
80b6a949 596
e2babdfb
FR
597=item *
598
8f97a47a 599XXX
9ae8c3d9 600
ee0887a9 601=back
e2babdfb 602
8f97a47a 603=head1 Configuration and Compilation
e2babdfb 604
8f97a47a
TM
605XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
606go here. Any other changes to the Perl build process should be listed here.
607However, any platform-specific changes should be listed in the
608L</Platform Support> section, instead.
346e4e56 609
8f97a47a 610[ List changes as a =item entry ].
78846812 611
8f97a47a 612=over 4
e54f3f30
FC
613
614=item *
615
8f97a47a 616XXX
e54f3f30 617
8f97a47a 618=back
a5763045 619
8f97a47a 620=head1 Testing
5a9a79a4 621
8f97a47a
TM
622XXX Any significant changes to the testing of a freshly built perl should be
623listed here. Changes which create B<new> files in F<t/> go here as do any
624large changes to the testing harness (e.g. when parallel testing was added).
625Changes to existing files in F<t/> aren't worth summarising, although the bugs
626that they represent may be covered elsewhere.
5a9a79a4 627
8f97a47a 628[ List each test improvement as a =item entry ]
a7e93501 629
8f97a47a 630=over 4
a7e93501
FC
631
632=item *
633
15bc3b4f
FC
634F<t/mro/isarev.t> has been added, which tests that C<PL_isarev> (accessible
635at the Perl level via C<mro::get_isarev>) is updated properly.
636
637=item
638
639F<t/run/switchd-78586.t> has been added, which tests that
640L<[perl #78586]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78586>
641has been fixed (related to line numbers in the debbuger).
a7e93501 642
8f97a47a 643=back
a7e93501 644
8f97a47a 645=head1 Platform Support
a7e93501 646
8f97a47a 647XXX Any changes to platform support should be listed in the sections below.
a7e93501 648
8f97a47a
TM
649[ Within the sections, list each platform as a =item entry with specific
650changes as paragraphs below it. ]
a7e93501 651
8f97a47a 652=head2 New Platforms
d4a59e54 653
8f97a47a
TM
654XXX List any platforms that this version of perl compiles on, that previous
655versions did not. These will either be enabled by new files in the F<hints/>
656directories, or new subdirectories and F<README> files at the top level of the
657source tree.
d4a59e54 658
8f97a47a 659=over 4
dc08898c 660
8f97a47a 661=item XXX-some-platform
dc08898c 662
8f97a47a 663XXX
dc08898c 664
8f97a47a 665=back
6904a83f 666
8f97a47a 667=head2 Discontinued Platforms
6904a83f 668
8f97a47a 669XXX List any platforms that this version of perl no longer compiles on.
6904a83f 670
8f97a47a 671=over 4
cffb3698 672
8f97a47a 673=item XXX-some-platform
ab4c2c27 674
8f97a47a 675XXX
ab4c2c27 676
8f97a47a 677=back
be1cc451 678
8f97a47a 679=head2 Platform-Specific Notes
be1cc451 680
8f97a47a
TM
681XXX List any changes for specific platforms. This could include configuration
682and compilation changes or changes in portability/compatibility. However,
683changes within modules for platforms should generally be listed in the
684L</Modules and Pragmata> section.
b20c4ee1 685
8f97a47a 686=over 4
b20c4ee1 687
b293762b 688=item Windows
afa74577 689
b293762b
FC
690Directory handles are now properly cloned when threads are created. In perl
6915.13.6, child threads simply stopped inheriting directory handles. In
692previous versions, threads would share handles, resulting in crashes.
afa74577 693
8f97a47a 694=back
c8bbf675 695
8f97a47a 696=head1 Internal Changes
c8bbf675 697
8f97a47a
TM
698XXX Changes which affect the interface available to C<XS> code go here.
699Other significant internal changes for future core maintainers should
700be noted as well.
07d5f7aa 701
8f97a47a 702[ List each test improvement as a =item entry ]
07d5f7aa 703
8f97a47a 704=over 4
07d5f7aa 705
9ae8c3d9
FC
706=item *
707
b7bd32cc
FC
708C<lex_start> has been added to the API, but is considered experimental.
709
710=item *
711
712A new C<parse_block> function has been added to the API
713L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
714
715=item *
716
c678e617 717A new, experimental API has been added for accessing the internal
b7bd32cc
FC
718structure that Perl uses for C<%^H>. See the functions beginning with
719C<cophh_> in L<perlapi>.
9ae8c3d9 720
a5e71717
FC
721=item *
722
723A stash can now have a list of effective names in addition to its usual
8ff01ef0
FC
724name. The first effective name can be accessed via the C<HvENAME> macro,
725which is now the recommended name to use in MRO linearisations (C<HvNAME>
726being a fallback if there is no C<HvENAME>).
727
728These names are added and deleted via C<hv_ename_add> and
729C<hv_ename_delete>. These two functions are I<not> part of the API.
a5e71717 730
b293762b
FC
731=item *
732
733The way the parser handles labels has been cleaned up and refactored. As a
734result, the C<newFOROP()> constructor function no longer takes a parameter
735stating what label is to go in the state op.
736
737=item *
738
739The C<newWHILEOP()> and C<newFOROP()> functions no longer accept a line
740number as a parameter.
741
742=item *
743
744A new C<parse_barestmt()> function has been added, for parsing a statement
745without a label.
746
747=item *
748
749A new C<parse_label()> function has been added, that parses a statement
750labels, separate from statements.
751
752=item *
753
754The C<CvSTASH()> macro can now only be used as an rvalue. C<CvSTASH_set()>
755has been added to replace assignment to C<CvSTASH()>. This is to ensure
756that backreferences are handled properly. These macros are not part of the
757API.
758
759=item *
760
761The C<op_scope()> and C<op_lvalue()> functions have been added to the API,
762but are considered experimental.
763
8f97a47a 764=back
825563b9 765
8f97a47a 766=head1 Selected Bug Fixes
825563b9 767
8f97a47a
TM
768XXX Important bug fixes in the core language are summarised here.
769Bug fixes in files in F<ext/> and F<lib/> are best summarised in
770L</Modules and Pragmata>.
825563b9 771
8f97a47a 772[ List each fix as a =item entry ]
825563b9 773
8f97a47a 774=over 4
825563b9 775
020fe755
AB
776=item *
777
b7bd32cc
FC
778The C<parse_stmt> C function added in earlier in the 5.13.x series has been
779fixed to work with statements ending with C<}>
780L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
781
782=item *
783
784The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work
785when called while an expression is being parsed.
786
787=item *
788
789Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match
790themselves if the string happened to be UTF8-encoded internally, the
791regular expression was not, and the character in the regular expression was
792inside a repeated group (e.g.,
c678e617 793C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>)
b7bd32cc
FC
794L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>.
795
796=item *
797
798The C<(?d)> regular expression construct now overrides a previous C<(?u)>
799or C<use feature "unicode_string">
800L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>.
801
802=item *
803
804A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed
805L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>.
020fe755 806
b293762b
FC
807=item *
808
809Various bugs related to typeglob dereferencing have been fixed. See
810L</Dereferencing typeglobs>, above.
811
812=item *
813
814The C<SvPVbyte> function available to XS modules now calls magic before
815downgrading the SV, to avoid warnings about wide characters
816L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>.
817
818=item *
819
820The C<=> operator used to ignore magic (e.g., tie methods) on its
821right-hand side if the scalar happened to hold a typeglob. This could
822happen if a typeglob was the last thing returned from or assigned to a tied
823scalar
824L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>.
825
826=item *
827
828C<sprintf> was ignoring locales when called with constant arguments
829L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>.
830
9b7c43ba
KW
831=item *
832
833A non-ASCII character in the Latin-1 range could match both a Posix
834class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>. This is
835now fixed for regular expressions compiled under the C<"u"> modifier.
836See L</C<use feature "unicode_strings"> now applies to more regex matching>.
837L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>.
838
8ff01ef0
FC
839=item *
840
841Concatenating long strings under C<use encoding> no longer causes perl to
842crash
843L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>.
844
845=item *
846
847Typeglob assignments would crash if the glob's stash no longer existed, if
848the glob assigned to was named 'ISA' or the glob on either side of the
849assignment contained a subroutine.
850
851=item *
852
853Calling C<< ->import >> on a class lacking an import method could corrupt the stack result in strange behaviour. For instance,
854
855 push @a, "foo", $b = bar->import;
856
857would assign 'foo' to C<$b>
858L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>.
859
860=item *
861
862Creating an alias to a package when that package had been detached from the
863symbol table would result in corrupted isa caches
864L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>.
865
866=item *
867
868C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/>
869contained characters beyond the octet range and the scalar assigned to
870happened to be encoded as UTF8 internally
871L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>.
872
873=item *
874
875The C<recv> function could crash when called with the MSG_TRUNC flag
876L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>.
877
9e2ac5d4
FC
878=item *
879
880Evaluating a simple glob (like C<*a>) was calling get-magic on the glob,
881even when its contents were not being used
882L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>.
883
884This bug was introduced in 5.13.2 and did not affect earlier perl versions.
885
15bc3b4f
FC
886=item *
887
888Matching a Unicode character against an alternation containing characters
889that happened to match continuation bytes in the former's UTF8
890representation (C<qq{\x{30ab}} =~ /\xab|\xa9/>) would cause erroneous
891warnings
892L<[perl #70998]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=70998>.
893
894=item *
895
896C<s///r> (added in 5.13.2) no longer leaks.
897
ca60ecf2
FC
898=item *
899
900The trie optimisation was not taking empty groups into account, preventing
901'foo' from matching C</\A(?:(?:)foo|bar|zot)\z/>
902L<[perl #78356]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78356>.
903
904=item *
905
906A pattern containing a C<+> inside a lookahead would sometimes cause an
907incorrect match failure in a global match (e.g., C</(?=(\S+))/g>)
908L<[perl #68564]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68564>.
909
910=item *
911
912Iterating with C<foreach> over an array returned by an lvalue sub now works
913L<[perl #23790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=23790>.
914
915=item *
916
917C<$@> is now localised during calls to C<binmode> to prevent action at a
918distance
919L<[perl #78844]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78844>.
920
921=item *
922
923C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now
924updated properly when packages are deleted or removed from the C<@ISA> of
925other classes. This allows many packages to be created and deleted without
926causing a memory leak
927L<[perl #75176]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75176>.
928
929=item *
930
931C<undef *Foo::> and C<undef *Foo::ISA> used not to update the internal isa
932caches if the stash or array (respectively) had a reference elsewhere. In
933fact, C<undef *Foo::ISA> would stop a new C<@Foo::ISA> array from updating
934caches
935L<[perl #79024]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79024>.
936
8f97a47a 937=back
020fe755 938
8f97a47a 939=head1 Known Problems
020fe755 940
8f97a47a
TM
941XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
942tests that had to be C<TODO>ed for the release would be noted here, unless
943they were specific to a particular platform (see below).
62ff64ce 944
8f97a47a
TM
945This is a list of some significant unfixed bugs, which are regressions
946from either 5.XXX.XXX or 5.XXX.XXX.
62ff64ce 947
8f97a47a 948[ List each fix as a =item entry ]
62ff64ce 949
8f97a47a 950=over 4
62ff64ce
FC
951
952=item *
953
8f97a47a 954XXX
62ff64ce 955
4c793fe3
FR
956=back
957
8f97a47a 958=head1 Obituary
405fd67e 959
8f97a47a
TM
960XXX If any significant core contributor has died, we've added a short obituary
961here.
405fd67e 962
dd56ec38
DG
963Randy Kobes, creator of the kobesearch alternative to search.cpan.org and
964contributor/maintainer to several core Perl toolchain modules, passed away
67fa491b 965on September 18, 2010 after a battle with lung cancer. His contributions
dd56ec38
DG
966to the Perl community will be missed.
967
ee0887a9 968=head1 Acknowledgements
0195fb5f 969
8f97a47a 970XXX The list of people to thank goes here.
4c793fe3
FR
971
972=head1 Reporting Bugs
973
974If you find what you think is a bug, you might check the articles
975recently posted to the comp.lang.perl.misc newsgroup and the perl
976bug database at http://rt.perl.org/perlbug/ . There may also be
977information at http://www.perl.org/ , the Perl Home Page.
978
979If you believe you have an unreported bug, please run the B<perlbug>
980program included with your release. Be sure to trim your bug down
981to a tiny but sufficient test case. Your bug report, along with the
982output of C<perl -V>, will be sent off to perlbug@perl.org to be
983analysed by the Perl porting team.
984
985If the bug you are reporting has security implications, which make it
986inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 987it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
988unarchived mailing list, which includes all the core committers, who be able
989to help assess the impact of issues, figure out a resolution, and help
990co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 991platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
992security issues in the Perl core, not for modules independently
993distributed on CPAN.
994
995=head1 SEE ALSO
996
997The F<Changes> file for an explanation of how to view exhaustive details
998on what changed.
999
1000The F<INSTALL> file for how to build Perl.
1001
1002The F<README> file for general stuff.
1003
1004The F<Artistic> and F<Copying> files for copyright information.
1005
1006=cut