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