1PERL5140DELTA(1)       Perl Programmers Reference Guide       PERL5140DELTA(1)
2
3
4

NAME

6       perl5140delta - what is new for perl v5.14.0
7

DESCRIPTION

9       This document describes differences between the 5.12.0 release and the
10       5.14.0 release.
11
12       If you are upgrading from an earlier release such as 5.10.0, first read
13       perl5120delta, which describes differences between 5.10.0 and 5.12.0.
14
15       Some of the bug fixes in this release have been backported to
16       subsequent releases of 5.12.x.  Those are indicated with the 5.12.x
17       version in parentheses.
18

Notice

20       As described in perlpolicy, the release of Perl 5.14.0 marks the
21       official end of support for Perl 5.10.  Users of Perl 5.10 or earlier
22       should consider upgrading to a more recent release of Perl.
23

Core Enhancements

25   Unicode
26       Unicode Version 6.0 is now supported (mostly)
27
28       Perl comes with the Unicode 6.0 data base updated with Corrigendum #8
29       <http://www.unicode.org/versions/corrigendum8.html>, with one exception
30       noted below.  See <http://unicode.org/versions/Unicode6.0.0/> for
31       details on the new release.  Perl does not support any Unicode
32       provisional properties, including the new ones for this release.
33
34       Unicode 6.0 has chosen to use the name "BELL" for the character at
35       U+1F514, which is a symbol that looks like a bell, and is used in
36       Japanese cell phones.  This conflicts with the long-standing Perl usage
37       of having "BELL" mean the ASCII "BEL" character, U+0007.  In Perl 5.14,
38       "\N{BELL}" continues to mean U+0007, but its use generates a
39       deprecation warning message unless such warnings are turned off.  The
40       new name for U+0007 in Perl is "ALERT", which corresponds nicely with
41       the existing shorthand sequence for it, "\a".  "\N{BEL}" means U+0007,
42       with no warning given.  The character at U+1F514 has no name in 5.14,
43       but can be referred to by "\N{U+1F514}".  In Perl 5.16, "\N{BELL}" will
44       refer to U+1F514; all code that uses "\N{BELL}" should be converted to
45       use "\N{ALERT}", "\N{BEL}", or "\a" before upgrading.
46
47       Full functionality for "use feature 'unicode_strings'"
48
49       This release provides full functionality for use feature
50       'unicode_strings'.  Under its scope, all string operations executed and
51       regular expressions compiled (even if executed outside its scope) have
52       Unicode semantics.  See "the 'unicode_strings' feature" in feature.
53       However, see "Inverted bracketed character classes and multi-character
54       folds", below.
55
56       This feature avoids most forms of the "Unicode Bug" (see "The "Unicode
57       Bug"" in perlunicode for details).  If there is any possibility that
58       your code will process Unicode strings, you are strongly encouraged to
59       use this subpragma to avoid nasty surprises.
60
61       "\N{NAME}" and "charnames" enhancements
62
63       •   "\N{NAME}" and "charnames::vianame" now know about the abbreviated
64           character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ,
65           etc.; all customary abbreviations for the C0 and C1 control
66           characters (such as ACK, BEL, CAN, etc.); and a few new variants of
67           some C1 full names that are in common usage.
68
69       •   Unicode has several named character sequences, in which particular
70           sequences of code points are given names.  "\N{NAME}" now
71           recognizes these.
72
73       •   "\N{NAME}", "charnames::vianame", and "charnames::viacode" now know
74           about every character in Unicode.  In earlier releases of Perl,
75           they didn't know about the Hangul syllables nor several CJK
76           (Chinese/Japanese/Korean) characters.
77
78       •   It is now possible to override Perl's abbreviations with your own
79           custom aliases.
80
81       •   You can now create a custom alias of the ordinal of a character,
82           known by "\N{NAME}", charnames::vianame(), and
83           charnames::viacode().  Previously, aliases had to be to official
84           Unicode character names.  This made it impossible to create an
85           alias for unnamed code points, such as those reserved for private
86           use.
87
88       •   The new function charnames::string_vianame() is a run-time version
89           of "\N{NAME}}", returning the string of characters whose Unicode
90           name is its parameter.  It can handle Unicode named character
91           sequences, whereas the pre-existing charnames::vianame() cannot, as
92           the latter returns a single code point.
93
94       See charnames for details on all these changes.
95
96       New warnings categories for problematic (non-)Unicode code points.
97
98       Three new warnings subcategories of "utf8" have been added.  These
99       allow you to turn off some "utf8" warnings, while allowing other
100       warnings to remain on.  The three categories are: "surrogate" when
101       UTF-16 surrogates are encountered; "nonchar" when Unicode non-character
102       code points are encountered; and "non_unicode" when code points above
103       the legal Unicode maximum of 0x10FFFF are encountered.
104
105       Any unsigned value can be encoded as a character
106
107       With this release, Perl is adopting a model that any unsigned value can
108       be treated as a code point and encoded internally (as utf8) without
109       warnings, not just the code points that are legal in Unicode.  However,
110       unless utf8 or the corresponding sub-category (see previous item) of
111       lexical warnings have been explicitly turned off, outputting or
112       executing a Unicode-defined operation such as upper-casing on such a
113       code point generates a warning.  Attempting to input these using strict
114       rules (such as with the :encoding(UTF-8) layer) will continue to fail.
115       Prior to this release, handling was inconsistent and in places,
116       incorrect.
117
118       Unicode non-characters, some of which previously were erroneously
119       considered illegal in places by Perl, contrary to the Unicode Standard,
120       are now always legal internally.  Inputting or outputting them works
121       the same as with the non-legal Unicode code points, because the Unicode
122       Standard says they are (only) illegal for "open interchange".
123
124       Unicode database files not installed
125
126       The Unicode database files are no longer installed with Perl.  This
127       doesn't affect any functionality in Perl and saves significant disk
128       space.  If you need these files, you can download them from
129       <http://www.unicode.org/Public/zipped/6.0.0/>.
130
131   Regular Expressions
132       "(?^...)" construct signifies default modifiers
133
134       An ASCII caret "^" immediately following a "(?" in a regular expression
135       now means that the subexpression does not inherit surrounding modifiers
136       such as "/i", but reverts to the Perl defaults.  Any modifiers
137       following the caret override the defaults.
138
139       Stringification of regular expressions now uses this notation.  For
140       example, "qr/hlagh/i" would previously be stringified as
141       "(?i-xsm:hlagh)", but now it's stringified as "(?^i:hlagh)".
142
143       The main purpose of this change is to allow tests that rely on the
144       stringification not to have to change whenever new modifiers are added.
145       See "Extended Patterns" in perlre.
146
147       This change is likely to break code that compares stringified regular
148       expressions with fixed strings containing "?-xism".
149
150       "/d", "/l", "/u", and "/a" modifiers
151
152       Four new regular expression modifiers have been added.  These are
153       mutually exclusive: one only can be turned on at a time.
154
155       •   The "/l" modifier says to compile the regular expression as if it
156           were in the scope of "use locale", even if it is not.
157
158       •   The "/u" modifier says to compile the regular expression as if it
159           were in the scope of a "use feature 'unicode_strings'" pragma.
160
161       •   The "/d" (default) modifier is used to override any "use locale"
162           and "use feature 'unicode_strings'" pragmas in effect at the time
163           of compiling the regular expression.
164
165       •   The "/a" regular expression modifier restricts "\s", "\d" and "\w"
166           and the POSIX ("[[:posix:]]") character classes to the ASCII range.
167           Their complements and "\b" and "\B" are correspondingly affected.
168           Otherwise, "/a" behaves like the "/u" modifier, in that case-
169           insensitive matching uses Unicode semantics.
170
171           If the "/a" modifier is repeated, then additionally in case-
172           insensitive matching, no ASCII character can match a non-ASCII
173           character.  For example,
174
175               "k"     =~ /\N{KELVIN SIGN}/ai
176               "\xDF" =~ /ss/ai
177
178           match but
179
180               "k"    =~ /\N{KELVIN SIGN}/aai
181               "\xDF" =~ /ss/aai
182
183           do not match.
184
185       See "Modifiers" in perlre for more detail.
186
187       Non-destructive substitution
188
189       The substitution ("s///") and transliteration ("y///") operators now
190       support an "/r" option that copies the input variable, carries out the
191       substitution on the copy, and returns the result.  The original remains
192       unmodified.
193
194         my $old = "cat";
195         my $new = $old =~ s/cat/dog/r;
196         # $old is "cat" and $new is "dog"
197
198       This is particularly useful with "map".  See perlop for more examples.
199
200       Re-entrant regular expression engine
201
202       It is now safe to use regular expressions within "(?{...})" and
203       "(??{...})" code blocks inside regular expressions.
204
205       These blocks are still experimental, however, and still have problems
206       with lexical ("my") variables and abnormal exiting.
207
208       "use re '/flags'"
209
210       The "re" pragma now has the ability to turn on regular expression flags
211       till the end of the lexical scope:
212
213           use re "/x";
214           "foo" =~ / (.+) /;  # /x implied
215
216       See "'/flags' mode" in re for details.
217
218       \o{...} for octals
219
220       There is a new octal escape sequence, "\o", in doublequote-like
221       contexts.  This construct allows large octal ordinals beyond the
222       current max of 0777 to be represented.  It also allows you to specify a
223       character in octal which can safely be concatenated with other regex
224       snippets and which won't be confused with being a backreference to a
225       regex capture group.  See "Capture groups" in perlre.
226
227       Add "\p{Titlecase}" as a synonym for "\p{Title}"
228
229       This synonym is added for symmetry with the Unicode property names
230       "\p{Uppercase}" and "\p{Lowercase}".
231
232       Regular expression debugging output improvement
233
234       Regular expression debugging output (turned on by "use re 'debug'") now
235       uses hexadecimal when escaping non-ASCII characters, instead of octal.
236
237       Return value of "delete $+{...}"
238
239       Custom regular expression engines can now determine the return value of
240       "delete" on an entry of "%+" or "%-".
241
242   Syntactical Enhancements
243       Array and hash container functions accept references
244
245       Warning: This feature is considered experimental, as the exact
246       behaviour may change in a future version of Perl.
247
248       All builtin functions that operate directly on array or hash containers
249       now also accept unblessed hard references to arrays or hashes:
250
251         |----------------------------+---------------------------|
252         | Traditional syntax         | Terse syntax              |
253         |----------------------------+---------------------------|
254         | push @$arrayref, @stuff    | push $arrayref, @stuff    |
255         | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
256         | pop @$arrayref             | pop $arrayref             |
257         | shift @$arrayref           | shift $arrayref           |
258         | splice @$arrayref, 0, 2    | splice $arrayref, 0, 2    |
259         | keys %$hashref             | keys $hashref             |
260         | keys @$arrayref            | keys $arrayref            |
261         | values %$hashref           | values $hashref           |
262         | values @$arrayref          | values $arrayref          |
263         | ($k,$v) = each %$hashref   | ($k,$v) = each $hashref   |
264         | ($k,$v) = each @$arrayref  | ($k,$v) = each $arrayref  |
265         |----------------------------+---------------------------|
266
267       This allows these builtin functions to act on long dereferencing chains
268       or on the return value of subroutines without needing to wrap them in
269       "@{}" or "%{}":
270
271         push @{$obj->tags}, $new_tag;  # old way
272         push $obj->tags,    $new_tag;  # new way
273
274         for ( keys %{$hoh->{genres}{artists}} ) {...} # old way
275         for ( keys $hoh->{genres}{artists}    ) {...} # new way
276
277       Single term prototype
278
279       The "+" prototype is a special alternative to "$" that acts like
280       "\[@%]" when given a literal array or hash variable, but will otherwise
281       force scalar context on the argument.  See "Prototypes" in perlsub.
282
283       "package" block syntax
284
285       A package declaration can now contain a code block, in which case the
286       declaration is in scope inside that block only.  So "package Foo { ...
287       }" is precisely equivalent to "{ package Foo; ... }".  It also works
288       with a version number in the declaration, as in "package Foo 1.2 { ...
289       }", which is its most attractive feature.  See perlfunc.
290
291       Statement labels can appear in more places
292
293       Statement labels can now occur before any type of statement or
294       declaration, such as "package".
295
296       Stacked labels
297
298       Multiple statement labels can now appear before a single statement.
299
300       Uppercase X/B allowed in hexadecimal/binary literals
301
302       Literals may now use either upper case "0X..." or "0B..." prefixes, in
303       addition to the already supported "0x..." and "0b..."  syntax [perl
304       #76296].
305
306       C, Ruby, Python, and PHP already support this syntax, and it makes Perl
307       more internally consistent: a round-trip with "eval sprintf "%#X",
308       0x10" now returns 16, just like "eval sprintf "%#x", 0x10".
309
310       Overridable tie functions
311
312       "tie", "tied" and "untie" can now be overridden [perl #75902].
313
314   Exception Handling
315       To make them more reliable and consistent, several changes have been
316       made to how "die", "warn", and $@ behave.
317
318       •   When an exception is thrown inside an "eval", the exception is no
319           longer at risk of being clobbered by destructor code running during
320           unwinding.  Previously, the exception was written into $@ early in
321           the throwing process, and would be overwritten if "eval" was used
322           internally in the destructor for an object that had to be freed
323           while exiting from the outer "eval".  Now the exception is written
324           into $@ last thing before exiting the outer "eval", so the code
325           running immediately thereafter can rely on the value in $@
326           correctly corresponding to that "eval".  ($@ is still also set
327           before exiting the "eval", for the sake of destructors that rely on
328           this.)
329
330           Likewise, a "local $@" inside an "eval" no longer clobbers any
331           exception thrown in its scope.  Previously, the restoration of $@
332           upon unwinding would overwrite any exception being thrown.  Now the
333           exception gets to the "eval" anyway.  So "local $@" is safe before
334           a "die".
335
336           Exceptions thrown from object destructors no longer modify the $@
337           of the surrounding context.  (If the surrounding context was
338           exception unwinding, this used to be another way to clobber the
339           exception being thrown.)  Previously such an exception was
340           sometimes emitted as a warning, and then either was string-appended
341           to the surrounding $@ or completely replaced the surrounding $@,
342           depending on whether that exception and the surrounding $@ were
343           strings or objects.  Now, an exception in this situation is always
344           emitted as a warning, leaving the surrounding $@ untouched.  In
345           addition to object destructors, this also affects any function call
346           run by XS code using the "G_KEEPERR" flag.
347
348       •   Warnings for "warn" can now be objects in the same way as
349           exceptions for "die".  If an object-based warning gets the default
350           handling of writing to standard error, it is stringified as before
351           with the filename and line number appended.  But a $SIG{__WARN__}
352           handler now receives an object-based warning as an object, where
353           previously it was passed the result of stringifying the object.
354
355   Other Enhancements
356       Assignment to $0 sets the legacy process name with prctl() on Linux
357
358       On Linux the legacy process name is now set with prctl(2), in addition
359       to altering the POSIX name via "argv[0]", as Perl has done since
360       version 4.000.  Now system utilities that read the legacy process name
361       such as ps, top, and killall recognize the name you set when assigning
362       to $0.  The string you supply is truncated at 16 bytes; this limitation
363       is imposed by Linux.
364
365       srand() now returns the seed
366
367       This allows programs that need to have repeatable results not to have
368       to come up with their own seed-generating mechanism.  Instead, they can
369       use srand() and stash the return value for future use.  One example is
370       a test program with too many combinations to test comprehensively in
371       the time available for each run.  It can test a random subset each time
372       and, should there be a failure, log the seed used for that run so this
373       can later be used to produce the same results.
374
375       printf-like functions understand post-1980 size modifiers
376
377       Perl's printf and sprintf operators, and Perl's internal printf
378       replacement function, now understand the C90 size modifiers "hh"
379       ("char"), "z" ("size_t"), and "t" ("ptrdiff_t").  Also, when compiled
380       with a C99 compiler, Perl now understands the size modifier "j"
381       ("intmax_t") (but this is not portable).
382
383       So, for example, on any modern machine, "sprintf("%hhd", 257)" returns
384       "1".
385
386       New global variable "${^GLOBAL_PHASE}"
387
388       A new global variable, "${^GLOBAL_PHASE}", has been added to allow
389       introspection of the current phase of the Perl interpreter.  It's
390       explained in detail in "${^GLOBAL_PHASE}" in perlvar and in "BEGIN,
391       UNITCHECK, CHECK, INIT and END" in perlmod.
392
393       "-d:-foo" calls "Devel::foo::unimport"
394
395       The syntax -d:foo was extended in 5.6.1 to make -d:foo=bar equivalent
396       to -MDevel::foo=bar, which expands internally to "use Devel::foo
397       'bar'".  Perl now allows prefixing the module name with -, with the
398       same semantics as -M; that is:
399
400       "-d:-foo"
401           Equivalent to -M-Devel::foo: expands to "no Devel::foo" and calls
402           "Devel::foo->unimport()" if that method exists.
403
404       "-d:-foo=bar"
405           Equivalent to -M-Devel::foo=bar: expands to "no Devel::foo 'bar'",
406           and calls "Devel::foo->unimport("bar")" if that method exists.
407
408       This is particularly useful for suppressing the default actions of a
409       "Devel::*" module's "import" method whilst still loading it for
410       debugging.
411
412       Filehandle method calls load IO::File on demand
413
414       When a method call on a filehandle would die because the method cannot
415       be resolved and IO::File has not been loaded, Perl now loads IO::File
416       via "require" and attempts method resolution again:
417
418         open my $fh, ">", $file;
419         $fh->binmode(":raw");     # loads IO::File and succeeds
420
421       This also works for globs like "STDOUT", "STDERR", and "STDIN":
422
423         STDOUT->autoflush(1);
424
425       Because this on-demand load happens only if method resolution fails,
426       the legacy approach of manually loading an IO::File parent class for
427       partial method support still works as expected:
428
429         use IO::Handle;
430         open my $fh, ">", $file;
431         $fh->autoflush(1);        # IO::File not loaded
432
433       Improved IPv6 support
434
435       The "Socket" module provides new affordances for IPv6, including
436       implementations of the Socket::getaddrinfo() and Socket::getnameinfo()
437       functions, along with related constants and a handful of new functions.
438       See Socket.
439
440       DTrace probes now include package name
441
442       The "DTrace" probes now include an additional argument, "arg3", which
443       contains the package the subroutine being entered or left was compiled
444       in.
445
446       For example, using the following DTrace script:
447
448         perl$target:::sub-entry
449         {
450             printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3));
451         }
452
453       and then running:
454
455         $ perl -e 'sub test { }; test'
456
457       "DTrace" will print:
458
459         main::test
460
461   New C APIs
462       See "Internal Changes".
463

