This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Minor perldelta fixes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
5076a392 5perldelta - what is new for perl v5.14.0
c71a852f 6
5076a392
FC
7=head1 DESCRIPTION
8
9This document describes differences between the 5.12.0 release and
10the 5.14.0 release.
11
0980abf1
FC
12If you are upgrading from an earlier release such as 5.10.0, first read
13L<perl5120delta>, which describes differences between 5.10.0 and
145.12.0.
15
5076a392 16Some of the bug fixes in this release have been backported to subsequent
40bd7639 17releases of 5.12.x. Those are indicated with the 5.12.x version in
5076a392
FC
18parentheses.
19
5076a392
FC
20=head1 Notice
21
1c7f7822
JV
22As described in L<perlpolicy>, the release of Perl 5.14.0 marks the
23official end of support for Perl 5.10. Users of Perl 5.10 or earlier
24should consider upgrading to a more recent release of Perl.
5076a392
FC
25
26=head1 Core Enhancements
27
1f539a1a 28=head2 Unicode
5076a392 29
1f539a1a 30=head3 Unicode Version 6.0 is now supported (mostly)
5076a392 31
1f539a1a
FC
32Perl comes with the Unicode 6.0 data base updated with
33L<Corrigendum #8|http://www.unicode.org/versions/corrigendum8.html>,
34with one exception noted below.
c2b7148f 35See L<http://unicode.org/versions/Unicode6.0.0/> for details on the new
1f539a1a 36release. Perl does not support any Unicode provisional properties,
a3c24add 37including the new ones for this release.
5076a392 38
1f539a1a 39Unicode 6.0 has chosen to use the name C<BELL> for the character at U+1F514,
e1b1739f 40which is a symbol that looks like a bell, and is used in Japanese cell
1f539a1a
FC
41phones. This conflicts with the long-standing Perl usage of having
42C<BELL> mean the ASCII C<BEL> character, U+0007. In Perl 5.14,
f8992784 43C<\N{BELL}> continues to mean U+0007, but its use generates a
d15cad80 44deprecation warning message unless such warnings are turned off. The
12f3ad4e
FC
45new name for U+0007 in Perl is C<ALERT>, which corresponds nicely
46with the existing shorthand sequence for it, C<"\a">. C<\N{BEL}>
d15cad80 47means U+0007, with no warning given. The character at U+1F514 has no
f8992784 48name in 5.14, but can be referred to by C<\N{U+1F514}>.
1c7f7822
JV
49In Perl 5.16, C<\N{BELL}> will refer to U+1F514; all code
50that uses C<\N{BELL}> should be converted to use C<\N{ALERT}>,
51C<\N{BEL}>, or C<"\a"> before upgrading.
5076a392 52
66b4c19b 53=head3 Full functionality for C<use feature 'unicode_strings'>
5076a392 54
1f539a1a 55This release provides full functionality for C<use feature
66b4c19b 56'unicode_strings'>. Under its scope, all string operations executed and
1f539a1a 57regular expressions compiled (even if executed outside its scope) have
52594064 58Unicode semantics. See L<feature/"the 'unicode_strings' feature">.
5076a392 59
c2b7148f 60This feature avoids most forms of the "Unicode Bug" (see
d15cad80 61L<perlunicode/The "Unicode Bug"> for details). If there is any
1f539a1a 62possibility that your code will process Unicode strings, you are
d15cad80 63I<strongly> encouraged to use this subpragma to avoid nasty surprises.
5076a392 64
d15cad80 65=head3 C<\N{I<NAME>}> and C<charnames> enhancements
5076a392 66
1f539a1a 67=over
5076a392 68
1f539a1a 69=item *
5076a392 70
d15cad80
TC
71C<\N{I<NAME>}> and C<charnames::vianame> now know about the abbreviated
72character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc.; all
66b4c19b 73customary abbreviations for the C0 and C1 control characters (such as
d15cad80 74ACK, BEL, CAN, etc.); and a few new variants of some C1 full names that
e1b1739f 75are in common usage.
5076a392 76
1f539a1a
FC
77=item *
78
d15cad80
TC
79Unicode has several I<named character sequences>, in which particular sequences
80of code points are given names. C<\N{I<NAME>}> now recognizes these.
959ad7d5 81
1f539a1a
FC
82=item *
83
d15cad80
TC
84C<\N{I<NAME>}>, C<charnames::vianame>, and C<charnames::viacode>
85now know about every character in Unicode. In earlier releases of
66b4c19b 86Perl, they didn't know about the Hangul syllables nor several
d15cad80 87CJK (Chinese/Japanese/Korean) characters.
959ad7d5 88
1f539a1a
FC
89=item *
90
1c7f7822 91It is now possible to override Perl's abbreviations with your own custom aliases.
5076a392 92
1f539a1a
FC
93=item *
94
1c7f7822 95You can now create a custom alias of the ordinal of a
f8992784 96character, known by C<\N{I<NAME>}>, C<charnames::vianame()>, and
1c7f7822
JV
97C<charnames::viacode()>. Previously, aliases had to be to official
98Unicode character names. This made it impossible to create an alias for
99unnamed code points, such as those reserved for private
e1b1739f 100use.
5076a392 101
1f539a1a
FC
102=item *
103
d15cad80 104The new function charnames::string_vianame() is a run-time version
f8992784 105of C<\N{I<NAME>}}>, returning the string of characters whose Unicode
d15cad80
TC
106name is its parameter. It can handle Unicode named character
107sequences, whereas the pre-existing charnames::vianame() cannot,
108as the latter returns a single code point.
959ad7d5 109
1f539a1a
FC
110=back
111
5076a392
FC
112See L<charnames> for details on all these changes.
113
22349846
KW
114=head3 New warnings categories for problematic (non-)Unicode code points.
115
116Three new warnings subcategories of "utf8" have been added. These
117allow you to turn off some "utf8" warnings, while allowing
c2b7148f 118other warnings to remain on. The three categories are:
22349846
KW
119C<surrogate> when UTF-16 surrogates are encountered;
120C<nonchar> when Unicode non-character code points are encountered;
d15cad80 121and C<non_unicode> when code points above the legal Unicode
22349846
KW
122maximum of 0x10FFFF are encountered.
123
1f539a1a 124=head3 Any unsigned value can be encoded as a character
5076a392 125
d15cad80
TC
126With this release, Perl is adopting a model that any unsigned value
127can be treated as a code point and encoded internally (as utf8)
128without warnings, not just the code points that are legal in Unicode.
22349846 129However, unless utf8 or the corresponding sub-category (see previous
66b4c19b
TC
130item) of lexical warnings have been explicitly turned off, outputting
131or executing a Unicode-defined operation such as upper-casing
d15cad80
TC
132on such a code point generates a warning. Attempting to input these
133using strict rules (such as with the C<:encoding(UTF-8)> layer)
134will continue to fail. Prior to this release, handling was
135inconsistent and in places, incorrect.
1c7f7822
JV
136
137Unicode non-characters, some of which previously were erroneously
d15cad80
TC
138considered illegal in places by Perl, contrary to the Unicode Standard,
139are now always legal internally. Inputting or outputting them
140works the same as with the non-legal Unicode code points, because the Unicode
66b4c19b 141Standard says they are (only) illegal for "open interchange".
5076a392 142
daef9d5b
KW
143=head3 Unicode database files not installed
144
145The Unicode database files are no longer installed with Perl. This
146doesn't affect any functionality in Perl and saves significant disk
1c7f7822 147space. If you need these files, you can download them from
daef9d5b
KW
148L<http://www.unicode.org/Public/zipped/6.0.0/>.
149
1f539a1a 150=head2 Regular Expressions
5076a392 151
1c7f7822 152=head3 C<(?^...)> construct signifies default modifiers
5076a392 153
c2b7148f 154An ASCII caret C<"^"> immediately following a C<"(?"> in a regular
1c7f7822
JV
155expression now means that the subexpression does not inherit surrounding
156modifiers such as C</i>, but reverts to the Perl defaults. Any modifiers
157following the caret override the defaults.
5076a392 158
d15cad80
TC
159Stringification of regular expressions now uses this notation.
160For example, C<qr/hlagh/i> would previously be stringified as
161C<(?i-xsm:hlagh)>, but now it's stringified as C<(?^i:hlagh)>.
5076a392 162
d15cad80
TC
163The main purpose of this change is to allow tests that rely on the
164stringification I<not> to have to change whenever new modifiers are added.
5076a392
FC
165See L<perlre/Extended Patterns>.
166
66b4c19b 167This change is likely to break code that compares stringified regular
1c7f7822
JV
168expressions with fixed strings containing C<?-xism>.
169
cc786a4f 170=head3 C</d>, C</l>, C</u>, and C</a> modifiers
5076a392 171
40bd7639 172Four new regular expression modifiers have been added. These are mutually
d15cad80
TC
173exclusive: one only can be turned on at a time.
174
175=over
176
177=item *
5076a392 178
959ad7d5 179The C</l> modifier says to compile the regular expression as if it were
5076a392
FC
180in the scope of C<use locale>, even if it is not.
181
d15cad80
TC
182=item *
183
959ad7d5 184The C</u> modifier says to compile the regular expression as if it were
66b4c19b 185in the scope of a C<use feature 'unicode_strings'> pragma.
5076a392 186
d15cad80
TC
187=item *
188
e1b1739f 189The C</d> (default) modifier is used to override any C<use locale> and
66b4c19b 190C<use feature 'unicode_strings'> pragmas in effect at the time
5076a392
FC
191of compiling the regular expression.
192
d15cad80
TC
193=item *
194
959ad7d5 195The C</a> regular expression modifier restricts C<\s>, C<\d> and C<\w> and
122c7b7d 196the POSIX (C<[[:posix:]]>) character classes to the ASCII range. Their
959ad7d5
FC
197complements and C<\b> and C<\B> are correspondingly
198affected. Otherwise, C</a> behaves like the C</u> modifier, in that
e1b1739f 199case-insensitive matching uses Unicode semantics.
5076a392 200
cc786a4f 201If the C</a> modifier is repeated, then additionally in case-insensitive
d15cad80 202matching, no ASCII character can match a non-ASCII character.
1c7f7822 203For example,
5076a392 204
d15cad80
TC
205 "k" =~ /\N{KELVIN SIGN}/ai
206 "\xDF" =~ /ss/ai
5076a392 207
d15cad80 208match but
1c7f7822 209
d15cad80
TC
210 "k" =~ /\N{KELVIN SIGN}/aai
211 "\xDF" =~ /ss/aai
1c7f7822 212
d15cad80
TC
213do not match.
214
215=back
5076a392 216
959ad7d5 217See L<perlre/Modifiers> for more detail.
5076a392 218
1f539a1a 219=head3 Non-destructive substitution
5076a392 220
1f539a1a
FC
221The substitution (C<s///>) and transliteration
222(C<y///>) operators now support an C</r> option that
223copies the input variable, carries out the substitution on
d15cad80 224the copy, and returns the result. The original remains unmodified.
5076a392 225
d15cad80 226 my $old = "cat";
1f539a1a 227 my $new = $old =~ s/cat/dog/r;
d15cad80 228 # $old is "cat" and $new is "dog"
5076a392 229
1f539a1a 230This is particularly useful with C<map>. See L<perlop> for more examples.
5076a392 231
d15cad80 232=head3 Re-entrant regular expression engine
5076a392 233
1f539a1a
FC
234It is now safe to use regular expressions within C<(?{...})> and
235C<(??{...})> code blocks inside regular expressions.
5076a392 236
c2b7148f 237These blocks are still experimental, however, and still have problems with
e1b1739f 238lexical (C<my>) variables and abnormal exiting.
5076a392 239
c7b60aed 240=head3 C<use re '/flags'>
5076a392
FC
241
242The C<re> pragma now has the ability to turn on regular expression flags
243till the end of the lexical scope:
244
d15cad80 245 use re "/x";
5076a392
FC
246 "foo" =~ / (.+) /; # /x implied
247
248See L<re/"'/flags' mode"> for details.
249
1f539a1a 250=head3 \o{...} for octals
5076a392 251
d15cad80 252There is a new octal escape sequence, C<"\o">, in doublequote-like
e1b1739f 253contexts. This construct allows large octal ordinals beyond the
1f539a1a
FC
254current max of 0777 to be represented. It also allows you to specify a
255character in octal which can safely be concatenated with other regex
256snippets and which won't be confused with being a backreference to
257a regex capture group. See L<perlre/Capture groups>.
258
259=head3 Add C<\p{Titlecase}> as a synonym for C<\p{Title}>
260
261This synonym is added for symmetry with the Unicode property names
262C<\p{Uppercase}> and C<\p{Lowercase}>.
5076a392 263
1f539a1a
FC
264=head3 Regular expression debugging output improvement
265
66b4c19b 266Regular expression debugging output (turned on by C<use re 'debug'>) now
1f539a1a
FC
267uses hexadecimal when escaping non-ASCII characters, instead of octal.
268
1e463951
FC
269=head3 Return value of C<delete $+{...}>
270
271Custom regular expression engines can now determine the return value of
272C<delete> on an entry of C<%+> or C<%->.
273
1f539a1a
FC
274=head2 Syntactical Enhancements
275
276=head3 Array and hash container functions accept references
5076a392 277
12ebd9a8
FC
278B<Warning:> This feature is considered experimental, as the exact behaviour
279may change in a future version of Perl.
280
d15cad80 281All builtin functions that operate directly on array or hash
1c7f7822
JV
282containers now also accept unblessed hard references to arrays
283or hashes:
5076a392
FC
284
285 |----------------------------+---------------------------|
286 | Traditional syntax | Terse syntax |
287 |----------------------------+---------------------------|
288 | push @$arrayref, @stuff | push $arrayref, @stuff |
289 | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
290 | pop @$arrayref | pop $arrayref |
291 | shift @$arrayref | shift $arrayref |
292 | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 |
293 | keys %$hashref | keys $hashref |
294 | keys @$arrayref | keys $arrayref |
295 | values %$hashref | values $hashref |
296 | values @$arrayref | values $arrayref |
297 | ($k,$v) = each %$hashref | ($k,$v) = each $hashref |
298 | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref |
299 |----------------------------+---------------------------|
300
d15cad80 301This allows these builtin functions to act on long dereferencing chains
5076a392
FC
302or on the return value of subroutines without needing to wrap them in
303C<@{}> or C<%{}>:
304
305 push @{$obj->tags}, $new_tag; # old way
306 push $obj->tags, $new_tag; # new way
307
308 for ( keys %{$hoh->{genres}{artists}} ) {...} # old way
309 for ( keys $hoh->{genres}{artists} ) {...} # new way
310
1f539a1a
FC
311=head3 Single term prototype
312
d15cad80 313The C<+> prototype is a special alternative to C<$> that acts like
1f539a1a 314C<\[@%]> when given a literal array or hash variable, but will otherwise
e1b1739f 315force scalar context on the argument. See L<perlsub/Prototypes>.
1f539a1a
FC
316
317=head3 C<package> block syntax
318
319A package declaration can now contain a code block, in which case the
d15cad80 320declaration is in scope inside that block only. So C<package Foo { ... }>
1f539a1a 321is precisely equivalent to C<{ package Foo; ... }>. It also works with
d15cad80
TC
322a version number in the declaration, as in C<package Foo 1.2 { ... }>,
323which is its most attractive feature. See L<perlfunc>.
1f539a1a
FC
324
325=head3 Statement labels can appear in more places
326
327Statement labels can now occur before any type of statement or declaration,
328such as C<package>.
329
330=head3 Stacked labels
331
332Multiple statement labels can now appear before a single statement.
333
334=head3 Uppercase X/B allowed in hexadecimal/binary literals
335
336Literals may now use either upper case C<0X...> or C<0B...> prefixes,
337in addition to the already supported C<0x...> and C<0b...>
e1b1739f 338syntax [perl #76296].
1f539a1a 339
d15cad80
TC
340C, Ruby, Python, and PHP already support this syntax, and it makes
341Perl more internally consistent: a round-trip with C<eval sprintf
342"%#X", 0x10> now returns C<16>, just like C<eval sprintf "%#x", 0x10>.
1f539a1a 343
1e463951
FC
344=head3 Overridable tie functions
345
346C<tie>, C<tied> and C<untie> can now be overridden [perl #75902].
347
1f539a1a
FC
348=head2 Exception Handling
349
d15cad80
TC
350To make them more reliable and consistent, several changes have been made
351to how C<die>, C<warn>, and C<$@> behave.
1f539a1a 352
1c7f7822
JV
353=over
354
355=item *
356
1f539a1a 357When an exception is thrown inside an C<eval>, the exception is no
d15cad80
TC
358longer at risk of being clobbered by destructor code running during unwinding.
359Previously, the exception was written into C<$@>
1f539a1a
FC
360early in the throwing process, and would be overwritten if C<eval> was
361used internally in the destructor for an object that had to be freed
362while exiting from the outer C<eval>. Now the exception is written
363into C<$@> last thing before exiting the outer C<eval>, so the code
364running immediately thereafter can rely on the value in C<$@> correctly
365corresponding to that C<eval>. (C<$@> is still also set before exiting the
366C<eval>, for the sake of destructors that rely on this.)
367
d15cad80 368Likewise, a C<local $@> inside an C<eval> no longer clobbers any
1f539a1a
FC
369exception thrown in its scope. Previously, the restoration of C<$@> upon
370unwinding would overwrite any exception being thrown. Now the exception
371gets to the C<eval> anyway. So C<local $@> is safe before a C<die>.
372
373Exceptions thrown from object destructors no longer modify the C<$@>
374of the surrounding context. (If the surrounding context was exception
375unwinding, this used to be another way to clobber the exception being
376thrown.) Previously such an exception was
377sometimes emitted as a warning, and then either was
378string-appended to the surrounding C<$@> or completely replaced the
379surrounding C<$@>, depending on whether that exception and the surrounding
380C<$@> were strings or objects. Now, an exception in this situation is
381always emitted as a warning, leaving the surrounding C<$@> untouched.
382In addition to object destructors, this also affects any function call
66b4c19b 383run by XS code using the C<G_KEEPERR> flag.
1f539a1a 384
1c7f7822
JV
385=item *
386
d15cad80
TC
387Warnings for C<warn> can now be objects in the same way as exceptions
388for C<die>. If an object-based warning gets the default handling
389of writing to standard error, it is stringified as before with the
390filename and line number appended. But a C<$SIG{__WARN__}> handler now
391receives an object-based warning as an object, where previously it
392was passed the result of stringifying the object.
1f539a1a 393
1c7f7822
JV
394=back
395
1f539a1a
FC
396=head2 Other Enhancements
397
d15cad80 398=head3 Assignment to C<$0> sets the legacy process name with prctl() on Linux
1f539a1a 399
7d7b9667
JV
400On Linux the legacy process name is now set with L<prctl(2)>, in
401addition to altering the POSIX name via C<argv[0]>, as Perl has done
12f3ad4e 402since version 4.000. Now system utilities that read the legacy process
d15cad80
TC
403name such as I<ps>, I<top>, and I<killall> recognize the name you set when
404assigning to C<$0>. The string you supply is truncated at 16 bytes;
405this limitation is imposed by Linux.
1f539a1a 406
d15cad80 407=head3 srand() now returns the seed
1f539a1a 408
e1b1739f 409This allows programs that need to have repeatable results not to have to come
d15cad80
TC
410up with their own seed-generating mechanism. Instead, they can use srand()
411and stash the return value for future use. One example is a test program with
412too many combinations to test comprehensively in the time available for
e1b1739f 413each run. It can test a random subset each time and, should there be a failure,
d15cad80 414log the seed used for that run so this can later be used to produce the same results.
1f539a1a
FC
415
416=head3 printf-like functions understand post-1980 size modifiers
417
418Perl's printf and sprintf operators, and Perl's internal printf replacement
419function, now understand the C90 size modifiers "hh" (C<char>), "z"
420(C<size_t>), and "t" (C<ptrdiff_t>). Also, when compiled with a C99
d15cad80
TC
421compiler, Perl now understands the size modifier "j" (C<intmax_t>)
422(but this is not portable).
1f539a1a 423
d15cad80 424So, for example, on any modern machine, C<sprintf("%hhd", 257)> returns "1".
1f539a1a
FC
425
426=head3 New global variable C<${^GLOBAL_PHASE}>
5076a392
FC
427
428A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow
d15cad80
TC
429introspection of the current phase of the Perl interpreter. It's explained in
430detail in L<perlvar/"${^GLOBAL_PHASE}"> and in
5076a392
FC
431L<perlmod/"BEGIN, UNITCHECK, CHECK, INIT and END">.
432
1f539a1a 433=head3 C<-d:-foo> calls C<Devel::foo::unimport>
5076a392 434
66b4c19b
TC
435The syntax B<-d:foo> was extended in 5.6.1 to make B<-d:foo=bar>
436equivalent to B<-MDevel::foo=bar>, which expands
437internally to C<use Devel::foo 'bar'>.
438Perl now allows prefixing the module name with B<->, with the same
439semantics as B<-M>; that is:
5076a392
FC
440
441=over 4
442
443=item C<-d:-foo>
444
66b4c19b
TC
445Equivalent to B<-M-Devel::foo>: expands to
446C<no Devel::foo> and calls C<< Devel::foo->unimport() >>
447if that method exists.
5076a392
FC
448
449=item C<-d:-foo=bar>
450
66b4c19b
TC
451Equivalent to B<-M-Devel::foo=bar>: expands to C<no Devel::foo 'bar'>,
452and calls C<< Devel::foo->unimport("bar") >> if that method exists.
5076a392
FC
453
454=back
455
e1b1739f 456This is particularly useful for suppressing the default actions of a
5076a392
FC
457C<Devel::*> module's C<import> method whilst still loading it for debugging.
458
1f539a1a 459=head3 Filehandle method calls load L<IO::File> on demand
5076a392
FC
460
461When a method call on a filehandle would die because the method cannot
d15cad80 462be resolved and L<IO::File> has not been loaded, Perl now loads L<IO::File>
5076a392
FC
463via C<require> and attempts method resolution again:
464
465 open my $fh, ">", $file;
466 $fh->binmode(":raw"); # loads IO::File and succeeds
467
66b4c19b 468This also works for globs like C<STDOUT>, C<STDERR>, and C<STDIN>:
5076a392
FC
469
470 STDOUT->autoflush(1);
471
d15cad80 472Because this on-demand load happens only if method resolution fails, the
5076a392
FC
473legacy approach of manually loading an L<IO::File> parent class for partial
474method support still works as expected:
475
476 use IO::Handle;
477 open my $fh, ">", $file;
478 $fh->autoflush(1); # IO::File not loaded
479
1c7f7822 480=head3 Improved IPv6 support
1984204c
FC
481
482The C<Socket> module provides new affordances for IPv6,
483including implementations of the C<Socket::getaddrinfo()> and
d15cad80 484C<Socket::getnameinfo()> functions, along with related constants and a
1984204c
FC
485handful of new functions. See L<Socket>.
486
1f539a1a 487=head3 DTrace probes now include package name
5076a392 488
66b4c19b 489The C<DTrace> probes now include an additional argument, C<arg3>, which contains
5076a392
FC
490the package the subroutine being entered or left was compiled in.
491
d15cad80 492For example, using the following DTrace script:
5076a392
FC
493
494 perl$target:::sub-entry
495 {
496 printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3));
497 }
498
499and then running:
500
d15cad80 501 $ perl -e 'sub test { }; test'
5076a392 502
66b4c19b 503C<DTrace> will print:
5076a392
FC
504
505 main::test
506
9378886b
FC
507=head2 New C APIs
508
1e463951 509See L</Internal Changes>.
9378886b 510
5076a392
FC
511=head1 Security
512
948b8455 513=head2 User-defined regular expression properties
5076a392 514
1c7f7822 515L<perlunicode/"User-Defined Character Properties"> documented that you can
5076a392 516create custom properties by defining subroutines whose names begin with
6369b34f 517"In" or "Is". However, Perl did not actually enforce that naming
66b4c19b 518restriction, so C<\p{foo::bar}> could call foo::bar() if it existed. The documented
1c7f7822 519convention is now enforced.
5076a392 520
1c7f7822 521Also, Perl no longer allows tainted regular expressions to invoke a
6369b34f 522user-defined property. It simply dies instead [perl #82616].
5076a392
FC
523
524=head1 Incompatible Changes
525
61752d82
FC
526Perl 5.14.0 is not binary-compatible with any previous stable release.
527
1e463951
FC
528In addition to the sections that follow, see L</C API Changes>.
529
61752d82
FC
530=head2 Regular Expressions and String Escapes
531
54c7bb16 532=head3 \400-\777
5076a392 533
1c7f7822 534In certain circumstances, C<\400>-C<\777> in regexes have behaved
d15cad80 535differently than they behave in all other doublequote-like contexts.
1c7f7822 536Since 5.10.1, Perl has issued a deprecation warning when this happens.
d15cad80 537Now, these literals behave the same in all doublequote-like contexts,
66b4c19b 538namely to be equivalent to C<\x{100}>-C<\x{1FF}>, with no deprecation
1c7f7822
JV
539warning.
540
d15cad80 541Use of C<\400>-C<\777> in the command-line option B<-0> retain their
1c7f7822 542conventional meaning. They slurp whole input files; previously, this
d15cad80 543was documented only for B<-0777>.
1c7f7822
JV
544
545Because of various ambiguities, you should use the new
546C<\o{...}> construct to represent characters in octal instead.
5076a392 547
61752d82 548=head3 Most C<\p{}> properties are now immune to case-insensitive matching
5076a392 549
61752d82 550For most Unicode properties, it doesn't make sense to have them match
1c7f7822
JV
551differently under C</i> case-insensitive matching. Doing so can lead
552to unexpected results and potential security holes. For example
5076a392 553
61752d82 554 m/\p{ASCII_Hex_Digit}+/i
5076a392 555
61752d82 556could previously match non-ASCII characters because of the Unicode
66b4c19b 557matching rules (although there were several bugs with this). Now
4cf6a51f
KW
558matching under C</i> gives the same results as non-C</i> matching except
559for those few properties where people have come to expect differences,
560namely the ones where casing is an integral part of their meaning, such
561as C<m/\p{Uppercase}/i> and C<m/\p{Lowercase}/i>, both of which match
d15cad80 562the same code points as matched by C<m/\p{Cased}/i>.
4cf6a51f 563Details are in L<perlrecharclass/Unicode Properties>.
5076a392 564
1c7f7822 565User-defined property handlers that need to match differently under C</i>
d15cad80
TC
566must be changed to read the new boolean parameter passed to them, which
567is non-zero if case-insensitive matching is in effect and 0 otherwise.
804b5fee 568See L<perlunicode/User-Defined Character Properties>.
5076a392 569
61752d82 570=head3 \p{} implies Unicode semantics
5076a392 571
d15cad80 572Specifying a Unicode property in the pattern indicates
61752d82 573that the pattern is meant for matching according to Unicode rules, the way
d15cad80 574C<\N{I<NAME>}> does.
5076a392 575
61752d82 576=head3 Regular expressions retain their localeness when interpolated
5076a392 577
66b4c19b 578Regular expressions compiled under C<use locale> now retain this when
61752d82 579interpolated into a new regular expression compiled outside a
66b4c19b 580C<use locale>, and vice-versa.
5076a392 581
d15cad80
TC
582Previously, one regular expression interpolated into another inherited
583the localeness of the surrounding regex, losing whatever state it
61752d82 584originally had. This is considered a bug fix, but may trip up code that
d15cad80 585has come to rely on the incorrect behaviour.
5076a392 586
61752d82 587=head3 Stringification of regexes has changed
5076a392 588
d15cad80
TC
589Default regular expression modifiers are now notated using
590C<(?^...)>. Code relying on the old stringification will fail.
591This is so that when new modifiers are added, such code won't
592have to keep changing each time this happens, because the stringification
593will automatically incorporate the new modifiers.
5076a392
FC
594
595Code that needs to work properly with both old- and new-style regexes
d15cad80 596can avoid the whole issue by using (for perls since 5.9.5; see L<re>):
5076a392
FC
597
598 use re qw(regexp_pattern);
599 my ($pat, $mods) = regexp_pattern($re_ref);
600
d15cad80 601If the actual stringification is important or older Perls need to be
5076a392
FC
602supported, you can use something like the following:
603
604 # Accept both old and new-style stringification
d15cad80 605 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? "^" : "-xism";
5076a392
FC
606
607And then use C<$modifiers> instead of C<-xism>.
608
61752d82 609=head3 Run-time code blocks in regular expressions inherit pragmata
5076a392 610
1c7f7822
JV
611Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) previously
612did not inherit pragmata (strict, warnings, etc.) if the regular expression
61752d82 613was compiled at run time as happens in cases like these two:
5076a392 614
d15cad80 615 use re "eval";
61752d82
FC
616 $foo =~ $bar; # when $bar contains (?{...})
617 $foo =~ /$bar(?{ $finished = 1 })/;
618
66b4c19b 619This bug has now been fixed, but code that relied on the buggy behaviour
d15cad80 620may need to be fixed to account for the correct behaviour.
5076a392 621
61752d82 622=head2 Stashes and Package Variables
5076a392 623
61752d82 624=head3 Localised tied hashes and arrays are no longed tied
5076a392 625
61752d82 626In the following:
5076a392 627
61752d82
FC
628 tie @a, ...;
629 {
1c7f7822
JV
630 local @a;
631 # here, @a is a now a new, untied array
61752d82
FC
632 }
633 # here, @a refers again to the old, tied array
5076a392 634
d15cad80 635Earlier versions of Perl incorrectly tied the new local array. This has
1c7f7822
JV
636now been fixed. This fix could however potentially cause a change in
637behaviour of some code.
5076a392 638
61752d82 639=head3 Stashes are now always defined
5076a392 640
61752d82
FC
641C<defined %Foo::> now always returns true, even when no symbols have yet been
642defined in that package.
5076a392 643
d15cad80
TC
644This is a side-effect of removing a special-case kludge in the tokeniser,
645added for 5.10.0, to hide side-effects of changes to the internal storage of
1c7f7822 646hashes. The fix drastically reduces hashes' memory overhead.
61752d82
FC
647
648Calling defined on a stash has been deprecated since 5.6.0, warned on
d15cad80
TC
649lexicals since 5.6.0, and warned for stashes and other package
650variables since 5.12.0. C<defined %hash> has always exposed an
651implementation detail: emptying a hash by deleting all entries from it does
652not make C<defined %hash> false. Hence C<defined %hash> is not valid code to
6369b34f 653determine whether an arbitrary hash is empty. Instead, use the behaviour
d15cad80 654of an empty C<%hash> always returning false in scalar context.
61752d82 655
48b31689
FC
656=head3 Clearing stashes
657
d15cad80
TC
658Stash list assignment C<%foo:: = ()> used to make the stash temporarily
659anonymous while it was being emptied. Consequently, any of its
660subroutines referenced elsewhere would become anonymous, showing up as
661"(unknown)" in C<caller>. They now retain their package names such that
662C<caller> returns the original sub name if there is still a reference
663to its typeglob and "foo::__ANON__" otherwise [perl #79208].
48b31689 664
61752d82 665=head3 Dereferencing typeglobs
5076a392
FC
666
667If you assign a typeglob to a scalar variable:
668
669 $glob = *foo;
670
671the glob that is copied to C<$glob> is marked with a special flag
1c7f7822
JV
672indicating that the glob is just a copy. This allows subsequent
673assignments to C<$glob> to overwrite the glob. The original glob,
674however, is immutable.
5076a392 675
370ff23e 676Some Perl operators did not distinguish between these two types of globs.
5076a392 677This would result in strange behaviour in edge cases: C<untie $scalar>
370ff23e 678would not untie the scalar if the last thing assigned to it was a glob
5076a392 679(because it treated it as C<untie *$scalar>, which unties a handle).
d15cad80 680Assignment to a glob slot (such as C<*$glob = \@some_array>) would simply
5076a392
FC
681assign C<\@some_array> to C<$glob>.
682
d15cad80 683To fix this, the C<*{}> operator (including its C<*foo> and C<*$foo> forms)
5076a392 684has been modified to make a new immutable glob if its operand is a glob
e262cb24
FC
685copy. This allows operators that make a distinction between globs and
686scalars to be modified to treat only immutable globs as globs. (C<tie>,
687C<tied> and C<untie> have been left as they are for compatibility's sake,
6369b34f 688but will warn. See L</Deprecations>.)
5076a392
FC
689
690This causes an incompatible change in code that assigns a glob to the
6369b34f 691return value of C<*{}> when that operator was passed a glob copy. Take the
5076a392
FC
692following code, for instance:
693
694 $glob = *foo;
695 *$glob = *bar;
696
40bd7639
R
697The C<*$glob> on the second line returns a new immutable glob. That new
698glob is made an alias to C<*bar>. Then it is discarded. So the second
5076a392
FC
699assignment has no effect.
700
1c7f7822 701See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for
5076a392
FC
702more detail.
703
61752d82
FC
704=head3 Magic variables outside the main package
705
706In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would
d15cad80 707"leak" into other packages. So C<%foo::SIG> could be used to access signals,
61752d82
FC
708C<${"foo::!"}> (with strict mode off) to access C's C<errno>, etc.
709
d15cad80 710This was a bug, or an "unintentional" feature, which caused various ill effects,
61752d82
FC
711such as signal handlers being wiped when modules were loaded, etc.
712
713This has been fixed (or the feature has been removed, depending on how you see
714it).
715
f8992784 716=head3 local($_) strips all magic from $_
a8bd2968 717
f8992784 718local() on scalar variables gives them a new value but keeps all
d15cad80 719their magic intact. This has proven problematic for the default
a8bd2968 720scalar variable $_, where L<perlsub> recommends that any subroutine
d15cad80
TC
721that assigns to $_ should first localize it. This would throw an
722exception if $_ is aliased to a read-only variable, and could in general have
723various unintentional side-effects.
a8bd2968
FC
724
725Therefore, as an exception to the general rule, local($_) will not
726only assign a new value to $_, but also remove all existing magic from
727it as well.
728
6e925ecb
FC
729=head3 Parsing of package and variable names
730
d15cad80
TC
731Parsing the names of packages and package variables has changed:
732multiple adjacent pairs of colons, as in C<foo::::bar>, are now all
733treated as package separators.
6e925ecb
FC
734
735Regardless of this change, the exact parsing of package separators has
736never been guaranteed and is subject to change in future Perl versions.
737
61752d82
FC
738=head2 Changes to Syntax or to Perl Operators
739
740=head3 C<given> return values
741
742C<given> blocks now return the last evaluated
40bd7639 743expression, or an empty list if the block was exited by C<break>. Thus you
61752d82
FC
744can now write:
745
746 my $type = do {
747 given ($num) {
748 break when undef;
d15cad80
TC
749 "integer" when /^[+-]?[0-9]+$/;
750 "float" when /^[+-]?[0-9]+(?:\.[0-9]+)?$/;
751 "unknown";
61752d82
FC
752 }
753 };
754
755See L<perlsyn/Return value> for details.
756
d15cad80 757=head3 Change in parsing of certain prototypes
61752d82
FC
758
759Functions declared with the following prototypes now behave correctly as unary
760functions:
761
762 *
763 \$ \% \@ \* \&
764 \[...]
765 ;$ ;*
766 ;\$ ;\% etc.
767 ;\[...]
768
769Due to this bug fix [perl #75904], functions
770using the C<(*)>, C<(;$)> and C<(;*)> prototypes
179813a8
FC
771are parsed with higher precedence than before. So
772in the following example:
61752d82 773
d2c16ee1 774 sub foo(;$);
61752d82
FC
775 foo $a < $b;
776
777the second line is now parsed correctly as C<< foo($a) < $b >>, rather than
179813a8 778C<< foo($a < $b) >>. This happens when one of these operators is used in
61752d82
FC
779an unparenthesised argument:
780
781 < > <= >= lt gt le ge
782 == != <=> eq ne cmp ~~
783 &
784 | ^
785 &&
786 || //
787 .. ...
788 ?:
789 = += -= *= etc.
d2c16ee1 790 , =>
61752d82
FC
791
792=head3 Smart-matching against array slices
793
794Previously, the following code resulted in a successful match:
795
796 my @a = qw(a y0 z);
797 my @b = qw(a x0 z);
798 @a[0 .. $#b] ~~ @b;
799
800This odd behaviour has now been fixed [perl #77468].
801
802=head3 Negation treats strings differently from before
803
d15cad80 804The unary negation operator, C<->, now treats strings that look like numbers
61752d82
FC
805as numbers [perl #57706].
806
807=head3 Negative zero
808
809Negative zero (-0.0), when converted to a string, now becomes "0" on all
179813a8 810platforms. It used to become "-0" on some, but "0" on others.
61752d82
FC
811
812If you still need to determine whether a zero is negative, use
813C<sprintf("%g", $zero) =~ /^-/> or the L<Data::Float> module on CPAN.
814
815=head3 C<:=> is now a syntax error
5076a392 816
d15cad80 817Previously C<my $pi := 4> was exactly equivalent to C<my $pi : = 4>,
5076a392 818with the C<:> being treated as the start of an attribute list, ending before
179813a8 819the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is
d15cad80 820now a syntax error. This allows future use of C<:=> as a new token.
5076a392 821
d15cad80
TC
822Outside the core's tests for it, we find no Perl 5 code on CPAN
823using this construction, so we believe that this change will have
66b4c19b 824little impact on real-world codebases.
5076a392
FC
825
826If it is absolutely necessary to have empty attribute lists (for example,
d15cad80 827because of a code generator), simply avoid the error by adding a space before
5076a392
FC
828the C<=>.
829
d1ef1aa8
FC
830=head3 Change in the parsing of identifiers
831
832Characters outside the Unicode "XIDStart" set are no longer allowed at the
ac245c6a
KW
833beginning of an identifier. This means that certain accents and marks
834that normally follow an alphabetic character may no longer be the first
835character of an identifier.
d1ef1aa8 836
61752d82 837=head2 Threads and Processes
5076a392 838
61752d82 839=head3 Directory handles not copied to threads
5076a392 840
61752d82
FC
841On systems other than Windows that do not have
842a C<fchdir> function, newly-created threads no
179813a8 843longer inherit directory handles from their parent threads. Such programs
61752d82 844would usually have crashed anyway [perl #75154].
5076a392 845
61752d82 846=head3 C<close> on shared pipes
5076a392 847
d15cad80
TC
848To avoid deadlocks, the C<close> function no longer waits for the
849child process to exit if the underlying file descriptor is still
850in use by another thread. It returns true in such cases.
5076a392 851
144b6ea2
FC
852=head3 fork() emulation will not wait for signalled children
853
854On Windows parent processes would not terminate until all forked
7d7b9667 855children had terminated first. However, C<kill("KILL", ...)> is
d15cad80 856inherently unstable on pseudo-processes, and C<kill("TERM", ...)>
179813a8 857might not get delivered if the child is blocked in a system call.
144b6ea2
FC
858
859To avoid the deadlock and still provide a safe mechanism to terminate
d15cad80 860the hosting process, Perl now no longer waits for children that
144b6ea2 861have been sent a SIGTERM signal. It is up to the parent process to
d15cad80
TC
862waitpid() for these children if child-cleanup processing must be
863allowed to finish. However, it is also then the responsibility of the
864parent to avoid the deadlock by making sure the child process
865can't be blocked on I/O.
144b6ea2
FC
866
867See L<perlfork> for more information about the fork() emulation on
868Windows.
869
61752d82 870=head2 Configuration
5076a392 871
61752d82 872=head3 Naming fixes in Policy_sh.SH may invalidate Policy.sh
5076a392 873
d15cad80
TC
874Several long-standing typos and naming confusions in F<Policy_sh.SH> have
875been fixed, standardizing on the variable names used in F<config.sh>.
5076a392 876
d15cad80
TC
877This will change the behaviour of F<Policy.sh> if you happen to have been
878accidentally relying on its incorrect behaviour.
f318e2e6 879
5a1f7719
FC
880=head3 Perl source code is read in text mode on Windows
881
882Perl scripts used to be read in binary mode on Windows for the benefit
f8992784 883of the L<ByteLoader> module (which is no longer part of core Perl). This
d15cad80
TC
884had the side-effect of breaking various operations on the C<DATA> filehandle,
885including seek()/tell(), and even simply reading from C<DATA> after filehandles
5a1f7719
FC
886have been flushed by a call to system(), backticks, fork() etc.
887
888The default build options for Windows have been changed to read Perl source
f8992784 889code on Windows in text mode now. L<ByteLoader> will (hopefully) be updated on
5a1f7719
FC
890CPAN to automatically handle this situation [perl #28106].
891
5076a392
FC
892=head1 Deprecations
893
1e463951
FC
894See also L</Deprecated C APIs>.
895
5076a392
FC
896=head2 Omitting a space between a regular expression and subsequent word
897
d15cad80 898Omitting the space between a regular expression operator or
18139a1b 899its modifiers and the following word is deprecated. For
d15cad80
TC
900example, C<< m/foo/sand $bar >> is for now still parsed
901as C<< m/foo/s and $bar >>, but will now issue a warning.
5076a392 902
e683df94
KW
903=head2 C<\cI<X>>
904
905The backslash-c construct was designed as a way of specifying
906non-printable characters, but there were no restrictions (on ASCII
907platforms) on what the character following the C<c> could be. Now,
908a deprecation warning is raised if that character isn't an ASCII character.
909Also, a deprecation warning is raised for C<"\c{"> (which is the same
910as simply saying C<";">).
911
4528361d
KW
912=head2 C<"\b{"> and C<"\B{">
913
914In regular expressions, a literal C<"{"> immediately following a C<"\b">
915(not in a bracketed character class) or a C<"\B{"> is now deprecated
916to allow for its future use by Perl itself.
917
d2c16ee1
Z
918=head2 Perl 4-era .pl libraries
919
920Perl bundles a handful of library files that predate Perl 5.
921This bundling is now deprecated for most of these files, which are now
922available from CPAN. The affected files now warn when run, if they were
923installed as part of the core.
5076a392 924
66b4c19b
TC
925This is a mandatory warning, not obeying B<-X> or lexical warning bits.
926The warning is modelled on that supplied by F<deprecate.pm> for
927deprecated-in-core F<.pm> libraries. It points to the specific CPAN
928distribution that contains the F<.pl> libraries. The CPAN versions, of
1c7f7822 929course, do not generate the warning.
5076a392
FC
930
931=head2 List assignment to C<$[>
932
823d0e46 933Assignment to C<$[> was deprecated and started to give warnings in
d15cad80
TC
934Perl version 5.12.0. This version of Perl (5.14) now also emits a warning
935when assigning to C<$[> in list context. This fixes an oversight in 5.12.0.
5076a392
FC
936
937=head2 Use of qw(...) as parentheses
938
939Historically the parser fooled itself into thinking that C<qw(...)> literals
940were always enclosed in parentheses, and as a result you could sometimes omit
941parentheses around them:
942
943 for $x qw(a b c) { ... }
944
945The parser no longer lies to itself in this way. Wrap the list literal in
d15cad80 946parentheses like this:
5076a392
FC
947
948 for $x (qw(a b c)) { ... }
949
d2c16ee1
Z
950This is being deprecated because the parentheses in C<for $i (1,2,3) { ... }>
951are not part of expression syntax. They are part of the statement
952syntax, with the C<for> statement wanting literal parentheses.
953The synthetic parentheses that a C<qw> expression acquired were only
954intended to be treated as part of expression syntax.
038c245e 955
d15cad80 956Note that this does not change the behaviour of cases like:
038c245e 957
d2c16ee1 958 use POSIX qw(setlocale localeconv);
038c245e
AB
959 our @EXPORT = qw(foo bar baz);
960
d2c16ee1 961where parentheses were never required around the expression.
038c245e 962
1c7f7822 963=head2 C<\N{BELL}>
5076a392
FC
964
965This is because Unicode is using that name for a different character.
966See L</Unicode Version 6.0 is now supported (mostly)> for more
967explanation.
968
1c7f7822 969=head2 C<?PATTERN?>
5076a392 970
66b4c19b 971C<?PATTERN?> (without the initial C<m>) has been deprecated and now produces
5076a392 972a warning. This is to allow future use of C<?> in new operators.
66b4c19b 973The match-once functionality is still available as C<m?PATTERN?>.
5076a392 974
5076a392
FC
975=head2 Tie functions on scalars holding typeglobs
976
977Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument
f8992784 978acts on a filehandle if the scalar happens to hold a typeglob.
5076a392
FC
979
980This is a long-standing bug that will be removed in Perl 5.16, as
981there is currently no way to tie the scalar itself when it holds
982a typeglob, and no way to untie a scalar that has had a typeglob
983assigned to it.
984
823d0e46 985Now there is a deprecation warning whenever a tie
5076a392
FC
986function is used on a handle without an explicit C<*>.
987
18139a1b 988=head2 User-defined case-mapping
5076a392 989
18139a1b
FC
990This feature is being deprecated due to its many issues, as documented in
991L<perlunicode/User-Defined Case Mappings (for serious hackers only)>.
1c7f7822 992This feature will be removed in Perl 5.16. Instead use the CPAN module
e48f36f0 993L<Unicode::Casing>, which provides improved functionality.
823d0e46 994
18139a1b 995=head2 Deprecated modules
5076a392 996
d2c16ee1 997The following module will be removed from the core distribution in a
40bd7639 998future release, and should be installed from CPAN instead. Distributions
d2c16ee1
Z
999on CPAN that require this should add it to their prerequisites. The
1000core version of these module now issues a deprecation warning.
5076a392
FC
1001
1002If you ship a packaged version of Perl, either alone or as part of a
1003larger system, then you should carefully consider the repercussions of
823d0e46 1004core module deprecations. You may want to consider shipping your default
d2c16ee1
Z
1005build of Perl with a package for the deprecated module that
1006installs into C<vendor> or C<site> Perl library directories. This will
5076a392
FC
1007inhibit the deprecation warnings.
1008
1009Alternatively, you may want to consider patching F<lib/deprecate.pm>
1010to provide deprecation warnings specific to your packaging system
1011or distribution of Perl, consistent with how your packaging system
1012or distribution manages a staged transition from a release where the
1013installation of a single package provides the given functionality, to
1014a later release where the system administrator needs to know to install
1015multiple packages to get that same functionality.
1016
d2c16ee1
Z
1017You can silence these deprecation warnings by installing the module
1018in question from CPAN. To install the latest version of it by role
1019rather than by name, just install C<Task::Deprecations::5_14>.
5076a392
FC
1020
1021=over
1022
1023=item L<Devel::DProf>
1024
d15cad80 1025We strongly recommend that you install and use L<Devel::NYTProf> instead
96b425ed 1026of L<Devel::DProf>, as L<Devel::NYTProf> offers significantly
d15cad80 1027improved profiling and reporting.
5076a392
FC
1028
1029=back
1030
5076a392
FC
1031=head1 Performance Enhancements
1032
54c7bb16 1033=head2 "Safe signals" optimisation
df91d470 1034
d15cad80
TC
1035Signal dispatch has been moved from the runloop into control ops.
1036This should give a few percent speed increase, and eliminates nearly
1037all the speed penalty caused by the introduction of "safe signals"
1038in 5.8.0. Signals should still be dispatched within the same
1039statement as they were previously. If this does I<not> happen, or
1040if you find it possible to create uninterruptible loops, this is a
1041bug, and reports are encouraged of how to recreate such issues.
df91d470 1042
d15cad80 1043=head2 Optimisation of shift() and pop() calls without arguments
df91d470 1044
d15cad80
TC
1045Two fewer OPs are used for shift() and pop() calls with no argument (with
1046implicit C<@_>). This change makes shift() 5% faster than C<shift @_>
1047on non-threaded perls, and 25% faster on threaded ones.
df91d470 1048
fa232254 1049=head2 Optimisation of regexp engine string comparison work
df91d470 1050
d15cad80 1051The C<foldEQ_utf8> API function for case-insensitive comparison of strings (which
fa232254 1052is used heavily by the regexp engine) was substantially refactored and
d15cad80 1053optimised -- and its documentation much improved as a free bonus.
df91d470 1054
fa232254 1055=head2 Regular expression compilation speed-up
df91d470 1056
d15cad80
TC
1057Compiling regular expressions has been made faster when upgrading
1058the regex to utf8 is necessary but this isn't known when the compilation begins.
df91d470 1059
fa232254 1060=head2 String appending is 100 times faster
df91d470 1061
1c7f7822
JV
1062When doing a lot of string appending, perls built to use the system's
1063C<malloc> could end up allocating a lot more memory than needed in a
66b4c19b 1064inefficient way.
fa232254 1065
1c7f7822 1066C<sv_grow>, the function used to allocate more memory if necessary
d15cad80 1067when appending to a string, has been taught to round up the memory
fa232254
FC
1068it requests to a certain geometric progression, making it much faster on
1069certain platforms and configurations. On Win32, it's now about 100 times
1070faster.
1071
1072=head2 Eliminate C<PL_*> accessor functions under ithreads
1073
1074When C<MULTIPLICITY> was first developed, and interpreter state moved into
d15cad80
TC
1075an interpreter struct, thread- and interpreter-local C<PL_*> variables
1076were defined as macros that called accessor functions (returning the
1077address of the value) outside the Perl core. The intent was to allow
1c7f7822
JV
1078members within the interpreter struct to change size without breaking
1079binary compatibility, so that bug fixes could be merged to a maintenance
1080branch that necessitated such a size change. This mechanism was redundant
40bd7639 1081and penalised well-behaved code. It has been removed.
fa232254
FC
1082
1083=head2 Freeing weak references
1084
1c7f7822 1085When there are many weak references to an object, freeing that object
66b4c19b 1086can under some circumstances take O(I<NE<0xB2>>) time to free, where
d15cad80
TC
1087I<N> is the number of references. The circumstances in which this can happen
1088have been reduced [perl #75254]
fa232254
FC
1089
1090=head2 Lexical array and hash assignments
1091
1092An earlier optimisation to speed up C<my @array = ...> and
1093C<my %hash = ...> assignments caused a bug and was disabled in Perl 5.12.0.
1094
1095Now we have found another way to speed up these assignments [perl #82110].
df91d470 1096
111b6aa7 1097=head2 C<@_> uses less memory
df91d470 1098
111b6aa7
FC
1099Previously, C<@_> was allocated for every subroutine at compile time with
1100enough space for four entries. Now this allocation is done on demand when
1101the subroutine is called [perl #72416].
5076a392 1102
5076a392
FC
1103=head2 Size optimisations to SV and HV structures
1104
d15cad80
TC
1105C<xhv_fill> has been eliminated from C<struct xpvhv>, saving 1 IV per hash and
1106on some systems will cause C<struct xpvhv> to become cache-aligned. To avoid
1107this memory saving causing a slowdown elsewhere, boolean use of C<HvFILL>
1108now calls C<HvTOTALKEYS> instead (which is equivalent), so while the fill
66b4c19b 1109data when actually required are now calculated on demand, cases when
d15cad80 1110this needs to be done should be rare.
5076a392 1111
111b6aa7
FC
1112The order of structure elements in SV bodies has changed. Effectively,
1113the NV slot has swapped location with STASH and MAGIC. As all access to
1114SV members is via macros, this should be completely transparent. This
5076a392
FC
1115change allows the space saving for PVHVs documented above, and may reduce
1116the memory allocation needed for PVIVs on some architectures.
1117
d15cad80 1118C<XPV>, C<XPVIV>, and C<XPVNV> now allocate only the parts of the C<SV> body
fa232254 1119they actually use, saving some space.
5076a392 1120
d15cad80 1121Scalars containing regular expressions now allocate only the part of the C<SV>
fa232254 1122body they actually use, saving some space.
5076a392
FC
1123
1124=head2 Memory consumption improvements to Exporter
1125
66b4c19b 1126The C<@EXPORT_FAIL> AV is no longer created unless needed, hence neither is
111b6aa7
FC
1127the typeglob backing it. This saves about 200 bytes for every package that
1128uses Exporter but doesn't use this functionality.
5076a392 1129
111b6aa7 1130=head2 Memory savings for weak references
5076a392 1131
1c7f7822
JV
1132For weak references, the common case of just a single weak reference
1133per referent has been optimised to reduce the storage required. In this
1134case it saves the equivalent of one small Perl array per referent.
5076a392 1135
111b6aa7 1136=head2 C<%+> and C<%-> use less memory
5076a392 1137
d15cad80
TC
1138The bulk of the C<Tie::Hash::NamedCapture> module used to be in the Perl
1139core. It has now been moved to an XS module to reduce overhead for
5076a392
FC
1140programs that do not use C<%+> or C<%->.
1141
fa232254 1142=head2 Multiple small improvements to threads
5076a392 1143
fa232254
FC
1144The internal structures of threading now make fewer API calls and fewer
1145allocations, resulting in noticeably smaller object code. Additionally,
d15cad80 1146many thread context checks have been deferred so they're done only
66b4c19b 1147as needed (although this is only possible for non-debugging builds).
5076a392 1148
fa232254 1149=head2 Adjacent pairs of nextstate opcodes are now optimized away
5076a392 1150
fa232254 1151Previously, in code such as
5076a392 1152
fa232254 1153 use constant DEBUG => 0;
5076a392 1154
fa232254
FC
1155 sub GAK {
1156 warn if DEBUG;
1157 print "stuff\n";
1158 }
5076a392 1159
d15cad80 1160the ops for C<warn if DEBUG> would be folded to a C<null> op (C<ex-const>), but
fa232254 1161the C<nextstate> op would remain, resulting in a runtime op dispatch of
d15cad80 1162C<nextstate>, C<nextstate>, etc.
5076a392 1163
fa232254
FC
1164The execution of a sequence of C<nextstate> ops is indistinguishable from just
1165the last C<nextstate> op so the peephole optimizer now eliminates the first of
d15cad80
TC
1166a pair of C<nextstate> ops except when the first carries a label, since labels
1167must not be eliminated by the optimizer, and label usage isn't conclusively known
fa232254 1168at compile time.
5076a392
FC
1169
1170=head1 Modules and Pragmata
1171
1172=head2 New Modules and Pragmata
1173
1174=over 4
1175
1176=item *
1177
d15cad80
TC
1178L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module. It supports a
1179subset of YAML sufficient for reading and writing F<META.yml> and F<MYMETA.yml> files
5076a392 1180included with CPAN distributions or generated by the module installation
a60ea503 1181toolchain. It should not be used for any other general YAML parsing or
5076a392
FC
1182generation task.
1183
1184=item *
1185
d15cad80 1186L<CPAN::Meta> version 2.110440 has been added as a dual-life module. It
5076a392 1187provides a standard library to read, interpret and write CPAN distribution
66b4c19b 1188metadata files (like F<META.json> and F<META.yml)> that describe a
5076a392 1189distribution, its contents, and the requirements for building it and
a60ea503 1190installing it. The latest CPAN distribution metadata specification is
d15cad80
TC
1191included as L<CPAN::Meta::Spec> and notes on changes in the specification
1192over time are given in L<CPAN::Meta::History>.
5076a392
FC
1193
1194=item *
1195
d15cad80 1196L<HTTP::Tiny> 0.012 has been added as a dual-life module. It is a very
5076a392 1197small, simple HTTP/1.1 client designed for simple GET requests and file
66b4c19b 1198mirroring. It has been added so that F<CPAN.pm> and L<CPANPLUS> can
5076a392 1199"bootstrap" HTTP access to CPAN using pure Perl without relying on external
d15cad80 1200binaries like L<curl(1)> or L<wget(1)>.
5076a392
FC
1201
1202=item *
1203
d15cad80 1204L<JSON::PP> 2.27105 has been added as a dual-life module to allow CPAN
1c7f7822 1205clients to read F<META.json> files in CPAN distributions.
5076a392
FC
1206
1207=item *
1208
d15cad80 1209L<Module::Metadata> 1.000004 has been added as a dual-life module. It gathers
5076a392 1210package and POD information from Perl module files. It is a standalone module
d15cad80
TC
1211based on L<Module::Build::ModuleInfo> for use by other module installation
1212toolchain components. L<Module::Build::ModuleInfo> has been deprecated in
5076a392
FC
1213favor of this module instead.
1214
1215=item *
1216
d15cad80
TC
1217L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl
1218operating system names (like "dragonfly" or "MSWin32") to more generic types
1219with standardized names (like "Unix" or "Windows"). It has been refactored
1220out of L<Module::Build> and L<ExtUtils::CBuilder> and consolidates such mappings into
5076a392
FC
1221a single location for easier maintenance.
1222
1223=item *
1224
d15cad80 1225The following modules were added by the L<Unicode::Collate>
a60ea503 1226upgrade. See below for details.
5076a392 1227
d15cad80 1228L<Unicode::Collate::CJK::Big5>
5076a392 1229
d15cad80 1230L<Unicode::Collate::CJK::GB2312>
5076a392 1231
d15cad80 1232L<Unicode::Collate::CJK::JISX0208>
5076a392 1233
d15cad80 1234L<Unicode::Collate::CJK::Korean>
5076a392 1235
d15cad80 1236L<Unicode::Collate::CJK::Pinyin>
5076a392 1237
d15cad80 1238L<Unicode::Collate::CJK::Stroke>
5076a392
FC
1239
1240=item *
1241
d15cad80 1242L<Version::Requirements> version 0.101020 has been added as a dual-life
5076a392 1243module. It provides a standard library to model and manipulates module
d15cad80 1244prerequisites and version constraints defined in L<CPAN::Meta::Spec>.
5076a392
FC
1245
1246=back
1247
a5794e94 1248=head2 Updated Modules and Pragma
5076a392
FC
1249
1250=over 4
1251
1252=item *
1253
d15cad80 1254L<attributes> has been upgraded from version 0.12 to 0.14.
81a53be2
FR
1255
1256=item *
1257
d15cad80 1258L<Archive::Extract> has been upgraded from version 0.38 to 0.48.
5076a392
FC
1259
1260Updates since 0.38 include: a safe print method that guards
d15cad80
TC
1261L<Archive::Extract> from changes to C<$\>; a fix to the tests when run in core
1262Perl; support for TZ files; a modification for the lzma
1263logic to favour L<IO::Uncompress::Unlzma>; and a fix
1264for an issue with NetBSD-current and its new L<unzip(1)>
5076a392
FC
1265executable.
1266
1267=item *
1268
d15cad80 1269L<Archive::Tar> has been upgraded from version 1.54 to 1.76.
5076a392 1270
1984204c
FC
1271Important changes since 1.54 include the following:
1272
1273=over
1274
1275=item *
1276
d15cad80 1277Compatibility with busybox implementations of L<tar(1)>.
1984204c
FC
1278
1279=item *
1280
d15cad80
TC
1281A fix so that write() and create_archive()
1282close only filehandles they themselves opened.
1984204c
FC
1283
1284=item *
1285
1286A bug was fixed regarding the exit code of extract_archive.
5076a392 1287
1984204c
FC
1288=item *
1289
d15cad80
TC
1290The L<ptar(1)> utility has a new option to allow safe creation of
1291tarballs without world-writable files on Windows, allowing those
5076a392
FC
1292archives to be uploaded to CPAN.
1293
1984204c
FC
1294=item *
1295
d15cad80 1296A new L<ptargrep(1)> utility for using regular expressions against
5076a392
FC
1297the contents of files in a tar archive.
1298
1984204c
FC
1299=item *
1300
d15cad80 1301L<pax> extended headers are now skipped.
1984204c
FC
1302
1303=back
5076a392
FC
1304
1305=item *
1306
d15cad80 1307L<Attribute::Handlers> has been upgraded from version 0.87 to 0.89.
fcd5df6d
FR
1308
1309=item *
1310
d15cad80 1311L<autodie> has been upgraded from version 2.06_01 to 2.1001.
3f5a47e4
FR
1312
1313=item *
1314
d15cad80 1315L<AutoLoader> has been upgraded from version 5.70 to 5.71.
578e7c9d
FR
1316
1317=item *
1318
d15cad80 1319The L<B> module has been upgraded from version 1.23 to 1.29.
5076a392
FC
1320
1321It no longer crashes when taking apart a C<y///> containing characters
1322outside the octet range or compiled in a C<use utf8> scope.
1323
1324The size of the shared object has been reduced by about 40%, with no
1325reduction in functionality.
1326
1327=item *
1328
d15cad80 1329L<B::Concise> has been upgraded from version 0.78 to 0.83.
5076a392 1330
d15cad80
TC
1331L<B::Concise> marks rv2sv(), rv2av(), and rv2hv() ops with the new
1332C<OPpDEREF> flag as "DREFed".
5076a392 1333
d15cad80 1334It no longer produces mangled output with the B<-tree> option
5076a392
FC
1335[perl #80632].
1336
1337=item *
1338
d15cad80 1339L<B::Debug> has been upgraded from version 1.12 to 1.16.
6bb8c1e3
FR
1340
1341=item *
1342
d15cad80 1343L<B::Deparse> has been upgraded from version 0.96 to 1.03.
5076a392 1344
d15cad80
TC
1345The deparsing of a C<nextstate> op has changed when it has both a
1346change of package relative to the previous nextstate, or a change of
1347C<%^H> or other state and a label. The label was previously emitted
1348first, but is now emitted last (5.12.1).
5076a392 1349
d15cad80 1350The C<no 5.13.2> or similar form is now correctly handled by L<B::Deparse>
5a553547 1351(5.12.3).
5076a392 1352
d15cad80 1353L<B::Deparse> now properly handles the code that applies a conditional
5076a392
FC
1354pattern match against implicit C<$_> as it was fixed in [perl #20444].
1355
1984204c 1356Deparsing of C<our> followed by a variable with funny characters
d15cad80 1357(as permitted under the C<use utf8> pragma) has also been fixed [perl #33752].
5076a392
FC
1358
1359=item *
1360
d15cad80 1361L<B::Lint> has been upgraded from version 1.11_01 to 1.13.
d97c5d3b
FR
1362
1363=item *
1364
d15cad80 1365L<base> has been upgraded from version 2.15 to 2.16.
5aef2c44
FR
1366
1367=item *
1368
d15cad80 1369L<Benchmark> has been upgraded from version 1.11 to 1.12.
876607aa
FR
1370
1371=item *
1372
d15cad80 1373L<bignum> has been upgraded from version 0.23 to 0.27.
e539ae69
FR
1374
1375=item *
1376
d15cad80 1377L<Carp> has been upgraded from version 1.15 to 1.20.
5076a392 1378
d15cad80
TC
1379L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR">
1380overrides and avoids using bogus C<@DB::args>. To provide backtraces,
1381Carp relies on particular behaviour of the caller() builtin.
1382L<Carp> now detects if other code has overridden this with an
1383incomplete implementation, and modifies its backtrace accordingly.
1384Previously incomplete overrides would cause incorrect values in
1385backtraces (best case), or obscure fatal errors (worst case).
5076a392 1386
d15cad80
TC
1387This fixes certain cases of "Bizarre copy of ARRAY" caused by modules
1388overriding caller() incorrectly (5.12.2).
5076a392 1389
d15cad80 1390It now also avoids using regular expressions that cause Perl to
b056a6a7 1391load its Unicode tables, so as to avoid the "BEGIN not safe after
66b4c19b 1392errors" error that ensue if there has been a syntax error
5076a392
FC
1393[perl #82854].
1394
1395=item *
1396
d15cad80 1397L<CGI> has been upgraded from version 3.48 to 3.52.
5076a392
FC
1398
1399This provides the following security fixes: the MIME boundary in
d15cad80 1400multipart_init() is now random and the handling of
1984204c 1401newlines embedded in header values has been improved.
5076a392
FC
1402
1403=item *
1404
d15cad80 1405L<Compress::Raw::Bzip2> has been upgraded from version 2.024 to 2.033.
5076a392 1406
f8992784 1407It has been updated to use L<bzip2(1)> 1.0.6.
5076a392
FC
1408
1409=item *
1410
d15cad80 1411L<Compress::Raw::Zlib> has been upgraded from version 2.024 to 2.033.
51090521
FR
1412
1413=item *
1414
d15cad80 1415L<constant> has been upgraded from version 1.20 to 1.21.
87c7b53d 1416
d15cad80 1417Unicode constants work once more. They have been broken since Perl 5.10.0
87c7b53d
FC
1418[CPAN RT #67525].
1419
1420=item *
1421
d15cad80 1422L<CPAN> has been upgraded from version 1.94_56 to 1.9600.
1984204c
FC
1423
1424Major highlights:
5076a392
FC
1425
1426=over 4
1427
1984204c 1428=item * much less configuration dialog hassle
5076a392 1429
d15cad80 1430=item * support for F<META/MYMETA.json>
5076a392 1431
d15cad80 1432=item * support for L<local::lib>
5076a392 1433
d15cad80 1434=item * support for L<HTTP::Tiny> to reduce the dependency on FTP sites
5076a392 1435
1984204c 1436=item * automatic mirror selection
5076a392 1437
1984204c 1438=item * iron out all known bugs in configure_requires
5076a392 1439
f8992784 1440=item * support for distributions compressed with L<bzip2(1)>
1984204c 1441
d15cad80 1442=item * allow F<Foo/Bar.pm> on the command line to mean C<Foo::Bar>
1984204c
FC
1443
1444=back
5076a392
FC
1445
1446=item *
1447
d15cad80 1448L<CPANPLUS> has been upgraded from version 0.90 to 0.9103.
d430b8e7
FC
1449
1450A change to F<cpanp-run-perl>
1451resolves L<RT #55964|http://rt.cpan.org/Public/Bug/Display.html?id=55964>
1452and L<RT #57106|http://rt.cpan.org/Public/Bug/Display.html?id=57106>, both
1453of which related to failures to install distributions that use
1454C<Module::Install::DSL> (5.12.2).
5076a392 1455
d15cad80 1456A dependency on L<Config> was not recognised as a
1984204c 1457core module dependency. This has been fixed.
5076a392 1458
d15cad80 1459L<CPANPLUS> now includes support for F<META.json> and F<MYMETA.json>.
5076a392
FC
1460
1461=item *
1462
d15cad80 1463L<CPANPLUS::Dist::Build> has been upgraded from version 0.46 to 0.54.
4467e8f7
FR
1464
1465=item *
1466
d15cad80 1467L<Data::Dumper> has been upgraded from version 2.125 to 2.130_02.
5076a392 1468
40bd7639 1469The indentation used to be off when C<$Data::Dumper::Terse> was set. This
4ed2cea4
FC
1470has been fixed [perl #73604].
1471
1984204c
FC
1472This upgrade also fixes a crash when using custom sort functions that might
1473cause the stack to change [perl #74170].
5076a392 1474
d15cad80 1475L<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
5076a392
FC
1476[perl #72332].
1477
1478=item *
1479
d15cad80 1480L<DB_File> has been upgraded from version 1.820 to 1.821.
549d34f5
FR
1481
1482=item *
1483
d15cad80 1484L<DBM_Filter> has been upgraded from version 0.03 to 0.04.
851dbda2
FR
1485
1486=item *
1487
d15cad80 1488L<Devel::DProf> has been upgraded from version 20080331.00 to 20110228.00.
5076a392 1489
d15cad80
TC
1490Merely loading L<Devel::DProf> now no longer triggers profiling to start.
1491Both C<use Devel::DProf> and C<perl -d:DProf ...> behave as before and start
5076a392
FC
1492the profiler.
1493
d15cad80 1494B<NOTE>: L<Devel::DProf> is deprecated and will be removed from a future
1984204c 1495version of Perl. We strongly recommend that you install and use
5076a392
FC
1496L<Devel::NYTProf> instead, as it offers significantly improved
1497profiling and reporting.
1498
1499=item *
1500
d15cad80 1501L<Devel::Peek> has been upgraded from version 1.04 to 1.07.
868625d2
FR
1502
1503=item *
1504
d15cad80 1505L<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05.
66899ca3
FR
1506
1507=item *
1508
d15cad80 1509L<diagnostics> has been upgraded from version 1.19 to 1.22.
5076a392
FC
1510
1511It now renders pod links slightly better, and has been taught to find
1512descriptions for messages that share their descriptions with other
1513messages.
1514
1515=item *
1516
d15cad80 1517L<Digest::MD5> has been upgraded from version 2.39 to 2.51.
5076a392
FC
1518
1519It is now safe to use this module in combination with threads.
1520
1521=item *
1522
d15cad80 1523L<Digest::SHA> has been upgraded from version 5.47 to 5.61.
5076a392 1524
f8992784 1525L<shasum> now more closely mimics L<sha1sum(1)>/L<md5sum(1)>.
5076a392 1526
d15cad80 1527L<Addfile> accepts all POSIX filenames.
5076a392 1528
1984204c
FC
1529New SHA-512/224 and SHA-512/256 transforms (ref. NIST Draft FIPS 180-4
1530[February 2011])
5076a392
FC
1531
1532=item *
1533
d15cad80 1534L<DirHandle> has been upgraded from version 1.03 to 1.04.
88410521
FR
1535
1536=item *
1537
d15cad80 1538L<Dumpvalue> has been upgraded from version 1.13 to 1.16.
e53cbaa3
FR
1539
1540=item *
1541
d15cad80 1542L<DynaLoader> has been upgraded from version 1.10 to 1.13.
5076a392
FC
1543
1544It fixes a buffer overflow when passed a very long file name.
1545
d15cad80 1546It no longer inherits from L<AutoLoader>; hence it no longer
5076a392 1547produces weird error messages for unsuccessful method calls on classes that
d15cad80 1548inherit from L<DynaLoader> [perl #84358].
5076a392
FC
1549
1550=item *
1551
d15cad80 1552L<Encode> has been upgraded from version 2.39 to 2.42.
5076a392
FC
1553
1554Now, all 66 Unicode non-characters are treated the same way U+FFFF has
d15cad80
TC
1555always been treated: in cases when it was disallowed, all 66 are
1556disallowed, and in cases where it warned, all 66 warn.
5076a392
FC
1557
1558=item *
1559
d15cad80 1560L<Env> has been upgraded from version 1.01 to 1.02.
68f90ac3
FR
1561
1562=item *
1563
d15cad80 1564L<Errno> has been upgraded from version 1.11 to 1.13.
5076a392 1565
d15cad80 1566The implementation of L<Errno> has been refactored to use about 55% less memory.
5076a392 1567
f8992784 1568On some platforms with unusual header files, like Win32 L<gcc(1)> using C<mingw64>
66b4c19b 1569headers, some constants that weren't actually error numbers have been exposed
d15cad80 1570by L<Errno>. This has been fixed [perl #77416].
5076a392
FC
1571
1572=item *
1573
d15cad80 1574L<Exporter> has been upgraded from version 5.64_01 to 5.64_03.
5076a392
FC
1575
1576Exporter no longer overrides C<$SIG{__WARN__}> [perl #74472]
1577
1578=item *
1579
d15cad80 1580L<ExtUtils::CBuilder> has been upgraded from version 0.27 to 0.280203.
25fe7f8f
FR
1581
1582=item *
1583
d15cad80 1584L<ExtUtils::Command> has been upgraded from version 1.16 to 1.17.
2292e71e
FR
1585
1586=item *
1587
d15cad80 1588L<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
5076a392 1589
d15cad80
TC
1590The L<AUTOLOAD> helper code generated by C<ExtUtils::Constant::ProxySubs>
1591can now croak() for missing constants, or generate a complete C<AUTOLOAD>
1984204c 1592subroutine in XS, allowing simplification of many modules that use it
d15cad80
TC
1593(L<Fcntl>, L<File::Glob>, L<GDBM_File>, L<I18N::Langinfo>, L<POSIX>,
1594L<Socket>).
5076a392 1595
d15cad80 1596L<ExtUtils::Constant::ProxySubs> can now optionally push the names of all
1984204c 1597constants onto the package's C<@EXPORT_OK>.
5076a392
FC
1598
1599=item *
1600
d15cad80 1601L<ExtUtils::Install> has been upgraded from version 1.55 to 1.56.
588c5853
FR
1602
1603=item *
1604
d15cad80 1605L<ExtUtils::MakeMaker> has been upgraded from version 6.56 to 6.57_05.
5418ffb3
FR
1606
1607=item *
1608
d15cad80 1609L<ExtUtils::Manifest> has been upgraded from version 1.57 to 1.58.
f40ab45f
FR
1610
1611=item *
1612
d15cad80 1613L<ExtUtils::ParseXS> has been upgraded from version 2.21 to 2.2210.
b7064dd7
FR
1614
1615=item *
1616
d15cad80 1617L<Fcntl> has been upgraded from version 1.06 to 1.11.
26f7fa64
FR
1618
1619=item *
1620
d15cad80 1621L<File::Basename> has been upgraded from version 2.78 to 2.82.
8b87be80
FR
1622
1623=item *
1624
d15cad80 1625L<File::CheckTree> has been upgraded from version 4.4 to 4.41.
05102622
FR
1626
1627=item *
1628
d15cad80 1629L<File::Copy> has been upgraded from version 2.17 to 2.21.
65d78858
FR
1630
1631=item *
1632
d15cad80 1633L<File::DosGlob> has been upgraded from version 1.01 to 1.04.
5076a392 1634
d15cad80
TC
1635It allows patterns containing literal parentheses: they no longer need to
1636be escaped. On Windows, it no longer
1637adds an extra F<./> to file names
5076a392 1638returned when the pattern is a relative glob with a drive specification,
d15cad80 1639like F<C:*.pl> [perl #71712].
5076a392
FC
1640
1641=item *
1642
d15cad80 1643L<File::Fetch> has been upgraded from version 0.24 to 0.32.
5076a392 1644
d15cad80 1645L<HTTP::Lite> is now supported for the "http" scheme.
5076a392 1646
d15cad80 1647The L<fetch(1)> utility is supported on FreeBSD, NetBSD, and
5076a392
FC
1648Dragonfly BSD for the C<http> and C<ftp> schemes.
1649
1650=item *
1651
d15cad80 1652L<File::Find> has been upgraded from version 1.15 to 1.19.
5076a392 1653
1984204c 1654It improves handling of backslashes on Windows, so that paths like
d15cad80 1655F<C:\dir\/file> are no longer generated [perl #71710].
5076a392
FC
1656
1657=item *
1658
d15cad80 1659L<File::Glob> has been upgraded from version 1.07 to 1.12.
0ae9f678
FR
1660
1661=item *
1662
d15cad80 1663L<File::Spec> has been upgraded from version 3.31 to 3.33.
d430b8e7 1664
d15cad80 1665Several portability fixes were made in L<File::Spec::VMS>: a colon is now
d430b8e7 1666recognized as a delimiter in native filespecs; caret-escaped delimiters are
d15cad80 1667recognized for better handling of extended filespecs; catpath() returns
d430b8e7 1668an empty directory rather than the current directory if the input directory
d15cad80 1669name is empty; and abs2rel() properly handles Unix-style input (5.12.2).
d430b8e7
FC
1670
1671=item *
1672
d15cad80 1673L<File::stat> has been upgraded from 1.02 to 1.05.
5076a392 1674
d15cad80
TC
1675The C<-x> and C<-X> file test operators now work correctly when run
1676by the superuser.
5076a392
FC
1677
1678=item *
1679
d15cad80 1680L<Filter::Simple> has been upgraded from version 0.84 to 0.86.
b7edcc3c
FR
1681
1682=item *
1683
d15cad80 1684L<GDBM_File> has been upgraded from 1.10 to 1.14.
5076a392
FC
1685
1686This fixes a memory leak when DBM filters are used.
1687
1688=item *
1689
d15cad80 1690L<Hash::Util> has been upgraded from 0.07 to 0.11.
5076a392 1691
d15cad80 1692L<Hash::Util> no longer emits spurious "uninitialized" warnings when
1984204c 1693recursively locking hashes that have undefined values [perl #74280].
5076a392
FC
1694
1695=item *
1696
d15cad80 1697L<Hash::Util::FieldHash> has been upgraded from version 1.04 to 1.09.
89ce9b34
FR
1698
1699=item *
1700
d15cad80 1701L<I18N::Collate> has been upgraded from version 1.01 to 1.02.
eec33fe6
FR
1702
1703=item *
1704
d15cad80 1705L<I18N::Langinfo> has been upgraded from version 0.03 to 0.08.
5076a392 1706
d15cad80 1707langinfo() now defaults to using C<$_> if there is no argument given, just
5334145a 1708as the documentation has always claimed.
5076a392
FC
1709
1710=item *
1711
d15cad80 1712L<I18N::LangTags> has been upgraded from version 0.35 to 0.35_01.
c41635f7
FR
1713
1714=item *
1715
d15cad80 1716L<if> has been upgraded from version 0.05 to 0.0601.
98a6a4ff
FR
1717
1718=item *
1719
d15cad80 1720L<IO> has been upgraded from version 1.25_02 to 1.25_04.
f6ff7fb6 1721
d15cad80
TC
1722This version of L<IO> includes a new L<IO::Select>, which now allows L<IO::Handle>
1723objects (and objects in derived classes) to be removed from an L<IO::Select> set
582bf58c 1724even if the underlying file descriptor is closed or invalid.
5076a392
FC
1725
1726=item *
1727
d15cad80 1728L<IPC::Cmd> has been upgraded from version 0.54 to 0.70.
5076a392 1729
1984204c
FC
1730Resolves an issue with splitting Win32 command lines. An argument
1731consisting of the single character "0" used to be omitted (CPAN RT #62961).
5076a392
FC
1732
1733=item *
1734
d15cad80 1735L<IPC::Open3> has been upgraded from 1.05 to 1.09.
5076a392 1736
d15cad80 1737open3() now produces an error if the C<exec> call fails, allowing this
4ed2cea4
FC
1738condition to be distinguished from a child process that exited with a
1739non-zero status [perl #72016].
1740
d15cad80
TC
1741The internal xclose() routine now knows how to handle file descriptors as
1742documented, so duplicating C<STDIN> in a child process using its file
5076a392
FC
1743descriptor now works [perl #76474].
1744
1745=item *
1746
d15cad80 1747L<IPC::SysV> has been upgraded from version 2.01 to 2.03.
c8b41807
FR
1748
1749=item *
1750
d15cad80 1751L<lib> has been upgraded from version 0.62 to 0.63.
ef79f038
FR
1752
1753=item *
1754
d15cad80 1755L<Locale::Maketext> has been upgraded from version 1.14 to 1.19.
5076a392 1756
d15cad80 1757L<Locale::Maketext> now supports external caches.
5076a392 1758
1984204c
FC
1759This upgrade also fixes an infinite loop in
1760C<Locale::Maketext::Guts::_compile()> when
5076a392
FC
1761working with tainted values (CPAN RT #40727).
1762
d15cad80 1763C<< ->maketext >> calls now back up and restore C<$@> so error
5076a392
FC
1764messages are not suppressed (CPAN RT #34182).
1765
1766=item *
1767
d15cad80 1768L<Log::Message> has been upgraded from version 0.02 to 0.04.
3811bd2b
FR
1769
1770=item *
1771
d15cad80 1772L<Log::Message::Simple> has been upgraded from version 0.06 to 0.08.
8eb65377
FR
1773
1774=item *
1775
d15cad80 1776L<Math::BigInt> has been upgraded from version 1.89_01 to 1.994.
5076a392
FC
1777
1778This fixes, among other things, incorrect results when computing binomial
1779coefficients [perl #77640].
1780
d15cad80 1781It also prevents C<sqrt($int)> from crashing under C<use bigrat>.
5076a392
FC
1782[perl #73534].
1783
1784=item *
1785
d15cad80 1786L<Math::BigInt::FastCalc> has been upgraded from version 0.19 to 0.28.
846c1cec
FR
1787
1788=item *
1789
d15cad80 1790L<Math::BigRat> has been upgraded from version 0.24 to 0.26_02.
fce4aef3
FR
1791
1792=item *
1793
d15cad80 1794L<Memoize> has been upgraded from version 1.01_03 to 1.02.
12e26027
FR
1795
1796=item *
1797
d15cad80 1798L<MIME::Base64> has been upgraded from 3.08 to 3.13.
5076a392
FC
1799
1800Includes new functions to calculate the length of encoded and decoded
1801base64 strings.
1802
d15cad80 1803Now provides encode_base64url() and decode_base64url() functions to process
5076a392
FC
1804the base64 scheme for "URL applications".
1805
1806=item *
1807
d15cad80 1808L<Module::Build> has been upgraded from version 0.3603 to 0.3800.
5076a392
FC
1809
1810A notable change is the deprecation of several modules.
66b4c19b
TC
1811L<Module::Build::Version> has been deprecated and L<Module::Build> now
1812relies on the L<version> pragma directly. L<Module::Build::ModuleInfo> has
1813been deprecated in favor of a standalone copy called L<Module::Metadata>.
d15cad80 1814L<Module::Build::YAML> has been deprecated in favor of L<CPAN::Meta::YAML>.
5076a392 1815
7d7b9667 1816L<Module::Build> now also generates F<META.json> and F<MYMETA.json> files
5076a392 1817in accordance with version 2 of the CPAN distribution metadata specification,
d15cad80
TC
1818L<CPAN::Meta::Spec>. The older format F<META.yml> and F<MYMETA.yml> files are
1819still generated.
5076a392
FC
1820
1821=item *
1822
d15cad80 1823L<Module::CoreList> has been upgraded from version 2.29 to 2.47.
5076a392
FC
1824
1825Besides listing the updated core modules of this release, it also stops listing
f8992784 1826the C<Filespec> module. That module never existed in core. The scripts
d15cad80
TC
1827generating L<Module::CoreList> confused it with L<VMS::Filespec>, which actually
1828is a core module as of Perl 5.8.7.
5076a392
FC
1829
1830=item *
1831
d15cad80 1832L<Module::Load> has been upgraded from version 0.16 to 0.18.
193af05b
FR
1833
1834=item *
1835
d15cad80 1836L<Module::Load::Conditional> has been upgraded from version 0.34 to 0.44.
5b3a054f
FR
1837
1838=item *
1839
d15cad80
TC
1840The L<mro> pragma has been upgraded from version 1.02 to 1.07.
1841
01835e3a
FR
1842
1843=item *
1844
d15cad80 1845L<NDBM_File> has been upgraded from version 1.08 to 1.12.
4f978a3b
FR
1846
1847This fixes a memory leak when DBM filters are used.
1848
1849=item *
1850
d15cad80 1851L<Net::Ping> has been upgraded from version 2.36 to 2.38.
d0aa5c91
FR
1852
1853=item *
1854
d15cad80 1855L<NEXT> has been upgraded from version 0.64 to 0.65.
d44b8a8c
FR
1856
1857=item *
1858
d15cad80 1859L<Object::Accessor> has been upgraded from version 0.36 to 0.38.
678d4fd4
FR
1860
1861=item *
1862
f8992784 1863L<ODBM_File> has been upgraded from version 1.07 to 1.10.
5076a392
FC
1864
1865This fixes a memory leak when DBM filters are used.
1866
1867=item *
1868
d15cad80 1869L<Opcode> has been upgraded from version 1.15 to 1.18.
4c69840c
FR
1870
1871=item *
1872
d15cad80 1873The L<overload> pragma has been upgraded from 1.10 to 1.13.
5076a392
FC
1874
1875C<overload::Method> can now handle subroutines that are themselves blessed
1876into overloaded classes [perl #71998].
1877
40bd7639 1878The documentation has greatly improved. See L</Documentation> below.
5076a392
FC
1879
1880=item *
1881
d15cad80 1882L<Params::Check> has been upgraded from version 0.26 to 0.28.
f84c796e
FR
1883
1884=item *
1885
d15cad80 1886The L<parent> pragma has been upgraded from version 0.223 to 0.225.
550ee92b
FR
1887
1888=item *
1889
d15cad80 1890L<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
5076a392 1891
1984204c 1892The latest Parse::CPAN::Meta can now read YAML and JSON files using
5076a392
FC
1893L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
1894
1895=item *
1896
d15cad80 1897L<PerlIO::encoding> has been upgraded from version 0.12 to 0.14.
e981cf86
FR
1898
1899=item *
1900
d15cad80 1901L<PerlIO::scalar> has been upgraded from 0.07 to 0.11.
5076a392 1902
d15cad80 1903A read() after a seek() beyond the end of the string no longer thinks it
5076a392
FC
1904has data to read [perl #78716].
1905
1906=item *
1907
d15cad80 1908L<PerlIO::via> has been upgraded from version 0.09 to 0.11.
776f733b
FR
1909
1910=item *
1911
d15cad80 1912L<Pod::Html> has been upgraded from version 1.09 to 1.11.
ae9456cc
FR
1913
1914=item *
1915
d15cad80 1916L<Pod::LaTeX> has been upgraded from version 0.58 to 0.59.
be3c8498
FR
1917
1918=item *
1919
d15cad80 1920L<Pod::Perldoc> has been upgraded from version 3.15_02 to 3.15_03.
fd8a2e89
FR
1921
1922=item *
1923
d15cad80 1924L<Pod::Simple> has been upgraded from version 3.13 to 3.16.
5bcb6583
FR
1925
1926=item *
1927
d15cad80 1928L<POSIX> has been upgraded from 1.19 to 1.24.
5076a392
FC
1929
1930It now includes constants for POSIX signal constants.
1931
1932=item *
1933
d15cad80 1934The L<re> pragma has been upgraded from version 0.11 to 0.18.
5076a392 1935
c7b60aed 1936The C<use re '/flags'> subpragma is new.
5076a392 1937
d15cad80 1938The regmust() function used to crash when called on a regular expression
1984204c 1939belonging to a pluggable engine. Now it croaks instead.
5076a392 1940
d15cad80 1941regmust() no longer leaks memory.
5076a392
FC
1942
1943=item *
1944
d15cad80 1945L<Safe> has been upgraded from version 2.25 to 2.29.
5076a392 1946
d15cad80
TC
1947Coderefs returned by reval() and rdo() are now wrapped via
1948wrap_code_refs() (5.12.1).
cdc10f43 1949
5076a392
FC
1950This fixes a possible infinite loop when looking for coderefs.
1951
d15cad80 1952It adds several C<version::vxs::*> routines to the default share.
5076a392
FC
1953
1954=item *
1955
d15cad80 1956L<SDBM_File> has been upgraded from version 1.06 to 1.09.
2c19fa42
FR
1957
1958=item *
1959
d15cad80 1960L<SelfLoader> has been upgraded from 1.17 to 1.18.
5076a392
FC
1961
1962It now works in taint mode [perl #72062].
1963
1964=item *
1965
d15cad80 1966The L<sigtrap> pragma has been upgraded from version 1.04 to 1.05.
5076a392
FC
1967
1968It no longer tries to modify read-only arguments when generating a
1969backtrace [perl #72340].
1970
1971=item *
1972
d15cad80 1973L<Socket> has been upgraded from version 1.87 to 1.94.
5076a392 1974
d15cad80 1975See L</Improved IPv6 support> above.
5076a392
FC
1976
1977=item *
1978
d15cad80 1979L<Storable> has been upgraded from version 2.22 to 2.27.
5076a392
FC
1980
1981Includes performance improvement for overloaded classes.
1982
5076a392 1983This adds support for serialising code references that contain UTF-8 strings
d15cad80 1984correctly. The L<Storable> minor version
1984204c 1985number changed as a result, meaning that
d15cad80 1986L<Storable> users who set C<$Storable::accept_future_minor> to a C<FALSE> value
5076a392
FC
1987will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details).
1988
1989Freezing no longer gets confused if the Perl stack gets reallocated
1990during freezing [perl #80074].
1991
1992=item *
1993
d15cad80 1994L<Sys::Hostname> has been upgraded from version 1.11 to 1.16.
648c3d7d
FR
1995
1996=item *
1997
d15cad80 1998L<Term::ANSIColor> has been upgraded from version 2.02 to 3.00.
90c6e78f
FR
1999
2000=item *
2001
d15cad80 2002L<Term::UI> has been upgraded from version 0.20 to 0.26.
d9f2f059
FR
2003
2004=item *
2005
d15cad80 2006L<Test::Harness> has been upgraded from version 3.17 to 3.23.
80ebb519
FR
2007
2008=item *
2009
d15cad80 2010L<Test::Simple> has been upgraded from version 0.94 to 0.98.
5076a392
FC
2011
2012Among many other things, subtests without a C<plan> or C<no_plan> now have an
d15cad80 2013implicit done_testing() added to them.
5076a392
FC
2014
2015=item *
2016
d15cad80 2017L<Thread::Semaphore> has been upgraded from version 2.09 to 2.12.
5076a392 2018
1984204c
FC
2019It provides two new methods that give more control over the decrementing of
2020semaphores: C<down_nb> and C<down_force>.
5076a392
FC
2021
2022=item *
2023
d15cad80 2024L<Thread::Queue> has been upgraded from version 2.11 to 2.12.
f0d895e1
FR
2025
2026=item *
2027
d15cad80 2028The L<threads> pragma has been upgraded from version 1.75 to 1.83.
1a6b954e
FR
2029
2030=item *
2031
8cc10af2 2032The L<threads::shared> pragma has been upgraded from version 1.32 to 1.37.
55816daa
FR
2033
2034=item *
2035
d15cad80 2036L<Tie::Hash> has been upgraded from version 1.03 to 1.04.
5076a392 2037
d15cad80 2038Calling C<< Tie::Hash->TIEHASH() >> used to loop forever. Now it C<croak>s.
5076a392
FC
2039
2040=item *
2041
d15cad80 2042L<Tie::Hash::NamedCapture> has been upgraded from version 0.06 to 0.08.
f2adc546
FR
2043
2044=item *
2045
d15cad80 2046L<Tie::RefHash> has been upgraded from version 1.38 to 1.39.
ed68b07e
FR
2047
2048=item *
2049
d15cad80 2050L<Time::HiRes> has been upgraded from version 1.9719 to 1.9721_01.
bb3c221a
FR
2051
2052=item *
2053
d15cad80 2054L<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
97fa568b
FR
2055
2056=item *
2057
d15cad80 2058L<Time::Piece> has been upgraded from version 1.15_01 to 1.20_01.
a83cb732
FR
2059
2060=item *
2061
d15cad80 2062L<Unicode::Collate> has been upgraded from version 0.52_01 to 0.73.
5076a392 2063
d15cad80 2064L<Unicode::Collate> has been updated to use Unicode 6.0.0.
5076a392 2065
d15cad80 2066L<Unicode::Collate::Locale> now supports a plethora of new locales: I<ar, be,
1984204c 2067bg, de__phonebook, hu, hy, kk, mk, nso, om, tn, vi, hr, ig, ja, ko, ru, sq,
d15cad80 2068se, sr, to, uk, zh, zh__big5han, zh__gb2312han, zh__pinyin>, and I<zh__stroke>.
5076a392
FC
2069
2070The following modules have been added:
2071
d15cad80 2072L<Unicode::Collate::CJK::Big5> for C<zh__big5han> which makes
5076a392
FC
2073tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering.
2074
d15cad80 2075L<Unicode::Collate::CJK::GB2312> for C<zh__gb2312han> which makes
5076a392
FC
2076tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering.
2077
d15cad80 2078L<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji
5076a392
FC
2079(CJK Unified Ideographs) in the JIS X 0208 order.
2080
d15cad80 2081L<Unicode::Collate::CJK::Korean> which makes tailoring of CJK Unified Ideographs
5076a392
FC
2082in the order of CLDR's Korean ordering.
2083
d15cad80 2084L<Unicode::Collate::CJK::Pinyin> for C<zh__pinyin> which makes
5076a392
FC
2085tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering.
2086
d15cad80 2087L<Unicode::Collate::CJK::Stroke> for C<zh__stroke> which makes
5076a392
FC
2088tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering.
2089
d15cad80 2090This also sees the switch from using the pure-Perl version of this
5076a392
FC
2091module to the XS version.
2092
2093=item *
2094
d15cad80 2095L<Unicode::Normalize> has been upgraded from version 1.03 to 1.10.
ec52b54b
FR
2096
2097=item *
2098
d15cad80 2099L<Unicode::UCD> has been upgraded from version 0.27 to 0.32.
5076a392 2100
d15cad80 2101A new function, Unicode::UCD::num(), has been added. This function
1984204c
FC
2102returns the numeric value of the string passed it or C<undef> if the string
2103in its entirety has no "safe" numeric value. (For more detail, and for the
2104definition of "safe", see L<Unicode::UCD/num>.)
5076a392 2105
66b4c19b 2106This upgrade also includes several bug fixes:
5076a392
FC
2107
2108=over 4
2109
2110=item charinfo()
2111
2112=over 4
2113
2114=item *
2115
d15cad80
TC
2116It is now updated to Unicode Version 6.0.0 with I<Corrigendum #8>,
2117excepting that, just as with Perl 5.14, the code point at U+1F514 has no name.
5076a392
FC
2118
2119=item *
2120
d15cad80 2121Hangul syllable code points have the correct names, and their
5076a392
FC
2122decompositions are always output without requiring L<Lingua::KO::Hangul::Util>
2123to be installed.
2124
2125=item *
2126
d15cad80 2127CJK (Chinese-Japanese-Korean) code points U+2A700 to U+2B734
54c7bb16 2128and U+2B740 to U+2B81D are now properly handled.
5076a392
FC
2129
2130=item *
2131
d15cad80 2132Numeric values are now output for those CJK code points that have them.
5076a392
FC
2133
2134=item *
2135
d15cad80 2136Names output for code points with multiple aliases are now the
5076a392
FC
2137corrected ones.
2138
2139=back
2140
2141=item charscript()
2142
2143This now correctly returns "Unknown" instead of C<undef> for the script
2144of a code point that hasn't been assigned another one.
2145
2146=item charblock()
2147
2148This now correctly returns "No_Block" instead of C<undef> for the block
2149of a code point that hasn't been assigned to another one.
2150
2151=back
2152
5076a392
FC
2153=item *
2154
d15cad80 2155The L<version> pragma has been upgraded from 0.82 to 0.88.
5076a392 2156
d9ec32f9 2157Because of a bug, now fixed, the is_strict() and is_lax() functions did not
cdc10f43 2158work when exported (5.12.1).
5076a392
FC
2159
2160=item *
2161
d15cad80 2162The L<warnings> pragma has been upgraded from version 1.09 to 1.12.
5076a392
FC
2163
2164Calling C<use warnings> without arguments is now significantly more efficient.
2165
4f978a3b
FR
2166=item *
2167
d15cad80 2168The L<warnings::register> pragma has been upgraded from version 1.01 to 1.02.
4f978a3b 2169
5076a392 2170It is now possible to register warning categories other than the names of
d15cad80 2171packages using L<warnings::register>. See L<perllexwarn(1)> for more information.
5076a392
FC
2172
2173=item *
2174
d15cad80 2175L<XSLoader> has been upgraded from version 0.10 to 0.13.
62e270c2
FR
2176
2177=item *
2178
d15cad80 2179L<VMS::DCLsym> has been upgraded from version 1.03 to 1.05.
5076a392
FC
2180
2181Two bugs have been fixed [perl #84086]:
2182
2183The symbol table name was lost when tying a hash, due to a thinko in
40bd7639 2184C<TIEHASH>. The result was that all tied hashes interacted with the
5076a392
FC
2185local symbol table.
2186
2187Unless a symbol table name had been explicitly specified in the call
d15cad80 2188to the constructor, querying the special key C<:LOCAL> failed to
5076a392
FC
2189identify objects connected to the local symbol table.
2190
2191=item *
2192
d15cad80 2193The L<Win32> module has been upgraded from version 0.39 to 0.44.
5076a392 2194
f8992784 2195This release has several new functions: Win32::GetSystemMetrics(),
d15cad80 2196Win32::GetProductInfo(), Win32::GetOSDisplayName().
5076a392 2197
d15cad80 2198The names returned by Win32::GetOSName() and Win32::GetOSDisplayName()
1984204c 2199have been corrected.
5076a392 2200
3bbe5383
FR
2201=item *
2202
d15cad80 2203L<XS::Typemap> has been upgraded from version 0.03 to 0.05.
3bbe5383 2204
5076a392
FC
2205=back
2206
5076a392
FC
2207=head2 Removed Modules and Pragmata
2208
1c7f7822
JV
2209As promised in Perl 5.12.0's release notes, the following modules have
2210been removed from the core distribution, and if needed should be installed
2211from CPAN instead.
5076a392
FC
2212
2213=over
2214
4f978a3b
FR
2215=item *
2216
d15cad80 2217L<Class::ISA> has been removed from the Perl core. Prior version was 0.36.
5076a392 2218
4f978a3b
FR
2219=item *
2220
d15cad80 2221L<Pod::Plainer> has been removed from the Perl core. Prior version was 1.02.
4f978a3b
FR
2222
2223=item *
5076a392 2224
d15cad80 2225L<Switch> has been removed from the Perl core. Prior version was 2.16.
5076a392
FC
2226
2227=back
2228
d15cad80
TC
2229The removal of L<Shell> has been deferred until after 5.14, as the
2230implementation of L<Shell> shipped with 5.12.0 did not correctly issue the
5076a392
FC
2231warning that it was to be removed from core.
2232
2233=head1 Documentation
2234
5076a392
FC
2235=head2 New Documentation
2236
41e29def 2237=head3 L<perlgpl>
5076a392
FC
2238
2239L<perlgpl> has been updated to contain GPL version 1, as is included in the
d15cad80 2240F<README> distributed with Perl (5.12.1).
5076a392 2241
41e29def 2242=head3 Perl 5.12.x delta files
5076a392 2243
41e29def
FC
2244The perldelta files for Perl 5.12.1 to 5.12.3 have been added from the
2245maintenance branch: L<perl5121delta>, L<perl5122delta>, L<perl5123delta>.
5076a392
FC
2246
2247=head3 L<perlpodstyle>
2248
2249New style guide for POD documentation,
d15cad80 2250split mostly from the NOTES section of the L<pod2man(1)> manpage.
5076a392 2251
41e29def
FC
2252=head3 L<perlsource>, L<perlinterp>, L<perlhacktut>, and L<perlhacktips>
2253
cc13eef1 2254See L</perlhack and perlrepository revamp>, below.
5076a392
FC
2255
2256=head2 Changes to Existing Documentation
2257
41e29def 2258=head3 L<perlmodlib> is now complete
4ed2cea4 2259
66b4c19b
TC
2260The L<perlmodlib> manpage that came with Perl 5.12.0 was missing several
2261modules due to a bug in the script that generates the list. This has been
cdc10f43 2262fixed [perl #74332] (5.12.1).
4ed2cea4 2263
1c7f7822 2264=head3 Replace incorrect tr/// table in L<perlebcdic>
5076a392 2265
d15cad80 2266L<perlebcdic> contains a helpful table to use in C<tr///> to convert
1c7f7822
JV
2267between EBCDIC and Latin1/ASCII. The table was the inverse of the one
2268it describes, though the code that used the table worked correctly for
2269the specific example given.
5076a392 2270
d15cad80 2271The table has been corrected and the sample code changed to correspond.
5076a392 2272
d15cad80
TC
2273The table has also been changed to hex from octal, and the recipes in the
2274pod have been altered to print out leading zeros to make all values
1c7f7822 2275the same length.
5076a392 2276
41e29def 2277=head3 Tricks for user-defined casing
5076a392 2278
41e29def 2279L<perlunicode> now contains an explanation of how to override, mangle
d15cad80 2280and otherwise tweak the way Perl handles upper-, lower- and other-case
41e29def 2281conversions on Unicode data, and how to provide scoped changes to alter
d15cad80 2282one's own code's behaviour without stomping on anybody else's.
5076a392 2283
1c7f7822 2284=head3 INSTALL explicitly states that Perl requires a C89 compiler
5076a392 2285
d15cad80 2286This was already true, but it's now Officially Stated For The Record
d430b8e7 2287(5.12.2).
5076a392 2288
41e29def 2289=head3 Explanation of C<\xI<HH>> and C<\oI<OOO>> escapes
5076a392 2290
41e29def
FC
2291L<perlop> has been updated with more detailed explanation of these two
2292character escapes.
5076a392 2293
d15cad80 2294=head3 B<-0I<NNN>> switch
5076a392 2295
d15cad80 2296In L<perlrun>, the behaviour of the B<-0NNN> switch for B<-0400> or higher
d430b8e7 2297has been clarified (5.12.2).
5076a392 2298
cdc10f43
FC
2299=head3 Maintenance policy
2300
2301L<perlpolicy> now contains the policy on what patches are acceptable for
2302maintenance branches (5.12.1).
2303
41e29def 2304=head3 Deprecation policy
5076a392 2305
41e29def 2306L<perlpolicy> now contains the policy on compatibility and deprecation
d430b8e7 2307along with definitions of terms like "deprecation" (5.12.2).
5076a392 2308
41e29def 2309=head3 New descriptions in L<perldiag>
5076a392
FC
2310
2311The following existing diagnostics are now documented:
2312
2313=over 4
2314
2315=item *
2316
2317L<Ambiguous use of %c resolved as operator %c|perldiag/"Ambiguous use of %c resolved as operator %c">
2318
2319=item *
2320
2321L<Ambiguous use of %c{%s} resolved to %c%s|perldiag/"Ambiguous use of %c{%s} resolved to %c%s">
2322
27747dc0
FC
2323=item *
2324
2325L<Ambiguous use of %c{%s[...]} resolved to %c%s[...]|perldiag/"Ambiguous use of %c{%s[...]} resolved to %c%s[...]">
2326
2327=item *
2328
2329L<Ambiguous use of %c{%s{...}} resolved to %c%s{...}|perldiag/"Ambiguous use of %c{%s{...}} resolved to %c%s{...}">
5076a392
FC
2330
2331=item *
2332
2333L<Ambiguous use of -%s resolved as -&%s()|perldiag/"Ambiguous use of -%s resolved as -&%s()">
2334
2335=item *
2336
2337L<Invalid strict version format (%s)|perldiag/"Invalid strict version format (%s)">
2338
2339=item *
2340
2341L<Invalid version format (%s)|perldiag/"Invalid version format (%s)">
2342
2343=item *
2344
2345L<Invalid version object|perldiag/"Invalid version object">
2346
2347=back
2348
5076a392
FC
2349=head3 L<perlbook>
2350
41e29def 2351L<perlbook> has been expanded to cover many more popular books.
5076a392 2352
41e29def 2353=head3 C<SvTRUE> macro
5076a392 2354
41e29def
FC
2355The documentation for the C<SvTRUE> macro in
2356L<perlapi> was simply wrong in stating that
a60ea503 2357get-magic is not processed. It has been corrected.
5076a392 2358
d2c16ee1
Z
2359=head3 op manipulation functions
2360
2361Several API functions that process optrees have been newly documented.
2362
41e29def 2363=head3 L<perlvar> revamp
5076a392 2364
41e29def 2365L<perlvar> reorders the variables and groups them by topic. Each variable
5076a392 2366introduced after Perl 5.000 notes the first version in which it is
41e29def 2367available. L<perlvar> also has a new section for deprecated variables to
5076a392
FC
2368note when they were removed.
2369
41e29def 2370=head3 Array and hash slices in scalar context
5076a392 2371
41e29def 2372These are now documented in L<perldata>.
5076a392 2373
41e29def 2374=head3 C<use locale> and formats
5076a392
FC
2375
2376L<perlform> and L<perllocale> have been corrected to state that
2377C<use locale> affects formats.
2378
5076a392
FC
2379=head3 L<overload>
2380
a60ea503 2381L<overload>'s documentation has practically undergone a rewrite. It
5076a392
FC
2382is now much more straightforward and clear.
2383
cc13eef1 2384=head3 perlhack and perlrepository revamp
5076a392 2385
5076a392 2386The L<perlhack> document is now much shorter, and focuses on the Perl 5
1c7f7822
JV
2387development process and submitting patches to Perl. The technical content
2388has been moved to several new documents, L<perlsource>, L<perlinterp>,
d15cad80
TC
2389L<perlhacktut>, and L<perlhacktips>. This technical content has
2390been only lightly edited.
5076a392 2391
1c7f7822
JV
2392The perlrepository document has been renamed to L<perlgit>. This new
2393document is just a how-to on using git with the Perl source code.
2394Any other content that used to be in perlrepository has been moved
2395to L<perlhack>.
5076a392 2396
41e29def 2397=head3 Time::Piece examples
5076a392
FC
2398
2399Examples in L<perlfaq4> have been updated to show the use of
41e29def 2400L<Time::Piece>.
5076a392
FC
2401
2402=head1 Diagnostics
2403
2404The following additions or changes have been made to diagnostic output,
2405including warnings and fatal error messages. For the complete list of
2406diagnostic messages, see L<perldiag>.
2407
2408=head2 New Diagnostics
2409
a593b319
FC
2410=head3 New Errors
2411
5076a392
FC
2412=over
2413
a593b319 2414=item Closure prototype called
5076a392 2415
a593b319
FC
2416This error occurs when a subroutine reference passed to an attribute
2417handler is called, if the subroutine is a closure [perl #68560].
5076a392 2418
a593b319 2419=item Insecure user-defined property %s
5076a392 2420
a593b319
FC
2421Perl detected tainted data when trying to compile a regular
2422expression that contains a call to a user-defined character property
d15cad80 2423function, meaning C<\p{IsFoo}> or C<\p{InFoo}>.
a593b319 2424See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
5076a392 2425
a593b319 2426=item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries
5076a392 2427
a593b319
FC
2428This new error is triggered if a destructor called on an object in a
2429typeglob that is being freed creates a new typeglob entry containing an
d15cad80 2430object with a destructor that creates a new entry containing an object etc.
5076a392 2431
a593b319 2432=item Parsing code internal error (%s)
5076a392 2433
a593b319
FC
2434This new fatal error is produced when parsing
2435code supplied by an extension violates the
2436parser's API in a detectable way.
5076a392 2437
a593b319 2438=item refcnt: fd %d%s
5076a392 2439
a593b319
FC
2440This new error only occurs if a internal consistency check fails when a
2441pipe is about to be closed.
5076a392 2442
a593b319 2443=item Regexp modifier "/%c" may not appear twice
5076a392 2444
a593b319
FC
2445The regular expression pattern has one of the
2446mutually exclusive modifiers repeated.
5076a392 2447
a593b319 2448=item Regexp modifiers "/%c" and "/%c" are mutually exclusive
5076a392 2449
a593b319
FC
2450The regular expression pattern has more than one of the mutually
2451exclusive modifiers.
5076a392 2452
a593b319 2453=item Using !~ with %s doesn't make sense
5076a392 2454
a593b319 2455This error occurs when C<!~> is used with C<s///r> or C<y///r>.
5076a392 2456
a593b319 2457=back
5076a392 2458
a593b319 2459=head3 New Warnings
5076a392 2460
a593b319 2461=over
5076a392 2462
a593b319 2463=item "\b{" is deprecated; use "\b\{" instead
5076a392 2464
a593b319 2465=item "\B{" is deprecated; use "\B\{" instead
5076a392 2466
a593b319 2467Use of an unescaped "{" immediately following a C<\b> or C<\B> is now
66b4c19b 2468deprecated in order to reserve its use for Perl itself in a future release.
5076a392 2469
a593b319 2470=item Operation "%s" returns its argument for ...
5076a392 2471
a593b319 2472Performing an operation requiring Unicode semantics (such as case-folding)
a60ea503
FC
2473on a Unicode surrogate or a non-Unicode character now triggers this
2474warning.
5076a392 2475
a593b319
FC
2476=item Use of qw(...) as parentheses is deprecated
2477
2478See L</"Use of qw(...) as parentheses">, above, for details.
5076a392
FC
2479
2480=back
2481
2482=head2 Changes to Existing Diagnostics
2483
2484=over 4
2485
2486=item *
2487
4ed2cea4 2488The "Variable $foo is not imported" warning that precedes a
66b4c19b 2489C<strict 'vars'> error has now been assigned the "misc" category, so that
4ed2cea4
FC
2490C<no warnings> will suppress it [perl #73712].
2491
2492=item *
2493
d15cad80
TC
2494warn() and die() now produce "Wide character" warnings when fed a
2495character outside the byte range if C<STDERR> is a byte-sized handle.
5076a392
FC
2496
2497=item *
2498
d15cad80 2499The "Layer does not match this perl" error message has been replaced with
a593b319 2500these more helpful messages [perl #73754]:
5076a392
FC
2501
2502=over 4
2503
2504=item *
2505
2506PerlIO layer function table size (%d) does not match size expected by this
2507perl (%d)
2508
2509=item *
2510
2511PerlIO layer instance size (%d) does not match size expected by this perl
2512(%d)
2513
2514=back
2515
5076a392
FC
2516=item *
2517
2518The "Found = in conditional" warning that is emitted when a constant is
2519assigned to a variable in a condition is now withheld if the constant is
2520actually a subroutine or one generated by C<use constant>, since the value
2521of the constant may not be known at the time the program is written
2522[perl #77762].
2523
2524=item *
2525
d15cad80
TC
2526Previously, if none of the gethostbyaddr(), gethostbyname() and
2527gethostent() functions were implemented on a given platform, they would
2528all die with the message "Unsupported socket function 'gethostent' called",
2529with analogous messages for getnet*() and getserv*(). This has been
5076a392
FC
2530corrected.
2531
2532=item *
2533
a593b319 2534The warning message about unrecognized regular expression escapes passed
d15cad80
TC
2535through has been changed to include any literal "{" following the
2536two-character escape. For example, "\q{" is now emitted instead of "\q".
5076a392
FC
2537
2538=back
2539
2540=head1 Utility Changes
2541
f8992784 2542=head3 L<perlbug(1)>
5076a392
FC
2543
2544=over 4
2545
2546=item *
2547
0b88cc74
FC
2548L<perlbug> now looks in the EMAIL environment variable for a return address
2549if the REPLY-TO and REPLYTO variables are empty.
5076a392
FC
2550
2551=item *
2552
d15cad80
TC
2553L<perlbug> did not previously generate a "From:" header, potentially
2554resulting in dropped mail; it now includes that header.
5076a392
FC
2555
2556=item *
2557
d15cad80 2558The user's address is now used as the Return-Path.
4ed2cea4 2559
d15cad80 2560Many systems these days don't have a valid Internet domain name, and
0b88cc74
FC
2561perlbug@perl.org does not accept email with a return-path that does
2562not resolve. So the user's address is now passed to sendmail so it's
2563less likely to get stuck in a mail queue somewhere [perl #82996].
5076a392 2564
2c389f6c
FC
2565=item *
2566
d430b8e7
FC
2567L<perlbug> now always gives the reporter a chance to change the email
2568address it guesses for them (5.12.2).
2569
2570=item *
2571
d15cad80
TC
2572L<perlbug> should no longer warn about uninitialized values when using the B<-d>
2573and B<-v> options (5.12.2).
2c389f6c 2574
5076a392
FC
2575=back
2576
0b88cc74 2577=head3 L<perl5db.pl>
5076a392 2578
0b88cc74 2579=over
5076a392
FC
2580
2581=item *
2582
d15cad80
TC
2583The remote terminal works after forking and spawns new sessions, one
2584per forked process.
5076a392
FC
2585
2586=back
2587
0b88cc74 2588=head3 L<ptargrep>
5076a392
FC
2589
2590=over 4
2591
2592=item *
2593
0b88cc74
FC
2594L<ptargrep> is a new utility to apply pattern matching to the contents of
2595files in a tar archive. It comes with C<Archive::Tar>.
5076a392
FC
2596
2597=back
2598
2599=head1 Configuration and Compilation
2600
61752d82
FC
2601See also L</"Naming fixes in Policy_sh.SH may invalidate Policy.sh">,
2602above.
2603
5076a392
FC
2604=over 4
2605
2606=item *
2607
1c7f7822 2608CCINCDIR and CCLIBDIR for the mingw64 cross-compiler are now correctly
d15cad80
TC
2609under F<$(CCHOME)\mingw\include> and F<\lib> rather than immediately below
2610F<$(CCHOME)>.
5076a392 2611
d15cad80
TC
2612This means the "incpath", "libpth", "ldflags", "lddlflags" and
2613"ldflags_nolargefiles" values in F<Config.pm> and F<Config_heavy.pl> are now
87595b22 2614set correctly.
5076a392
FC
2615
2616=item *
2617
66b4c19b 2618C<make test.valgrind> has been adjusted to account for F<cpan/dist/ext>
87595b22 2619separation.
5076a392
FC
2620
2621=item *
2622
d15cad80 2623On compilers that support it, B<-Wwrite-strings> is now added to cflags by
5076a392
FC
2624default.
2625
2626=item *
2627
d15cad80 2628The L<Encode> module can now (once again) be included in a static Perl
5076a392
FC
2629build. The special-case handling for this situation got broken in Perl
26305.11.0, and has now been repaired.
2631
1e463951
FC
2632=item *
2633
2634The previous default size of a PerlIO buffer (4096 bytes) has been increased
2635to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling
66b4c19b
TC
2636this decade-old default increases read and write performance by around
263725% to 50% when using the default layers of perlio on top of unix. To choose
1e463951
FC
2638a non-default size, such as to get back the old value or to obtain an even
2639larger value, configure with:
2640
2641 ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
2642
2643where N is the desired size in bytes; it should probably be a multiple of
2644your page size.
2645
d430b8e7
FC
2646=item *
2647
2648An "incompatible operand types" error in ternary expressions when building
2649with C<clang> has been fixed (5.12.2).
2650
2651=item *
2652
66b4c19b 2653Perl now skips setuid L<File::Copy> tests on partitions it detects mounted
d430b8e7
FC
2654as C<nosuid> (5.12.2).
2655
5076a392
FC
2656=back
2657
5076a392
FC
2658=head1 Platform Support
2659
5076a392
FC
2660=head2 New Platforms
2661
5076a392
FC
2662=over 4
2663
2664=item AIX
2665
cdc10f43 2666Perl now builds on AIX 4.2 (5.12.1).
5076a392
FC
2667
2668=back
2669
2670=head2 Discontinued Platforms
2671
2672=over 4
2673
5076a392
FC
2674=item Apollo DomainOS
2675
1c7f7822
JV
2676The last vestiges of support for this platform have been excised from
2677the Perl distribution. It was officially discontinued in version 5.12.0.
2678It had not worked for years before that.
5076a392
FC
2679
2680=item MacOS Classic
2681
2682The last vestiges of support for this platform have been excised from the
a60ea503 2683Perl distribution. It was officially discontinued in an earlier version.
5076a392
FC
2684
2685=back
2686
2687=head2 Platform-Specific Notes
2688
d430b8e7
FC
2689=head3 AIX
2690
2691=over
2692
2693=item *
2694
2695F<README.aix> has been updated with information about the XL C/C++ V11 compiler
2696suite (5.12.2).
2697
2698=back
2699
2700=head3 ARM
2701
2702=over
2703
2704=item *
2705
2706The C<d_u32align> configuration probe on ARM has been fixed (5.12.2).
2707
2708=back
2709
554003a2 2710=head3 Cygwin
5076a392
FC
2711
2712=over 4
2713
2714=item *
2715
d15cad80 2716L<MakeMaker> has been updated to build manpages on cygwin.
5076a392
FC
2717
2718=item *
2719
554003a2
FC
2720Improved rebase behaviour
2721
d15cad80
TC
2722If a DLL is updated on cygwin the old imagebase address is reused.
2723This solves most rebase errors, especially when updating on core DLL's.
2724See L<http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README>
2725for more information.
5076a392
FC
2726
2727=item *
2728
d15cad80 2729Support for the standard cygwin dll prefix (needed for FFIs)
5076a392
FC
2730
2731=item *
2732
554003a2 2733Updated build hints file
5076a392
FC
2734
2735=back
2736
cdc10f43
FC
2737=head3 FreeBSD 7
2738
2739=over
2740
2741=item *
2742
40bd7639 2743FreeBSD 7 no longer contains F</usr/bin/objformat>. At build time,
cdc10f43
FC
2744Perl now skips the F<objformat> check for versions 7 and higher and
2745assumes ELF (5.12.1).
2746
2747=back
2748
2749=head3 HP-UX
2750
2751=over
2752
2753=item *
2754
d15cad80 2755Perl now allows B<-Duse64bitint> without promoting to C<use64bitall> on HP-UX
cdc10f43
FC
2756(5.12.1).
2757
2758=back
2759
554003a2 2760=head3 IRIX
5076a392 2761
a60ea503
FC
2762=over
2763
2764=item *
2765
5076a392
FC
2766Conversion of strings to floating-point numbers is now more accurate on
2767IRIX systems [perl #32380].
2768
a60ea503
FC
2769=back
2770
554003a2 2771=head3 Mac OS X
5076a392 2772
a60ea503
FC
2773=over
2774
2775=item *
2776
5076a392 2777Early versions of Mac OS X (Darwin) had buggy implementations of the
d15cad80 2778setregid(), setreuid(), setrgid(,) and setruid() functions, so Perl
5076a392
FC
2779would pretend they did not exist.
2780
2781These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and
2782higher, as they have been fixed [perl #72990].
2783
a60ea503
FC
2784=back
2785
554003a2 2786=head3 MirBSD
5076a392 2787
a60ea503
FC
2788=over
2789
2790=item *
2791
d15cad80 2792Previously if you built Perl with a shared F<libperl.so> on MirBSD (the
554003a2 2793default config), it would work up to the installation; however, once
d15cad80 2794installed, it would be unable to find F<libperl>. Path handling is now
554003a2 2795treated as in the other BSD dialects.
5076a392 2796
a60ea503
FC
2797=back
2798
554003a2 2799=head3 NetBSD
5076a392 2800
a60ea503
FC
2801=over
2802
2803=item *
2804
d15cad80 2805The NetBSD hints file has been changed to make the system malloc the
554003a2 2806default.
5076a392 2807
a60ea503
FC
2808=back
2809
1c7f7822 2810=head3 OpenBSD
5076a392 2811
a60ea503
FC
2812=over
2813
2814=item *
2815
d15cad80
TC
2816OpenBSD E<gt> 3.7 has a new malloc implementation which is I<mmap>-based,
2817and as such can release memory back to the OS; however, Perl's use of
2818this malloc causes a substantial slowdown, so we now default to using
2819Perl's malloc instead [perl #75742].
5076a392 2820
a60ea503
FC
2821=back
2822
554003a2 2823=head3 OpenVOS
5076a392 2824
a60ea503
FC
2825=over
2826
2827=item *
2828
d15cad80 2829Perl now builds again with OpenVOS (formerly known as Stratus VOS)
5a553547 2830[perl #78132] (5.12.3).
5076a392 2831
a60ea503
FC
2832=back
2833
554003a2 2834=head3 Solaris
5076a392 2835
a60ea503
FC
2836=over
2837
2838=item *
2839
2840DTrace is now supported on Solaris. There used to be build failures, but
5a553547 2841these have been fixed [perl #73630] (5.12.3).
5076a392 2842
a60ea503
FC
2843=back
2844
554003a2 2845=head3 VMS
5076a392
FC
2846
2847=over
2848
2849=item *
2850
8b6a1dd5
CB
2851Extension building on older (pre 7.3-2) VMS systems was broken because
2852configure.com hit the DCL symbol length limit of 1K. We now work within
2853this limit when assembling the list of extensions in the core build (5.12.1).
cdc10f43
FC
2854
2855=item *
2856
8b6a1dd5 2857We fixed configuring and building Perl with B<-Uuseperlio> (5.12.1).
cdc10f43
FC
2858
2859=item *
2860
554003a2 2861C<PerlIOUnix_open> now honours the default permissions on VMS.
5076a392 2862
8b6a1dd5 2863When C<perlio> became the default and C<unix> became the default bottom layer,
554003a2 2864the most common path for creating files from Perl became C<PerlIOUnix_open>,
8b6a1dd5
CB
2865which has always explicitly used C<0666> as the permission mask. This prevents
2866inheriting permissions from RMS defaults and ACLs, so to avoid that problem,
d9ec32f9 2867we now pass C<0777> to open(). In theVMS CRTL, C<0777> has a special
8b6a1dd5
CB
2868meaning over and above intersecting with the current umask; specifically, it
2869allows Unix syscalls to preserve native default permissions (5.12.3).
5076a392
FC
2870
2871=item *
2872
8b6a1dd5
CB
2873The shortening of symbols longer than 31 characters in the core C sources
2874and in extensions is now by default done by the C compiler rather than by
2875xsubpp (which could only do so for generated symbols in XS code). You can
2876reenable xsubpp's symbol shortening by configuring with -Uuseshortenedsymbols,
2877but you'll have some work to do to get the core sources to compile.
5076a392
FC
2878
2879=item *
2880
554003a2 2881Record-oriented files (record format variable or variable with fixed control)
8b6a1dd5 2882opened for write by the C<perlio> layer will now be line-buffered to prevent the
554003a2 2883introduction of spurious line breaks whenever the perlio buffer fills up.
5076a392 2884
d430b8e7
FC
2885=item *
2886
8b6a1dd5 2887F<git_version.h> is now installed on VMS. This was an oversight in v5.12.0 which
d430b8e7
FC
2888caused some extensions to fail to build (5.12.2).
2889
2890=item *
2891
2892Several memory leaks in L<stat()|perlfunc/"stat FILEHANDLE"> have been fixed (5.12.2).
2893
2894=item *
2895
d15cad80 2896A memory leak in Perl_rename() due to a double allocation has been
d430b8e7
FC
2897fixed (5.12.2).
2898
2899=item *
2900
d15cad80
TC
2901A memory leak in vms_fid_to_name() (used by realpath() and
2902realname()> has been fixed (5.12.2).
d430b8e7 2903
5076a392
FC
2904=back
2905
554003a2 2906=head3 Windows
5076a392 2907
5a1f7719
FC
2908See also L</"fork() emulation will not wait for signalled children"> and
2909L</"Perl source code is read in text mode on Windows">, above.
2910
5076a392
FC
2911=over 4
2912
2913=item *
2914
554003a2 2915Fixed build process for SDK2003SP1 compilers.
5076a392 2916
554003a2 2917=item *
5076a392 2918
01b1a9e4
FC
2919Compilation with Visual Studio 2010 is now supported.
2920
2921=item *
2922
d15cad80
TC
2923When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> is now
2924set in C<$Config{ccflags}>. This improves portability when compiling
2925XS extensions using new compilers, but for a Perl compiled with old 32-bit
554003a2 2926compilers.
5076a392
FC
2927
2928=item *
2929
d15cad80 2930C<$Config{gccversion}> is now set correctly when Perl is built using the
554003a2 2931mingw64 compiler from L<http://mingw64.org> [perl #73754].
5076a392 2932
554003a2
FC
2933=item *
2934
d430b8e7
FC
2935When building Perl with the mingw64 x64 cross-compiler C<incpath>,
2936C<libpth>, C<ldflags>, C<lddlflags> and C<ldflags_nolargefiles> values
2937in F<Config.pm> and F<Config_heavy.pl> were not previously being set
2938correctly because, with that compiler, the include and lib directories
2939are not immediately below C<$(CCHOME)> (5.12.2).
2940
2941=item *
2942
554003a2
FC
2943The build process proceeds more smoothly with mingw and dmake when
2944F<C:\MSYS\bin> is in the PATH, due to a C<Cwd> fix.
5076a392
FC
2945
2946=item *
2947
554003a2
FC
2948Support for building with Visual C++ 2010 is now underway, but is not yet
2949complete. See F<README.win32> or L<perlwin32> for more details.
5076a392 2950
554003a2
FC
2951=item *
2952
d15cad80
TC
2953The option to use an externally-supplied crypt(), or to build with no
2954crypt() at all, has been removed. Perl supplies its own crypt()
554003a2
FC
2955implementation for Windows, and the political situation that required
2956this part of the distribution to sometimes be omitted is long gone.
5076a392
FC
2957
2958=back
2959
2960=head1 Internal Changes
2961
1e463951 2962=head2 New APIs
5076a392 2963
1e463951 2964=head3 CLONE_PARAMS structure added to ease correct thread creation
5076a392 2965
1e463951 2966Modules that create threads should now create C<CLONE_PARAMS> structures
d15cad80
TC
2967by calling the new function Perl_clone_params_new(), and free them with
2968Perl_clone_params_del(). This will ensure compatibility with any future
1e463951
FC
2969changes to the internals of the C<CLONE_PARAMS> structure layout, and that
2970it is correctly allocated and initialised.
5076a392 2971
1e463951 2972=head3 New parsing functions
5076a392 2973
d2c16ee1
Z
2974Several functions have been added for parsing Perl statements and
2975expressions. These functions are meant to be used by XS code invoked
2976during Perl parsing, in a recursive-descent manner, to allow modules to
2977augment the standard Perl syntax.
5076a392 2978
1e463951 2979=over
5076a392
FC
2980
2981=item *
2982
d2c16ee1
Z
2983L<parse_stmtseq()|perlapi/parse_stmtseq>
2984parses a sequence of statements, up to closing brace or EOF.
5076a392
FC
2985
2986=item *
2987
d2c16ee1
Z
2988L<parse_fullstmt()|perlapi/parse_fullstmt>
2989parses a complete Perl statement, including optional label.
5076a392
FC
2990
2991=item *
2992
d2c16ee1
Z
2993L<parse_barestmt()|perlapi/parse_barestmt>
2994parses a statement without a label.
5076a392
FC
2995
2996=item *
2997
d2c16ee1
Z
2998L<parse_block()|perlapi/parse_block>
2999parses a code block.
5076a392
FC
3000
3001=item *
3002
d2c16ee1
Z
3003L<parse_label()|perlapi/parse_label>
3004parses a statement label, separate from statements.
5076a392 3005
d2c16ee1 3006=item *
5076a392 3007
1e463951
FC
3008L<C<parse_fullexpr()>|perlapi/parse_fullexpr>,
3009L<C<parse_listexpr()>|perlapi/parse_listexpr>,
3010L<C<parse_termexpr()>|perlapi/parse_termexpr>, and
3011L<C<parse_arithexpr()>|perlapi/parse_arithexpr>
d2c16ee1 3012parse expressions at various precedence levels.
5076a392 3013
d2c16ee1 3014=back
5076a392 3015
1e463951 3016=head3 Hints hash API
5076a392 3017
1e463951
FC
3018A new C API for introspecting the hinthash C<%^H> at runtime has been
3019added. See C<cop_hints_2hv>, C<cop_hints_fetchpvn>, C<cop_hints_fetchpvs>,
3020C<cop_hints_fetchsv>, and C<hv_copy_hints_hv> in L<perlapi> for details.
5076a392 3021
1e463951
FC
3022A new, experimental API has been added for accessing the internal
3023structure that Perl uses for C<%^H>. See the functions beginning with
3024C<cophh_> in L<perlapi>.
5076a392 3025
d15cad80 3026=head3 C interface to caller()
5076a392 3027
1e463951 3028The C<caller_cx> function has been added as an XSUB-writer's equivalent of
d15cad80 3029caller(). See L<perlapi> for details.
5076a392 3030
1e463951 3031=head3 Custom per-subroutine check hooks
5076a392 3032
1e463951
FC
3033XS code in an extension module can now annotate a subroutine (whether
3034implemented in XS or in Perl) so that nominated XS code will be called
3035at compile time (specifically as part of op checking) to change the op
3036tree of that subroutine. The compile-time check function (supplied by
3037the extension module) can implement argument processing that can't be
3038expressed as a prototype, generate customised compile-time warnings,
3039perform constant folding for a pure function, inline a subroutine
3040consisting of sufficiently simple ops, replace the whole call with a
3041custom op, and so on. This was previously all possible by hooking the
3042C<entersub> op checker, but the new mechanism makes it easy to tie the
3043hook to a specific subroutine. See L<perlapi/cv_set_call_checker>.
5076a392 3044
1e463951
FC
3045To help in writing custom check hooks, several subtasks within standard
3046C<entersub> op checking have been separated out and exposed in the API.
5076a392 3047
1e463951 3048=head3 Improved support for custom OPs
5076a392 3049
1e463951
FC
3050Custom ops can now be registered with the new C<custom_op_register> C
3051function and the C<XOP> structure. This will make it easier to add new
3052properties of custom ops in the future. Two new properties have been added
3053already, C<xop_class> and C<xop_peep>.
5076a392 3054
d15cad80 3055C<xop_class> is one of the OA_*OP constants. It allows L<B> and other
1e463951
FC
3056introspection mechanisms to work with custom ops
3057that aren't BASEOPs. C<xop_peep> is a pointer to
3058a function that will be called for ops of this
3059type from C<Perl_rpeep>.
5076a392 3060
1e463951
FC
3061See L<perlguts/Custom Operators> and L<perlapi/Custom Operators> for more
3062detail.
5076a392 3063
1e463951
FC
3064The old C<PL_custom_op_names>/C<PL_custom_op_descs> interface is still
3065supported but discouraged.
5076a392 3066
1e463951 3067=head3 Scope hooks
5076a392 3068
1e463951
FC
3069It is now possible for XS code to hook into Perl's lexical scope
3070mechanism at compile time, using the new C<Perl_blockhook_register>
a60ea503 3071function. See L<perlguts/"Compile-time scope hooks">.
5076a392 3072
1e463951 3073=head3 The recursive part of the peephole optimizer is now hookable
5076a392
FC
3074
3075In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a
3076C<PL_rpeepp> is now available to hook into the optimizer recursing into
3077side-chains of the optree.
3078
1e463951 3079=head3 New non-magical variants of existing functions
5076a392 3080
1e463951 3081The following functions/macros have been added to the API. The C<*_nomg>
d15cad80 3082macros are equivalent to their non-C<_nomg> variants, except that they ignore
27747dc0
FC
3083get-magic. Those ending in C<_flags> allow one to specify whether
3084get-magic is processed.
5076a392 3085
1e463951
FC
3086 sv_2bool_flags
3087 SvTRUE_nomg
3088 sv_2nv_flags
3089 SvNV_nomg
3090 sv_cmp_flags
3091 sv_cmp_locale_flags
3092 sv_eq_flags
3093 sv_collxfrm_flags
5076a392 3094
d15cad80 3095In some of these cases, the non-C<_flags> functions have
5076a392
FC
3096been replaced with wrappers around the new functions.
3097
1e463951 3098=head3 pv/pvs/sv versions of existing functions
5076a392 3099
d15cad80 3100Many functions ending with pvn now have equivalent C<pv/pvs/sv> versions.
5076a392 3101
1e463951 3102=head3 List op-building functions
5076a392 3103
1e463951
FC
3104List op-building functions have been added to the
3105API. See L<op_append_elem|perlapi/op_append_elem>,
3106L<op_append_list|perlapi/op_append_list>, and
3107L<op_prepend_elem|perlapi/op_prepend_elem> in L<perlapi>.
5076a392 3108
1e463951 3109=head3 C<LINKLIST>
5076a392 3110
1e463951
FC
3111The L<LINKLIST|perlapi/LINKLIST> macro, part of op building that
3112constructs the execution-order op chain, has been added to the API.
5076a392 3113
1e463951 3114=head3 Localisation functions
5076a392 3115
1e463951
FC
3116The C<save_freeop>, C<save_op>, C<save_pushi32ptr> and C<save_pushptrptr>
3117functions have been added to the API.
5076a392 3118
1e463951 3119=head3 Stash names
5076a392 3120
1e463951
FC
3121A stash can now have a list of effective names in addition to its usual
3122name. The first effective name can be accessed via the C<HvENAME> macro,
3123which is now the recommended name to use in MRO linearisations (C<HvNAME>
3124being a fallback if there is no C<HvENAME>).
5076a392 3125
1e463951
FC
3126These names are added and deleted via C<hv_ename_add> and
3127C<hv_ename_delete>. These two functions are I<not> part of the API.
5076a392 3128
1e463951 3129=head3 New functions for finding and removing magic
5076a392 3130
1e463951
FC
3131The L<C<mg_findext()>|perlapi/mg_findext> and
3132L<C<sv_unmagicext()>|perlapi/sv_unmagicext>
3133functions have been added to the API.
3134They allow extension authors to find and remove magic attached to
3135scalars based on both the magic type and the magic virtual table, similar to how
d15cad80 3136sv_magicext() attaches magic of a certain type and with a given virtual table
40bd7639 3137to a scalar. This eliminates the need for extensions to walk the list of
1e463951 3138C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
5076a392 3139
1e463951 3140=head3 C<find_rundefsv>
5076a392 3141
1e463951
FC
3142This function returns the SV representing C<$_>, whether it's lexical
3143or dynamic.
5076a392 3144
1e463951 3145=head3 C<Perl_croak_no_modify>
5076a392 3146
d15cad80 3147Perl_croak_no_modify() is short-hand for
1e463951 3148C<Perl_croak("%s", PL_no_modify)>.
5076a392 3149
1e463951 3150=head3 C<PERL_STATIC_INLINE> define
5076a392 3151
1e463951
FC
3152The C<PERL_STATIC_INLINE> define has been added to provide the best-guess
3153incantation to use for static inline functions, if the C compiler supports
3154C99-style static inline. If it doesn't, it'll give a plain C<static>.
5076a392 3155
1e463951
FC
3156C<HAS_STATIC_INLINE> can be used to check if the compiler actually supports
3157inline functions.
5076a392 3158
1e463951 3159=head3 New C<pv_escape> option for hexadecimal escapes
5076a392 3160
1e463951
FC
3161A new option, C<PERL_PV_ESCAPE_NONASCII>, has been added to C<pv_escape> to
3162dump all characters above ASCII in hexadecimal. Before, one could get all
3163characters as hexadecimal or the Latin1 non-ASCII as octal.
5076a392 3164
1e463951 3165=head3 C<lex_start>
5076a392 3166
1e463951 3167C<lex_start> has been added to the API, but is considered experimental.
5076a392 3168
d15cad80 3169=head3 op_scope() and op_lvalue()
5076a392 3170
d15cad80 3171The op_scope() and op_lvalue() functions have been added to the API,
1e463951 3172but are considered experimental.
5076a392 3173
1e463951 3174=head2 C API Changes
5076a392 3175
1e463951 3176=head3 C<PERL_POLLUTE> has been removed
5076a392 3177
1e463951 3178The option to define C<PERL_POLLUTE> to expose older 5.005 symbols for
d15cad80 3179backwards compatibility has been removed. Its use was always discouraged,
1e463951 3180and MakeMaker contains a more specific escape hatch:
5076a392 3181
1e463951 3182 perl Makefile.PL POLLUTE=1
5076a392 3183
1e463951
FC
3184This can be used for modules that have not been upgraded to 5.6 naming
3185conventions (and really should be completely obsolete by now).
5076a392 3186
1e463951 3187=head3 Check API compatibility when loading XS modules
5076a392 3188
d15cad80
TC
3189When Perl's API changes in incompatible ways (which usually happens between
3190major releases), XS modules compiled for previous versions of Perl will no
3191longer work. They need to be recompiled against the new Perl.
5076a392 3192
66b4c19b
TC
3193The C<XS_APIVERSION_BOOTCHECK> macro has been added to ensure that modules
3194are recompiled and to prevent users from accidentally loading modules
3195compiled for old perls into newer perls. That macro, which is called when
3196loading every newly compiled extension, compares the API version of the
3197running perl with the