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