Security

465   User-defined regular expression properties
466       "User-Defined Character Properties" in perlunicode documented that you
467       can create custom properties by defining subroutines whose names begin
468       with "In" or "Is".  However, Perl did not actually enforce that naming
469       restriction, so "\p{foo::bar}" could call foo::bar() if it existed.
470       The documented convention is now enforced.
471
472       Also, Perl no longer allows tainted regular expressions to invoke a
473       user-defined property.  It simply dies instead [perl #82616].
474

Incompatible Changes

476       Perl 5.14.0 is not binary-compatible with any previous stable release.
477
478       In addition to the sections that follow, see "C API Changes".
479
480   Regular Expressions and String Escapes
481       Inverted bracketed character classes and multi-character folds
482
483       Some characters match a sequence of two or three characters in "/i"
484       regular expression matching under Unicode rules.  One example is "LATIN
485       SMALL LETTER SHARP S" which matches the sequence "ss".
486
487        'ss' =~ /\A[\N{LATIN SMALL LETTER SHARP S}]\z/i  # Matches
488
489       This, however, can lead to very counter-intuitive results, especially
490       when inverted.  Because of this, Perl 5.14 does not use multi-character
491       "/i" matching in inverted character classes.
492
493        'ss' =~ /\A[^\N{LATIN SMALL LETTER SHARP S}]+\z/i  # ???
494
495       This should match any sequences of characters that aren't the "SHARP S"
496       nor what "SHARP S" matches under "/i".  "s" isn't "SHARP S", but
497       Unicode says that "ss" is what "SHARP S" matches under "/i".  So which
498       one "wins"? Do you fail the match because the string has "ss" or accept
499       it because it has an "s" followed by another "s"?
500
501       Earlier releases of Perl did allow this multi-character matching, but
502       due to bugs, it mostly did not work.
503
504       \400-\777
505
506       In certain circumstances, "\400"-"\777" in regexes have behaved
507       differently than they behave in all other doublequote-like contexts.
508       Since 5.10.1, Perl has issued a deprecation warning when this happens.
509       Now, these literals behave the same in all doublequote-like contexts,
510       namely to be equivalent to "\x{100}"-"\x{1FF}", with no deprecation
511       warning.
512
513       Use of "\400"-"\777" in the command-line option -0 retain their
514       conventional meaning.  They slurp whole input files; previously, this
515       was documented only for -0777.
516
517       Because of various ambiguities, you should use the new "\o{...}"
518       construct to represent characters in octal instead.
519
520       Most "\p{}" properties are now immune to case-insensitive matching
521
522       For most Unicode properties, it doesn't make sense to have them match
523       differently under "/i" case-insensitive matching.  Doing so can lead to
524       unexpected results and potential security holes.  For example
525
526        m/\p{ASCII_Hex_Digit}+/i
527
528       could previously match non-ASCII characters because of the Unicode
529       matching rules (although there were several bugs with this).  Now
530       matching under "/i" gives the same results as non-"/i" matching except
531       for those few properties where people have come to expect differences,
532       namely the ones where casing is an integral part of their meaning, such
533       as "m/\p{Uppercase}/i" and "m/\p{Lowercase}/i", both of which match the
534       same code points as matched by "m/\p{Cased}/i".  Details are in
535       "Unicode Properties" in perlrecharclass.
536
537       User-defined property handlers that need to match differently under
538       "/i" must be changed to read the new boolean parameter passed to them,
539       which is non-zero if case-insensitive matching is in effect and 0
540       otherwise.  See "User-Defined Character Properties" in perlunicode.
541
542       \p{} implies Unicode semantics
543
544       Specifying a Unicode property in the pattern indicates that the pattern
545       is meant for matching according to Unicode rules, the way "\N{NAME}"
546       does.
547
548       Regular expressions retain their localeness when interpolated
549
550       Regular expressions compiled under "use locale" now retain this when
551       interpolated into a new regular expression compiled outside a "use
552       locale", and vice-versa.
553
554       Previously, one regular expression interpolated into another inherited
555       the localeness of the surrounding regex, losing whatever state it
556       originally had.  This is considered a bug fix, but may trip up code
557       that has come to rely on the incorrect behaviour.
558
559       Stringification of regexes has changed
560
561       Default regular expression modifiers are now notated using "(?^...)".
562       Code relying on the old stringification will fail.  This is so that
563       when new modifiers are added, such code won't have to keep changing
564       each time this happens, because the stringification will automatically
565       incorporate the new modifiers.
566
567       Code that needs to work properly with both old- and new-style regexes
568       can avoid the whole issue by using (for perls since 5.9.5; see re):
569
570        use re qw(regexp_pattern);
571        my ($pat, $mods) = regexp_pattern($re_ref);
572
573       If the actual stringification is important or older Perls need to be
574       supported, you can use something like the following:
575
576           # Accept both old and new-style stringification
577           my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? "^" : "-xism";
578
579       And then use $modifiers instead of "-xism".
580
581       Run-time code blocks in regular expressions inherit pragmata
582
583       Code blocks in regular expressions ("(?{...})" and "(??{...})")
584       previously did not inherit pragmata (strict, warnings, etc.) if the
585       regular expression was compiled at run time as happens in cases like
586       these two:
587
588         use re "eval";
589         $foo =~ $bar; # when $bar contains (?{...})
590         $foo =~ /$bar(?{ $finished = 1 })/;
591
592       This bug has now been fixed, but code that relied on the buggy
593       behaviour may need to be fixed to account for the correct behaviour.
594
595   Stashes and Package Variables
596       Localised tied hashes and arrays are no longed tied
597
598       In the following:
599
600           tie @a, ...;
601           {
602                   local @a;
603                   # here, @a is a now a new, untied array
604           }
605           # here, @a refers again to the old, tied array
606
607       Earlier versions of Perl incorrectly tied the new local array.  This
608       has now been fixed.  This fix could however potentially cause a change
609       in behaviour of some code.
610
611       Stashes are now always defined
612
613       "defined %Foo::" now always returns true, even when no symbols have yet
614       been defined in that package.
615
616       This is a side-effect of removing a special-case kludge in the
617       tokeniser, added for 5.10.0, to hide side-effects of changes to the
618       internal storage of hashes.  The fix drastically reduces hashes' memory
619       overhead.
620
621       Calling defined on a stash has been deprecated since 5.6.0, warned on
622       lexicals since 5.6.0, and warned for stashes and other package
623       variables since 5.12.0.  "defined %hash" has always exposed an
624       implementation detail: emptying a hash by deleting all entries from it
625       does not make "defined %hash" false.  Hence "defined %hash" is not
626       valid code to determine whether an arbitrary hash is empty.  Instead,
627       use the behaviour of an empty %hash always returning false in scalar
628       context.
629
630       Clearing stashes
631
632       Stash list assignment "%foo:: = ()" used to make the stash temporarily
633       anonymous while it was being emptied.  Consequently, any of its
634       subroutines referenced elsewhere would become anonymous,  showing up as
635       "(unknown)" in "caller".  They now retain their package names such that
636       "caller" returns the original sub name if there is still a reference to
637       its typeglob and "foo::__ANON__" otherwise [perl #79208].
638
639       Dereferencing typeglobs
640
641       If you assign a typeglob to a scalar variable:
642
643           $glob = *foo;
644
645       the glob that is copied to $glob is marked with a special flag
646       indicating that the glob is just a copy.  This allows subsequent
647       assignments to $glob to overwrite the glob.  The original glob,
648       however, is immutable.
649
650       Some Perl operators did not distinguish between these two types of
651       globs.  This would result in strange behaviour in edge cases: "untie
652       $scalar" would not untie the scalar if the last thing assigned to it
653       was a glob (because it treated it as "untie *$scalar", which unties a
654       handle).  Assignment to a glob slot (such as "*$glob = \@some_array")
655       would simply assign "\@some_array" to $glob.
656
657       To fix this, the "*{}" operator (including its *foo and *$foo forms)
658       has been modified to make a new immutable glob if its operand is a glob
659       copy.  This allows operators that make a distinction between globs and
660       scalars to be modified to treat only immutable globs as globs.  ("tie",
661       "tied" and "untie" have been left as they are for compatibility's sake,
662       but will warn.  See "Deprecations".)
663
664       This causes an incompatible change in code that assigns a glob to the
665       return value of "*{}" when that operator was passed a glob copy.  Take
666       the following code, for instance:
667
668           $glob = *foo;
669           *$glob = *bar;
670
671       The *$glob on the second line returns a new immutable glob.  That new
672       glob is made an alias to *bar.  Then it is discarded.  So the second
673       assignment has no effect.
674
675       See <https://github.com/Perl/perl5/issues/10625> for more detail.
676
677       Magic variables outside the main package
678
679       In previous versions of Perl, magic variables like $!, %SIG, etc. would
680       "leak" into other packages.  So %foo::SIG could be used to access
681       signals, "${"foo::!"}" (with strict mode off) to access C's "errno",
682       etc.
683
684       This was a bug, or an "unintentional" feature, which caused various ill
685       effects, such as signal handlers being wiped when modules were loaded,
686       etc.
687
688       This has been fixed (or the feature has been removed, depending on how
689       you see it).
690
691       local($_) strips all magic from $_
692
693       local() on scalar variables gives them a new value but keeps all their
694       magic intact.  This has proven problematic for the default scalar
695       variable $_, where perlsub recommends that any subroutine that assigns
696       to $_ should first localize it.  This would throw an exception if $_ is
697       aliased to a read-only variable, and could in general have various
698       unintentional side-effects.
699
700       Therefore, as an exception to the general rule, local($_) will not only
701       assign a new value to $_, but also remove all existing magic from it as
702       well.
703
704       Parsing of package and variable names
705
706       Parsing the names of packages and package variables has changed:
707       multiple adjacent pairs of colons, as in "foo::::bar", are now all
708       treated as package separators.
709
710       Regardless of this change, the exact parsing of package separators has
711       never been guaranteed and is subject to change in future Perl versions.
712
713   Changes to Syntax or to Perl Operators
714       "given" return values
715
716       "given" blocks now return the last evaluated expression, or an empty
717       list if the block was exited by "break".  Thus you can now write:
718
719           my $type = do {
720            given ($num) {
721             break     when undef;
722             "integer" when /^[+-]?[0-9]+$/;
723             "float"   when /^[+-]?[0-9]+(?:\.[0-9]+)?$/;
724             "unknown";
725            }
726           };
727
728       See "Return value" in perlsyn for details.
729
730       Change in parsing of certain prototypes
731
732       Functions declared with the following prototypes now behave correctly
733       as unary functions:
734
735         *
736         \$ \% \@ \* \&
737         \[...]
738         ;$ ;*
739         ;\$ ;\% etc.
740         ;\[...]
741
742       Due to this bug fix [perl #75904], functions using the "(*)", "(;$)"
743       and "(;*)" prototypes are parsed with higher precedence than before.
744       So in the following example:
745
746         sub foo(;$);
747         foo $a < $b;
748
749       the second line is now parsed correctly as "foo($a) < $b", rather than
750       "foo($a < $b)".  This happens when one of these operators is used in an
751       unparenthesised argument:
752
753         < > <= >= lt gt le ge
754         == != <=> eq ne cmp ~~
755         &
756         | ^
757         &&
758         || //
759         .. ...
760         ?:
761         = += -= *= etc.
762         , =>
763
764       Smart-matching against array slices
765
766       Previously, the following code resulted in a successful match:
767
768           my @a = qw(a y0 z);
769           my @b = qw(a x0 z);
770           @a[0 .. $#b] ~~ @b;
771
772       This odd behaviour has now been fixed [perl #77468].
773
774       Negation treats strings differently from before
775
776       The unary negation operator, "-", now treats strings that look like
777       numbers as numbers [perl #57706].
778
779       Negative zero
780
781       Negative zero (-0.0), when converted to a string, now becomes "0" on
782       all platforms.  It used to become "-0" on some, but "0" on others.
783
784       If you still need to determine whether a zero is negative, use
785       "sprintf("%g", $zero) =~ /^-/" or the Data::Float module on CPAN.
786
787       ":=" is now a syntax error
788
789       Previously "my $pi := 4" was exactly equivalent to "my $pi : = 4", with
790       the ":" being treated as the start of an attribute list, ending before
791       the "=".  The use of ":=" to mean ": =" was deprecated in 5.12.0, and
792       is now a syntax error.  This allows future use of ":=" as a new token.
793
794       Outside the core's tests for it, we find no Perl 5 code on CPAN using
795       this construction, so we believe that this change will have little
796       impact on real-world codebases.
797
798       If it is absolutely necessary to have empty attribute lists (for
799       example, because of a code generator), simply avoid the error by adding
800       a space before the "=".
801
802       Change in the parsing of identifiers
803
804       Characters outside the Unicode "XIDStart" set are no longer allowed at
805       the beginning of an identifier.  This means that certain accents and
806       marks that normally follow an alphabetic character may no longer be the
807       first character of an identifier.
808
809   Threads and Processes
810       Directory handles not copied to threads
811
812       On systems other than Windows that do not have a "fchdir" function,
813       newly-created threads no longer inherit directory handles from their
814       parent threads.  Such programs would usually have crashed anyway [perl
815       #75154].
816
817       "close" on shared pipes
818
819       To avoid deadlocks, the "close" function no longer waits for the child
820       process to exit if the underlying file descriptor is still in use by
821       another thread.  It returns true in such cases.
822
823       fork() emulation will not wait for signalled children
824
825       On Windows parent processes would not terminate until all forked
826       children had terminated first.  However, "kill("KILL", ...)" is
827       inherently unstable on pseudo-processes, and "kill("TERM", ...)"  might
828       not get delivered if the child is blocked in a system call.
829
830       To avoid the deadlock and still provide a safe mechanism to terminate
831       the hosting process, Perl now no longer waits for children that have
832       been sent a SIGTERM signal.  It is up to the parent process to
833       waitpid() for these children if child-cleanup processing must be
834       allowed to finish.  However, it is also then the responsibility of the
835       parent to avoid the deadlock by making sure the child process can't be
836       blocked on I/O.
837
838       See perlfork for more information about the fork() emulation on
839       Windows.
840
841   Configuration
842       Naming fixes in Policy_sh.SH may invalidate Policy.sh
843
844       Several long-standing typos and naming confusions in Policy_sh.SH have
845       been fixed, standardizing on the variable names used in config.sh.
846
847       This will change the behaviour of Policy.sh if you happen to have been
848       accidentally relying on its incorrect behaviour.
849
850       Perl source code is read in text mode on Windows
851
852       Perl scripts used to be read in binary mode on Windows for the benefit
853       of the ByteLoader module (which is no longer part of core Perl).  This
854       had the side-effect of breaking various operations on the "DATA"
855       filehandle, including seek()/tell(), and even simply reading from
856       "DATA" after filehandles have been flushed by a call to system(),
857       backticks, fork() etc.
858
859       The default build options for Windows have been changed to read Perl
860       source code on Windows in text mode now.  ByteLoader will (hopefully)
861       be updated on CPAN to automatically handle this situation [perl
862       #28106].
863

Deprecations

865       See also "Deprecated C APIs".
866
867   Omitting a space between a regular expression and subsequent word
868       Omitting the space between a regular expression operator or its
869       modifiers and the following word is deprecated.  For example,
870       "m/foo/sand $bar" is for now still parsed as "m/foo/s and $bar", but
871       will now issue a warning.
872
873   "\cX"
874       The backslash-c construct was designed as a way of specifying non-
875       printable characters, but there were no restrictions (on ASCII
876       platforms) on what the character following the "c" could be.  Now, a
877       deprecation warning is raised if that character isn't an ASCII
878       character.  Also, a deprecation warning is raised for "\c{" (which is
879       the same as simply saying ";").
880
881   "\b{" and "\B{"
882       In regular expressions, a literal "{" immediately following a "\b" (not
883       in a bracketed character class) or a "\B{" is now deprecated to allow
884       for its future use by Perl itself.
885
886   Perl 4-era .pl libraries
887       Perl bundles a handful of library files that predate Perl 5.  This
888       bundling is now deprecated for most of these files, which are now
889       available from CPAN.  The affected files now warn when run, if they
890       were installed as part of the core.
891
892       This is a mandatory warning, not obeying -X or lexical warning bits.
893       The warning is modelled on that supplied by deprecate.pm for
894       deprecated-in-core .pm libraries.  It points to the specific CPAN
895       distribution that contains the .pl libraries.  The CPAN versions, of
896       course, do not generate the warning.
897
898   List assignment to $[
899       Assignment to $[ was deprecated and started to give warnings in Perl
900       version 5.12.0.  This version of Perl (5.14) now also emits a warning
901       when assigning to $[ in list context.  This fixes an oversight in
902       5.12.0.
903
904   Use of qw(...) as parentheses
905       Historically the parser fooled itself into thinking that qw(...)
906       literals were always enclosed in parentheses, and as a result you could
907       sometimes omit parentheses around them:
908
909           for $x qw(a b c) { ... }
910
911       The parser no longer lies to itself in this way.  Wrap the list literal
912       in parentheses like this:
913
914           for $x (qw(a b c)) { ... }
915
916       This is being deprecated because the parentheses in "for $i (1,2,3) {
917       ... }" are not part of expression syntax.  They are part of the
918       statement syntax, with the "for" statement wanting literal parentheses.
919       The synthetic parentheses that a "qw" expression acquired were only
920       intended to be treated as part of expression syntax.
921
922       Note that this does not change the behaviour of cases like:
923
924           use POSIX qw(setlocale localeconv);
925           our @EXPORT = qw(foo bar baz);
926
927       where parentheses were never required around the expression.
928
929   "\N{BELL}"
930       This is because Unicode is using that name for a different character.
931       See "Unicode Version 6.0 is now supported (mostly)" for more
932       explanation.
933
934   "?PATTERN?"
935       "?PATTERN?" (without the initial "m") has been deprecated and now
936       produces a warning.  This is to allow future use of "?" in new
937       operators.  The match-once functionality is still available as
938       "m?PATTERN?".
939
940   Tie functions on scalars holding typeglobs
941       Calling a tie function ("tie", "tied", "untie") with a scalar argument
942       acts on a filehandle if the scalar happens to hold a typeglob.
943
944       This is a long-standing bug that will be removed in Perl 5.16, as there
945       is currently no way to tie the scalar itself when it holds a typeglob,
946       and no way to untie a scalar that has had a typeglob assigned to it.
947
948       Now there is a deprecation warning whenever a tie function is used on a
949       handle without an explicit "*".
950
951   User-defined case-mapping
952       This feature is being deprecated due to its many issues, as documented
953       in "User-Defined Case Mappings (for serious hackers only)" in
954       perlunicode.  This feature will be removed in Perl 5.16.  Instead use
955       the CPAN module Unicode::Casing, which provides improved functionality.
956
957   Deprecated modules
958       The following module will be removed from the core distribution in a
959       future release, and should be installed from CPAN instead.
960       Distributions on CPAN that require this should add it to their
961       prerequisites.  The core version of these module now issues a
962       deprecation warning.
963
964       If you ship a packaged version of Perl, either alone or as part of a
965       larger system, then you should carefully consider the repercussions of
966       core module deprecations.  You may want to consider shipping your
967       default build of Perl with a package for the deprecated module that
968       installs into "vendor" or "site" Perl library directories.  This will
969       inhibit the deprecation warnings.
970
971       Alternatively, you may want to consider patching lib/deprecate.pm to
972       provide deprecation warnings specific to your packaging system or
973       distribution of Perl, consistent with how your packaging system or
974       distribution manages a staged transition from a release where the
975       installation of a single package provides the given functionality, to a
976       later release where the system administrator needs to know to install
977       multiple packages to get that same functionality.
978
979       You can silence these deprecation warnings by installing the module in
980       question from CPAN.  To install the latest version of it by role rather
981       than by name, just install "Task::Deprecations::5_14".
982
983       Devel::DProf
984           We strongly recommend that you install and use Devel::NYTProf
985           instead of Devel::DProf, as Devel::NYTProf offers significantly
986           improved profiling and reporting.
987

Performance Enhancements

989   "Safe signals" optimisation
990       Signal dispatch has been moved from the runloop into control ops.  This
991       should give a few percent speed increase, and eliminates nearly all the
992       speed penalty caused by the introduction of "safe signals" in 5.8.0.
993       Signals should still be dispatched within the same statement as they
994       were previously.  If this does not happen, or if you find it possible
995       to create uninterruptible loops, this is a bug, and reports are
996       encouraged of how to recreate such issues.
997
998   Optimisation of shift() and pop() calls without arguments
999       Two fewer OPs are used for shift() and pop() calls with no argument
1000       (with implicit @_).  This change makes shift() 5% faster than "shift
1001       @_" on non-threaded perls, and 25% faster on threaded ones.
1002
1003   Optimisation of regexp engine string comparison work
1004       The "foldEQ_utf8" API function for case-insensitive comparison of
1005       strings (which is used heavily by the regexp engine) was substantially
1006       refactored and optimised -- and its documentation much improved as a
1007       free bonus.
1008
1009   Regular expression compilation speed-up
1010       Compiling regular expressions has been made faster when upgrading the
1011       regex to utf8 is necessary but this isn't known when the compilation
1012       begins.
1013
1014   String appending is 100 times faster
1015       When doing a lot of string appending, perls built to use the system's
1016       "malloc" could end up allocating a lot more memory than needed in a
1017       inefficient way.
1018
1019       "sv_grow", the function used to allocate more memory if necessary when
1020       appending to a string, has been taught to round up the memory it
1021       requests to a certain geometric progression, making it much faster on
1022       certain platforms and configurations.  On Win32, it's now about 100
1023       times faster.
1024
1025   Eliminate "PL_*" accessor functions under ithreads
1026       When "MULTIPLICITY" was first developed, and interpreter state moved
1027       into an interpreter struct, thread- and interpreter-local "PL_*"
1028       variables were defined as macros that called accessor functions
1029       (returning the address of the value) outside the Perl core.  The intent
1030       was to allow members within the interpreter struct to change size
1031       without breaking binary compatibility, so that bug fixes could be
1032       merged to a maintenance branch that necessitated such a size change.
1033       This mechanism was redundant and penalised well-behaved code.  It has
1034       been removed.
1035
1036   Freeing weak references
1037       When there are many weak references to an object, freeing that object
1038       can under some circumstances take O(N*N) time to free, where N is the
1039       number of references.  The circumstances in which this can happen have
1040       been reduced [perl #75254]
1041
1042   Lexical array and hash assignments
1043       An earlier optimisation to speed up "my @array = ..." and "my %hash =
1044       ..." assignments caused a bug and was disabled in Perl 5.12.0.
1045
1046       Now we have found another way to speed up these assignments [perl
1047       #82110].
1048
1049   @_ uses less memory
1050       Previously, @_ was allocated for every subroutine at compile time with
1051       enough space for four entries.  Now this allocation is done on demand
1052       when the subroutine is called [perl #72416].
1053
1054   Size optimisations to SV and HV structures
1055       "xhv_fill" has been eliminated from "struct xpvhv", saving 1 IV per
1056       hash and on some systems will cause "struct xpvhv" to become cache-
1057       aligned.  To avoid this memory saving causing a slowdown elsewhere,
1058       boolean use of "HvFILL" now calls "HvTOTALKEYS" instead (which is
1059       equivalent), so while the fill data when actually required are now
1060       calculated on demand, cases when this needs to be done should be rare.
1061
1062       The order of structure elements in SV bodies has changed.  Effectively,
1063       the NV slot has swapped location with STASH and MAGIC.  As all access
1064       to SV members is via macros, this should be completely transparent.
1065       This change allows the space saving for PVHVs documented above, and may
1066       reduce the memory allocation needed for PVIVs on some architectures.
1067
1068       "XPV", "XPVIV", and "XPVNV" now allocate only the parts of the "SV"
1069       body they actually use, saving some space.
1070
1071       Scalars containing regular expressions now allocate only the part of
1072       the "SV" body they actually use, saving some space.
1073
1074   Memory consumption improvements to Exporter
1075       The @EXPORT_FAIL AV is no longer created unless needed, hence neither
1076       is the typeglob backing it.  This saves about 200 bytes for every
1077       package that uses Exporter but doesn't use this functionality.
1078
1079   Memory savings for weak references
1080       For weak references, the common case of just a single weak reference
1081       per referent has been optimised to reduce the storage required.  In
1082       this case it saves the equivalent of one small Perl array per referent.
1083
1084   "%+" and "%-" use less memory
1085       The bulk of the "Tie::Hash::NamedCapture" module used to be in the Perl
1086       core.  It has now been moved to an XS module to reduce overhead for
1087       programs that do not use "%+" or "%-".
1088
1089   Multiple small improvements to threads
1090       The internal structures of threading now make fewer API calls and fewer
1091       allocations, resulting in noticeably smaller object code.
1092       Additionally, many thread context checks have been deferred so they're
1093       done only as needed (although this is only possible for non-debugging
1094       builds).
1095
1096   Adjacent pairs of nextstate opcodes are now optimized away
1097       Previously, in code such as
1098
1099           use constant DEBUG => 0;
1100
1101           sub GAK {
1102               warn if DEBUG;
1103               print "stuff\n";
1104           }
1105
1106       the ops for "warn if DEBUG" would be folded to a "null" op
1107       ("ex-const"), but the "nextstate" op would remain, resulting in a
1108       runtime op dispatch of "nextstate", "nextstate", etc.
1109
1110       The execution of a sequence of "nextstate" ops is indistinguishable
1111       from just the last "nextstate" op so the peephole optimizer now
1112       eliminates the first of a pair of "nextstate" ops except when the first
1113       carries a label, since labels must not be eliminated by the optimizer,
1114       and label usage isn't conclusively known at compile time.
1115

Modules and Pragmata

1117   New Modules and Pragmata
1118       •   CPAN::Meta::YAML 0.003 has been added as a dual-life module.  It
1119           supports a subset of YAML sufficient for reading and writing
1120           META.yml and MYMETA.yml files included with CPAN distributions or
1121           generated by the module installation toolchain.  It should not be
1122           used for any other general YAML parsing or generation task.
1123
1124       •   CPAN::Meta version 2.110440 has been added as a dual-life module.
1125           It provides a standard library to read, interpret and write CPAN
1126           distribution metadata files (like META.json and META.yml) that
1127           describe a distribution, its contents, and the requirements for
1128           building it and installing it.  The latest CPAN distribution
1129           metadata specification is included as CPAN::Meta::Spec and notes on
1130           changes in the specification over time are given in
1131           CPAN::Meta::History.
1132
1133       •   HTTP::Tiny 0.012 has been added as a dual-life module.  It is a
1134           very small, simple HTTP/1.1 client designed for simple GET requests
1135           and file mirroring.  It has been added so that CPAN.pm and CPANPLUS
1136           can "bootstrap" HTTP access to CPAN using pure Perl without relying
1137           on external binaries like curl(1) or wget(1).
1138
1139       •   JSON::PP 2.27105 has been added as a dual-life module to allow CPAN
1140           clients to read META.json files in CPAN distributions.
1141
1142       •   Module::Metadata 1.000004 has been added as a dual-life module.  It
1143           gathers package and POD information from Perl module files.  It is
1144           a standalone module based on Module::Build::ModuleInfo for use by
1145           other module installation toolchain components.
1146           Module::Build::ModuleInfo has been deprecated in favor of this
1147           module instead.
1148
1149       •   Perl::OSType 1.002 has been added as a dual-life module.  It maps
1150           Perl operating system names (like "dragonfly" or "MSWin32") to more
1151           generic types with standardized names (like "Unix" or "Windows").
1152           It has been refactored out of Module::Build and ExtUtils::CBuilder
1153           and consolidates such mappings into a single location for easier
1154           maintenance.
1155
1156       •   The following modules were added by the Unicode::Collate upgrade.
1157           See below for details.
1158
1159           Unicode::Collate::CJK::Big5
1160
1161           Unicode::Collate::CJK::GB2312
1162
1163           Unicode::Collate::CJK::JISX0208
1164
1165           Unicode::Collate::CJK::Korean
1166
1167           Unicode::Collate::CJK::Pinyin
1168
1169           Unicode::Collate::CJK::Stroke
1170
1171       •   Version::Requirements version 0.101020 has been added as a dual-
1172           life module.  It provides a standard library to model and
1173           manipulates module prerequisites and version constraints defined in
1174           CPAN::Meta::Spec.
1175
1176   Updated Modules and Pragma
1177       •   attributes has been upgraded from version 0.12 to 0.14.
1178
1179       •   Archive::Extract has been upgraded from version 0.38 to 0.48.
1180
1181           Updates since 0.38 include: a safe print method that guards
1182           Archive::Extract from changes to "$\"; a fix to the tests when run
1183           in core Perl; support for TZ files; a modification for the lzma
1184           logic to favour IO::Uncompress::Unlzma; and a fix for an issue with
1185           NetBSD-current and its new unzip(1) executable.
1186
1187       •   Archive::Tar has been upgraded from version 1.54 to 1.76.
1188
1189           Important changes since 1.54 include the following:
1190
1191           •   Compatibility with busybox implementations of tar(1).
1192
1193           •   A fix so that write() and create_archive() close only
1194               filehandles they themselves opened.
1195
1196           •   A bug was fixed regarding the exit code of extract_archive.
1197
1198           •   The ptar(1) utility has a new option to allow safe creation of
1199               tarballs without world-writable files on Windows, allowing
1200               those archives to be uploaded to CPAN.
1201
1202           •   A new ptargrep(1) utility for using regular expressions against
1203               the contents of files in a tar archive.
1204
1205           •   pax extended headers are now skipped.
1206
1207       •   Attribute::Handlers has been upgraded from version 0.87 to 0.89.
1208
1209       •   autodie has been upgraded from version 2.06_01 to 2.1001.
1210
1211       •   AutoLoader has been upgraded from version 5.70 to 5.71.
1212
1213       •   The B module has been upgraded from version 1.23 to 1.29.
1214
1215           It no longer crashes when taking apart a "y///" containing
1216           characters outside the octet range or compiled in a "use utf8"
1217           scope.
1218
1219           The size of the shared object has been reduced by about 40%, with
1220           no reduction in functionality.
1221
1222       •   B::Concise has been upgraded from version 0.78 to 0.83.
1223
1224           B::Concise marks rv2sv(), rv2av(), and rv2hv() ops with the new
1225           "OPpDEREF" flag as "DREFed".
1226
1227           It no longer produces mangled output with the -tree option [perl
1228           #80632].
1229
1230       •   B::Debug has been upgraded from version 1.12 to 1.16.
1231
1232       •   B::Deparse has been upgraded from version 0.96 to 1.03.
1233
1234           The deparsing of a "nextstate" op has changed when it has both a
1235           change of package relative to the previous nextstate, or a change
1236           of "%^H" or other state and a label.  The label was previously
1237           emitted first, but is now emitted last (5.12.1).
1238
1239           The "no 5.13.2" or similar form is now correctly handled by
1240           B::Deparse (5.12.3).
1241
1242           B::Deparse now properly handles the code that applies a conditional
1243           pattern match against implicit $_ as it was fixed in [perl #20444].
1244
1245           Deparsing of "our" followed by a variable with funny characters (as
1246           permitted under the "use utf8" pragma) has also been fixed [perl
1247           #33752].
1248
1249       •   B::Lint has been upgraded from version 1.11_01 to 1.13.
1250
1251       •   base has been upgraded from version 2.15 to 2.16.
1252
1253       •   Benchmark has been upgraded from version 1.11 to 1.12.
1254
1255       •   bignum has been upgraded from version 0.23 to 0.27.
1256
1257       •   Carp has been upgraded from version 1.15 to 1.20.
1258
1259           Carp now detects incomplete caller() overrides and avoids using
1260           bogus @DB::args.  To provide backtraces, Carp relies on particular
1261           behaviour of the caller() builtin.  Carp now detects if other code
1262           has overridden this with an incomplete implementation, and modifies
1263           its backtrace accordingly.  Previously incomplete overrides would
1264           cause incorrect values in backtraces (best case), or obscure fatal
1265           errors (worst case).
1266
1267           This fixes certain cases of "Bizarre copy of ARRAY" caused by
1268           modules overriding caller() incorrectly (5.12.2).
1269
1270           It now also avoids using regular expressions that cause Perl to
1271           load its Unicode tables, so as to avoid the "BEGIN not safe after
1272           errors" error that ensue if there has been a syntax error [perl
1273           #82854].
1274
1275       •   CGI has been upgraded from version 3.48 to 3.52.
1276
1277           This provides the following security fixes: the MIME boundary in
1278           multipart_init() is now random and the handling of newlines
1279           embedded in header values has been improved.
1280
1281       •   Compress::Raw::Bzip2 has been upgraded from version 2.024 to 2.033.
1282
1283           It has been updated to use bzip2(1) 1.0.6.
1284
1285       •   Compress::Raw::Zlib has been upgraded from version 2.024 to 2.033.
1286
1287       •   constant has been upgraded from version 1.20 to 1.21.
1288
1289           Unicode constants work once more.  They have been broken since Perl
1290           5.10.0 [CPAN RT #67525].
1291
1292       •   CPAN has been upgraded from version 1.94_56 to 1.9600.
1293
1294           Major highlights:
1295
1296           •   much less configuration dialog hassle
1297
1298           •   support for META/MYMETA.json
1299
1300           •   support for local::lib
1301
1302           •   support for HTTP::Tiny to reduce the dependency on FTP sites
1303
1304           •   automatic mirror selection
1305
1306           •   iron out all known bugs in configure_requires
1307
1308           •   support for distributions compressed with bzip2(1)
1309
1310           •   allow Foo/Bar.pm on the command line to mean "Foo::Bar"
1311
1312       •   CPANPLUS has been upgraded from version 0.90 to 0.9103.
1313
1314           A change to cpanp-run-perl resolves RT #55964
1315           <http://rt.cpan.org/Public/Bug/Display.html?id=55964> and RT #57106
1316           <http://rt.cpan.org/Public/Bug/Display.html?id=57106>, both of
1317           which related to failures to install distributions that use
1318           "Module::Install::DSL" (5.12.2).
1319
1320           A dependency on Config was not recognised as a core module
1321           dependency.  This has been fixed.
1322
1323           CPANPLUS now includes support for META.json and MYMETA.json.
1324
1325       •   CPANPLUS::Dist::Build has been upgraded from version 0.46 to 0.54.
1326
1327       •   Data::Dumper has been upgraded from version 2.125 to 2.130_02.
1328
1329           The indentation used to be off when $Data::Dumper::Terse was set.
1330           This has been fixed [perl #73604].
1331
1332           This upgrade also fixes a crash when using custom sort functions
1333           that might cause the stack to change [perl #74170].
1334
1335           Dumpxs no longer crashes with globs returned by *$io_ref [perl
1336           #72332].
1337
1338       •   DB_File has been upgraded from version 1.820 to 1.821.
1339
1340       •   DBM_Filter has been upgraded from version 0.03 to 0.04.
1341
1342       •   Devel::DProf has been upgraded from version 20080331.00 to
1343           20110228.00.
1344
1345           Merely loading Devel::DProf now no longer triggers profiling to
1346           start.  Both "use Devel::DProf" and "perl -d:DProf ..." behave as
1347           before and start the profiler.
1348
1349           NOTE: Devel::DProf is deprecated and will be removed from a future
1350           version of Perl.  We strongly recommend that you install and use
1351           Devel::NYTProf instead, as it offers significantly improved
1352           profiling and reporting.
1353
1354       •   Devel::Peek has been upgraded from version 1.04 to 1.07.
1355
1356       •   Devel::SelfStubber has been upgraded from version 1.03 to 1.05.
1357
1358       •   diagnostics has been upgraded from version 1.19 to 1.22.
1359
1360           It now renders pod links slightly better, and has been taught to
1361           find descriptions for messages that share their descriptions with
1362           other messages.
1363
1364       •   Digest::MD5 has been upgraded from version 2.39 to 2.51.
1365
1366           It is now safe to use this module in combination with threads.
1367
1368       •   Digest::SHA has been upgraded from version 5.47 to 5.61.
1369
1370           "shasum" now more closely mimics sha1sum(1)/md5sum(1).
1371
1372           "addfile" accepts all POSIX filenames.
1373
1374           New SHA-512/224 and SHA-512/256 transforms (ref. NIST Draft FIPS
1375           180-4 [February 2011])
1376
1377       •   DirHandle has been upgraded from version 1.03 to 1.04.
1378
1379       •   Dumpvalue has been upgraded from version 1.13 to 1.16.
1380
1381       •   DynaLoader has been upgraded from version 1.10 to 1.13.
1382
1383           It fixes a buffer overflow when passed a very long file name.
1384
1385           It no longer inherits from AutoLoader; hence it no longer produces
1386           weird error messages for unsuccessful method calls on classes that
1387           inherit from DynaLoader [perl #84358].
1388
1389       •   Encode has been upgraded from version 2.39 to 2.42.
1390
1391           Now, all 66 Unicode non-characters are treated the same way U+FFFF
1392           has always been treated: in cases when it was disallowed, all 66
1393           are disallowed, and in cases where it warned, all 66 warn.
1394
1395       •   Env has been upgraded from version 1.01 to 1.02.
1396
1397       •   Errno has been upgraded from version 1.11 to 1.13.
1398
1399           The implementation of Errno has been refactored to use about 55%
1400           less memory.
1401
1402           On some platforms with unusual header files, like Win32 gcc(1)
1403           using "mingw64" headers, some constants that weren't actually error
1404           numbers have been exposed by Errno.  This has been fixed [perl
1405           #77416].
1406
1407       •   Exporter has been upgraded from version 5.64_01 to 5.64_03.
1408
1409           Exporter no longer overrides $SIG{__WARN__} [perl #74472]
1410
1411       •   ExtUtils::CBuilder has been upgraded from version 0.27 to 0.280203.
1412
1413       •   ExtUtils::Command has been upgraded from version 1.16 to 1.17.
1414
1415       •   ExtUtils::Constant has been upgraded from 0.22 to 0.23.
1416
1417           The AUTOLOAD helper code generated by
1418           "ExtUtils::Constant::ProxySubs" can now croak() for missing
1419           constants, or generate a complete "AUTOLOAD" subroutine in XS,
1420           allowing simplification of many modules that use it (Fcntl,
1421           File::Glob, GDBM_File, I18N::Langinfo, POSIX, Socket).
1422
1423           ExtUtils::Constant::ProxySubs can now optionally push the names of
1424           all constants onto the package's @EXPORT_OK.
1425
1426       •   ExtUtils::Install has been upgraded from version 1.55 to 1.56.
1427
1428       •   ExtUtils::MakeMaker has been upgraded from version 6.56 to 6.57_05.
1429
1430       •   ExtUtils::Manifest has been upgraded from version 1.57 to 1.58.
1431
1432       •   ExtUtils::ParseXS has been upgraded from version 2.21 to 2.2210.
1433
1434       •   Fcntl has been upgraded from version 1.06 to 1.11.
1435
1436       •   File::Basename has been upgraded from version 2.78 to 2.82.
1437
1438       •   File::CheckTree has been upgraded from version 4.4 to 4.41.
1439
1440       •   File::Copy has been upgraded from version 2.17 to 2.21.
1441
1442       •   File::DosGlob has been upgraded from version 1.01 to 1.04.
1443
1444           It allows patterns containing literal parentheses: they no longer
1445           need to be escaped.  On Windows, it no longer adds an extra ./ to
1446           file names returned when the pattern is a relative glob with a
1447           drive specification, like C:*.pl [perl #71712].
1448
1449       •   File::Fetch has been upgraded from version 0.24 to 0.32.
1450
1451           HTTP::Lite is now supported for the "http" scheme.
1452
1453           The fetch(1) utility is supported on FreeBSD, NetBSD, and Dragonfly
1454           BSD for the "http" and "ftp" schemes.
1455
1456       •   File::Find has been upgraded from version 1.15 to 1.19.
1457
1458           It improves handling of backslashes on Windows, so that paths like
1459           C:\dir\/file are no longer generated [perl #71710].
1460
1461       •   File::Glob has been upgraded from version 1.07 to 1.12.
1462
1463       •   File::Spec has been upgraded from version 3.31 to 3.33.
1464
1465           Several portability fixes were made in File::Spec::VMS: a colon is
1466           now recognized as a delimiter in native filespecs; caret-escaped
1467           delimiters are recognized for better handling of extended
1468           filespecs; catpath() returns an empty directory rather than the
1469           current directory if the input directory name is empty; and
1470           abs2rel() properly handles Unix-style input (5.12.2).
1471
1472       •   File::stat has been upgraded from 1.02 to 1.05.
1473
1474           The "-x" and "-X" file test operators now work correctly when run
1475           by the superuser.
1476
1477       •   Filter::Simple has been upgraded from version 0.84 to 0.86.
1478
1479       •   GDBM_File has been upgraded from 1.10 to 1.14.
1480
1481           This fixes a memory leak when DBM filters are used.
1482
1483       •   Hash::Util has been upgraded from 0.07 to 0.11.
1484
1485           Hash::Util no longer emits spurious "uninitialized" warnings when
1486           recursively locking hashes that have undefined values [perl
1487           #74280].
1488
1489       •   Hash::Util::FieldHash has been upgraded from version 1.04 to 1.09.
1490
1491       •   I18N::Collate has been upgraded from version 1.01 to 1.02.
1492
1493       •   I18N::Langinfo has been upgraded from version 0.03 to 0.08.
1494
1495           langinfo() now defaults to using $_ if there is no argument given,
1496           just as the documentation has always claimed.
1497
1498       •   I18N::LangTags has been upgraded from version 0.35 to 0.35_01.
1499
1500       •   if has been upgraded from version 0.05 to 0.0601.
1501
1502       •   IO has been upgraded from version 1.25_02 to 1.25_04.
1503
1504           This version of IO includes a new IO::Select, which now allows
1505           IO::Handle objects (and objects in derived classes) to be removed
1506           from an IO::Select set even if the underlying file descriptor is
1507           closed or invalid.
1508
1509       •   IPC::Cmd has been upgraded from version 0.54 to 0.70.
1510
1511           Resolves an issue with splitting Win32 command lines.  An argument
1512           consisting of the single character "0" used to be omitted (CPAN RT
1513           #62961).
1514
1515       •   IPC::Open3 has been upgraded from 1.05 to 1.09.
1516
1517           open3() now produces an error if the "exec" call fails, allowing
1518           this condition to be distinguished from a child process that exited
1519           with a non-zero status [perl #72016].
1520
1521           The internal xclose() routine now knows how to handle file
1522           descriptors as documented, so duplicating "STDIN" in a child
1523           process using its file descriptor now works [perl #76474].
1524
1525       •   IPC::SysV has been upgraded from version 2.01 to 2.03.
1526
1527       •   lib has been upgraded from version 0.62 to 0.63.
1528
1529       •   Locale::Maketext has been upgraded from version 1.14 to 1.19.
1530
1531           Locale::Maketext now supports external caches.
1532
1533           This upgrade also fixes an infinite loop in
1534           Locale::Maketext::Guts::_compile() when working with tainted values
1535           (CPAN RT #40727).
1536
1537           "->maketext" calls now back up and restore $@ so error messages are
1538           not suppressed (CPAN RT #34182).
1539
1540       •   Log::Message has been upgraded from version 0.02 to 0.04.
1541
1542       •   Log::Message::Simple has been upgraded from version 0.06 to 0.08.
1543
1544       •   Math::BigInt has been upgraded from version 1.89_01 to 1.994.
1545
1546           This fixes, among other things, incorrect results when computing
1547           binomial coefficients [perl #77640].
1548
1549           It also prevents sqrt($int) from crashing under "use bigrat".
1550           [perl #73534].
1551
1552       •   Math::BigInt::FastCalc has been upgraded from version 0.19 to 0.28.
1553
1554       •   Math::BigRat has been upgraded from version 0.24 to 0.26_02.
1555
1556       •   Memoize has been upgraded from version 1.01_03 to 1.02.
1557
1558       •   MIME::Base64 has been upgraded from 3.08 to 3.13.
1559
1560           Includes new functions to calculate the length of encoded and
1561           decoded base64 strings.
1562
1563           Now provides encode_base64url() and decode_base64url() functions to
1564           process the base64 scheme for "URL applications".
1565
1566       •   Module::Build has been upgraded from version 0.3603 to 0.3800.
1567
1568           A notable change is the deprecation of several modules.
1569           Module::Build::Version has been deprecated and Module::Build now
1570           relies on the version pragma directly.  Module::Build::ModuleInfo
1571           has been deprecated in favor of a standalone copy called
1572           Module::Metadata.  Module::Build::YAML has been deprecated in favor
1573           of CPAN::Meta::YAML.
1574
1575           Module::Build now also generates META.json and MYMETA.json files in
1576           accordance with version 2 of the CPAN distribution metadata
1577           specification, CPAN::Meta::Spec.  The older format META.yml and
1578           MYMETA.yml files are still generated.
1579
1580       •   Module::CoreList has been upgraded from version 2.29 to 2.47.
1581
1582           Besides listing the updated core modules of this release, it also
1583           stops listing the "Filespec" module.  That module never existed in
1584           core.  The scripts generating Module::CoreList confused it with
1585           VMS::Filespec, which actually is a core module as of Perl 5.8.7.
1586
1587       •   Module::Load has been upgraded from version 0.16 to 0.18.
1588
1589       •   Module::Load::Conditional has been upgraded from version 0.34 to
1590           0.44.
1591
1592       •   The mro pragma has been upgraded from version 1.02 to 1.07.
1593
1594       •   NDBM_File has been upgraded from version 1.08 to 1.12.
1595
1596           This fixes a memory leak when DBM filters are used.
1597
1598       •   Net::Ping has been upgraded from version 2.36 to 2.38.
1599
1600       •   NEXT has been upgraded from version 0.64 to 0.65.
1601
1602       •   Object::Accessor has been upgraded from version 0.36 to 0.38.
1603
1604       •   ODBM_File has been upgraded from version 1.07 to 1.10.
1605
1606           This fixes a memory leak when DBM filters are used.
1607
1608       •   Opcode has been upgraded from version 1.15 to 1.18.
1609
1610       •   The overload pragma has been upgraded from 1.10 to 1.13.
1611
1612           "overload::Method" can now handle subroutines that are themselves
1613           blessed into overloaded classes [perl #71998].
1614
1615           The documentation has greatly improved.  See "Documentation" below.
1616
1617       •   Params::Check has been upgraded from version 0.26 to 0.28.
1618
1619       •   The parent pragma has been upgraded from version 0.223 to 0.225.
1620
1621       •   Parse::CPAN::Meta has been upgraded from version 1.40 to 1.4401.
1622
1623           The latest Parse::CPAN::Meta can now read YAML and JSON files using
1624           CPAN::Meta::YAML and JSON::PP, which are now part of the Perl core.
1625
1626       •   PerlIO::encoding has been upgraded from version 0.12 to 0.14.
1627
1628       •   PerlIO::scalar has been upgraded from 0.07 to 0.11.
1629
1630           A read() after a seek() beyond the end of the string no longer
1631           thinks it has data to read [perl #78716].
1632
1633       •   PerlIO::via has been upgraded from version 0.09 to 0.11.
1634
1635       •   Pod::Html has been upgraded from version 1.09 to 1.11.
1636
1637       •   Pod::LaTeX has been upgraded from version 0.58 to 0.59.
1638
1639       •   Pod::Perldoc has been upgraded from version 3.15_02 to 3.15_03.
1640
1641       •   Pod::Simple has been upgraded from version 3.13 to 3.16.
1642
1643       •   POSIX has been upgraded from 1.19 to 1.24.
1644
1645           It now includes constants for POSIX signal constants.
1646
1647       •   The re pragma has been upgraded from version 0.11 to 0.18.
1648
1649           The "use re '/flags'" subpragma is new.
1650
1651           The regmust() function used to crash when called on a regular
1652           expression belonging to a pluggable engine.  Now it croaks instead.
1653
1654           regmust() no longer leaks memory.
1655
1656       •   Safe has been upgraded from version 2.25 to 2.29.
1657
1658           Coderefs returned by reval() and rdo() are now wrapped via
1659           wrap_code_refs() (5.12.1).
1660
1661           This fixes a possible infinite loop when looking for coderefs.
1662
1663           It adds several "version::vxs::*" routines to the default share.
1664
1665       •   SDBM_File has been upgraded from version 1.06 to 1.09.
1666
1667       •   SelfLoader has been upgraded from 1.17 to 1.18.
1668
1669           It now works in taint mode [perl #72062].
1670
1671       •   The sigtrap pragma has been upgraded from version 1.04 to 1.05.
1672
1673           It no longer tries to modify read-only arguments when generating a
1674           backtrace [perl #72340].
1675
1676       •   Socket has been upgraded from version 1.87 to 1.94.
1677
1678           See "Improved IPv6 support" above.
1679
1680       •   Storable has been upgraded from version 2.22 to 2.27.
1681
1682           Includes performance improvement for overloaded classes.
1683
1684           This adds support for serialising code references that contain
1685           UTF-8 strings correctly.  The Storable minor version number changed
1686           as a result, meaning that Storable users who set
1687           $Storable::accept_future_minor to a "FALSE" value will see errors
1688           (see "FORWARD COMPATIBILITY" in Storable for more details).
1689
1690           Freezing no longer gets confused if the Perl stack gets reallocated
1691           during freezing [perl #80074].
1692
1693       •   Sys::Hostname has been upgraded from version 1.11 to 1.16.
1694
1695       •   Term::ANSIColor has been upgraded from version 2.02 to 3.00.
1696
1697       •   Term::UI has been upgraded from version 0.20 to 0.26.
1698
1699       •   Test::Harness has been upgraded from version 3.17 to 3.23.
1700
1701       •   Test::Simple has been upgraded from version 0.94 to 0.98.
1702
1703           Among many other things, subtests without a "plan" or "no_plan" now
1704           have an implicit done_testing() added to them.
1705
1706       •   Thread::Semaphore has been upgraded from version 2.09 to 2.12.
1707
1708           It provides two new methods that give more control over the
1709           decrementing of semaphores: "down_nb" and "down_force".
1710
1711       •   Thread::Queue has been upgraded from version 2.11 to 2.12.
1712
1713       •   The threads pragma has been upgraded from version 1.75 to 1.83.
1714
1715       •   The threads::shared pragma has been upgraded from version 1.32 to
1716           1.37.
1717
1718       •   Tie::Hash has been upgraded from version 1.03 to 1.04.
1719
1720           Calling "Tie::Hash->TIEHASH()" used to loop forever.  Now it
1721           "croak"s.
1722
1723       •   Tie::Hash::NamedCapture has been upgraded from version 0.06 to
1724           0.08.
1725
1726       •   Tie::RefHash has been upgraded from version 1.38 to 1.39.
1727
1728       •   Time::HiRes has been upgraded from version 1.9719 to 1.9721_01.
1729
1730       •   Time::Local has been upgraded from version 1.1901_01 to 1.2000.
1731
1732       •   Time::Piece has been upgraded from version 1.15_01 to 1.20_01.
1733
1734       •   Unicode::Collate has been upgraded from version 0.52_01 to 0.73.
1735
1736           Unicode::Collate has been updated to use Unicode 6.0.0.
1737
1738           Unicode::Collate::Locale now supports a plethora of new locales:
1739           ar, be, bg, de__phonebook, hu, hy, kk, mk, nso, om, tn, vi, hr, ig,
1740           ja, ko, ru, sq, se, sr, to, uk, zh, zh__big5han, zh__gb2312han,
1741           zh__pinyin, and zh__stroke.
1742
1743           The following modules have been added:
1744
1745           Unicode::Collate::CJK::Big5 for "zh__big5han" which makes tailoring
1746           of CJK Unified Ideographs in the order of CLDR's big5han ordering.
1747
1748           Unicode::Collate::CJK::GB2312 for "zh__gb2312han" which makes
1749           tailoring of CJK Unified Ideographs in the order of CLDR's
1750           gb2312han ordering.
1751
1752           Unicode::Collate::CJK::JISX0208 which makes tailoring of 6355 kanji
1753           (CJK Unified Ideographs) in the JIS X 0208 order.
1754
1755           Unicode::Collate::CJK::Korean which makes tailoring of CJK Unified
1756           Ideographs in the order of CLDR's Korean ordering.
1757
1758           Unicode::Collate::CJK::Pinyin for "zh__pinyin" which makes
1759           tailoring of CJK Unified Ideographs in the order of CLDR's pinyin
1760           ordering.
1761
1762           Unicode::Collate::CJK::Stroke for "zh__stroke" which makes
1763           tailoring of CJK Unified Ideographs in the order of CLDR's stroke
1764           ordering.
1765
1766           This also sees the switch from using the pure-Perl version of this
1767           module to the XS version.
1768
1769       •   Unicode::Normalize has been upgraded from version 1.03 to 1.10.
1770
1771       •   Unicode::UCD has been upgraded from version 0.27 to 0.32.
1772
1773           A new function, Unicode::UCD::num(), has been added.  This function
1774           returns the numeric value of the string passed it or "undef" if the
1775           string in its entirety has no "safe" numeric value.  (For more
1776           detail, and for the definition of "safe", see "num()" in
1777           Unicode::UCD.)
1778
1779           This upgrade also includes several bug fixes:
1780
1781           charinfo()
1782               •   It is now updated to Unicode Version 6.0.0 with Corrigendum
1783                   #8, excepting that, just as with Perl 5.14, the code point
1784                   at U+1F514 has no name.
1785
1786               •   Hangul syllable code points have the correct names, and
1787                   their decompositions are always output without requiring
1788                   Lingua::KO::Hangul::Util to be installed.
1789
1790               •   CJK (Chinese-Japanese-Korean) code points U+2A700 to
1791                   U+2B734 and U+2B740 to U+2B81D are now properly handled.
1792
1793               •   Numeric values are now output for those CJK code points
1794                   that have them.
1795
1796               •   Names output for code points with multiple aliases are now
1797                   the corrected ones.
1798
1799           charscript()
1800               This now correctly returns "Unknown" instead of "undef" for the
1801               script of a code point that hasn't been assigned another one.
1802
1803           charblock()
1804               This now correctly returns "No_Block" instead of "undef" for
1805               the block of a code point that hasn't been assigned to another
1806               one.
1807
1808       •   The version pragma has been upgraded from 0.82 to 0.88.
1809
1810           Because of a bug, now fixed, the is_strict() and is_lax() functions
1811           did not work when exported (5.12.1).
1812
1813       •   The warnings pragma has been upgraded from version 1.09 to 1.12.
1814
1815           Calling "use warnings" without arguments is now significantly more
1816           efficient.
1817
1818       •   The warnings::register pragma has been upgraded from version 1.01
1819           to 1.02.
1820
1821           It is now possible to register warning categories other than the
1822           names of packages using warnings::register.  See perllexwarn(1) for
1823           more information.
1824
1825       •   XSLoader has been upgraded from version 0.10 to 0.13.
1826
1827       •   VMS::DCLsym has been upgraded from version 1.03 to 1.05.
1828
1829           Two bugs have been fixed [perl #84086]:
1830
1831           The symbol table name was lost when tying a hash, due to a thinko
1832           in "TIEHASH".  The result was that all tied hashes interacted with
1833           the local symbol table.
1834
1835           Unless a symbol table name had been explicitly specified in the
1836           call to the constructor, querying the special key ":LOCAL" failed
1837           to identify objects connected to the local symbol table.
1838
1839       •   The Win32 module has been upgraded from version 0.39 to 0.44.
1840
1841           This release has several new functions: Win32::GetSystemMetrics(),
1842           Win32::GetProductInfo(), Win32::GetOSDisplayName().
1843
1844           The names returned by Win32::GetOSName() and
1845           Win32::GetOSDisplayName() have been corrected.
1846
1847       •   XS::Typemap has been upgraded from version 0.03 to 0.05.
1848
1849   Removed Modules and Pragmata
1850       As promised in Perl 5.12.0's release notes, the following modules have
1851       been removed from the core distribution, and if needed should be
1852       installed from CPAN instead.
1853
1854       •   Class::ISA has been removed from the Perl core.  Prior version was
1855           0.36.
1856
1857       •   Pod::Plainer has been removed from the Perl core.  Prior version
1858           was 1.02.
1859
1860       •   Switch has been removed from the Perl core.  Prior version was
1861           2.16.
1862
1863       The removal of Shell has been deferred until after 5.14, as the
1864       implementation of Shell shipped with 5.12.0 did not correctly issue the
1865       warning that it was to be removed from core.
1866

Documentation

1868   New Documentation
1869       perlgpl
1870
1871       perlgpl has been updated to contain GPL version 1, as is included in
1872       the README distributed with Perl (5.12.1).
1873
1874       Perl 5.12.x delta files
1875
1876       The perldelta files for Perl 5.12.1 to 5.12.3 have been added from the
1877       maintenance branch: perl5121delta, perl5122delta, perl5123delta.
1878
1879       perlpodstyle
1880
1881       New style guide for POD documentation, split mostly from the NOTES
1882       section of the pod2man(1) manpage.
1883
1884       perlsource, perlinterp, perlhacktut, and perlhacktips
1885
1886       See "perlhack and perlrepository revamp", below.
1887
1888   Changes to Existing Documentation
1889       perlmodlib is now complete
1890
1891       The perlmodlib manpage that came with Perl 5.12.0 was missing several
1892       modules due to a bug in the script that generates the list.  This has
1893       been fixed [perl #74332] (5.12.1).
1894
1895       Replace incorrect tr/// table in perlebcdic
1896
1897       perlebcdic contains a helpful table to use in "tr///" to convert
1898       between EBCDIC and Latin1/ASCII.  The table was the inverse of the one
1899       it describes, though the code that used the table worked correctly for
1900       the specific example given.
1901
1902       The table has been corrected and the sample code changed to correspond.
1903
1904       The table has also been changed to hex from octal, and the recipes in
1905       the pod have been altered to print out leading zeros to make all values
1906       the same length.
1907
1908       Tricks for user-defined casing
1909
1910       perlunicode now contains an explanation of how to override, mangle and
1911       otherwise tweak the way Perl handles upper-, lower- and other-case
1912       conversions on Unicode data, and how to provide scoped changes to alter
1913       one's own code's behaviour without stomping on anybody else's.
1914
1915       INSTALL explicitly states that Perl requires a C89 compiler
1916
1917       This was already true, but it's now Officially Stated For The Record
1918       (5.12.2).
1919
1920       Explanation of "\xHH" and "\oOOO" escapes
1921
1922       perlop has been updated with more detailed explanation of these two
1923       character escapes.
1924
1925       -0NNN switch
1926
1927       In perlrun, the behaviour of the -0NNN switch for -0400 or higher has
1928       been clarified (5.12.2).
1929
1930       Maintenance policy
1931
1932       perlpolicy now contains the policy on what patches are acceptable for
1933       maintenance branches (5.12.1).
1934
1935       Deprecation policy
1936
1937       perlpolicy now contains the policy on compatibility and deprecation
1938       along with definitions of terms like "deprecation" (5.12.2).
1939
1940       New descriptions in perldiag
1941
1942       The following existing diagnostics are now documented:
1943
1944       •   Ambiguous use of %c resolved as operator %c
1945
1946       •   Ambiguous use of %c{%s} resolved to %c%s
1947
1948       •   Ambiguous use of %c{%s[...]} resolved to %c%s[...]
1949
1950       •   Ambiguous use of %c{%s{...}} resolved to %c%s{...}
1951
1952       •   Ambiguous use of -%s resolved as -&%s()
1953
1954       •   Invalid strict version format (%s)
1955
1956       •   Invalid version format (%s)
1957
1958       •   Invalid version object
1959
1960       perlbook
1961
1962       perlbook has been expanded to cover many more popular books.
1963
1964       "SvTRUE" macro
1965
1966       The documentation for the "SvTRUE" macro in perlapi was simply wrong in
1967       stating that get-magic is not processed.  It has been corrected.
1968
1969       op manipulation functions
1970
1971       Several API functions that process optrees have been newly documented.
1972
1973       perlvar revamp
1974
1975       perlvar reorders the variables and groups them by topic.  Each variable
1976       introduced after Perl 5.000 notes the first version in which it is
1977       available.  perlvar also has a new section for deprecated variables to
1978       note when they were removed.
1979
1980       Array and hash slices in scalar context
1981
1982       These are now documented in perldata.
1983
1984       "use locale" and formats
1985
1986       perlform and perllocale have been corrected to state that "use locale"
1987       affects formats.
1988
1989       overload
1990
1991       overload's documentation has practically undergone a rewrite.  It is
1992       now much more straightforward and clear.
1993
1994       perlhack and perlrepository revamp
1995
1996       The perlhack document is now much shorter, and focuses on the Perl 5
1997       development process and submitting patches to Perl.  The technical
1998       content has been moved to several new documents, perlsource,
1999       perlinterp, perlhacktut, and perlhacktips.  This technical content has
2000       been only lightly edited.
2001
2002       The perlrepository document has been renamed to perlgit.  This new
2003       document is just a how-to on using git with the Perl source code.  Any
2004       other content that used to be in perlrepository has been moved to
2005       perlhack.
2006
2007       Time::Piece examples
2008
2009       Examples in perlfaq4 have been updated to show the use of Time::Piece.
2010

Diagnostics

2012       The following additions or changes have been made to diagnostic output,
2013       including warnings and fatal error messages.  For the complete list of
2014       diagnostic messages, see perldiag.
2015
2016   New Diagnostics
2017       New Errors
2018
2019       Closure prototype called
2020           This error occurs when a subroutine reference passed to an
2021           attribute handler is called, if the subroutine is a closure [perl
2022           #68560].
2023
2024       Insecure user-defined property %s
2025           Perl detected tainted data when trying to compile a regular
2026           expression that contains a call to a user-defined character
2027           property function, meaning "\p{IsFoo}" or "\p{InFoo}".  See "User-
2028           Defined Character Properties" in perlunicode and perlsec.
2029
2030       panic: gp_free failed to free glob pointer - something is repeatedly
2031       re-creating entries
2032           This new error is triggered if a destructor called on an object in
2033           a typeglob that is being freed creates a new typeglob entry
2034           containing an object with a destructor that creates a new entry
2035           containing an object etc.
2036
2037       Parsing code internal error (%s)
2038           This new fatal error is produced when parsing code supplied by an
2039           extension violates the parser's API in a detectable way.
2040
2041       refcnt: fd %d%s
2042           This new error only occurs if an internal consistency check fails
2043           when a pipe is about to be closed.
2044
2045       Regexp modifier "/%c" may not appear twice
2046           The regular expression pattern has one of the mutually exclusive
2047           modifiers repeated.
2048
2049       Regexp modifiers "/%c" and "/%c" are mutually exclusive
2050           The regular expression pattern has more than one of the mutually
2051           exclusive modifiers.
2052
2053       Using !~ with %s doesn't make sense
2054           This error occurs when "!~" is used with "s///r" or "y///r".
2055
2056       New Warnings
2057
2058       "\b{" is deprecated; use "\b\{" instead
2059       "\B{" is deprecated; use "\B\{" instead
2060           Use of an unescaped "{" immediately following a "\b" or "\B" is now
2061           deprecated in order to reserve its use for Perl itself in a future
2062           release.
2063
2064       Operation "%s" returns its argument for ...
2065           Performing an operation requiring Unicode semantics (such as case-
2066           folding) on a Unicode surrogate or a non-Unicode character now
2067           triggers this warning.
2068
2069       Use of qw(...) as parentheses is deprecated
2070           See "Use of qw(...) as parentheses", above, for details.
2071
2072   Changes to Existing Diagnostics
2073       •   The "Variable $foo is not imported" warning that precedes a "strict
2074           'vars'" error has now been assigned the "misc" category, so that
2075           "no warnings" will suppress it [perl #73712].
2076
2077warn() and die() now produce "Wide character" warnings when fed a
2078           character outside the byte range if "STDERR" is a byte-sized
2079           handle.
2080
2081       •   The "Layer does not match this perl" error message has been
2082           replaced with these more helpful messages [perl #73754]:
2083
2084           •   PerlIO layer function table size (%d) does not match size
2085               expected by this perl (%d)
2086
2087           •   PerlIO layer instance size (%d) does not match size expected by
2088               this perl (%d)
2089
2090       •   The "Found = in conditional" warning that is emitted when a
2091           constant is assigned to a variable in a condition is now withheld
2092           if the constant is actually a subroutine or one generated by "use
2093           constant", since the value of the constant may not be known at the
2094           time the program is written [perl #77762].
2095
2096       •   Previously, if none of the gethostbyaddr(), gethostbyname() and
2097           gethostent() functions were implemented on a given platform, they
2098           would all die with the message "Unsupported socket function
2099           'gethostent' called", with analogous messages for getnet*() and
2100           getserv*().  This has been corrected.
2101
2102       •   The warning message about unrecognized regular expression escapes
2103           passed through has been changed to include any literal "{"
2104           following the two-character escape.  For example, "\q{" is now
2105           emitted instead of "\q".
2106

Utility Changes

2108       perlbug(1)
2109
2110       •   perlbug now looks in the EMAIL environment variable for a return
2111           address if the REPLY-TO and REPLYTO variables are empty.
2112
2113       •   perlbug did not previously generate a "From:" header, potentially
2114           resulting in dropped mail; it now includes that header.
2115
2116       •   The user's address is now used as the Return-Path.
2117
2118           Many systems these days don't have a valid Internet domain name,
2119           and perlbug@perl.org does not accept email with a return-path that
2120           does not resolve.  So the user's address is now passed to sendmail
2121           so it's less likely to get stuck in a mail queue somewhere [perl
2122           #82996].
2123
2124       •   perlbug now always gives the reporter a chance to change the email
2125           address it guesses for them (5.12.2).
2126
2127       •   perlbug should no longer warn about uninitialized values when using
2128           the -d and -v options (5.12.2).
2129
2130       perl5db.pl
2131
2132       •   The remote terminal works after forking and spawns new sessions,
2133           one per forked process.
2134
2135       ptargrep
2136
2137       •   ptargrep is a new utility to apply pattern matching to the contents
2138           of files  in a tar archive.  It comes with "Archive::Tar".
2139

Configuration and Compilation

2141       See also "Naming fixes in Policy_sh.SH may invalidate Policy.sh",
2142       above.
2143
2144       •   CCINCDIR and CCLIBDIR for the mingw64 cross-compiler are now
2145           correctly under $(CCHOME)\mingw\include and \lib rather than
2146           immediately below $(CCHOME).
2147
2148           This means the "incpath", "libpth", "ldflags", "lddlflags" and
2149           "ldflags_nolargefiles" values in Config.pm and Config_heavy.pl are
2150           now set correctly.
2151
2152       •   "make test.valgrind" has been adjusted to account for cpan/dist/ext
2153           separation.
2154
2155       •   On compilers that support it, -Wwrite-strings is now added to
2156           cflags by default.
2157
2158       •   The Encode module can now (once again) be included in a static Perl
2159           build.  The special-case handling for this situation got broken in
2160           Perl 5.11.0, and has now been repaired.
2161
2162       •   The previous default size of a PerlIO buffer (4096 bytes) has been
2163           increased to the larger of 8192 bytes and your local BUFSIZ.
2164           Benchmarks show that doubling this decade-old default increases
2165           read and write performance by around 25% to 50% when using the
2166           default layers of perlio on top of unix.  To choose a non-default
2167           size, such as to get back the old value or to obtain an even larger
2168           value, configure with:
2169
2170                ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
2171
2172           where N is the desired size in bytes; it should probably be a
2173           multiple of your page size.
2174
2175       •   An "incompatible operand types" error in ternary expressions when
2176           building with "clang" has been fixed (5.12.2).
2177
2178       •   Perl now skips setuid File::Copy tests on partitions it detects
2179           mounted as "nosuid" (5.12.2).
2180

Platform Support

2182   New Platforms
2183       AIX Perl now builds on AIX 4.2 (5.12.1).
2184
2185   Discontinued Platforms
2186       Apollo DomainOS
2187           The last vestiges of support for this platform have been excised
2188           from the Perl distribution.  It was officially discontinued in
2189           version 5.12.0.  It had not worked for years before that.
2190
2191       MacOS Classic
2192           The last vestiges of support for this platform have been excised
2193           from the Perl distribution.  It was officially discontinued in an
2194           earlier version.
2195
2196   Platform-Specific Notes
2197       AIX
2198
2199README.aix has been updated with information about the XL C/C++ V11
2200           compiler suite (5.12.2).
2201
2202       ARM
2203
2204       •   The "d_u32align" configuration probe on ARM has been fixed
2205           (5.12.2).
2206
2207       Cygwin
2208
2209       •   MakeMaker has been updated to build manpages on cygwin.
2210
2211       •   Improved rebase behaviour
2212
2213           If a DLL is updated on cygwin the old imagebase address is reused.
2214           This solves most rebase errors, especially when updating on core
2215           DLL's.  See
2216           <http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README>
2217           for more information.
2218
2219       •   Support for the standard cygwin dll prefix (needed for FFIs)
2220
2221       •   Updated build hints file
2222
2223       FreeBSD 7
2224
2225       •   FreeBSD 7 no longer contains /usr/bin/objformat.  At build time,
2226           Perl now skips the objformat check for versions 7 and higher and
2227           assumes ELF (5.12.1).
2228
2229       HP-UX
2230
2231       •   Perl now allows -Duse64bitint without promoting to "use64bitall" on
2232           HP-UX (5.12.1).
2233
2234       IRIX
2235
2236       •   Conversion of strings to floating-point numbers is now more
2237           accurate on IRIX systems [perl #32380].
2238
2239       Mac OS X
2240
2241       •   Early versions of Mac OS X (Darwin) had buggy implementations of
2242           the setregid(), setreuid(), setrgid(,) and setruid() functions, so
2243           Perl would pretend they did not exist.
2244
2245           These functions are now recognised on Mac OS 10.5 (Leopard; Darwin
2246           9) and higher, as they have been fixed [perl #72990].
2247
2248       MirBSD
2249
2250       •   Previously if you built Perl with a shared libperl.so on MirBSD
2251           (the default config), it would work up to the installation;
2252           however, once installed, it would be unable to find libperl.  Path
2253           handling is now treated as in the other BSD dialects.
2254
2255       NetBSD
2256
2257       •   The NetBSD hints file has been changed to make the system malloc
2258           the default.
2259
2260       OpenBSD
2261
2262       •   OpenBSD > 3.7 has a new malloc implementation which is mmap-based,
2263           and as such can release memory back to the OS; however, Perl's use
2264           of this malloc causes a substantial slowdown, so we now default to
2265           using Perl's malloc instead [perl #75742].
2266
2267       OpenVOS
2268
2269       •   Perl now builds again with OpenVOS (formerly known as Stratus VOS)
2270           [perl #78132] (5.12.3).
2271
2272       Solaris
2273
2274       •   DTrace is now supported on Solaris.  There used to be build
2275           failures, but these have been fixed [perl #73630] (5.12.3).
2276
2277       VMS
2278
2279       •   Extension building on older (pre 7.3-2) VMS systems was broken
2280           because configure.com hit the DCL symbol length limit of 1K.  We
2281           now work within this limit when assembling the list of extensions
2282           in the core build (5.12.1).
2283
2284       •   We fixed configuring and building Perl with -Uuseperlio (5.12.1).
2285
2286       •   "PerlIOUnix_open" now honours the default permissions on VMS.
2287
2288           When "perlio" became the default and "unix" became the default
2289           bottom layer, the most common path for creating files from Perl
2290           became "PerlIOUnix_open", which has always explicitly used 0666 as
2291           the permission mask.  This prevents inheriting permissions from RMS
2292           defaults and ACLs, so to avoid that problem, we now pass 0777 to
2293           open().  In the VMS CRTL, 0777 has a special meaning over and above
2294           intersecting with the current umask; specifically, it allows Unix
2295           syscalls to preserve native default permissions (5.12.3).
2296
2297       •   The shortening of symbols longer than 31 characters in the core C
2298           sources and in extensions is now by default done by the C compiler
2299           rather than by xsubpp (which could only do so for generated symbols
2300           in XS code).  You can reenable xsubpp's symbol shortening by
2301           configuring with -Uuseshortenedsymbols, but you'll have some work
2302           to do to get the core sources to compile.
2303
2304       •   Record-oriented files (record format variable or variable with
2305           fixed control) opened for write by the "perlio" layer will now be
2306           line-buffered to prevent the introduction of spurious line breaks
2307           whenever the perlio buffer fills up.
2308
2309git_version.h is now installed on VMS.  This was an oversight in
2310           v5.12.0 which caused some extensions to fail to build (5.12.2).
2311
2312       •   Several memory leaks in stat() have been fixed (5.12.2).
2313
2314       •   A memory leak in Perl_rename() due to a double allocation has been
2315           fixed (5.12.2).
2316
2317       •   A memory leak in vms_fid_to_name() (used by realpath() and
2318           realname()> has been fixed (5.12.2).
2319
2320       Windows
2321
2322       See also "fork() emulation will not wait for signalled children" and
2323       "Perl source code is read in text mode on Windows", above.
2324
2325       •   Fixed build process for SDK2003SP1 compilers.
2326
2327       •   Compilation with Visual Studio 2010 is now supported.
2328
2329       •   When using old 32-bit compilers, the define "_USE_32BIT_TIME_T" is
2330           now set in $Config{ccflags}.  This improves portability when
2331           compiling XS extensions using new compilers, but for a Perl
2332           compiled with old 32-bit compilers.
2333
2334       •   $Config{gccversion} is now set correctly when Perl is built using
2335           the mingw64 compiler from <http://mingw64.org> [perl #73754].
2336
2337       •   When building Perl with the mingw64 x64 cross-compiler "incpath",
2338           "libpth", "ldflags", "lddlflags" and "ldflags_nolargefiles" values
2339           in Config.pm and Config_heavy.pl were not previously being set
2340           correctly because, with that compiler, the include and lib
2341           directories are not immediately below "$(CCHOME)" (5.12.2).
2342
2343       •   The build process proceeds more smoothly with mingw and dmake when
2344           C:\MSYS\bin is in the PATH, due to a "Cwd" fix.
2345
2346       •   Support for building with Visual C++ 2010 is now underway, but is
2347           not yet complete.  See README.win32 or perlwin32 for more details.
2348
2349       •   The option to use an externally-supplied crypt(), or to build with
2350           no crypt() at all, has been removed.  Perl supplies its own crypt()
2351           implementation for Windows, and the political situation that
2352           required this part of the distribution to sometimes be omitted is
2353           long gone.
2354

Internal Changes

2356   New APIs
2357       CLONE_PARAMS structure added to ease correct thread creation
2358
2359       Modules that create threads should now create "CLONE_PARAMS" structures
2360       by calling the new function Perl_clone_params_new(), and free them with
2361       Perl_clone_params_del().  This will ensure compatibility with any
2362       future changes to the internals of the "CLONE_PARAMS" structure layout,
2363       and that it is correctly allocated and initialised.
2364
2365       New parsing functions
2366
2367       Several functions have been added for parsing Perl statements and
2368       expressions.  These functions are meant to be used by XS code invoked
2369       during Perl parsing, in a recursive-descent manner, to allow modules to
2370       augment the standard Perl syntax.
2371
2372parse_stmtseq() parses a sequence of statements, up to closing
2373           brace or EOF.
2374
2375parse_fullstmt() parses a complete Perl statement, including
2376           optional label.
2377
2378parse_barestmt() parses a statement without a label.
2379
2380parse_block() parses a code block.
2381
2382parse_label() parses a statement label, separate from statements.
2383
2384       •   parse_fullexpr(), parse_listexpr(), parse_termexpr(), and
2385           parse_arithexpr() parse expressions at various precedence levels.
2386
2387       Hints hash API
2388
2389       A new C API for introspecting the hinthash "%^H" at runtime has been
2390       added.  See "cop_hints_2hv", "cop_hints_fetchpvn",
2391       "cop_hints_fetchpvs", "cop_hints_fetchsv", and "hv_copy_hints_hv" in
2392       perlapi for details.
2393
2394       A new, experimental API has been added for accessing the internal
2395       structure that Perl uses for "%^H".  See the functions beginning with
2396       "cophh_" in perlapi.
2397
2398       C interface to caller()
2399
2400       The "caller_cx" function has been added as an XSUB-writer's equivalent
2401       of caller().  See perlapi for details.
2402
2403       Custom per-subroutine check hooks
2404
2405       XS code in an extension module can now annotate a subroutine (whether
2406       implemented in XS or in Perl) so that nominated XS code will be called
2407       at compile time (specifically as part of op checking) to change the op
2408       tree of that subroutine.  The compile-time check function (supplied by
2409       the extension module) can implement argument processing that can't be
2410       expressed as a prototype, generate customised compile-time warnings,
2411       perform constant folding for a pure function, inline a subroutine
2412       consisting of sufficiently simple ops, replace the whole call with a
2413       custom op, and so on.  This was previously all possible by hooking the
2414       "entersub" op checker, but the new mechanism makes it easy to tie the
2415       hook to a specific subroutine.  See "cv_set_call_checker" in perlapi.
2416
2417       To help in writing custom check hooks, several subtasks within standard
2418       "entersub" op checking have been separated out and exposed in the API.
2419
2420       Improved support for custom OPs
2421
2422       Custom ops can now be registered with the new "custom_op_register" C
2423       function and the "XOP" structure.  This will make it easier to add new
2424       properties of custom ops in the future.  Two new properties have been
2425       added already, "xop_class" and "xop_peep".
2426
2427       "xop_class" is one of the OA_*OP constants.  It allows B and other
2428       introspection mechanisms to work with custom ops that aren't BASEOPs.
2429       "xop_peep" is a pointer to a function that will be called for ops of
2430       this type from "Perl_rpeep".
2431
2432       See "Custom Operators" in perlguts and "Custom Operators" in perlapi
2433       for more detail.
2434
2435       The old "PL_custom_op_names"/"PL_custom_op_descs" interface is still
2436       supported but discouraged.
2437
2438       Scope hooks
2439
2440       It is now possible for XS code to hook into Perl's lexical scope
2441       mechanism at compile time, using the new "Perl_blockhook_register"
2442       function.  See "Compile-time scope hooks" in perlguts.
2443
2444       The recursive part of the peephole optimizer is now hookable
2445
2446       In addition to "PL_peepp", for hooking into the toplevel peephole
2447       optimizer, a "PL_rpeepp" is now available to hook into the optimizer
2448       recursing into side-chains of the optree.
2449
2450       New non-magical variants of existing functions
2451
2452       The following functions/macros have been added to the API.  The *_nomg
2453       macros are equivalent to their non-"_nomg" variants, except that they
2454       ignore get-magic.  Those ending in "_flags" allow one to specify
2455       whether get-magic is processed.
2456
2457         sv_2bool_flags
2458         SvTRUE_nomg
2459         sv_2nv_flags
2460         SvNV_nomg
2461         sv_cmp_flags
2462         sv_cmp_locale_flags
2463         sv_eq_flags
2464         sv_collxfrm_flags
2465
2466       In some of these cases, the non-"_flags" functions have been replaced
2467       with wrappers around the new functions.
2468
2469       pv/pvs/sv versions of existing functions
2470
2471       Many functions ending with pvn now have equivalent "pv/pvs/sv"
2472       versions.
2473
2474       List op-building functions
2475
2476       List op-building functions have been added to the API.  See
2477       op_append_elem, op_append_list, and op_prepend_elem in perlapi.
2478
2479       "LINKLIST"
2480
2481       The LINKLIST macro, part of op building that constructs the execution-
2482       order op chain, has been added to the API.
2483
2484       Localisation functions
2485
2486       The "save_freeop", "save_op", "save_pushi32ptr" and "save_pushptrptr"
2487       functions have been added to the API.
2488
2489       Stash names
2490
2491       A stash can now have a list of effective names in addition to its usual
2492       name.  The first effective name can be accessed via the "HvENAME"
2493       macro, which is now the recommended name to use in MRO linearisations
2494       ("HvNAME" being a fallback if there is no "HvENAME").
2495
2496       These names are added and deleted via "hv_ename_add" and
2497       "hv_ename_delete".  These two functions are not part of the API.
2498
2499       New functions for finding and removing magic
2500
2501       The mg_findext() and sv_unmagicext() functions have been added to the
2502       API.  They allow extension authors to find and remove magic attached to
2503       scalars based on both the magic type and the magic virtual table,
2504       similar to how sv_magicext() attaches magic of a certain type and with
2505       a given virtual table to a scalar.  This eliminates the need for
2506       extensions to walk the list of "MAGIC" pointers of an "SV" to find the
2507       magic that belongs to them.
2508
2509       "find_rundefsv"
2510
2511       This function returns the SV representing $_, whether it's lexical or
2512       dynamic.
2513
2514       "Perl_croak_no_modify"
2515
2516       Perl_croak_no_modify() is short-hand for "Perl_croak("%s",
2517       PL_no_modify)".
2518
2519       "PERL_STATIC_INLINE" define
2520
2521       The "PERL_STATIC_INLINE" define has been added to provide the best-
2522       guess incantation to use for static inline functions, if the C compiler
2523       supports C99-style static inline.  If it doesn't, it'll give a plain
2524       "static".
2525
2526       "HAS_STATIC_INLINE" can be used to check if the compiler actually
2527       supports inline functions.
2528
2529       New "pv_escape" option for hexadecimal escapes
2530
2531       A new option, "PERL_PV_ESCAPE_NONASCII", has been added to "pv_escape"
2532       to dump all characters above ASCII in hexadecimal.  Before, one could
2533       get all characters as hexadecimal or the Latin1 non-ASCII as octal.
2534
2535       "lex_start"
2536
2537       "lex_start" has been added to the API, but is considered experimental.
2538
2539       op_scope() and op_lvalue()
2540
2541       The op_scope() and op_lvalue() functions have been added to the API,
2542       but are considered experimental.
2543
2544   C API Changes
2545       "PERL_POLLUTE" has been removed
2546
2547       The option to define "PERL_POLLUTE" to expose older 5.005 symbols for
2548       backwards compatibility has been removed.  Its use was always
2549       discouraged, and MakeMaker contains a more specific escape hatch:
2550
2551           perl Makefile.PL POLLUTE=1
2552
2553       This can be used for modules that have not been upgraded to 5.6 naming
2554       conventions (and really should be completely obsolete by now).
2555
2556       Check API compatibility when loading XS modules
2557
2558       When Perl's API changes in incompatible ways (which usually happens
2559       between major releases), XS modules compiled for previous versions of
2560       Perl will no longer work.  They need to be recompiled against the new
2561       Perl.
2562
2563       The "XS_APIVERSION_BOOTCHECK" macro has been added to ensure that
2564       modules are recompiled and to prevent users from accidentally loading
2565       modules compiled for old perls into newer perls.  That macro, which is
2566       called when loading every newly compiled extension, compares the API
2567       version of the running perl with the version a module has been compiled
2568       for and raises an exception if they don't match.
2569
2570       Perl_fetch_cop_label
2571
2572       The first argument of the C API function "Perl_fetch_cop_label" has
2573       changed from "struct refcounted_he *" to "COP *", to insulate the user
2574       from implementation details.
2575
2576       This API function was marked as "may change", and likely isn't in use
2577       outside the core.  (Neither an unpacked CPAN nor Google's codesearch
2578       finds any other references to it.)
2579
2580       GvCV() and GvGP() are no longer lvalues
2581
2582       The new GvCV_set() and GvGP_set() macros are now provided to replace
2583       assignment to those two macros.
2584
2585       This allows a future commit to eliminate some backref magic between GV
2586       and CVs, which will require complete control over assignment to the
2587       "gp_cv" slot.
2588
2589       CvGV() is no longer an lvalue
2590
2591       Under some circumstances, the CvGV() field of a CV is now reference-
2592       counted.  To ensure consistent behaviour, direct assignment to it, for
2593       example "CvGV(cv) = gv" is now a compile-time error.  A new macro,
2594       "CvGV_set(cv,gv)" has been introduced to run this operation safely.
2595       Note that modification of this field is not part of the public API,
2596       regardless of this new macro (and despite its being listed in this
2597       section).
2598
2599       CvSTASH() is no longer an lvalue
2600
2601       The CvSTASH() macro can now only be used as an rvalue.  CvSTASH_set()
2602       has been added to replace assignment to CvSTASH().  This is to ensure
2603       that backreferences are handled properly.  These macros are not part of
2604       the API.
2605
2606       Calling conventions for "newFOROP" and "newWHILEOP"
2607
2608       The way the parser handles labels has been cleaned up and refactored.
2609       As a result, the newFOROP() constructor function no longer takes a
2610       parameter stating what label is to go in the state op.
2611
2612       The newWHILEOP() and newFOROP() functions no longer accept a line
2613       number as a parameter.
2614
2615       Flags passed to "uvuni_to_utf8_flags" and "utf8n_to_uvuni"
2616
2617       Some of the flags parameters to uvuni_to_utf8_flags() and
2618       utf8n_to_uvuni() have changed.  This is a result of Perl's now allowing
2619       internal storage and manipulation of code points that are problematic
2620       in some situations.  Hence, the default actions for these functions has
2621       been complemented to allow these code points.  The new flags are
2622       documented in perlapi.  Code that requires the problematic code points
2623       to be rejected needs to change to use the new flags.  Some flag names
2624       are retained for backward source compatibility, though they do nothing,
2625       as they are now the default.  However the flags "UNICODE_ALLOW_FDD0",
2626       "UNICODE_ALLOW_FFFF", "UNICODE_ILLEGAL", and "UNICODE_IS_ILLEGAL" have
2627       been removed, as they stem from a fundamentally broken model of how the
2628       Unicode non-character code points should be handled, which is now
2629       described in "Non-character code points" in perlunicode.  See also the
2630       Unicode section under "Selected Bug Fixes".
2631
2632   Deprecated C APIs
2633       "Perl_ptr_table_clear"
2634           "Perl_ptr_table_clear" is no longer part of Perl's public API.
2635           Calling it now generates a deprecation warning, and it will be
2636           removed in a future release.
2637
2638       "sv_compile_2op"
2639           The sv_compile_2op() API function is now deprecated.  Searches
2640           suggest that nothing on CPAN is using it, so this should have zero
2641           impact.
2642
2643           It attempted to provide an API to compile code down to an optree,
2644           but failed to bind correctly to lexicals in the enclosing scope.
2645           It's not possible to fix this problem within the constraints of its
2646           parameters and return value.
2647
2648       "find_rundefsvoffset"
2649           The "find_rundefsvoffset" function has been deprecated.  It
2650           appeared that its design was insufficient for reliably getting the
2651           lexical $_ at run-time.
2652
2653           Use the new "find_rundefsv" function or the "UNDERBAR" macro
2654           instead.  They directly return the right SV representing $_,
2655           whether it's lexical or dynamic.
2656
2657       "CALL_FPTR" and "CPERLscope"
2658           Those are left from an old implementation of "MULTIPLICITY" using
2659           C++ objects, which was removed in Perl 5.8.  Nowadays these macros
2660           do exactly nothing, so they shouldn't be used anymore.
2661
2662           For compatibility, they are still defined for external "XS" code.
2663           Only extensions defining "PERL_CORE" must be updated now.
2664
2665   Other Internal Changes
2666       Stack unwinding
2667
2668       The protocol for unwinding the C stack at the last stage of a "die" has
2669       changed how it identifies the target stack frame.  This now uses a
2670       separate variable "PL_restartjmpenv", where previously it relied on the
2671       "blk_eval.cur_top_env" pointer in the "eval" context frame that has
2672       nominally just been discarded.  This change means that code running
2673       during various stages of Perl-level unwinding no longer needs to take
2674       care to avoid destroying the ghost frame.
2675
2676       Scope stack entries
2677
2678       The format of entries on the scope stack has been changed, resulting in
2679       a reduction of memory usage of about 10%.  In particular, the memory
2680       used by the scope stack to record each active lexical variable has been
2681       halved.
2682
2683       Memory allocation for pointer tables
2684
2685       Memory allocation for pointer tables has been changed.  Previously
2686       "Perl_ptr_table_store" allocated memory from the same arena system as
2687       "SV" bodies and "HE"s, with freed memory remaining bound to those
2688       arenas until interpreter exit.  Now it allocates memory from arenas
2689       private to the specific pointer table, and that memory is returned to
2690       the system when "Perl_ptr_table_free" is called.  Additionally,
2691       allocation and release are both less CPU intensive.
2692
2693       "UNDERBAR"
2694
2695       The "UNDERBAR" macro now calls "find_rundefsv".  "dUNDERBAR" is now a
2696       noop but should still be used to ensure past and future compatibility.
2697
2698       String comparison routines renamed
2699
2700       The "ibcmp_*" functions have been renamed and are now called "foldEQ",
2701       "foldEQ_locale", and "foldEQ_utf8".  The old names are still available
2702       as macros.
2703
2704       "chop" and "chomp" implementations merged
2705
2706       The opcode bodies for "chop" and "chomp" and for "schop" and "schomp"
2707       have been merged.  The implementation functions Perl_do_chop() and
2708       Perl_do_chomp(), never part of the public API, have been merged and
2709       moved to a static function in pp.c.  This shrinks the Perl binary
2710       slightly, and should not affect any code outside the core (unless it is
2711       relying on the order of side-effects when "chomp" is passed a list of
2712       values).
2713

Selected Bug Fixes

2715   I/O
2716       •   Perl no longer produces this warning:
2717
2718               $ perl -we 'open(my $f, ">", \my $x); binmode($f, "scalar")'
2719               Use of uninitialized value in binmode at -e line 1.
2720
2721       •   Opening a glob reference via "open($fh, ">", \*glob)" no longer
2722           causes the glob to be corrupted when the filehandle is printed to.
2723           This would cause Perl to crash whenever the glob's contents were
2724           accessed [perl #77492].
2725
2726       •   PerlIO no longer crashes when called recursively, such as from a
2727           signal handler.  Now it just leaks memory [perl #75556].
2728
2729       •   Most I/O functions were not warning for unopened handles unless the
2730           "closed" and "unopened" warnings categories were both enabled.  Now
2731           only "use warnings 'unopened'" is necessary to trigger these
2732           warnings, as had always been the intention.
2733
2734       •   There have been several fixes to PerlIO layers:
2735
2736           When "binmode(FH, ":crlf")" pushes the ":crlf" layer on top of the
2737           stack, it no longer enables crlf layers lower in the stack so as to
2738           avoid unexpected results [perl #38456].
2739
2740           Opening a file in ":raw" mode now does what it advertises to do
2741           (first open the file, then "binmode" it), instead of simply leaving
2742           off the top layer [perl #80764].
2743
2744           The three layers ":pop", ":utf8", and ":bytes" didn't allow
2745           stacking when opening a file.  For example this:
2746
2747               open(FH, ">:pop:perlio", "some.file") or die $!;
2748
2749           would throw an "Invalid argument" error.  This has been fixed in
2750           this release [perl #82484].
2751
2752   Regular Expression Bug Fixes
2753       •   The regular expression engine no longer loops when matching
2754           ""\N{LATIN SMALL LIGATURE FF}" =~ /f+/i" and similar expressions
2755           [perl #72998] (5.12.1).
2756
2757       •   The trie runtime code should no longer allocate massive amounts of
2758           memory, fixing #74484.
2759
2760       •   Syntax errors in "(?{...})" blocks no longer cause panic messages
2761           [perl #2353].
2762
2763       •   A pattern like "(?:(o){2})?" no longer causes a "panic" error [perl
2764           #39233].
2765
2766       •   A fatal error in regular expressions containing "(.*?)" when
2767           processing UTF-8 data has been fixed [perl #75680] (5.12.2).
2768
2769       •   An erroneous regular expression engine optimisation that caused
2770           regex verbs like *COMMIT sometimes to be ignored has been removed.
2771
2772       •   The regular expression bracketed character class "[\8\9]" was
2773           effectively the same as "[89\000]", incorrectly matching a NULL
2774           character.  It also gave incorrect warnings that the 8 and 9 were
2775           ignored.  Now "[\8\9]" is the same as "[89]" and gives legitimate
2776           warnings that "\8" and "\9" are unrecognized escape sequences,
2777           passed-through.
2778
2779       •   A regular expression match in the right-hand side of a global
2780           substitution ("s///g") that is in the same scope will no longer
2781           cause match variables to have the wrong values on subsequent
2782           iterations.  This can happen when an array or hash subscript is
2783           interpolated in the right-hand side, as in "s|(.)|@a{ print($1),
2784           /./ }|g" [perl #19078].
2785
2786       •   Several cases in which characters in the Latin-1 non-ASCII range
2787           (0x80 to 0xFF) used not to match themselves, or used to match both
2788           a character class and its complement, have been fixed.  For
2789           instance, U+00E2 could match both "\w" and "\W" [perl #78464] [perl
2790           #18281] [perl #60156].
2791
2792       •   Matching a Unicode character against an alternation containing
2793           characters that happened to match continuation bytes in the
2794           former's UTF8 representation (like "qq{\x{30ab}} =~ /\xab|\xa9/")
2795           would cause erroneous warnings [perl #70998].
2796
2797       •   The trie optimisation was not taking empty groups into account,
2798           preventing "foo" from matching "/\A(?:(?:)foo|bar|zot)\z/" [perl
2799           #78356].
2800
2801       •   A pattern containing a "+" inside a lookahead would sometimes cause
2802           an incorrect match failure in a global match (for example,
2803           "/(?=(\S+))/g") [perl #68564].
2804
2805       •   A regular expression optimisation would sometimes cause a match
2806           with a "{n,m}" quantifier to fail when it should have matched [perl
2807           #79152].
2808
2809       •   Case-insensitive matching in regular expressions compiled under
2810           "use locale" now works much more sanely when the pattern or target
2811           string is internally encoded in UTF8.  Previously, under these
2812           conditions the localeness was completely lost.  Now, code points
2813           above 255 are treated as Unicode, but code points between 0 and 255
2814           are treated using the current locale rules, regardless of whether
2815           the pattern or the string is encoded in UTF8.  The few case-
2816           insensitive matches that cross the 255/256 boundary are not
2817           allowed.  For example, 0xFF does not caselessly match the character
2818           at 0x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may
2819           not be LATIN SMALL LETTER Y in the current locale, and Perl has no
2820           way of knowing if that character even exists in the locale, much
2821           less what code point it is.
2822
2823       •   The "(?|...)" regular expression construct no longer crashes if the
2824           final branch has more sets of capturing parentheses than any other
2825           branch.  This was fixed in Perl 5.10.1 for the case of a single
2826           branch, but that fix did not take multiple branches into account
2827           [perl #84746].
2828
2829       •   A bug has been fixed in the implementation of "{...}" quantifiers
2830           in regular expressions that prevented the code block in "/((\w+)(?{
2831           print $2 })){2}/" from seeing the $2 sometimes [perl #84294].
2832
2833   Syntax/Parsing Bugs
2834       •   "when (scalar) {...}" no longer crashes, but produces a syntax
2835           error [perl #74114] (5.12.1).
2836
2837       •   A label right before a string eval ("foo: eval $string") no longer
2838           causes the label to be associated also with the first statement
2839           inside the eval [perl #74290] (5.12.1).
2840
2841       •   The "no 5.13.2" form of "no" no longer tries to turn on features or
2842           pragmata (like strict) [perl #70075] (5.12.2).
2843
2844       •   "BEGIN {require 5.12.0}" now behaves as documented, rather than
2845           behaving identically to "use 5.12.0".  Previously, "require" in a
2846           "BEGIN" block was erroneously executing the "use feature ':5.12.0'"
2847           and "use strict" behaviour, which only "use" was documented to
2848           provide [perl #69050].
2849
2850       •   A regression introduced in Perl 5.12.0, making "my $x = 3; $x =
2851           length(undef)" result in $x set to 3 has been fixed.  $x will now
2852           be "undef" [perl #85508] (5.12.2).
2853
2854       •   When strict "refs" mode is off, "%{...}" in rvalue context returns
2855           "undef" if its argument is undefined.  An optimisation introduced
2856           in Perl 5.12.0 to make "keys %{...}" faster when used as a boolean
2857           did not take this into account, causing "keys %{+undef}" (and "keys
2858           %$foo" when $foo is undefined) to be an error, which it should be
2859           so in strict mode only [perl #81750].
2860
2861       •   Constant-folding used to cause
2862
2863             $text =~ ( 1 ? /phoo/ : /bear/)
2864
2865           to turn into
2866
2867             $text =~ /phoo/
2868
2869           at compile time.  Now it correctly matches against $_ [perl
2870           #20444].
2871
2872       •   Parsing Perl code (either with string "eval" or by loading modules)
2873           from within a "UNITCHECK" block no longer causes the interpreter to
2874           crash [perl #70614].
2875
2876       •   String "eval"s no longer fail after 2 billion scopes have been
2877           compiled [perl #83364].
2878
2879       •   The parser no longer hangs when encountering certain Unicode
2880           characters, such as U+387 [perl #74022].
2881
2882       •   Defining a constant with the same name as one of Perl's special
2883           blocks (like "INIT") stopped working in 5.12.0, but has now been
2884           fixed [perl #78634].
2885
2886       •   A reference to a literal value used as a hash key ($hash{\"foo"})
2887           used to be stringified, even if the hash was tied [perl #79178].
2888
2889       •   A closure containing an "if" statement followed by a constant or
2890           variable is no longer treated as a constant [perl #63540].
2891
2892       •   "state" can now be used with attributes.  It used to mean the same
2893           thing as "my" if any attributes were present [perl #68658].
2894
2895       •   Expressions like "@$a > 3" no longer cause $a to be mentioned in
2896           the "Use of uninitialized value in numeric gt" warning when $a is
2897           undefined (since it is not part of the ">" expression, but the
2898           operand of the "@") [perl #72090].
2899
2900       •   Accessing an element of a package array with a hard-coded number
2901           (as opposed to an arbitrary expression) would crash if the array
2902           did not exist.  Usually the array would be autovivified during
2903           compilation, but typeglob manipulation could remove it, as in these
2904           two cases which used to crash:
2905
2906             *d = *a;  print $d[0];
2907             undef *d; print $d[0];
2908
2909       •   The -C command-line option, when used on the shebang line, can now
2910           be followed by other options [perl #72434].
2911
2912       •   The "B" module was returning "B::OP"s instead of "B::LOGOP"s for
2913           "entertry" [perl #80622].  This was due to a bug in the Perl core,
2914           not in "B" itself.
2915
2916   Stashes, Globs and Method Lookup
2917       Perl 5.10.0 introduced a new internal mechanism for caching MROs
2918       (method resolution orders, or lists of parent classes; aka "isa"
2919       caches) to make method lookup faster (so @ISA arrays would not have to
2920       be searched repeatedly).  Unfortunately, this brought with it quite a
2921       few bugs.  Almost all of these have been fixed now, along with a few
2922       MRO-related bugs that existed before 5.10.0:
2923
2924       •   The following used to have erratic effects on method resolution,
2925           because the "isa" caches were not reset or otherwise ended up
2926           listing the wrong classes.  These have been fixed.
2927
2928           Aliasing packages by assigning to globs [perl #77358]
2929           Deleting packages by deleting their containing stash elements
2930           Undefining the glob containing a package ("undef *Foo::")
2931           Undefining an ISA glob ("undef *Foo::ISA")
2932           Deleting an ISA stash element ("delete $Foo::{ISA}")
2933           Sharing @ISA arrays between classes (via "*Foo::ISA = \@Bar::ISA"
2934           or "*Foo::ISA = *Bar::ISA") [perl #77238]
2935
2936           "undef *Foo::ISA" would even stop a new @Foo::ISA array from
2937           updating caches.
2938
2939       •   Typeglob assignments would crash if the glob's stash no longer
2940           existed, so long as the glob assigned to were named "ISA" or the
2941           glob on either side of the assignment contained a subroutine.
2942
2943       •   "PL_isarev", which is accessible to Perl via "mro::get_isarev" is
2944           now updated properly when packages are deleted or removed from the
2945           @ISA of other classes.  This allows many packages to be created and
2946           deleted without causing a memory leak [perl #75176].
2947
2948       In addition, various other bugs related to typeglobs and stashes have
2949       been fixed:
2950
2951       •   Some work has been done on the internal pointers that link between
2952           symbol tables (stashes), typeglobs, and subroutines.  This has the
2953           effect that various edge cases related to deleting stashes or stash
2954           entries (for example, <%FOO:: = ()>), and complex typeglob or code-
2955           reference aliasing, will no longer crash the interpreter.
2956
2957       •   Assigning a reference to a glob copy now assigns to a glob slot
2958           instead of overwriting the glob with a scalar [perl #1804] [perl
2959           #77508].
2960
2961       •   A bug when replacing the glob of a loop variable within the loop
2962           has been fixed [perl #21469].  This means the following code will
2963           no longer crash:
2964
2965               for $x (...) {
2966                   *x = *y;
2967               }
2968
2969       •   Assigning a glob to a PVLV used to convert it to a plain string.
2970           Now it works correctly, and a PVLV can hold a glob.  This would
2971           happen when a nonexistent hash or array element was passed to a
2972           subroutine:
2973
2974             sub { $_[0] = *foo }->($hash{key});
2975             # $_[0] would have been the string "*main::foo"
2976
2977           It also happened when a glob was assigned to, or returned from, an
2978           element of a tied array or hash [perl #36051].
2979
2980       •   When trying to report "Use of uninitialized value $Foo::BAR",
2981           crashes could occur if the glob holding the global variable in
2982           question had been detached from its original stash by, for example,
2983           "delete $::{"Foo::"}".  This has been fixed by disabling the
2984           reporting of variable names in those cases.
2985
2986       •   During the restoration of a localised typeglob on scope exit, any
2987           destructors called as a result would be able to see the typeglob in
2988           an inconsistent state, containing freed entries, which could result
2989           in a crash.  This would affect code like this:
2990
2991             local *@;
2992             eval { die bless [] }; # puts an object in $@
2993             sub DESTROY {
2994               local $@; # boom
2995             }
2996
2997           Now the glob entries are cleared before any destructors are called.
2998           This also means that destructors can vivify entries in the glob.
2999           So Perl tries again and, if the entries are re-created too many
3000           times, dies with a "panic: gp_free ..." error message.
3001
3002       •   If a typeglob is freed while a subroutine attached to it is still
3003           referenced elsewhere, the subroutine is renamed to "__ANON__" in
3004           the same package, unless the package has been undefined, in which
3005           case the "__ANON__" package is used.  This could cause packages to
3006           be sometimes autovivified, such as if the package had been deleted.
3007           Now this no longer occurs.  The "__ANON__" package is also now used
3008           when the original package is no longer attached to the symbol
3009           table.  This avoids memory leaks in some cases [perl #87664].
3010
3011       •   Subroutines and package variables inside a package whose name ends
3012           with "::" can now be accessed with a fully qualified name.
3013
3014   Unicode
3015       •   What has become known as "the Unicode Bug" is almost completely
3016           resolved in this release.  Under "use feature 'unicode_strings'"
3017           (which is automatically selected by "use 5.012" and above), the
3018           internal storage format of a string no longer affects the external
3019           semantics.  [perl #58182].
3020
3021           There are two known exceptions:
3022
3023           1.  The now-deprecated, user-defined case-changing functions
3024               require utf8-encoded strings to operate.  The CPAN module
3025               Unicode::Casing has been written to replace this feature
3026               without its drawbacks, and the feature is scheduled to be
3027               removed in 5.16.
3028
3029           2.  quotemeta() (and its in-line equivalent "\Q") can also give
3030               different results depending on whether a string is encoded in
3031               UTF-8.  See "The "Unicode Bug"" in perlunicode.
3032
3033       •   Handling of Unicode non-character code points has changed.
3034           Previously they were mostly considered illegal, except that in some
3035           place only one of the 66 of them was known.  The Unicode Standard
3036           considers them all legal, but forbids their "open interchange".
3037           This is part of the change to allow internal use of any code point
3038           (see "Core Enhancements").  Together, these changes resolve [perl
3039           #38722], [perl #51918], [perl #51936], and [perl #63446].
3040
3041       •   Case-insensitive "/i" regular expression matching of Unicode
3042           characters that match multiple characters now works much more as
3043           intended.  For example
3044
3045            "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi/ui
3046
3047           and
3048
3049            "ffi" =~ /\N{LATIN SMALL LIGATURE FFI}/ui
3050
3051           are both true.  Previously, there were many bugs with this feature.
3052           What hasn't been fixed are the places where the pattern contains
3053           the multiple characters, but the characters are split up by other
3054           things, such as in
3055
3056            "\N{LATIN SMALL LIGATURE FFI}" =~ /(f)(f)i/ui
3057
3058           or
3059
3060            "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi*/ui
3061
3062           or
3063
3064            "\N{LATIN SMALL LIGATURE FFI}" =~ /[a-f][f-m][g-z]/ui
3065
3066           None of these match.
3067
3068           Also, this matching doesn't fully conform to the current Unicode
3069           Standard, which asks that the matching be made upon the NFD
3070           (Normalization Form Decomposed) of the text.  However, as of this
3071           writing (April 2010), the Unicode Standard is currently in flux
3072           about what they will recommend doing with regard in such scenarios.
3073           It may be that they will throw out the whole concept of multi-
3074           character matches.  [perl #71736].
3075
3076       •   Naming a deprecated character in "\N{NAME}" no longer leaks memory.
3077
3078       •   We fixed a bug that could cause "\N{NAME}" constructs followed by a
3079           single "." to be parsed incorrectly [perl #74978] (5.12.1).
3080
3081       •   "chop" now correctly handles characters above "\x{7fffffff}" [perl
3082           #73246].
3083
3084       •   Passing to "index" an offset beyond the end of the string when the
3085           string is encoded internally in UTF8 no longer causes panics [perl
3086           #75898].
3087
3088warn() and die() now respect utf8-encoded scalars [perl #45549].
3089
3090       •   Sometimes the UTF8 length cache would not be reset on a value
3091           returned by substr, causing "length(substr($uni_string, ...))" to
3092           give wrong answers.  With "${^UTF8CACHE}" set to -1, it would also
3093           produce a "panic" error message [perl #77692].
3094
3095   Ties, Overloading and Other Magic
3096       •   Overloading now works properly in conjunction with tied variables.
3097           What formerly happened was that most ops checked their arguments
3098           for overloading before checking for magic, so for example an
3099           overloaded object returned by a tied array access would usually be
3100           treated as not overloaded [RT #57012].
3101
3102       •   Various instances of magic (like tie methods) being called on tied
3103           variables too many or too few times have been fixed:
3104
3105           •   $tied->() did not always call FETCH [perl #8438].
3106
3107           •   Filetest operators and "y///" and "tr///" were calling FETCH
3108               too many times.
3109
3110           •   The "=" operator used to ignore magic on its right-hand side if
3111               the scalar happened to hold a typeglob (if a typeglob was the
3112               last thing returned from or assigned to a tied scalar) [perl
3113               #77498].
3114
3115           •   Dereference operators used to ignore magic if the argument was
3116               a reference already (such as from a previous FETCH) [perl
3117               #72144].
3118
3119           •   "splice" now calls set-magic (so changes made by "splice @ISA"
3120               are respected by method calls) [perl #78400].
3121
3122           •   In-memory files created by "open($fh, ">", \$buffer)" were not
3123               calling FETCH/STORE at all [perl #43789] (5.12.2).
3124
3125utf8::is_utf8() now respects get-magic (like $1) (5.12.1).
3126
3127       •   Non-commutative binary operators used to swap their operands if the
3128           same tied scalar was used for both operands and returned a
3129           different value for each FETCH.  For instance, if $t returned 2 the
3130           first time and 3 the second, then "$t/$t" would evaluate to 1.5.
3131           This has been fixed [perl #87708].
3132
3133       •   String "eval" now detects taintedness of overloaded or tied
3134           arguments [perl #75716].
3135
3136       •   String "eval" and regular expression matches against objects with
3137           string overloading no longer cause memory corruption or crashes
3138           [perl #77084].
3139
3140       •   readline now honors "<>" overloading on tied arguments.
3141
3142       •   "<expr>" always respects overloading now if the expression is
3143           overloaded.
3144
3145           Because "<> as glob" was parsed differently from "<> as filehandle"
3146           from 5.6 onwards, something like "<$foo[0]>" did not handle
3147           overloading, even if $foo[0] was an overloaded object.  This was
3148           contrary to the documentation for overload, and meant that "<>"
3149           could not be used as a general overloaded iterator operator.
3150
3151       •   The fallback behaviour of overloading on binary operators was
3152           asymmetric [perl #71286].
3153
3154       •   Magic applied to variables in the main package no longer affects
3155           other packages.  See "Magic variables outside the main package"
3156           above [perl #76138].
3157
3158       •   Sometimes magic (ties, taintedness, etc.) attached to variables
3159           could cause an object to last longer than it should, or cause a
3160           crash if a tied variable were freed from within a tie method.
3161           These have been fixed [perl #81230].
3162
3163       •   DESTROY methods of objects implementing ties are no longer able to
3164           crash by accessing the tied variable through a weak reference [perl
3165           #86328].
3166
3167       •   Fixed a regression of kill() when a match variable is used for the
3168           process ID to kill [perl #75812].
3169
3170       •   $AUTOLOAD used to remain tainted forever if it ever became tainted.
3171           Now it is correctly untainted if an autoloaded method is called and
3172           the method name was not tainted.
3173
3174       •   "sprintf" now dies when passed a tainted scalar for the format.  It
3175           did already die for arbitrary expressions, but not for simple
3176           scalars [perl #82250].
3177
3178       •   "lc", "uc", "lcfirst", and "ucfirst" no longer return untainted
3179           strings when the argument is tainted.  This has been broken since
3180           perl 5.8.9 [perl #87336].
3181
3182   The Debugger
3183       •   The Perl debugger now also works in taint mode [perl #76872].
3184
3185       •   Subroutine redefinition works once more in the debugger [perl
3186           #48332].
3187
3188       •   When -d is used on the shebang ("#!") line, the debugger now has
3189           access to the lines of the main program.  In the past, this
3190           sometimes worked and sometimes did not, depending on the order in
3191           which things happened to be arranged in memory [perl #71806].
3192
3193       •   A possible memory leak when using caller() to set @DB::args has
3194           been fixed (5.12.2).
3195
3196       •   Perl no longer stomps on $DB::single, $DB::trace, and $DB::signal
3197           if these variables already have values when $^P is assigned to
3198           [perl #72422].
3199
3200       •   "#line" directives in string evals were not properly updating the
3201           arrays of lines of code ("@{"_< ..."}") that the debugger (or any
3202           debugging or profiling module) uses.  In threaded builds, they were
3203           not being updated at all.  In non-threaded builds, the line number
3204           was ignored, so any change to the existing line number would cause
3205           the lines to be misnumbered [perl #79442].
3206
3207   Threads
3208       •   Perl no longer accidentally clones lexicals in scope within active
3209           stack frames in the parent when creating a child thread [perl
3210           #73086].
3211
3212       •   Several memory leaks in cloning and freeing threaded Perl
3213           interpreters have been fixed [perl #77352].
3214
3215       •   Creating a new thread when directory handles were open used to
3216           cause a crash, because the handles were not cloned, but simply
3217           passed to the new thread, resulting in a double free.
3218
3219           Now directory handles are cloned properly on Windows and on systems
3220           that have a "fchdir" function.  On other systems, new threads
3221           simply do not inherit directory handles from their parent threads
3222           [perl #75154].
3223
3224       •   The typeglob "*,", which holds the scalar variable $, (output field
3225           separator), had the wrong reference count in child threads.
3226
3227       •   [perl #78494] When pipes are shared between threads, the "close"
3228           function (and any implicit close, such as on thread exit) no longer
3229           blocks.
3230
3231       •   Perl now does a timely cleanup of SVs that are cloned into a new
3232           thread but then discovered to be orphaned (that is, their owners
3233           are not cloned).  This eliminates several "scalars leaked" warnings
3234           when joining threads.
3235
3236   Scoping and Subroutines
3237       •   Lvalue subroutines are again able to return copy-on-write scalars.
3238           This had been broken since version 5.10.0 [perl #75656] (5.12.3).
3239
3240       •   "require" no longer causes "caller" to return the wrong file name
3241           for the scope that called "require" and other scopes higher up that
3242           had the same file name [perl #68712].
3243
3244       •   "sort" with a "($$)"-prototyped comparison routine used to cause
3245           the value of @_ to leak out of the sort.  Taking a reference to @_
3246           within the sorting routine could cause a crash [perl #72334].
3247
3248       •   Match variables (like $1) no longer persist between calls to a sort
3249           subroutine [perl #76026].
3250
3251       •   Iterating with "foreach" over an array returned by an lvalue sub
3252           now works [perl #23790].
3253
3254       •   $@ is now localised during calls to "binmode" to prevent action at
3255           a distance [perl #78844].
3256
3257       •   Calling a closure prototype (what is passed to an attribute handler
3258           for a closure) now results in a "Closure prototype called" error
3259           message instead of a crash [perl #68560].
3260
3261       •   Mentioning a read-only lexical variable from the enclosing scope in
3262           a string "eval" no longer causes the variable to become writable
3263           [perl #19135].
3264
3265   Signals
3266       •   Within signal handlers, $! is now implicitly localized.
3267
3268       •   CHLD signals are no longer unblocked after a signal handler is
3269           called if they were blocked before by "POSIX::sigprocmask" [perl
3270           #82040].
3271
3272       •   A signal handler called within a signal handler could cause leaks
3273           or double-frees.  Now fixed [perl #76248].
3274
3275   Miscellaneous Memory Leaks
3276       •   Several memory leaks when loading XS modules were fixed (5.12.2).
3277
3278substr(), pos(), keys(), and vec() could, when used in combination
3279           with lvalues, result in leaking the scalar value they operate on,
3280           and cause its destruction to happen too late.  This has now been
3281           fixed.
3282
3283       •   The postincrement and postdecrement operators, "++" and "--", used
3284           to cause leaks when used on references.  This has now been fixed.
3285
3286       •   Nested "map" and "grep" blocks no longer leak memory when
3287           processing large lists [perl #48004].
3288
3289       •   "use VERSION" and "no VERSION" no longer leak memory [perl #78436]
3290           [perl #69050].
3291
3292       •   ".=" followed by "<>" or "readline" would leak memory if $/
3293           contained characters beyond the octet range and the scalar assigned
3294           to happened to be encoded as UTF8 internally [perl #72246].
3295
3296       •   "eval 'BEGIN{die}'" no longer leaks memory on non-threaded builds.
3297
3298   Memory Corruption and Crashes
3299glob() no longer crashes when %File::Glob:: is empty and
3300           "CORE::GLOBAL::glob" isn't present [perl #75464] (5.12.2).
3301
3302readline() has been fixed when interrupted by signals so it no
3303           longer returns the "same thing" as before or random memory.
3304
3305       •   When assigning a list with duplicated keys to a hash, the
3306           assignment used to return garbage and/or freed values:
3307
3308               @a = %h = (list with some duplicate keys);
3309
3310           This has now been fixed [perl #31865].
3311
3312       •   The mechanism for freeing objects in globs used to leave dangling
3313           pointers to freed SVs, meaning Perl users could see corrupted state
3314           during destruction.
3315
3316           Perl now frees only the affected slots of the GV, rather than
3317           freeing the GV itself.  This makes sure that there are no dangling
3318           refs or corrupted state during destruction.
3319
3320       •   The interpreter no longer crashes when freeing deeply-nested arrays
3321           of arrays.  Hashes have not been fixed yet [perl #44225].
3322
3323       •   Concatenating long strings under "use encoding" no longer causes
3324           Perl to crash [perl #78674].
3325
3326       •   Calling "->import" on a class lacking an import method could
3327           corrupt the stack, resulting in strange behaviour.  For instance,
3328
3329             push @a, "foo", $b = bar->import;
3330
3331           would assign "foo" to $b [perl #63790].
3332
3333       •   The "recv" function could crash when called with the MSG_TRUNC flag
3334           [perl #75082].
3335
3336       •   "formline" no longer crashes when passed a tainted format picture.
3337           It also taints $^A now if its arguments are tainted [perl #79138].
3338
3339       •   A bug in how we process filetest operations could cause a segfault.
3340           Filetests don't always expect an op on the stack, so we now use
3341           TOPs only if we're sure that we're not "stat"ing the "_"
3342           filehandle.  This is indicated by "OPf_KIDS" (as checked in
3343           ck_ftst) [perl #74542] (5.12.1).
3344
3345unpack() now handles scalar context correctly for %32H and %32u,
3346           fixing a potential crash.  split() would crash because the third
3347           item on the stack wasn't the regular expression it expected.
3348           "unpack("%2H", ...)" would return both the unpacked result and the
3349           checksum on the stack, as would "unpack("%2u", ...)" [perl #73814]
3350           (5.12.2).
3351
3352   Fixes to Various Perl Operators
3353       •   The "&", "|", and "^" bitwise operators no longer coerce read-only
3354           arguments [perl #20661].
3355
3356       •   Stringifying a scalar containing "-0.0" no longer has the effect of
3357           turning false into true [perl #45133].
3358
3359       •   Some numeric operators were converting integers to floating point,
3360           resulting in loss of precision on 64-bit platforms [perl #77456].
3361
3362sprintf() was ignoring locales when called with constant arguments
3363           [perl #78632].
3364
3365       •   Combining the vector (%v) flag and dynamic precision would cause
3366           "sprintf" to confuse the order of its arguments, making it treat
3367           the string as the precision and vice-versa [perl #83194].
3368
3369   Bugs Relating to the C API
3370       •   The C-level "lex_stuff_pvn" function would sometimes cause a
3371           spurious syntax error on the last line of the file if it lacked a
3372           final semicolon [perl #74006] (5.12.1).
3373
3374       •   The "eval_sv" and "eval_pv" C functions now set $@ correctly when
3375           there is a syntax error and no "G_KEEPERR" flag, and never set it
3376           if the "G_KEEPERR" flag is present [perl #3719].
3377
3378       •   The XS multicall API no longer causes subroutines to lose reference
3379           counts if called via the multicall interface from within those very
3380           subroutines.  This affects modules like List::Util.  Calling one of
3381           its functions with an active subroutine as the first argument could
3382           cause a crash [perl #78070].
3383
3384       •   The "SvPVbyte" function available to XS modules now calls magic
3385           before downgrading the SV, to avoid warnings about wide characters
3386           [perl #72398].
3387
3388       •   The ref types in the typemap for XS bindings now support magical
3389           variables [perl #72684].
3390
3391       •   "sv_catsv_flags" no longer calls "mg_get" on its second argument
3392           (the source string) if the flags passed to it do not include
3393           SV_GMAGIC.  So it now matches the documentation.
3394
3395       •   "my_strftime" no longer leaks memory.  This fixes a memory leak in
3396           "POSIX::strftime" [perl #73520].
3397
3398XSUB.h now correctly redefines fgets under PERL_IMPLICIT_SYS [perl
3399           #55049] (5.12.1).
3400
3401       •   XS code using fputc() or fputs() on Windows could cause an error
3402           due to their arguments being swapped [perl #72704] (5.12.1).
3403
3404       •   A possible segfault in the "T_PTROBJ" default typemap has been
3405           fixed (5.12.2).
3406
3407       •   A bug that could cause "Unknown error" messages when "call_sv(code,
3408           G_EVAL)" is called from an XS destructor has been fixed (5.12.2).
3409

Known Problems

3411       This is a list of significant unresolved issues which are regressions
3412       from earlier versions of Perl or which affect widely-used CPAN modules.
3413
3414       •   "List::Util::first" misbehaves in the presence of a lexical $_
3415           (typically introduced by "my $_" or implicitly by "given").  The
3416           variable that gets set for each iteration is the package variable
3417           $_, not the lexical $_.
3418
3419           A similar issue may occur in other modules that provide functions
3420           which take a block as their first argument, like
3421
3422               foo { ... $_ ...} list
3423
3424           See also: <https://github.com/Perl/perl5/issues/9798>
3425
3426readline() returns an empty string instead of a cached previous
3427           value when it is interrupted by a signal
3428
3429       •   The changes in prototype handling break Switch.  A patch has been
3430           sent upstream and will hopefully appear on CPAN soon.
3431
3432       •   The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in
3433           the Module-Install distribution on CPAN to fail. (Specifically,
3434           02_mymeta.t tests 5 and 21; 18_all_from.t tests 6 and 15;
3435           19_authors.t tests 5, 13, 21, and 29; and
3436           20_authors_with_special_characters.t tests 6, 15, and 23 in version
3437           1.00 of that distribution now fail.)
3438
3439       •   On VMS, "Time::HiRes" tests will fail due to a bug in the CRTL's
3440           implementation of "setitimer": previous timer values would be
3441           cleared if a timer expired but not if the timer was reset before
3442           expiring.  HP OpenVMS Engineering have corrected the problem and
3443           will release a patch in due course (Quix case # QXCM1001115136).
3444
3445       •   On VMS, there were a handful of "Module::Build" test failures we
3446           didn't get to before the release; please watch CPAN for updates.
3447

Errata

3449   keys(), values(), and each() work on arrays
3450       You can now use the keys(), values(), and each() builtins on arrays;
3451       previously you could use them only on hashes.  See perlfunc for
3452       details.  This is actually a change introduced in perl 5.12.0, but it
3453       was missed from that release's perl5120delta.
3454
3455   split() and @_
3456       split() no longer modifies @_ when called in scalar or void context.
3457       In void context it now produces a "Useless use of split" warning.  This
3458       was also a perl 5.12.0 change that missed the perldelta.
3459

Obituary

3461       Randy Kobes, creator of http://kobesearch.cpan.org/ and
3462       contributor/maintainer to several core Perl toolchain modules, passed
3463       away on September 18, 2010 after a battle with lung cancer.  The
3464       community was richer for his involvement.  He will be missed.
3465

Acknowledgements

3467       Perl 5.14.0 represents one year of development since Perl 5.12.0 and
3468       contains nearly 550,000 lines of changes across nearly 3,000 files from
3469       150 authors and committers.
3470
3471       Perl continues to flourish into its third decade thanks to a vibrant
3472       community of users and developers.  The following people are known to
3473       have contributed the improvements that became Perl 5.14.0:
3474
3475       Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason,
3476       Alastair Douglas, Alexander Alekseev, Alexander Hartmaier, Alexandr
3477       Ciornii, Alex Davies, Alex Vandiver, Ali Polatel, Allen Smith, Andreas
3478       König, Andrew Rodland, Andy Armstrong, Andy Dougherty, Aristotle
3479       Pagaltzis, Arkturuz, Arvan, A. Sinan Unur, Ben Morrow, Bo Lindbergh,
3480       Boris Ratner, Brad Gilbert, Bram, brian d foy, Brian Phillips, Casey
3481       West, Charles Bailey, Chas. Owens, Chip Salzenberg, Chris 'BinGOs'
3482       Williams, chromatic, Craig A. Berry, Curtis Jewell, Dagfinn Ilmari
3483       Mannsåker, Dan Dascalescu, Dave Rolsky, David Caldwell, David Cantrell,
3484       David Golden, David Leadbeater, David Mitchell, David Wheeler, Eric
3485       Brine, Father Chrysostomos, Fingle Nark, Florian Ragwitz, Frank
3486       Wiegand, Franz Fasching, Gene Sullivan, George Greer, Gerard Goossen,
3487       Gisle Aas, Goro Fuji, Grant McLean, gregor herrmann, H.Merijn Brand,
3488       Hongwen Qiu, Hugo van der Sanden, Ian Goodacre, James E Keenan, James
3489       Mastros, Jan Dubois, Jay Hannah, Jerry D. Hedden, Jesse Vincent, Jim
3490       Cromie, Jirka Hruška, John Peacock, Joshua ben Jore, Joshua Pritikin,
3491       Karl Williamson, Kevin Ryde, kmx, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Larwan Berke,
3492       Leon Brocard, Leon Timmermans, Lubomir Rintel, Lukas Mai, Maik
3493       Hentsche, Marty Pauley, Marvin Humphrey, Matt Johnson, Matt S Trout,
3494       Max Maischein, Michael Breen, Michael Fig, Michael G Schwern, Michael
3495       Parker, Michael Stevens, Michael Witten, Mike Kelly, Moritz Lenz,
3496       Nicholas Clark, Nick Cleaton, Nick Johnston, Nicolas Kaiser, Niko Tyni,
3497       Noirin Shirley, Nuno Carvalho, Paul Evans, Paul Green, Paul Johnson,
3498       Paul Marquess, Peter J. Holzer, Peter John Acklam, Peter Martini,
3499       Philippe Bruhat (BooK), Piotr Fusik, Rafael Garcia-Suarez, Rainer
3500       Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Richard Möhn,
3501       Richard Soderberg, Rob Hoelz, Robin Barker, Ruslan Zakirov, Salvador
3502       Fandiño, Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus,
3503       Slaven Rezic, Steffen Müller, Steve Hay, Steven Schubiger, Steve
3504       Peters, Sullivan Beck, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, Tom
3505       Christiansen, Tom Hukins, Tony Cook, Tye McQueen, Vadim Konovalov,
3506       Vernon Lyon, Vincent Pit, Walt Mankowski, Wolfram Humann, Yves Orton,
3507       Zefram, and Zsbán Ambrus.
3508
3509       This is woefully incomplete as it's automatically generated from
3510       version control history.  In particular, it doesn't include the names
3511       of the (very much appreciated) contributors who reported issues in
3512       previous versions of Perl that helped make Perl 5.14.0 better. For a
3513       more complete list of all of Perl's historical contributors, please see
3514       the "AUTHORS" file in the Perl 5.14.0 distribution.
3515
3516       Many of the changes included in this version originated in the CPAN
3517       modules included in Perl's core. We're grateful to the entire CPAN
3518       community for helping Perl to flourish.
3519

Reporting Bugs

3521       If you find what you think is a bug, you might check the articles
3522       recently posted to the comp.lang.perl.misc newsgroup and the Perl bug
3523       database at http://rt.perl.org/perlbug/ .  There may also be
3524       information at http://www.perl.org/ , the Perl Home Page.
3525
3526       If you believe you have an unreported bug, please run the perlbug
3527       program included with your release.  Be sure to trim your bug down to a
3528       tiny but sufficient test case.  Your bug report, along with the output
3529       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
3530       the Perl porting team.
3531
3532       If the bug you are reporting has security implications, which make it
3533       inappropriate to send to a publicly archived mailing list, then please
3534       send it to perl5-security-report@perl.org.  This points to a closed
3535       subscription unarchived mailing list, which includes all the core
3536       committers, who are able to help assess the impact of issues, figure
3537       out a resolution, and help co-ordinate the release of patches to
3538       mitigate or fix the problem across all platforms on which Perl is
3539       supported.  Please use this address for security issues in the Perl
3540       core only, not for modules independently distributed on CPAN.
3541

SEE ALSO

3543       The Changes file for an explanation of how to view exhaustive details
3544       on what changed.
3545
3546       The INSTALL file for how to build Perl.
3547
3548       The README file for general stuff.
3549
3550       The Artistic and Copying files for copyright information.
3551
3552
3553
3554perl v5.38.2                      2023-11-30                  PERL5140DELTA(1)
Impressum