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

NAME

6       perl5160delta - what is new for perl v5.16.0
7

DESCRIPTION

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

Notice

19       With the release of Perl 5.16.0, the 5.12.x series of releases is now
20       out of its support period.  There may be future 5.12.x releases, but
21       only in the event of a critical security issue.  Users of Perl 5.12 or
22       earlier should consider upgrading to a more recent release of Perl.
23
24       This policy is described in greater detail in perlpolicy.
25

Core Enhancements

27   "use VERSION"
28       As of this release, version declarations like "use v5.16" now disable
29       all features before enabling the new feature bundle.  This means that
30       the following holds true:
31
32           use 5.016;
33           # only 5.16 features enabled here
34           use 5.014;
35           # only 5.14 features enabled here (not 5.16)
36
37       "use v5.12" and higher continue to enable strict, but explicit "use
38       strict" and "no strict" now override the version declaration, even when
39       they come first:
40
41           no strict;
42           use 5.012;
43           # no strict here
44
45       There is a new ":default" feature bundle that represents the set of
46       features enabled before any version declaration or "use feature" has
47       been seen.  Version declarations below 5.10 now enable the ":default"
48       feature set.  This does not actually change the behavior of "use v5.8",
49       because features added to the ":default" set are those that were
50       traditionally enabled by default, before they could be turned off.
51
52       "no feature" now resets to the default feature set.  To disable all
53       features (which is likely to be a pretty special-purpose request, since
54       it presumably won't match any named set of semantics) you can now write
55       "no feature ':all'".
56
57       $[ is now disabled under "use v5.16".  It is part of the default
58       feature set and can be turned on or off explicitly with "use feature
59       'array_base'".
60
61   "__SUB__"
62       The new "__SUB__" token, available under the "current_sub" feature (see
63       feature) or "use v5.16", returns a reference to the current subroutine,
64       making it easier to write recursive closures.
65
66   New and Improved Built-ins
67       More consistent "eval"
68
69       The "eval" operator sometimes treats a string argument as a sequence of
70       characters and sometimes as a sequence of bytes, depending on the
71       internal encoding.  The internal encoding is not supposed to make any
72       difference, but there is code that relies on this inconsistency.
73
74       The new "unicode_eval" and "evalbytes" features (enabled under "use
75       5.16.0") resolve this.  The "unicode_eval" feature causes "eval
76       $string" to treat the string always as Unicode.  The "evalbytes"
77       features provides a function, itself called "evalbytes", which
78       evaluates its argument always as a string of bytes.
79
80       These features also fix oddities with source filters leaking to outer
81       dynamic scopes.
82
83       See feature for more detail.
84
85       "substr" lvalue revamp
86
87       When "substr" is called in lvalue or potential lvalue context with two
88       or three arguments, a special lvalue scalar is returned that modifies
89       the original string (the first argument) when assigned to.
90
91       Previously, the offsets (the second and third arguments) passed to
92       "substr" would be converted immediately to match the string, negative
93       offsets being translated to positive and offsets beyond the end of the
94       string being truncated.
95
96       Now, the offsets are recorded without modification in the special
97       lvalue scalar that is returned, and the original string is not even
98       looked at by "substr" itself, but only when the returned lvalue is read
99       or modified.
100
101       These changes result in an incompatible change:
102
103       If the original string changes length after the call to "substr" but
104       before assignment to its return value, negative offsets will remember
105       their position from the end of the string, affecting code like this:
106
107           my $string = "string";
108           my $lvalue = \substr $string, -4, 2;
109           print $$lvalue, "\n"; # prints "ri"
110           $string = "bailing twine";
111           print $$lvalue, "\n"; # prints "wi"; used to print "il"
112
113       The same thing happens with an omitted third argument.  The returned
114       lvalue will always extend to the end of the string, even if the string
115       becomes longer.
116
117       Since this change also allowed many bugs to be fixed (see "The "substr"
118       operator"), and since the behavior of negative offsets has never been
119       specified, the change was deemed acceptable.
120
121       Return value of "tied"
122
123       The value returned by "tied" on a tied variable is now the actual
124       scalar that holds the object to which the variable is tied.  This lets
125       ties be weakened with "Scalar::Util::weaken(tied $tied_variable)".
126
127   Unicode Support
128       Supports (almost) Unicode 6.1
129
130       Besides the addition of whole new scripts, and new characters in
131       existing scripts, this new version of Unicode, as always, makes some
132       changes to existing characters.  One change that may trip up some
133       applications is that the General Category of two characters in the
134       Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
135       Other_Symbol to Other_Punctuation.  The same change has been made for a
136       character in each of Tibetan, Ethiopic, and Aegean.  The code points
137       U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE through CIRCLED
138       NUMBER EIGHTY ON BLACK SQUARE) have had their General Category changed
139       from Other_Symbol to Other_Numeric.  The Line Break property has
140       changes for Hebrew and Japanese; and because of other changes in 6.1,
141       the Perl regular expression construct "\X" now works differently for
142       some characters in Thai and Lao.
143
144       New aliases (synonyms) have been defined for many property values;
145       these, along with the previously existing ones, are all cross-indexed
146       in perluniprops.
147
148       The return value of "charnames::viacode()" is affected by other
149       changes:
150
151        Code point      Old Name             New Name
152          U+000A    LINE FEED (LF)        LINE FEED
153          U+000C    FORM FEED (FF)        FORM FEED
154          U+000D    CARRIAGE RETURN (CR)  CARRIAGE RETURN
155          U+0085    NEXT LINE (NEL)       NEXT LINE
156          U+008E    SINGLE-SHIFT 2        SINGLE-SHIFT-2
157          U+008F    SINGLE-SHIFT 3        SINGLE-SHIFT-3
158          U+0091    PRIVATE USE 1         PRIVATE USE-1
159          U+0092    PRIVATE USE 2         PRIVATE USE-2
160          U+2118    SCRIPT CAPITAL P      WEIERSTRASS ELLIPTIC FUNCTION
161
162       Perl will accept any of these names as input, but
163       "charnames::viacode()" now returns the new name of each pair.  The
164       change for U+2118 is considered by Unicode to be a correction, that is
165       the original name was a mistake (but again, it will remain forever
166       valid to use it to refer to U+2118).  But most of these changes are the
167       fallout of the mistake Unicode 6.0 made in naming a character used in
168       Japanese cell phones to be "BELL", which conflicts with the
169       longstanding industry use of (and Unicode's recommendation to use) that
170       name to mean the ASCII control character at U+0007.  Therefore, that
171       name has been deprecated in Perl since v5.14, and any use of it will
172       raise a warning message (unless turned off).  The name "ALERT" is now
173       the preferred name for this code point, with "BEL" an acceptable short
174       form.  The name for the new cell phone character, at code point
175       U+1F514, remains undefined in this version of Perl (hence we don't
176       implement quite all of Unicode 6.1), but starting in v5.18, BELL will
177       mean this character, and not U+0007.
178
179       Unicode has taken steps to make sure that this sort of mistake does not
180       happen again.  The Standard now includes all generally accepted names
181       and abbreviations for control characters, whereas previously it didn't
182       (though there were recommended names for most of them, which Perl
183       used).  This means that most of those recommended names are now
184       officially in the Standard.  Unicode did not recommend names for the
185       four code points listed above between U+008E and U+008F, and in
186       standardizing them Unicode subtly changed the names that Perl had
187       previously given them, by replacing the final blank in each name by a
188       hyphen.  Unicode also officially accepts names that Perl had
189       deprecated, such as FILE SEPARATOR.  Now the only deprecated name is
190       BELL.  Finally, Perl now uses the new official names instead of the old
191       (now considered obsolete) names for the first four code points in the
192       list above (the ones which have the parentheses in them).
193
194       Now that the names have been placed in the Unicode standard, these
195       kinds of changes should not happen again, though corrections, such as
196       to U+2118, are still possible.
197
198       Unicode also added some name abbreviations, which Perl now accepts: SP
199       for SPACE; TAB for CHARACTER TABULATION; NEW LINE, END OF LINE, NL, and
200       EOL for LINE FEED; LOCKING-SHIFT ONE for SHIFT OUT; LOCKING-SHIFT ZERO
201       for SHIFT IN; and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
202
203       More details on this version of Unicode are provided in
204       <http://www.unicode.org/versions/Unicode6.1.0/>.
205
206       "use charnames" is no longer needed for "\N{name}"
207
208       When "\N{name}" is encountered, the "charnames" module is now
209       automatically loaded when needed as if the ":full" and ":short" options
210       had been specified.  See charnames for more information.
211
212       "\N{...}" can now have Unicode loose name matching
213
214       This is described in the "charnames" item in "Updated Modules and
215       Pragmata" below.
216
217       Unicode Symbol Names
218
219       Perl now has proper support for Unicode in symbol names.  It used to be
220       that "*{$foo}" would ignore the internal UTF8 flag and use the bytes of
221       the underlying representation to look up the symbol.  That meant that
222       "*{"\x{100}"}" and "*{"\xc4\x80"}" would return the same thing.  All
223       these parts of Perl have been fixed to account for Unicode:
224
225       ·   Method names (including those passed to "use overload")
226
227       ·   Typeglob names (including names of variables, subroutines, and
228           filehandles)
229
230       ·   Package names
231
232       ·   "goto"
233
234       ·   Symbolic dereferencing
235
236       ·   Second argument to "bless()" and "tie()"
237
238       ·   Return value of "ref()"
239
240       ·   Subroutine prototypes
241
242       ·   Attributes
243
244       ·   Various warnings and error messages that mention variable names or
245           values, methods, etc.
246
247       In addition, a parsing bug has been fixed that prevented "*{e}" from
248       implicitly quoting the name, but instead interpreted it as "*{+e}",
249       which would cause a strict violation.
250
251       "*{"*a::b"}" automatically strips off the * if it is followed by an
252       ASCII letter.  That has been extended to all Unicode identifier
253       characters.
254
255       One-character non-ASCII non-punctuation variables (like "$e") are now
256       subject to "Used only once" warnings.  They used to be exempt, as they
257       were treated as punctuation variables.
258
259       Also, single-character Unicode punctuation variables (like $X) are now
260       supported [perl #69032].
261
262       Improved ability to mix locales and Unicode, including UTF-8 locales
263
264       An optional parameter has been added to "use locale"
265
266        use locale ':not_characters';
267
268       which tells Perl to use all but the "LC_CTYPE" and "LC_COLLATE"
269       portions of the current locale.  Instead, the character set is assumed
270       to be Unicode.  This lets locales and Unicode be seamlessly mixed,
271       including the increasingly frequent UTF-8 locales.  When using this
272       hybrid form of locales, the ":locale" layer to the open pragma can be
273       used to interface with the file system, and there are CPAN modules
274       available for ARGV and environment variable conversions.
275
276       Full details are in perllocale.
277
278       New function "fc" and corresponding escape sequence "\F" for Unicode
279       foldcase
280
281       Unicode foldcase is an extension to lowercase that gives better results
282       when comparing two strings case-insensitively.  It has long been used
283       internally in regular expression "/i" matching.  Now it is available
284       explicitly through the new "fc" function call (enabled by
285       "use feature 'fc'", or "use v5.16", or explicitly callable via
286       "CORE::fc") or through the new "\F" sequence in double-quotish strings.
287
288       Full details are in "fc" in perlfunc.
289
290       The Unicode "Script_Extensions" property is now supported.
291
292       New in Unicode 6.0, this is an improved "Script" property.  Details are
293       in "Scripts" in perlunicode.
294
295   XS Changes
296       Improved typemaps for Some Builtin Types
297
298       Most XS authors will know there is a longstanding bug in the OUTPUT
299       typemap for T_AVREF ("AV*"), T_HVREF ("HV*"), T_CVREF ("CV*"), and
300       T_SVREF ("SVREF" or "\$foo") that requires manually decrementing the
301       reference count of the return value instead of the typemap taking care
302       of this.  For backwards-compatibility, this cannot be changed in the
303       default typemaps.  But we now provide additional typemaps
304       "T_AVREF_REFCOUNT_FIXED", etc. that do not exhibit this bug.  Using
305       them in your extension is as simple as having one line in your
306       "TYPEMAP" section:
307
308         HV*   T_HVREF_REFCOUNT_FIXED
309
310       "is_utf8_char()"
311
312       The XS-callable function "is_utf8_char()", when presented with
313       malformed UTF-8 input, can read up to 12 bytes beyond the end of the
314       string.  This cannot be fixed without changing its API, and so its use
315       is now deprecated.  Use "is_utf8_char_buf()" (described just below)
316       instead.
317
318       Added "is_utf8_char_buf()"
319
320       This function is designed to replace the deprecated "is_utf8_char()"
321       function.  It includes an extra parameter to make sure it doesn't read
322       past the end of the input buffer.
323
324       Other "is_utf8_foo()" functions, as well as "utf8_to_foo()", etc.
325
326       Most other XS-callable functions that take UTF-8 encoded input
327       implicitly assume that the UTF-8 is valid (not malformed) with respect
328       to buffer length.  Do not do things such as change a character's case
329       or see if it is alphanumeric without first being sure that it is valid
330       UTF-8.  This can be safely done for a whole string by using one of the
331       functions "is_utf8_string()", "is_utf8_string_loc()", and
332       "is_utf8_string_loclen()".
333
334       New Pad API
335
336       Many new functions have been added to the API for manipulating lexical
337       pads.  See "Pad Data Structures" in perlapi for more information.
338
339   Changes to Special Variables
340       $$ can be assigned to
341
342       $$ was made read-only in Perl 5.8.0.  But only sometimes: "local $$"
343       would make it writable again.  Some CPAN modules were using "local $$"
344       or XS code to bypass the read-only check, so there is no reason to keep
345       $$ read-only.  (This change also allowed a bug to be fixed while
346       maintaining backward compatibility.)
347
348       $^X converted to an absolute path on FreeBSD, OS X and Solaris
349
350       $^X is now converted to an absolute path on OS X, FreeBSD (without
351       needing /proc mounted) and Solaris 10 and 11.  This augments the
352       previous approach of using /proc on Linux, FreeBSD, and NetBSD (in all
353       cases, where mounted).
354
355       This makes relocatable perl installations more useful on these
356       platforms.  (See "Relocatable @INC" in INSTALL)
357
358   Debugger Changes
359       Features inside the debugger
360
361       The current Perl's feature bundle is now enabled for commands entered
362       in the interactive debugger.
363
364       New option for the debugger's t command
365
366       The t command in the debugger, which toggles tracing mode, now accepts
367       a numeric argument that determines how many levels of subroutine calls
368       to trace.
369
370       "enable" and "disable"
371
372       The debugger now has "disable" and "enable" commands for disabling
373       existing breakpoints and re-enabling them.  See perldebug.
374
375       Breakpoints with file names
376
377       The debugger's "b" command for setting breakpoints now lets a line
378       number be prefixed with a file name.  See "b [file]:[line] [condition]"
379       in perldebug.
380
381   The "CORE" Namespace
382       The "CORE::" prefix
383
384       The "CORE::" prefix can now be used on keywords enabled by feature.pm,
385       even outside the scope of "use feature".
386
387       Subroutines in the "CORE" namespace
388
389       Many Perl keywords are now available as subroutines in the CORE
390       namespace.  This lets them be aliased:
391
392           BEGIN { *entangle = \&CORE::tie }
393           entangle $variable, $package, @args;
394
395       And for prototypes to be bypassed:
396
397           sub mytie(\[%$*@]$@) {
398               my ($ref, $pack, @args) = @_;
399               ... do something ...
400               goto &CORE::tie;
401           }
402
403       Some of these cannot be called through references or via &foo syntax,
404       but must be called as barewords.
405
406       See CORE for details.
407
408   Other Changes
409       Anonymous handles
410
411       Automatically generated file handles are now named __ANONIO__ when the
412       variable name cannot be determined, rather than $__ANONIO__.
413
414       Autoloaded sort Subroutines
415
416       Custom sort subroutines can now be autoloaded [perl #30661]:
417
418           sub AUTOLOAD { ... }
419           @sorted = sort foo @list; # uses AUTOLOAD
420
421       "continue" no longer requires the "switch" feature
422
423       The "continue" keyword has two meanings.  It can introduce a "continue"
424       block after a loop, or it can exit the current "when" block.  Up to
425       now, the latter meaning was valid only with the "switch" feature
426       enabled, and was a syntax error otherwise.  Since the main purpose of
427       feature.pm is to avoid conflicts with user-defined subroutines, there
428       is no reason for "continue" to depend on it.
429
430       DTrace probes for interpreter phase change
431
432       The "phase-change" probes will fire when the interpreter's phase
433       changes, which tracks the "${^GLOBAL_PHASE}" variable.  "arg0" is the
434       new phase name; "arg1" is the old one.  This is useful for limiting
435       your instrumentation to one or more of: compile time, run time, or
436       destruct time.
437
438       "__FILE__()" Syntax
439
440       The "__FILE__", "__LINE__" and "__PACKAGE__" tokens can now be written
441       with an empty pair of parentheses after them.  This makes them parse
442       the same way as "time", "fork" and other built-in functions.
443
444       The "\$" prototype accepts any scalar lvalue
445
446       The "\$" and "\[$]" subroutine prototypes now accept any scalar lvalue
447       argument.  Previously they accepted only scalars beginning with "$" and
448       hash and array elements.  This change makes them consistent with the
449       way the built-in "read" and "recv" functions (among others) parse their
450       arguments.  This means that one can override the built-in functions
451       with custom subroutines that parse their arguments the same way.
452
453       "_" in subroutine prototypes
454
455       The "_" character in subroutine prototypes is now allowed before "@" or
456       "%".
457

Security

459   Use "is_utf8_char_buf()" and not "is_utf8_char()"
460       The latter function is now deprecated because its API is insufficient
461       to guarantee that it doesn't read (up to 12 bytes in the worst case)
462       beyond the end of its input string.  See is_utf8_char_buf().
463
464   Malformed UTF-8 input could cause attempts to read beyond the end of the
465       buffer
466       Two new XS-accessible functions, "utf8_to_uvchr_buf()" and
467       "utf8_to_uvuni_buf()" are now available to prevent this, and the Perl
468       core has been converted to use them.  See "Internal Changes".
469
470   "File::Glob::bsd_glob()" memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
471       Calling "File::Glob::bsd_glob" with the unsupported flag
472       GLOB_ALTDIRFUNC would cause an access violation / segfault.  A Perl
473       program that accepts a flags value from an external source could expose
474       itself to denial of service or arbitrary code execution attacks.  There
475       are no known exploits in the wild.  The problem has been corrected by
476       explicitly disabling all unsupported flags and setting unused function
477       pointers to null.  Bug reported by Clement Lecigne. (5.14.2)
478
479   Privileges are now set correctly when assigning to $(
480       A hypothetical bug (probably unexploitable in practice) because the
481       incorrect setting of the effective group ID while setting $( has been
482       fixed.  The bug would have affected only systems that have
483       "setresgid()" but not "setregid()", but no such systems are known to
484       exist.
485

Deprecations

487   Don't read the Unicode data base files in lib/unicore
488       It is now deprecated to directly read the Unicode data base files.
489       These are stored in the lib/unicore directory.  Instead, you should use
490       the new functions in Unicode::UCD.  These provide a stable API, and
491       give complete information.
492
493       Perl may at some point in the future change or remove these files.  The
494       file which applications were most likely to have used is
495       lib/unicore/ToDigit.pl.  "prop_invmap()" in Unicode::UCD can be used to
496       get at its data instead.
497
498   XS functions "is_utf8_char()", "utf8_to_uvchr()" and "utf8_to_uvuni()"
499       This function is deprecated because it could read beyond the end of the
500       input string.  Use the new is_utf8_char_buf(), "utf8_to_uvchr_buf()"
501       and "utf8_to_uvuni_buf()" instead.
502

Future Deprecations

504       This section serves as a notice of features that are likely to be
505       removed or deprecated in the next release of perl (5.18.0).  If your
506       code depends on these features, you should contact the Perl 5 Porters
507       via the mailing list <http://lists.perl.org/list/perl5-porters.html> or
508       perlbug to explain your use case and inform the deprecation process.
509
510   Core Modules
511       These modules may be marked as deprecated from the core.  This only
512       means that they will no longer be installed by default with the core
513       distribution, but will remain available on the CPAN.
514
515       ·   CPANPLUS
516
517       ·   Filter::Simple
518
519       ·   PerlIO::mmap
520
521       ·   Pod::LaTeX
522
523       ·   Pod::Parser
524
525       ·   SelfLoader
526
527       ·   Text::Soundex
528
529       ·   Thread.pm
530
531   Platforms with no supporting programmers
532       These platforms will probably have their special build support removed
533       during the 5.17.0 development series.
534
535       ·   BeOS
536
537       ·   djgpp
538
539       ·   dgux
540
541       ·   EPOC
542
543       ·   MPE/iX
544
545       ·   Rhapsody
546
547       ·   UTS
548
549       ·   VM/ESA
550
551   Other Future Deprecations
552       ·   Swapping of $< and $>
553
554           For more information about this future deprecation, see the
555           relevant RT ticket
556           <https://rt.perl.org/rt3/Ticket/Display.html?id=96212>.
557
558       ·   sfio, stdio
559
560           Perl supports being built without PerlIO proper, using a stdio or
561           sfio wrapper instead.  A perl build like this will not support IO
562           layers and thus Unicode IO, making it rather handicapped.
563
564           PerlIO supports a "stdio" layer if stdio use is desired, and
565           similarly a sfio layer could be produced.
566
567       ·   Unescaped literal "{" in regular expressions.
568
569           Starting with v5.20, it is planned to require a literal "{" to be
570           escaped, for example by preceding it with a backslash.  In v5.18, a
571           deprecated warning message will be emitted for all such uses.  This
572           affects only patterns that are to match a literal "{".  Other uses
573           of this character, such as part of a quantifier or sequence as in
574           those below, are completely unaffected:
575
576               /foo{3,5}/
577               /\p{Alphabetic}/
578               /\N{DIGIT ZERO}
579
580           Removing this will permit extensions to Perl's pattern syntax and
581           better error checking for existing syntax.  See "Quantifiers" in
582           perlre for an example.
583
584       ·   Revamping "\Q" semantics in double-quotish strings when combined
585           with other escapes.
586
587           There are several bugs and inconsistencies involving combinations
588           of "\Q" and escapes like "\x", "\L", etc., within a "\Q...\E" pair.
589           These need to be fixed, and doing so will necessarily change
590           current behavior.  The changes have not yet been settled.
591

Incompatible Changes

593   Special blocks called in void context
594       Special blocks ("BEGIN", "CHECK", "INIT", "UNITCHECK", "END") are now
595       called in void context.  This avoids wasteful copying of the result of
596       the last statement [perl #108794].
597
598   The "overloading" pragma and regexp objects
599       With "no overloading", regular expression objects returned by "qr//"
600       are now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
601       expression itself [perl #108780].
602
603   Two XS typemap Entries removed
604       Two presumably unused XS typemap entries have been removed from the
605       core typemap: T_DATAUNIT and T_CALLBACK.  If you are, against all odds,
606       a user of these, please see the instructions on how to restore them in
607       perlxstypemap.
608
609   Unicode 6.1 has incompatibilities with Unicode 6.0
610       These are detailed in "Supports (almost) Unicode 6.1" above.  You can
611       compile this version of Perl to use Unicode 6.0.  See "Hacking Perl to
612       work on earlier Unicode versions (for very serious hackers only)" in
613       perlunicode.
614
615   Borland compiler
616       All support for the Borland compiler has been dropped.  The code had
617       not worked for a long time anyway.
618
619   Certain deprecated Unicode properties are no longer supported by default
620       Perl should never have exposed certain Unicode properties that are used
621       by Unicode internally and not meant to be publicly available.  Use of
622       these has generated deprecated warning messages since Perl 5.12.  The
623       removed properties are Other_Alphabetic,
624       Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
625       Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
626       Other_Uppercase.
627
628       Perl may be recompiled to include any or all of them; instructions are
629       given in "Unicode character properties that are NOT accepted by Perl"
630       in perluniprops.
631
632   Dereferencing IO thingies as typeglobs
633       The "*{...}" operator, when passed a reference to an IO thingy (as in
634       "*{*STDIN{IO}}"), creates a new typeglob containing just that IO
635       object.  Previously, it would stringify as an empty string, but some
636       operators would treat it as undefined, producing an "uninitialized"
637       warning.  Now it stringifies as __ANONIO__ [perl #96326].
638
639   User-defined case-changing operations
640       This feature was deprecated in Perl 5.14, and has now been removed.
641       The CPAN module Unicode::Casing provides better functionality without
642       the drawbacks that this feature had, as are detailed in the 5.14
643       documentation:
644       <http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
645
646   XSUBs are now 'static'
647       XSUB C functions are now 'static', that is, they are not visible from
648       outside the compilation unit.  Users can use the new
649       "XS_EXTERNAL(name)" and "XS_INTERNAL(name)" macros to pick the desired
650       linking behavior.  The ordinary "XS(name)" declaration for XSUBs will
651       continue to declare non-'static' XSUBs for compatibility, but the XS
652       compiler, ExtUtils::ParseXS ("xsubpp") will emit 'static' XSUBs by
653       default.  ExtUtils::ParseXS's behavior can be reconfigured from XS
654       using the "EXPORT_XSUB_SYMBOLS" keyword.  See perlxs for details.
655
656   Weakening read-only references
657       Weakening read-only references is no longer permitted.  It should never
658       have worked anyway, and could sometimes result in crashes.
659
660   Tying scalars that hold typeglobs
661       Attempting to tie a scalar after a typeglob was assigned to it would
662       instead tie the handle in the typeglob's IO slot.  This meant that it
663       was impossible to tie the scalar itself.  Similar problems affected
664       "tied" and "untie": "tied $scalar" would return false on a tied scalar
665       if the last thing returned was a typeglob, and "untie $scalar" on such
666       a tied scalar would do nothing.
667
668       We fixed this problem before Perl 5.14.0, but it caused problems with
669       some CPAN modules, so we put in a deprecation cycle instead.
670
671       Now the deprecation has been removed and this bug has been fixed.  So
672       "tie $scalar" will always tie the scalar, not the handle it holds.  To
673       tie the handle, use "tie *$scalar" (with an explicit asterisk).  The
674       same applies to "tied *$scalar" and "untie *$scalar".
675
676   IPC::Open3 no longer provides "xfork()", "xclose_on_exec()" and
677       "xpipe_anon()"
678       All three functions were private, undocumented, and unexported.  They
679       do not appear to be used by any code on CPAN.  Two have been inlined
680       and one deleted entirely.
681
682   $$ no longer caches PID
683       Previously, if one called fork(3) from C, Perl's notion of $$ could go
684       out of sync with what getpid() returns.  By always fetching the value
685       of $$ via getpid(), this potential bug is eliminated.  Code that
686       depends on the caching behavior will break.  As described in Core
687       Enhancements, $$ is now writable, but it will be reset during a fork.
688
689   $$ and "getppid()" no longer emulate POSIX semantics under LinuxThreads
690       The POSIX emulation of $$ and "getppid()" under the obsolete
691       LinuxThreads implementation has been removed.  This only impacts users
692       of Linux 2.4 and users of Debian GNU/kFreeBSD up to and including 6.0,
693       not the vast majority of Linux installations that use NPTL threads.
694
695       This means that "getppid()", like $$, is now always guaranteed to
696       return the OS's idea of the current state of the process, not perl's
697       cached version of it.
698
699       See the documentation for $$ for details.
700
701   $<, $>, $( and $) are no longer cached
702       Similarly to the changes to $$ and "getppid()", the internal caching of
703       $<, $>, $( and $) has been removed.
704
705       When we cached these values our idea of what they were would drift out
706       of sync with reality if someone (e.g., someone embedding perl) called
707       "sete?[ug]id()" without updating "PL_e?[ug]id".  Having to deal with
708       this complexity wasn't worth it given how cheap the "gete?[ug]id()"
709       system call is.
710
711       This change will break a handful of CPAN modules that use the XS-level
712       "PL_uid", "PL_gid", "PL_euid" or "PL_egid" variables.
713
714       The fix for those breakages is to use "PerlProc_gete?[ug]id()" to
715       retrieve them (e.g., "PerlProc_getuid()"), and not to assign to
716       "PL_e?[ug]id" if you change the UID/GID/EUID/EGID.  There is no longer
717       any need to do so since perl will always retrieve the up-to-date
718       version of those values from the OS.
719
720   Which Non-ASCII characters get quoted by "quotemeta" and "\Q" has changed
721       This is unlikely to result in a real problem, as Perl does not attach
722       special meaning to any non-ASCII character, so it is currently
723       irrelevant which are quoted or not.  This change fixes bug [perl
724       #77654] and brings Perl's behavior more into line with Unicode's
725       recommendations.  See "quotemeta" in perlfunc.
726

Performance Enhancements

728       ·   Improved performance for Unicode properties in regular expressions
729
730           Matching a code point against a Unicode property is now done via a
731           binary search instead of linear.  This means for example that the
732           worst case for a 1000 item property is 10 probes instead of 1000.
733           This inefficiency has been compensated for in the past by
734           permanently storing in a hash the results of a given probe plus the
735           results for the adjacent 64 code points, under the theory that
736           near-by code points are likely to be searched for.  A separate hash
737           was used for each mention of a Unicode property in each regular
738           expression.  Thus, "qr/\p{foo}abc\p{foo}/" would generate two
739           hashes.  Any probes in one instance would be unknown to the other,
740           and the hashes could expand separately to be quite large if the
741           regular expression were used on many different widely-separated
742           code points.  Now, however, there is just one hash shared by all
743           instances of a given property.  This means that if "\p{foo}" is
744           matched against "A" in one regular expression in a thread, the
745           result will be known immediately to all regular expressions, and
746           the relentless march of using up memory is slowed considerably.
747
748       ·   Version declarations with the "use" keyword (e.g., "use 5.012") are
749           now faster, as they enable features without loading feature.pm.
750
751       ·   "local $_" is faster now, as it no longer iterates through magic
752           that it is not going to copy anyway.
753
754       ·   Perl 5.12.0 sped up the destruction of objects whose classes define
755           empty "DESTROY" methods (to prevent autoloading), by simply not
756           calling such empty methods.  This release takes this optimization a
757           step further, by not calling any "DESTROY" method that begins with
758           a "return" statement.  This can be useful for destructors that are
759           only used for debugging:
760
761               use constant DEBUG => 1;
762               sub DESTROY { return unless DEBUG; ... }
763
764           Constant-folding will reduce the first statement to "return;" if
765           DEBUG is set to 0, triggering this optimization.
766
767       ·   Assigning to a variable that holds a typeglob or copy-on-write
768           scalar is now much faster.  Previously the typeglob would be
769           stringified or the copy-on-write scalar would be copied before
770           being clobbered.
771
772       ·   Assignment to "substr" in void context is now more than twice its
773           previous speed.  Instead of creating and returning a special lvalue
774           scalar that is then assigned to, "substr" modifies the original
775           string itself.
776
777       ·   "substr" no longer calculates a value to return when called in void
778           context.
779
780       ·   Due to changes in File::Glob, Perl's "glob" function and its
781           "<...>" equivalent are now much faster.  The splitting of the
782           pattern into words has been rewritten in C, resulting in speed-ups
783           of 20% for some cases.
784
785           This does not affect "glob" on VMS, as it does not use File::Glob.
786
787       ·   The short-circuiting operators "&&", "||", and "//", when chained
788           (such as "$a || $b || $c"), are now considerably faster to short-
789           circuit, due to reduced optree traversal.
790
791       ·   The implementation of "s///r" makes one fewer copy of the scalar's
792           value.
793
794       ·   Recursive calls to lvalue subroutines in lvalue scalar context use
795           less memory.
796

Modules and Pragmata

798   Deprecated Modules
799       Version::Requirements
800           Version::Requirements is now DEPRECATED, use
801           CPAN::Meta::Requirements, which is a drop-in replacement.  It will
802           be deleted from perl.git blead in v5.17.0.
803
804   New Modules and Pragmata
805       ·   arybase -- this new module implements the $[ variable.
806
807       ·   PerlIO::mmap 0.010 has been added to the Perl core.
808
809           The "mmap" PerlIO layer is no longer implemented by perl itself,
810           but has been moved out into the new PerlIO::mmap module.
811
812   Updated Modules and Pragmata
813       This is only an overview of selected module updates.  For a complete
814       list of updates, run:
815
816           $ corelist --diff 5.14.0 5.16.0
817
818       You can substitute your favorite version in place of 5.14.0, too.
819
820       ·   Archive::Extract has been upgraded from version 0.48 to 0.58.
821
822           Includes a fix for FreeBSD to only use "unzip" if it is located in
823           "/usr/local/bin", as FreeBSD 9.0 will ship with a limited "unzip"
824           in "/usr/bin".
825
826       ·   Archive::Tar has been upgraded from version 1.76 to 1.82.
827
828           Adjustments to handle files >8gb (>0777777777777 octal) and a
829           feature to return the MD5SUM of files in the archive.
830
831       ·   base has been upgraded from version 2.16 to 2.18.
832
833           "base" no longer sets a module's $VERSION to "-1" when a module it
834           loads does not define a $VERSION.  This change has been made
835           because "-1" is not a valid version number under the new "lax"
836           criteria used internally by "UNIVERSAL::VERSION".  (See version for
837           more on "lax" version criteria.)
838
839           "base" no longer internally skips loading modules it has already
840           loaded and instead relies on "require" to inspect %INC.  This fixes
841           a bug when "base" is used with code that clear %INC to force a
842           module to be reloaded.
843
844       ·   Carp has been upgraded from version 1.20 to 1.26.
845
846           It now includes last read filehandle info and puts a dot after the
847           file and line number, just like errors from "die" [perl #106538].
848
849       ·   charnames has been updated from version 1.18 to 1.30.
850
851           "charnames" can now be invoked with a new option, ":loose", which
852           is like the existing ":full" option, but enables Unicode loose name
853           matching.  Details are in "LOOSE MATCHES" in charnames.
854
855       ·   B::Deparse has been upgraded from version 1.03 to 1.14.  This fixes
856           numerous deparsing bugs.
857
858       ·   CGI has been upgraded from version 3.52 to 3.59.
859
860           It uses the public and documented FCGI.pm API in CGI::Fast.
861           CGI::Fast was using an FCGI API that was deprecated and removed
862           from documentation more than ten years ago.  Usage of this
863           deprecated API with FCGI >= 0.70 or FCGI <= 0.73 introduces a
864           security issue.
865           <https://rt.cpan.org/Public/Bug/Display.html?id=68380>
866           <http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766>
867
868           Things that may break your code:
869
870           "url()" was fixed to return "PATH_INFO" when it is explicitly
871           requested with either the "path=>1" or "path_info=>1" flag.
872
873           If your code is running under mod_rewrite (or compatible) and you
874           are calling "self_url()" or you are calling "url()" and passing
875           "path_info=>1", these methods will actually be returning
876           "PATH_INFO" now, as you have explicitly requested or "self_url()"
877           has requested on your behalf.
878
879           The "PATH_INFO" has been omitted in such URLs since the issue was
880           introduced in the 3.12 release in December, 2005.
881
882           This bug is so old your application may have come to depend on it
883           or workaround it. Check for application before upgrading to this
884           release.
885
886           Examples of affected method calls:
887
888             $q->url(-absolute => 1, -query => 1, -path_info => 1);
889             $q->url(-path=>1);
890             $q->url(-full=>1,-path=>1);
891             $q->url(-rewrite=>1,-path=>1);
892             $q->self_url();
893
894           We no longer read from STDIN when the Content-Length is not set,
895           preventing requests with no Content-Length from sometimes freezing.
896           This is consistent with the CGI RFC 3875, and is also consistent
897           with CGI::Simple.  However, the old behavior may have been expected
898           by some command-line uses of CGI.pm.
899
900           In addition, the DELETE HTTP verb is now supported.
901
902       ·   Compress::Zlib has been upgraded from version 2.035 to 2.048.
903
904           IO::Compress::Zip and IO::Uncompress::Unzip now have support for
905           LZMA (method 14).  There is a fix for a CRC issue in
906           IO::Compress::Unzip and it supports Streamed Stored context now.
907           And fixed a Zip64 issue in IO::Compress::Zip when the content size
908           was exactly 0xFFFFFFFF.
909
910       ·   Digest::SHA has been upgraded from version 5.61 to 5.71.
911
912           Added BITS mode to the addfile method and shasum.  This makes
913           partial-byte inputs possible via files/STDIN and lets shasum check
914           all 8074 NIST Msg vectors, where previously special programming was
915           required to do this.
916
917       ·   Encode has been upgraded from version 2.42 to 2.44.
918
919           Missing aliases added, a deep recursion error fixed and various
920           documentation updates.
921
922           Addressed 'decode_xs n-byte heap-overflow' security bug in
923           Unicode.xs (CVE-2011-2939). (5.14.2)
924
925       ·   ExtUtils::CBuilder updated from version 0.280203 to 0.280206.
926
927           The new version appends CFLAGS and LDFLAGS to their Config.pm
928           counterparts.
929
930       ·   ExtUtils::ParseXS has been upgraded from version 2.2210 to 3.16.
931
932           Much of ExtUtils::ParseXS, the module behind the XS compiler
933           "xsubpp", was rewritten and cleaned up.  It has been made somewhat
934           more extensible and now finally uses strictures.
935
936           The typemap logic has been moved into a separate module,
937           ExtUtils::Typemaps.  See "New Modules and Pragmata", above.
938
939           For a complete set of changes, please see the ExtUtils::ParseXS
940           changelog, available on the CPAN.
941
942       ·   File::Glob has been upgraded from version 1.12 to 1.17.
943
944           On Windows, tilde (~) expansion now checks the "USERPROFILE"
945           environment variable, after checking "HOME".
946
947           It has a new ":bsd_glob" export tag, intended to replace ":glob".
948           Like ":glob" it overrides "glob" with a function that does not
949           split the glob pattern into words, but, unlike ":glob", it iterates
950           properly in scalar context, instead of returning the last file.
951
952           There are other changes affecting Perl's own "glob" operator (which
953           uses File::Glob internally, except on VMS).  See "Performance
954           Enhancements" and "Selected Bug Fixes".
955
956       ·   FindBin updated from version 1.50 to 1.51.
957
958           It no longer returns a wrong result if a script of the same name as
959           the current one exists in the path and is executable.
960
961       ·   HTTP::Tiny has been upgraded from version 0.012 to 0.017.
962
963           Added support for using $ENV{http_proxy} to set the default proxy
964           host.
965
966           Adds additional shorthand methods for all common HTTP verbs, a
967           "post_form()" method for POST-ing x-www-form-urlencoded data and a
968           "www_form_urlencode()" utility method.
969
970       ·   IO has been upgraded from version 1.25_04 to 1.25_06, and
971           IO::Handle from version 1.31 to 1.33.
972
973           Together, these upgrades fix a problem with IO::Handle's "getline"
974           and "getlines" methods.  When these methods are called on the
975           special ARGV handle, the next file is automatically opened, as
976           happens with the built-in "<>" and "readline" functions.  But,
977           unlike the built-ins, these methods were not respecting the
978           caller's use of the open pragma and applying the appropriate I/O
979           layers to the newly-opened file [rt.cpan.org #66474].
980
981       ·   IPC::Cmd has been upgraded from version 0.70 to 0.76.
982
983           Capturing of command output (both "STDOUT" and "STDERR") is now
984           supported using IPC::Open3 on MSWin32 without requiring IPC::Run.
985
986       ·   IPC::Open3 has been upgraded from version 1.09 to 1.12.
987
988           Fixes a bug which prevented use of "open3" on Windows when *STDIN,
989           *STDOUT or *STDERR had been localized.
990
991           Fixes a bug which prevented duplicating numeric file descriptors on
992           Windows.
993
994           "open3" with "-" for the program name works once more.  This was
995           broken in version 1.06 (and hence in Perl 5.14.0) [perl #95748].
996
997       ·   Locale::Codes has been upgraded from version 3.16 to 3.21.
998
999           Added Language Extension codes (langext) and Language Variation
1000           codes (langvar) as defined in the IANA language registry.
1001
1002           Added language codes from ISO 639-5
1003
1004           Added language/script codes from the IANA language subtag registry
1005
1006           Fixed an uninitialized value warning [rt.cpan.org #67438].
1007
1008           Fixed the return value for the all_XXX_codes and all_XXX_names
1009           functions [rt.cpan.org #69100].
1010
1011           Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE
1012           to allow for cleaner future additions.  The original four modules
1013           (Locale::Language, Locale::Currency, Locale::Country,
1014           Locale::Script) will continue to work, but all new sets of codes
1015           will be added in the Locale::Codes namespace.
1016
1017           The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions
1018           now support retired codes.  All codesets may be specified by a
1019           constant or by their name now.  Previously, they were specified
1020           only by a constant.
1021
1022           The alias_code function exists for backward compatibility.  It has
1023           been replaced by rename_country_code.  The alias_code function will
1024           be removed some time after September, 2013.
1025
1026           All work is now done in the central module (Locale::Codes).
1027           Previously, some was still done in the wrapper modules
1028           (Locale::Codes::*).  Added Language Family codes (langfam) as
1029           defined in ISO 639-5.
1030
1031       ·   Math::BigFloat has been upgraded from version 1.993 to 1.997.
1032
1033           The "numify" method has been corrected to return a normalized Perl
1034           number (the result of "0 + $thing"), instead of a string
1035           [rt.cpan.org #66732].
1036
1037       ·   Math::BigInt has been upgraded from version 1.994 to 1.998.
1038
1039           It provides a new "bsgn" method that complements the "babs" method.
1040
1041           It fixes the internal "objectify" function's handling of "foreign
1042           objects" so they are converted to the appropriate class
1043           (Math::BigInt or Math::BigFloat).
1044
1045       ·   Math::BigRat has been upgraded from version 0.2602 to 0.2603.
1046
1047           "int()" on a Math::BigRat object containing -1/2 now creates a
1048           Math::BigInt containing 0, rather than -0.  Math::BigInt does not
1049           even support negative zero, so the resulting object was actually
1050           malformed [perl #95530].
1051
1052       ·   Math::Complex has been upgraded from version 1.56 to 1.59 and
1053           Math::Trig from version 1.2 to 1.22.
1054
1055           Fixes include: correct copy constructor usage; fix polarwise
1056           formatting with numeric format specifier; and more stable
1057           "great_circle_direction" algorithm.
1058
1059       ·   Module::CoreList has been upgraded from version 2.51 to 2.66.
1060
1061           The "corelist" utility now understands the "-r" option for
1062           displaying Perl release dates and the "--diff" option to print the
1063           set of modlib changes between two perl distributions.
1064
1065       ·   Module::Metadata has been upgraded from version 1.000004 to
1066           1.000009.
1067
1068           Adds "provides" method to generate a CPAN META provides data
1069           structure correctly; use of "package_versions_from_directory" is
1070           discouraged.
1071
1072       ·   ODBM_File has been upgraded from version 1.10 to 1.12.
1073
1074           The XS code is now compiled with "PERL_NO_GET_CONTEXT", which will
1075           aid performance under ithreads.
1076
1077       ·   open has been upgraded from version 1.08 to 1.10.
1078
1079           It no longer turns off layers on standard handles when invoked
1080           without the ":std" directive.  Similarly, when invoked with the
1081           ":std" directive, it now clears layers on STDERR before applying
1082           the new ones, and not just on STDIN and STDOUT [perl #92728].
1083
1084       ·   overload has been upgraded from version 1.13 to 1.18.
1085
1086           "overload::Overloaded" no longer calls "can" on the class, but uses
1087           another means to determine whether the object has overloading.  It
1088           was never correct for it to call "can", as overloading does not
1089           respect AUTOLOAD.  So classes that autoload methods and implement
1090           "can" no longer have to account for overloading [perl #40333].
1091
1092           A warning is now produced for invalid arguments.  See "New
1093           Diagnostics".
1094
1095       ·   PerlIO::scalar has been upgraded from version 0.11 to 0.14.
1096
1097           (This is the module that implements "open $fh, '>', \$scalar".)
1098
1099           It fixes a problem with "open my $fh, ">", \$scalar" not working if
1100           $scalar is a copy-on-write scalar. (5.14.2)
1101
1102           It also fixes a hang that occurs with "readline" or "<$fh>" if a
1103           typeglob has been assigned to $scalar [perl #92258].
1104
1105           It no longer assumes during "seek" that $scalar is a string
1106           internally.  If it didn't crash, it was close to doing so [perl
1107           #92706].  Also, the internal print routine no longer assumes that
1108           the position set by "seek" is valid, but extends the string to that
1109           position, filling the intervening bytes (between the old length and
1110           the seek position) with nulls [perl #78980].
1111
1112           Printing to an in-memory handle now works if the $scalar holds a
1113           reference, stringifying the reference before modifying it.
1114           References used to be treated as empty strings.
1115
1116           Printing to an in-memory handle no longer crashes if the $scalar
1117           happens to hold a number internally, but no string buffer.
1118
1119           Printing to an in-memory handle no longer creates scalars that
1120           confuse the regular expression engine [perl #108398].
1121
1122       ·   Pod::Functions has been upgraded from version 1.04 to 1.05.
1123
1124           Functions.pm is now generated at perl build time from annotations
1125           in perlfunc.pod.  This will ensure that Pod::Functions and perlfunc
1126           remain in synchronisation.
1127
1128       ·   Pod::Html has been upgraded from version 1.11 to 1.1502.
1129
1130           This is an extensive rewrite of Pod::Html to use Pod::Simple under
1131           the hood.  The output has changed significantly.
1132
1133       ·   Pod::Perldoc has been upgraded from version 3.15_03 to 3.17.
1134
1135           It corrects the search paths on VMS [perl #90640]. (5.14.1)
1136
1137           The -v option now fetches the right section for $0.
1138
1139           This upgrade has numerous significant fixes.  Consult its changelog
1140           on the CPAN for more information.
1141
1142       ·   POSIX has been upgraded from version 1.24 to 1.30.
1143
1144           POSIX no longer uses AutoLoader.  Any code which was relying on
1145           this implementation detail was buggy, and may fail because of this
1146           change.  The module's Perl code has been considerably simplified,
1147           roughly halving the number of lines, with no change in
1148           functionality.  The XS code has been refactored to reduce the size
1149           of the shared object by about 12%, with no change in functionality.
1150           More POSIX functions now have tests.
1151
1152           "sigsuspend" and "pause" now run signal handlers before returning,
1153           as the whole point of these two functions is to wait until a signal
1154           has arrived, and then return after it has been triggered.  Delayed,
1155           or "safe", signals were preventing that from happening, possibly
1156           resulting in race conditions [perl #107216].
1157
1158           "POSIX::sleep" is now a direct call into the underlying OS "sleep"
1159           function, instead of being a Perl wrapper on "CORE::sleep".
1160           "POSIX::dup2" now returns the correct value on Win32 (i.e., the
1161           file descriptor).  "POSIX::SigSet" "sigsuspend" and "sigpending"
1162           and "POSIX::pause" now dispatch safe signals immediately before
1163           returning to their caller.
1164
1165           "POSIX::Termios::setattr" now defaults the third argument to
1166           "TCSANOW", instead of 0. On most platforms "TCSANOW" is defined to
1167           be 0, but on some 0 is not a valid parameter, which caused a call
1168           with defaults to fail.
1169
1170       ·   Socket has been upgraded from version 1.94 to 2.001.
1171
1172           It has new functions and constants for handling IPv6 sockets:
1173
1174               pack_ipv6_mreq
1175               unpack_ipv6_mreq
1176               IPV6_ADD_MEMBERSHIP
1177               IPV6_DROP_MEMBERSHIP
1178               IPV6_MTU
1179               IPV6_MTU_DISCOVER
1180               IPV6_MULTICAST_HOPS
1181               IPV6_MULTICAST_IF
1182               IPV6_MULTICAST_LOOP
1183               IPV6_UNICAST_HOPS
1184               IPV6_V6ONLY
1185
1186       ·   Storable has been upgraded from version 2.27 to 2.34.
1187
1188           It no longer turns copy-on-write scalars into read-only scalars
1189           when freezing and thawing.
1190
1191       ·   Sys::Syslog has been upgraded from version 0.27 to 0.29.
1192
1193           This upgrade closes many outstanding bugs.
1194
1195       ·   Term::ANSIColor has been upgraded from version 3.00 to 3.01.
1196
1197           Only interpret an initial array reference as a list of colors, not
1198           any initial reference, allowing the colored function to work
1199           properly on objects with stringification defined.
1200
1201       ·   Term::ReadLine has been upgraded from version 1.07 to 1.09.
1202
1203           Term::ReadLine now supports any event loop, including unpublished
1204           ones and simple IO::Select, loops without the need to rewrite
1205           existing code for any particular framework [perl #108470].
1206
1207       ·   threads::shared has been upgraded from version 1.37 to 1.40.
1208
1209           Destructors on shared objects used to be ignored sometimes if the
1210           objects were referenced only by shared data structures.  This has
1211           been mostly fixed, but destructors may still be ignored if the
1212           objects still exist at global destruction time [perl #98204].
1213
1214       ·   Unicode::Collate has been upgraded from version 0.73 to 0.89.
1215
1216           Updated to CLDR 1.9.1
1217
1218           Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv,
1219           uk, zh__pinyin, zh__stroke
1220
1221           Newly supported locales: bn, fa, ml, mr, or, pa, sa, si,
1222           si__dictionary, sr_Latn, sv__reformed, ta, te, th, ur, wae.
1223
1224           Tailored compatibility ideographs as well as unified ideographs for
1225           the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin,
1226           zh__stroke.
1227
1228           Locale/*.pl files are now searched for in @INC.
1229
1230       ·   Unicode::Normalize has been upgraded from version 1.10 to 1.14.
1231
1232           Fixes for the removal of unicore/CompositionExclusions.txt from
1233           core.
1234
1235       ·   Unicode::UCD has been upgraded from version 0.32 to 0.43.
1236
1237           This adds four new functions:  "prop_aliases()" and
1238           "prop_value_aliases()", which are used to find all Unicode-approved
1239           synonyms for property names, or to convert from one name to
1240           another; "prop_invlist" which returns all code points matching a
1241           given Unicode binary property; and "prop_invmap" which returns the
1242           complete specification of a given Unicode property.
1243
1244       ·   Win32API::File has been upgraded from version 0.1101 to 0.1200.
1245
1246           Added SetStdHandle and GetStdHandle functions
1247
1248   Removed Modules and Pragmata
1249       As promised in Perl 5.14.0's release notes, the following modules have
1250       been removed from the core distribution, and if needed should be
1251       installed from CPAN instead.
1252
1253       ·   Devel::DProf has been removed from the Perl core.  Prior version
1254           was 20110228.00.
1255
1256       ·   Shell has been removed from the Perl core.  Prior version was
1257           0.72_01.
1258
1259       ·   Several old perl4-style libraries which have been deprecated with
1260           5.14 are now removed:
1261
1262               abbrev.pl assert.pl bigfloat.pl bigint.pl bigrat.pl cacheout.pl
1263               complete.pl ctime.pl dotsh.pl exceptions.pl fastcwd.pl flush.pl
1264               getcwd.pl getopt.pl getopts.pl hostname.pl importenv.pl
1265               lib/find{,depth}.pl look.pl newgetopt.pl open2.pl open3.pl
1266               pwd.pl shellwords.pl stat.pl tainted.pl termcap.pl timelocal.pl
1267
1268           They can be found on CPAN as Perl4::CoreLibs.
1269

Documentation

1271   New Documentation
1272       perldtrace
1273
1274       perldtrace describes Perl's DTrace support, listing the provided probes
1275       and gives examples of their use.
1276
1277       perlexperiment
1278
1279       This document is intended to provide a list of experimental features in
1280       Perl.  It is still a work in progress.
1281
1282       perlootut
1283
1284       This a new OO tutorial.  It focuses on basic OO concepts, and then
1285       recommends that readers choose an OO framework from CPAN.
1286
1287       perlxstypemap
1288
1289       The new manual describes the XS typemapping mechanism in unprecedented
1290       detail and combines new documentation with information extracted from
1291       perlxs and the previously unofficial list of all core typemaps.
1292
1293   Changes to Existing Documentation
1294       perlapi
1295
1296       ·   The HV API has long accepted negative lengths to show that the key
1297           is in UTF8.  This is now documented.
1298
1299       ·   The "boolSV()" macro is now documented.
1300
1301       perlfunc
1302
1303       ·   "dbmopen" treats a 0 mode as a special case, that prevents a
1304           nonexistent file from being created.  This has been the case since
1305           Perl 5.000, but was never documented anywhere.  Now the perlfunc
1306           entry mentions it [perl #90064].
1307
1308       ·   As an accident of history, "open $fh, '<:', ..." applies the
1309           default layers for the platform (":raw" on Unix, ":crlf" on
1310           Windows), ignoring whatever is declared by open.pm.  This seems
1311           such a useful feature it has been documented in perlfunc and open.
1312
1313       ·   The entry for "split" has been rewritten.  It is now far clearer
1314           than before.
1315
1316       perlguts
1317
1318       ·   A new section, Autoloading with XSUBs, has been added, which
1319           explains the two APIs for accessing the name of the autoloaded sub.
1320
1321       ·   Some function descriptions in perlguts were confusing, as it was
1322           not clear whether they referred to the function above or below the
1323           description.  This has been clarified [perl #91790].
1324
1325       perlobj
1326
1327       ·   This document has been rewritten from scratch, and its coverage of
1328           various OO concepts has been expanded.
1329
1330       perlop
1331
1332       ·   Documentation of the smartmatch operator has been reworked and
1333           moved from perlsyn to perlop where it belongs.
1334
1335           It has also been corrected for the case of "undef" on the left-hand
1336           side.  The list of different smart match behaviors had an item in
1337           the wrong place.
1338
1339       ·   Documentation of the ellipsis statement ("...") has been reworked
1340           and moved from perlop to perlsyn.
1341
1342       ·   The explanation of bitwise operators has been expanded to explain
1343           how they work on Unicode strings (5.14.1).
1344
1345       ·   More examples for "m//g" have been added (5.14.1).
1346
1347       ·   The "<<\FOO" here-doc syntax has been documented (5.14.1).
1348
1349       perlpragma
1350
1351       ·   There is now a standard convention for naming keys in the "%^H",
1352           documented under Key naming.
1353
1354       "Laundering and Detecting Tainted Data" in perlsec
1355
1356       ·   The example function for checking for taintedness contained a
1357           subtle error.  $@ needs to be localized to prevent its changing
1358           this global's value outside the function.  The preferred method to
1359           check for this remains "tainted" in Scalar::Util.
1360
1361       perllol
1362
1363       ·   perllol has been expanded with examples using the new "push
1364           $scalar" syntax introduced in Perl 5.14.0 (5.14.1).
1365
1366       perlmod
1367
1368       ·   perlmod now states explicitly that some types of explicit symbol
1369           table manipulation are not supported.  This codifies what was
1370           effectively already the case [perl #78074].
1371
1372       perlpodstyle
1373
1374       ·   The tips on which formatting codes to use have been corrected and
1375           greatly expanded.
1376
1377       ·   There are now a couple of example one-liners for previewing POD
1378           files after they have been edited.
1379
1380       perlre
1381
1382       ·   The "(*COMMIT)" directive is now listed in the right section (Verbs
1383           without an argument).
1384
1385       perlrun
1386
1387       ·   perlrun has undergone a significant clean-up.  Most notably, the
1388           -0x... form of the -0 flag has been clarified, and the final
1389           section on environment variables has been corrected and expanded
1390           (5.14.1).
1391
1392       perlsub
1393
1394       ·   The ($;) prototype syntax, which has existed for rather a long
1395           time, is now documented in perlsub.  It lets a unary function have
1396           the same precedence as a list operator.
1397
1398       perltie
1399
1400       ·   The required syntax for tying handles has been documented.
1401
1402       perlvar
1403
1404       ·   The documentation for $! has been corrected and clarified.  It used
1405           to state that $! could be "undef", which is not the case.  It was
1406           also unclear whether system calls set C's "errno" or Perl's $!
1407           [perl #91614].
1408
1409       ·   Documentation for $$ has been amended with additional cautions
1410           regarding changing the process ID.
1411
1412       Other Changes
1413
1414       ·   perlxs was extended with documentation on inline typemaps.
1415
1416       ·   perlref has a new Circular References section explaining how
1417           circularities may not be freed and how to solve that with weak
1418           references.
1419
1420       ·   Parts of perlapi were clarified, and Perl equivalents of some C
1421           functions have been added as an additional mode of exposition.
1422
1423       ·   A few parts of perlre and perlrecharclass were clarified.
1424
1425   Removed Documentation
1426       Old OO Documentation
1427
1428       The old OO tutorials, perltoot, perltooc, and perlboot, have been
1429       removed.  The perlbot (bag of object tricks) document has been removed
1430       as well.
1431
1432       Development Deltas
1433
1434       The perldelta files for development releases are no longer packaged
1435       with perl.  These can still be found in the perl source code
1436       repository.
1437

Diagnostics

1439       The following additions or changes have been made to diagnostic output,
1440       including warnings and fatal error messages.  For the complete list of
1441       diagnostic messages, see perldiag.
1442
1443   New Diagnostics
1444       New Errors
1445
1446       ·   Cannot set tied @DB::args
1447
1448           This error occurs when "caller" tries to set @DB::args but finds it
1449           tied.  Before this error was added, it used to crash instead.
1450
1451       ·   Cannot tie unreifiable array
1452
1453           This error is part of a safety check that the "tie" operator does
1454           before tying a special array like @_.  You should never see this
1455           message.
1456
1457       ·   &CORE::%s cannot be called directly
1458
1459           This occurs when a subroutine in the "CORE::" namespace is called
1460           with &foo syntax or through a reference.  Some subroutines in this
1461           package cannot yet be called that way, but must be called as
1462           barewords.  See "Subroutines in the "CORE" namespace", above.
1463
1464       ·   Source filters apply only to byte streams
1465
1466           This new error occurs when you try to activate a source filter
1467           (usually by loading a source filter module) within a string passed
1468           to "eval" under the "unicode_eval" feature.
1469
1470       New Warnings
1471
1472       ·   defined(@array) is deprecated
1473
1474           The long-deprecated "defined(@array)" now also warns for package
1475           variables.  Previously it issued a warning for lexical variables
1476           only.
1477
1478       ·   length() used on %s
1479
1480           This new warning occurs when "length" is used on an array or hash,
1481           instead of "scalar(@array)" or "scalar(keys %hash)".
1482
1483       ·   lvalue attribute %s already-defined subroutine
1484
1485           attributes.pm now emits this warning when the :lvalue attribute is
1486           applied to a Perl subroutine that has already been defined, as
1487           doing so can have unexpected side-effects.
1488
1489       ·   overload arg '%s' is invalid
1490
1491           This warning, in the "overload" category, is produced when the
1492           overload pragma is given an argument it doesn't recognize,
1493           presumably a mistyped operator.
1494
1495       ·   $[ used in %s (did you mean $] ?)
1496
1497           This new warning exists to catch the mistaken use of $[ in version
1498           checks.  $], not $[, contains the version number.
1499
1500       ·   Useless assignment to a temporary
1501
1502           Assigning to a temporary scalar returned from an lvalue subroutine
1503           now produces this warning [perl #31946].
1504
1505       ·   Useless use of \E
1506
1507           "\E" does nothing unless preceded by "\Q", "\L" or "\U".
1508
1509   Removed Errors
1510       ·   "sort is now a reserved word"
1511
1512           This error used to occur when "sort" was called without arguments,
1513           followed by ";" or ")".  (E.g., "sort;" would die, but "{sort}" was
1514           OK.)  This error message was added in Perl 3 to catch code like
1515           "close(sort)" which would no longer work.  More than two decades
1516           later, this message is no longer appropriate.  Now "sort" without
1517           arguments is always allowed, and returns an empty list, as it did
1518           in those cases where it was already allowed [perl #90030].
1519
1520   Changes to Existing Diagnostics
1521       ·   The "Applying pattern match..." or similar warning produced when an
1522           array or hash is on the left-hand side of the "=~" operator now
1523           mentions the name of the variable.
1524
1525       ·   The "Attempt to free non-existent shared string" has had the
1526           spelling of "non-existent" corrected to "nonexistent".  It was
1527           already listed with the correct spelling in perldiag.
1528
1529       ·   The error messages for using "default" and "when" outside a
1530           topicalizer have been standardized to match the messages for
1531           "continue" and loop controls.  They now read 'Can't "default"
1532           outside a topicalizer' and 'Can't "when" outside a topicalizer'.
1533           They both used to be 'Can't use when() outside a topicalizer' [perl
1534           #91514].
1535
1536       ·   The message, "Code point 0x%X is not Unicode, no properties match
1537           it; all inverse properties do" has been changed to "Code point 0x%X
1538           is not Unicode, all \p{} matches fail; all \P{} matches succeed".
1539
1540       ·   Redefinition warnings for constant subroutines used to be
1541           mandatory, even occurring under "no warnings".  Now they respect
1542           the warnings pragma.
1543
1544       ·   The "glob failed" warning message is now suppressible via "no
1545           warnings" [perl #111656].
1546
1547       ·   The Invalid version format error message now says "negative version
1548           number" within the parentheses, rather than "non-numeric data", for
1549           negative numbers.
1550
1551       ·   The two warnings Possible attempt to put comments in qw() list and
1552           Possible attempt to separate words with commas are no longer
1553           mutually exclusive: the same "qw" construct may produce both.
1554
1555       ·   The uninitialized warning for "y///r" when $_ is implicit and
1556           undefined now mentions the variable name, just like the non-/r
1557           variation of the operator.
1558
1559       ·   The 'Use of "foo" without parentheses is ambiguous' warning has
1560           been extended to apply also to user-defined subroutines with a (;$)
1561           prototype, and not just to built-in functions.
1562
1563       ·   Warnings that mention the names of lexical ("my") variables with
1564           Unicode characters in them now respect the presence or absence of
1565           the ":utf8" layer on the output handle, instead of outputting UTF8
1566           regardless.  Also, the correct names are included in the strings
1567           passed to $SIG{__WARN__} handlers, rather than the raw UTF8 bytes.
1568

Utility Changes

1570       h2ph
1571
1572       ·   h2ph used to generate code of the form
1573
1574             unless(defined(&FOO)) {
1575               sub FOO () {42;}
1576             }
1577
1578           But the subroutine is a compile-time declaration, and is hence
1579           unaffected by the condition.  It has now been corrected to emit a
1580           string "eval" around the subroutine [perl #99368].
1581
1582       splain
1583
1584       ·   splain no longer emits backtraces with the first line number
1585           repeated.
1586
1587           This:
1588
1589               Uncaught exception from user code:
1590                       Cannot fwiddle the fwuddle at -e line 1.
1591                at -e line 1
1592                       main::baz() called at -e line 1
1593                       main::bar() called at -e line 1
1594                       main::foo() called at -e line 1
1595
1596           has become this:
1597
1598               Uncaught exception from user code:
1599                       Cannot fwiddle the fwuddle at -e line 1.
1600                       main::baz() called at -e line 1
1601                       main::bar() called at -e line 1
1602                       main::foo() called at -e line 1
1603
1604       ·   Some error messages consist of multiple lines that are listed as
1605           separate entries in perldiag.  splain has been taught to find the
1606           separate entries in these cases, instead of simply failing to find
1607           the message.
1608
1609       zipdetails
1610
1611       ·   This is a new utility, included as part of an IO::Compress::Base
1612           upgrade.
1613
1614           zipdetails displays information about the internal record structure
1615           of the zip file.  It is not concerned with displaying any details
1616           of the compressed data stored in the zip file.
1617

Configuration and Compilation

1619       ·   regexp.h has been modified for compatibility with GCC's -Werror
1620           option, as used by some projects that include perl's header files
1621           (5.14.1).
1622
1623       ·   "USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC}" have been added the output
1624           of perl -V as they have affect the behavior of the interpreter
1625           binary (albeit in only a small area).
1626
1627       ·   The code and tests for IPC::Open2 have been moved from
1628           ext/IPC-Open2 into ext/IPC-Open3, as "IPC::Open2::open2()" is
1629           implemented as a thin wrapper around "IPC::Open3::_open3()", and
1630           hence is very tightly coupled to it.
1631
1632       ·   The magic types and magic vtables are now generated from data in a
1633           new script regen/mg_vtable.pl, instead of being maintained by hand.
1634           As different EBCDIC variants can't agree on the code point for '~',
1635           the character to code point conversion is done at build time by
1636           generate_uudmap to a new generated header mg_data.h.  "PL_vtbl_bm"
1637           and "PL_vtbl_fm" are now defined by the pre-processor as
1638           "PL_vtbl_regexp", instead of being distinct C variables.
1639           "PL_vtbl_sig" has been removed.
1640
1641       ·   Building with "-DPERL_GLOBAL_STRUCT" works again.  This
1642           configuration is not generally used.
1643
1644       ·   Perl configured with MAD now correctly frees "MADPROP" structures
1645           when OPs are freed.  "MADPROP"s are now allocated with
1646           "PerlMemShared_malloc()"
1647
1648       ·   makedef.pl has been refactored.  This should have no noticeable
1649           affect on any of the platforms that use it as part of their build
1650           (AIX, VMS, Win32).
1651
1652       ·   "useperlio" can no longer be disabled.
1653
1654       ·   The file global.sym is no longer needed, and has been removed.  It
1655           contained a list of all exported functions, one of the files
1656           generated by regen/embed.pl from data in embed.fnc and
1657           regen/opcodes.  The code has been refactored so that the only user
1658           of global.sym, makedef.pl, now reads embed.fnc and regen/opcodes
1659           directly, removing the need to store the list of exported functions
1660           in an intermediate file.
1661
1662           As global.sym was never installed, this change should not be
1663           visible outside the build process.
1664
1665       ·   pod/buildtoc, used by the build process to build perltoc, has been
1666           refactored and simplified.  It now contains only code to build
1667           perltoc; the code to regenerate Makefiles has been moved to
1668           Porting/pod_rules.pl.  It's a bug if this change has any material
1669           effect on the build process.
1670
1671       ·   pod/roffitall is now built by pod/buildtoc, instead of being
1672           shipped with the distribution.  Its list of manpages is now
1673           generated (and therefore current).  See also RT #103202 for an
1674           unresolved related issue.
1675
1676       ·   The man page for "XS::Typemap" is no longer installed.
1677           "XS::Typemap" is a test module which is not installed, hence
1678           installing its documentation makes no sense.
1679
1680       ·   The -Dusesitecustomize and -Duserelocatableinc options now work
1681           together properly.
1682

Platform Support

1684   Platform-Specific Notes
1685       Cygwin
1686
1687       ·   Since version 1.7, Cygwin supports native UTF-8 paths.  If Perl is
1688           built under that environment, directory and filenames will be UTF-8
1689           encoded.
1690
1691       ·   Cygwin does not initialize all original Win32 environment
1692           variables.  See README.cygwin for a discussion of the newly-added
1693           "Cygwin::sync_winenv()" function [perl #110190] and for further
1694           links.
1695
1696       HP-UX
1697
1698       ·   HP-UX PA-RISC/64 now supports gcc-4.x
1699
1700           A fix to correct the socketsize now makes the test suite pass on
1701           HP-UX PA-RISC for 64bitall builds. (5.14.2)
1702
1703       VMS
1704
1705       ·   Remove unnecessary includes, fix miscellaneous compiler warnings
1706           and close some unclosed comments on vms/vms.c.
1707
1708       ·   Remove sockadapt layer from the VMS build.
1709
1710       ·   Explicit support for VMS versions before v7.0 and DEC C versions
1711           before v6.0 has been removed.
1712
1713       ·   Since Perl 5.10.1, the home-grown "stat" wrapper has been unable to
1714           distinguish between a directory name containing an underscore and
1715           an otherwise-identical filename containing a dot in the same
1716           position (e.g., t/test_pl as a directory and t/test.pl as a file).
1717           This problem has been corrected.
1718
1719       ·   The build on VMS now permits names of the resulting symbols in C
1720           code for Perl longer than 31 characters.  Symbols like
1721           "Perl__it_was_the_best_of_times_it_was_the_worst_of_times" can now
1722           be created freely without causing the VMS linker to seize up.
1723
1724       GNU/Hurd
1725
1726       ·   Numerous build and test failures on GNU/Hurd have been resolved
1727           with hints for building DBM modules, detection of the library
1728           search path, and enabling of large file support.
1729
1730       OpenVOS
1731
1732       ·   Perl is now built with dynamic linking on OpenVOS, the minimum
1733           supported version of which is now Release 17.1.0.
1734
1735       SunOS
1736
1737       The CC workshop C++ compiler is now detected and used on systems that
1738       ship without cc.
1739

Internal Changes

1741       ·   The compiled representation of formats is now stored via the
1742           "mg_ptr" of their "PERL_MAGIC_fm".  Previously it was stored in the
1743           string buffer, beyond "SvLEN()", the regular end of the string.
1744           "SvCOMPILED()" and "SvCOMPILED_{on,off}()" now exist solely for
1745           compatibility for XS code.  The first is always 0, the other two
1746           now no-ops. (5.14.1)
1747
1748       ·   Some global variables have been marked "const", members in the
1749           interpreter structure have been re-ordered, and the opcodes have
1750           been re-ordered.  The op "OP_AELEMFAST" has been split into
1751           "OP_AELEMFAST" and "OP_AELEMFAST_LEX".
1752
1753       ·   When empting a hash of its elements (e.g., via undef(%h), or
1754           %h=()), HvARRAY field is no longer temporarily zeroed.  Any
1755           destructors called on the freed elements see the remaining
1756           elements.  Thus, %h=() becomes more like "delete $h{$_} for keys
1757           %h".
1758
1759       ·   Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore
1760           tables are now stored via the mg_ptr of their "PERL_MAGIC_bm".
1761           Previously they were PVGVs, with the tables stored in the string
1762           buffer, beyond "SvLEN()".  This eliminates the last place where the
1763           core stores data beyond "SvLEN()".
1764
1765       ·   Simplified logic in "Perl_sv_magic()" introduces a small change of
1766           behavior for error cases involving unknown magic types.
1767           Previously, if "Perl_sv_magic()" was passed a magic type unknown to
1768           it, it would
1769
1770           1.  Croak "Modification of a read-only value attempted" if read
1771               only
1772
1773           2.  Return without error if the SV happened to already have this
1774               magic
1775
1776           3.  otherwise croak "Don't know how to handle magic of type \\%o"
1777
1778           Now it will always croak "Don't know how to handle magic of type
1779           \\%o", even on read-only values, or SVs which already have the
1780           unknown magic type.
1781
1782       ·   The experimental "fetch_cop_label" function has been renamed to
1783           "cop_fetch_label".
1784
1785       ·   The "cop_store_label" function has been added to the API, but is
1786           experimental.
1787
1788       ·   embedvar.h has been simplified, and one level of macro indirection
1789           for PL_* variables has been removed for the default (non-
1790           multiplicity) configuration.  PERLVAR*() macros now directly expand
1791           their arguments to tokens such as "PL_defgv", instead of expanding
1792           to "PL_Idefgv", with embedvar.h defining a macro to map "PL_Idefgv"
1793           to "PL_defgv".  XS code which has unwarranted chumminess with the
1794           implementation may need updating.
1795
1796       ·   An API has been added to explicitly choose whether to export XSUB
1797           symbols.  More detail can be found in the comments for commit
1798           e64345f8.
1799
1800       ·   The "is_gv_magical_sv" function has been eliminated and merged with
1801           "gv_fetchpvn_flags".  It used to be called to determine whether a
1802           GV should be autovivified in rvalue context.  Now it has been
1803           replaced with a new "GV_ADDMG" flag (not part of the API).
1804
1805       ·   The returned code point from the function "utf8n_to_uvuni()" when
1806           the input is malformed UTF-8, malformations are allowed, and "utf8"
1807           warnings are off is now the Unicode REPLACEMENT CHARACTER whenever
1808           the malformation is such that no well-defined code point can be
1809           computed.  Previously the returned value was essentially garbage.
1810           The only malformations that have well-defined values are a zero-
1811           length string (0 is the return), and overlong UTF-8 sequences.
1812
1813       ·   Padlists are now marked "AvREAL"; i.e., reference-counted.  They
1814           have always been reference-counted, but were not marked real,
1815           because pad.c did its own clean-up, instead of using the usual
1816           clean-up code in sv.c.  That caused problems in thread cloning, so
1817           now the "AvREAL" flag is on, but is turned off in pad.c right
1818           before the padlist is freed (after pad.c has done its custom
1819           freeing of the pads).
1820
1821       ·   All C files that make up the Perl core have been converted to
1822           UTF-8.
1823
1824       ·   These new functions have been added as part of the work on Unicode
1825           symbols:
1826
1827               HvNAMELEN
1828               HvNAMEUTF8
1829               HvENAMELEN
1830               HvENAMEUTF8
1831               gv_init_pv
1832               gv_init_pvn
1833               gv_init_pvsv
1834               gv_fetchmeth_pv
1835               gv_fetchmeth_pvn
1836               gv_fetchmeth_sv
1837               gv_fetchmeth_pv_autoload
1838               gv_fetchmeth_pvn_autoload
1839               gv_fetchmeth_sv_autoload
1840               gv_fetchmethod_pv_flags
1841               gv_fetchmethod_pvn_flags
1842               gv_fetchmethod_sv_flags
1843               gv_autoload_pv
1844               gv_autoload_pvn
1845               gv_autoload_sv
1846               newGVgen_flags
1847               sv_derived_from_pv
1848               sv_derived_from_pvn
1849               sv_derived_from_sv
1850               sv_does_pv
1851               sv_does_pvn
1852               sv_does_sv
1853               whichsig_pv
1854               whichsig_pvn
1855               whichsig_sv
1856               newCONSTSUB_flags
1857
1858           The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags,
1859           are experimental and may change in a future release.
1860
1861       ·   The following functions were added.  These are not part of the API:
1862
1863               GvNAMEUTF8
1864               GvENAMELEN
1865               GvENAME_HEK
1866               CopSTASH_flags
1867               CopSTASH_flags_set
1868               PmopSTASH_flags
1869               PmopSTASH_flags_set
1870               sv_sethek
1871               HEKfARG
1872
1873           There is also a "HEKf" macro corresponding to "SVf", for
1874           interpolating HEKs in formatted strings.
1875
1876       ·   "sv_catpvn_flags" takes a couple of new internal-only flags,
1877           "SV_CATBYTES" and "SV_CATUTF8", which tell it whether the char
1878           array to be concatenated is UTF8.  This allows for more efficient
1879           concatenation than creating temporary SVs to pass to "sv_catsv".
1880
1881       ·   For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in
1882           5.6.0.  This is in addition to setting "SvPVX(cv)", for
1883           compatibility with 5.8 to 5.14.  See "Autoloading with XSUBs" in
1884           perlguts.
1885
1886       ·   Perl now checks whether the array (the linearized isa) returned by
1887           a MRO plugin begins with the name of the class itself, for which
1888           the array was created, instead of assuming that it does.  This
1889           prevents the first element from being skipped during method lookup.
1890           It also means that "mro::get_linear_isa" may return an array with
1891           one more element than the MRO plugin provided [perl #94306].
1892
1893       ·   "PL_curstash" is now reference-counted.
1894
1895       ·   There are now feature bundle hints in "PL_hints" ($^H) that version
1896           declarations use, to avoid having to load feature.pm.  One setting
1897           of the hint bits indicates a "custom" feature bundle, which means
1898           that the entries in "%^H" still apply.  feature.pm uses that.
1899
1900           The "HINT_FEATURE_MASK" macro is defined in perl.h along with other
1901           hints.  Other macros for setting and testing features and bundles
1902           are in the new feature.h.  "FEATURE_IS_ENABLED" (which has moved to
1903           feature.h) is no longer used throughout the codebase, but more
1904           specific macros, e.g., "FEATURE_SAY_IS_ENABLED", that are defined
1905           in feature.h.
1906
1907       ·   lib/feature.pm is now a generated file, created by the new
1908           regen/feature.pl script, which also generates feature.h.
1909
1910       ·   Tied arrays are now always "AvREAL".  If @_ or "DB::args" is tied,
1911           it is reified first, to make sure this is always the case.
1912
1913       ·   Two new functions "utf8_to_uvchr_buf()" and "utf8_to_uvuni_buf()"
1914           have been added.  These are the same as "utf8_to_uvchr" and
1915           "utf8_to_uvuni" (which are now deprecated), but take an extra
1916           parameter that is used to guard against reading beyond the end of
1917           the input string.  See "utf8_to_uvchr_buf" in perlapi and
1918           "utf8_to_uvuni_buf" in perlapi.
1919
1920       ·   The regular expression engine now does TRIE case insensitive
1921           matches under Unicode. This may change the output of "use re
1922           'debug';", and will speed up various things.
1923
1924       ·   There is a new "wrap_op_checker()" function, which provides a
1925           thread-safe alternative to writing to "PL_check" directly.
1926

Selected Bug Fixes

1928   Array and hash
1929       ·   A bug has been fixed that would cause a "Use of freed value in
1930           iteration" error if the next two hash elements that would be
1931           iterated over are deleted [perl #85026]. (5.14.1)
1932
1933       ·   Deleting the current hash iterator (the hash element that would be
1934           returned by the next call to "each") in void context used not to
1935           free it [perl #85026].
1936
1937       ·   Deletion of methods via "delete $Class::{method}" syntax used to
1938           update method caches if called in void context, but not scalar or
1939           list context.
1940
1941       ·   When hash elements are deleted in void context, the internal hash
1942           entry is now freed before the value is freed, to prevent
1943           destructors called by that latter freeing from seeing the hash in
1944           an inconsistent state.  It was possible to cause double-frees if
1945           the destructor freed the hash itself [perl #100340].
1946
1947       ·   A "keys" optimization in Perl 5.12.0 to make it faster on empty
1948           hashes caused "each" not to reset the iterator if called after the
1949           last element was deleted.
1950
1951       ·   Freeing deeply nested hashes no longer crashes [perl #44225].
1952
1953       ·   It is possible from XS code to create hashes with elements that
1954           have no values.  The hash element and slice operators used to crash
1955           when handling these in lvalue context.  They now produce a
1956           "Modification of non-creatable hash value attempted" error message.
1957
1958       ·   If list assignment to a hash or array triggered destructors that
1959           freed the hash or array itself, a crash would ensue.  This is no
1960           longer the case [perl #107440].
1961
1962       ·   It used to be possible to free the typeglob of a localized array or
1963           hash (e.g., "local @{"x"}; delete $::{x}"), resulting in a crash on
1964           scope exit.
1965
1966       ·   Some core bugs affecting Hash::Util have been fixed: locking a hash
1967           element that is a glob copy no longer causes the next assignment to
1968           it to corrupt the glob (5.14.2), and unlocking a hash element that
1969           holds a copy-on-write scalar no longer causes modifications to that
1970           scalar to modify other scalars that were sharing the same string
1971           buffer.
1972
1973   C API fixes
1974       ·   The "newHVhv" XS function now works on tied hashes, instead of
1975           crashing or returning an empty hash.
1976
1977       ·   The "SvIsCOW" C macro now returns false for read-only copies of
1978           typeglobs, such as those created by:
1979
1980             $hash{elem} = *foo;
1981             Hash::Util::lock_value %hash, 'elem';
1982
1983           It used to return true.
1984
1985       ·   The "SvPVutf8" C function no longer tries to modify its argument,
1986           resulting in errors [perl #108994].
1987
1988       ·   "SvPVutf8" now works properly with magical variables.
1989
1990       ·   "SvPVbyte" now works properly non-PVs.
1991
1992       ·   When presented with malformed UTF-8 input, the XS-callable
1993           functions "is_utf8_string()", "is_utf8_string_loc()", and
1994           "is_utf8_string_loclen()" could read beyond the end of the input
1995           string by up to 12 bytes.  This no longer happens.  [perl #32080].
1996           However, currently, "is_utf8_char()" still has this defect, see
1997           "is_utf8_char()" above.
1998
1999       ·   The C-level "pregcomp" function could become confused about whether
2000           the pattern was in UTF8 if the pattern was an overloaded, tied, or
2001           otherwise magical scalar [perl #101940].
2002
2003   Compile-time hints
2004       ·   Tying "%^H" no longer causes perl to crash or ignore the contents
2005           of "%^H" when entering a compilation scope [perl #106282].
2006
2007       ·   "eval $string" and "require" used not to localize "%^H" during
2008           compilation if it was empty at the time the "eval" call itself was
2009           compiled.  This could lead to scary side effects, like "use re
2010           "/m"" enabling other flags that the surrounding code was trying to
2011           enable for its caller [perl #68750].
2012
2013       ·   "eval $string" and "require" no longer localize hints ($^H and
2014           "%^H") at run time, but only during compilation of the $string or
2015           required file.  This makes "BEGIN { $^H{foo}=7 }" equivalent to
2016           "BEGIN { eval '$^H{foo}=7' }" [perl #70151].
2017
2018       ·   Creating a BEGIN block from XS code (via "newXS" or "newATTRSUB")
2019           would, on completion, make the hints of the current compiling code
2020           the current hints.  This could cause warnings to occur in a non-
2021           warning scope.
2022
2023   Copy-on-write scalars
2024       Copy-on-write or shared hash key scalars were introduced in 5.8.0, but
2025       most Perl code did not encounter them (they were used mostly
2026       internally).  Perl 5.10.0 extended them, such that assigning
2027       "__PACKAGE__" or a hash key to a scalar would make it copy-on-write.
2028       Several parts of Perl were not updated to account for them, but have
2029       now been fixed.
2030
2031       ·   "utf8::decode" had a nasty bug that would modify copy-on-write
2032           scalars' string buffers in place (i.e., skipping the copy).  This
2033           could result in hashes having two elements with the same key [perl
2034           #91834]. (5.14.2)
2035
2036       ·   Lvalue subroutines were not allowing COW scalars to be returned.
2037           This was fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0,
2038           but list context was not fixed until this release.
2039
2040       ·   Elements of restricted hashes (see the fields pragma) containing
2041           copy-on-write values couldn't be deleted, nor could such hashes be
2042           cleared ("%hash = ()"). (5.14.2)
2043
2044       ·   Localizing a tied variable used to make it read-only if it
2045           contained a copy-on-write string. (5.14.2)
2046
2047       ·   Assigning a copy-on-write string to a stash element no longer
2048           causes a double free.  Regardless of this change, the results of
2049           such assignments are still undefined.
2050
2051       ·   Assigning a copy-on-write string to a tied variable no longer stops
2052           that variable from being tied if it happens to be a PVMG or PVLV
2053           internally.
2054
2055       ·   Doing a substitution on a tied variable returning a copy-on-write
2056           scalar used to cause an assertion failure or an "Attempt to free
2057           nonexistent shared string" warning.
2058
2059       ·   This one is a regression from 5.12: In 5.14.0, the bitwise
2060           assignment operators "|=", "^=" and "&=" started leaving the left-
2061           hand side undefined if it happened to be a copy-on-write string
2062           [perl #108480].
2063
2064       ·   Storable, Devel::Peek and PerlIO::scalar had similar problems.  See
2065           "Updated Modules and Pragmata", above.
2066
2067   The debugger
2068       ·   dumpvar.pl, and therefore the "x" command in the debugger, have
2069           been fixed to handle objects blessed into classes whose names
2070           contain "=".  The contents of such objects used not to be dumped
2071           [perl #101814].
2072
2073       ·   The "R" command for restarting a debugger session has been fixed to
2074           work on Windows, or any other system lacking a
2075           "POSIX::_SC_OPEN_MAX" constant [perl #87740].
2076
2077       ·   The "#line 42 foo" directive used not to update the arrays of lines
2078           used by the debugger if it occurred in a string eval.  This was
2079           partially fixed in 5.14, but it worked only for a single "#line 42
2080           foo" in each eval.  Now it works for multiple.
2081
2082       ·   When subroutine calls are intercepted by the debugger, the name of
2083           the subroutine or a reference to it is stored in $DB::sub, for the
2084           debugger to access.  Sometimes (such as "$foo = *bar; undef *bar;
2085           &$foo") $DB::sub would be set to a name that could not be used to
2086           find the subroutine, and so the debugger's attempt to call it would
2087           fail.  Now the check to see whether a reference is needed is more
2088           robust, so those problems should not happen anymore [rt.cpan.org
2089           #69862].
2090
2091       ·   Every subroutine has a filename associated with it that the
2092           debugger uses.  The one associated with constant subroutines used
2093           to be misallocated when cloned under threads.  Consequently,
2094           debugging threaded applications could result in memory corruption
2095           [perl #96126].
2096
2097   Dereferencing operators
2098       ·   "defined(${"..."})", "defined(*{"..."})", etc., used to return true
2099           for most, but not all built-in variables, if they had not been used
2100           yet.  This bug affected "${^GLOBAL_PHASE}" and "${^UTF8CACHE}",
2101           among others.  It also used to return false if the package name was
2102           given as well ("${"::!"}") [perl #97978, #97492].
2103
2104       ·   Perl 5.10.0 introduced a similar bug: "defined(*{"foo"})" where
2105           "foo" represents the name of a built-in global variable used to
2106           return false if the variable had never been used before, but only
2107           on the first call.  This, too, has been fixed.
2108
2109       ·   Since 5.6.0, "*{ ... }" has been inconsistent in how it treats
2110           undefined values.  It would die in strict mode or lvalue context
2111           for most undefined values, but would be treated as the empty string
2112           (with a warning) for the specific scalar return by "undef()"
2113           (&PL_sv_undef internally).  This has been corrected.  "undef()" is
2114           now treated like other undefined scalars, as in Perl 5.005.
2115
2116   Filehandle, last-accessed
2117       Perl has an internal variable that stores the last filehandle to be
2118       accessed.  It is used by $. and by "tell" and "eof" without arguments.
2119
2120       ·   It used to be possible to set this internal variable to a glob copy
2121           and then modify that glob copy to be something other than a glob,
2122           and still have the last-accessed filehandle associated with the
2123           variable after assigning a glob to it again:
2124
2125               my $foo = *STDOUT;  # $foo is a glob copy
2126               <$foo>;             # $foo is now the last-accessed handle
2127               $foo = 3;           # no longer a glob
2128               $foo = *STDERR;     # still the last-accessed handle
2129
2130           Now the "$foo = 3" assignment unsets that internal variable, so
2131           there is no last-accessed filehandle, just as if "<$foo>" had never
2132           happened.
2133
2134           This also prevents some unrelated handle from becoming the last-
2135           accessed handle if $foo falls out of scope and the same internal SV
2136           gets used for another handle [perl #97988].
2137
2138       ·   A regression in 5.14 caused these statements not to set that
2139           internal variable:
2140
2141               my $fh = *STDOUT;
2142               tell $fh;
2143               eof  $fh;
2144               seek $fh, 0,0;
2145               tell     *$fh;
2146               eof      *$fh;
2147               seek     *$fh, 0,0;
2148               readline *$fh;
2149
2150           This is now fixed, but "tell *{ *$fh }" still has the problem, and
2151           it is not clear how to fix it [perl #106536].
2152
2153   Filetests and "stat"
2154       The term "filetests" refers to the operators that consist of a hyphen
2155       followed by a single letter: "-r", "-x", "-M", etc.  The term "stacked"
2156       when applied to filetests means followed by another filetest operator
2157       sharing the same operand, as in "-r -x -w $fooo".
2158
2159       ·   "stat" produces more consistent warnings.  It no longer warns for
2160           "_" [perl #71002] and no longer skips the warning at times for
2161           other unopened handles.  It no longer warns about an unopened
2162           handle when the operating system's "fstat" function fails.
2163
2164       ·   "stat" would sometimes return negative numbers for large inode
2165           numbers, because it was using the wrong internal C type. [perl
2166           #84590]
2167
2168       ·   "lstat" is documented to fall back to "stat" (with a warning) when
2169           given a filehandle.  When passed an IO reference, it was actually
2170           doing the equivalent of "stat _" and ignoring the handle.
2171
2172       ·   "-T _" with no preceding "stat" used to produce a confusing
2173           "uninitialized" warning, even though there is no visible
2174           uninitialized value to speak of.
2175
2176       ·   "-T", "-B", "-l" and "-t" now work when stacked with other filetest
2177           operators [perl #77388].
2178
2179       ·   In 5.14.0, filetest ops ("-r", "-x", etc.) started calling FETCH on
2180           a tied argument belonging to the previous argument to a list
2181           operator, if called with a bareword argument or no argument at all.
2182           This has been fixed, so "push @foo, $tied, -r" no longer calls
2183           FETCH on $tied.
2184
2185       ·   In Perl 5.6, "-l" followed by anything other than a bareword would
2186           treat its argument as a file name.  That was changed in 5.8 for
2187           glob references ("\*foo"), but not for globs themselves (*foo).
2188           "-l" started returning "undef" for glob references without setting
2189           the last stat buffer that the "_" handle uses, but only if warnings
2190           were turned on.  With warnings off, it was the same as 5.6.  In
2191           other words, it was simply buggy and inconsistent.  Now the 5.6
2192           behavior has been restored.
2193
2194       ·   "-l" followed by a bareword no longer "eats" the previous argument
2195           to the list operator in whose argument list it resides.  Hence,
2196           "print "bar", -l foo" now actually prints "bar", because "-l" on
2197           longer eats it.
2198
2199       ·   Perl keeps several internal variables to keep track of the last
2200           stat buffer, from which file(handle) it originated, what type it
2201           was, and whether the last stat succeeded.
2202
2203           There were various cases where these could get out of synch,
2204           resulting in inconsistent or erratic behavior in edge cases (every
2205           mention of "-T" applies to "-B" as well):
2206
2207           ·   "-T HANDLE", even though it does a "stat", was not resetting
2208               the last stat type, so an "lstat _" following it would merrily
2209               return the wrong results.  Also, it was not setting the success
2210               status.
2211
2212           ·   Freeing the handle last used by "stat" or a filetest could
2213               result in "-T _" using an unrelated handle.
2214
2215           ·   "stat" with an IO reference would not reset the stat type or
2216               record the filehandle for "-T _" to use.
2217
2218           ·   Fatal warnings could cause the stat buffer not to be reset for
2219               a filetest operator on an unopened filehandle or "-l" on any
2220               handle.  Fatal warnings also stopped "-T" from setting $!.
2221
2222           ·   When the last stat was on an unreadable file, "-T _" is
2223               supposed to return "undef", leaving the last stat buffer
2224               unchanged.  But it was setting the stat type, causing "lstat _"
2225               to stop working.
2226
2227           ·   "-T FILENAME" was not resetting the internal stat buffers for
2228               unreadable files.
2229
2230           These have all been fixed.
2231
2232   Formats
2233       ·   Several edge cases have been fixed with formats and "formline"; in
2234           particular, where the format itself is potentially variable (such
2235           as with ties and overloading), and where the format and data differ
2236           in their encoding.  In both these cases, it used to possible for
2237           the output to be corrupted [perl #91032].
2238
2239       ·   "formline" no longer converts its argument into a string in-place.
2240           So passing a reference to "formline" no longer destroys the
2241           reference [perl #79532].
2242
2243       ·   Assignment to $^A (the format output accumulator) now recalculates
2244           the number of lines output.
2245
2246   "given" and "when"
2247       ·   "given" was not scoping its implicit $_ properly, resulting in
2248           memory leaks or "Variable is not available" warnings [perl #94682].
2249
2250       ·   "given" was not calling set-magic on the implicit lexical $_ that
2251           it uses.  This meant, for example, that "pos" would be remembered
2252           from one execution of the same "given" block to the next, even if
2253           the input were a different variable [perl #84526].
2254
2255       ·   "when" blocks are now capable of returning variables declared
2256           inside the enclosing "given" block [perl #93548].
2257
2258   The "glob" operator
2259       ·   On OSes other than VMS, Perl's "glob" operator (and the "<...>"
2260           form) use File::Glob underneath.  File::Glob splits the pattern
2261           into words, before feeding each word to its "bsd_glob" function.
2262
2263           There were several inconsistencies in the way the split was done.
2264           Now quotation marks (' and ") are always treated as shell-style
2265           word delimiters (that allow whitespace as part of a word) and
2266           backslashes are always preserved, unless they exist to escape
2267           quotation marks.  Before, those would only sometimes be the case,
2268           depending on whether the pattern contained whitespace.  Also,
2269           escaped whitespace at the end of the pattern is no longer stripped
2270           [perl #40470].
2271
2272       ·   "CORE::glob" now works as a way to call the default globbing
2273           function.  It used to respect overrides, despite the "CORE::"
2274           prefix.
2275
2276       ·   Under miniperl (used to configure modules when perl itself is
2277           built), "glob" now clears %ENV before calling csh, since the latter
2278           croaks on some systems if it does not like the contents of the
2279           LS_COLORS environment variable [perl #98662].
2280
2281   Lvalue subroutines
2282       ·   Explicit return now returns the actual argument passed to return,
2283           instead of copying it [perl #72724, #72706].
2284
2285       ·   Lvalue subroutines used to enforce lvalue syntax (i.e., whatever
2286           can go on the left-hand side of "=") for the last statement and the
2287           arguments to return.  Since lvalue subroutines are not always
2288           called in lvalue context, this restriction has been lifted.
2289
2290       ·   Lvalue subroutines are less restrictive about what values can be
2291           returned.  It used to croak on values returned by "shift" and
2292           "delete" and from other subroutines, but no longer does so [perl
2293           #71172].
2294
2295       ·   Empty lvalue subroutines ("sub :lvalue {}") used to return @_ in
2296           list context.  All subroutines used to do this, but regular subs
2297           were fixed in Perl 5.8.2.  Now lvalue subroutines have been
2298           likewise fixed.
2299
2300       ·   Autovivification now works on values returned from lvalue
2301           subroutines [perl #7946], as does returning "keys" in lvalue
2302           context.
2303
2304       ·   Lvalue subroutines used to copy their return values in rvalue
2305           context.  Not only was this a waste of CPU cycles, but it also
2306           caused bugs.  A "($)" prototype would cause an lvalue sub to copy
2307           its return value [perl #51408], and "while(lvalue_sub() =~ m/.../g)
2308           { ... }" would loop endlessly [perl #78680].
2309
2310       ·   When called in potential lvalue context (e.g., subroutine arguments
2311           or a list passed to "for"), lvalue subroutines used to copy any
2312           read-only value that was returned.  E.g., " sub :lvalue { $] } "
2313           would not return $], but a copy of it.
2314
2315       ·   When called in potential lvalue context, an lvalue subroutine
2316           returning arrays or hashes used to bind the arrays or hashes to
2317           scalar variables, resulting in bugs.  This was fixed in 5.14.0 if
2318           an array were the first thing returned from the subroutine (but not
2319           for "$scalar, @array" or hashes being returned).  Now a more
2320           general fix has been applied [perl #23790].
2321
2322       ·   Method calls whose arguments were all surrounded with "my()" or
2323           "our()" (as in "$object->method(my($a,$b))") used to force lvalue
2324           context on the subroutine.  This would prevent lvalue methods from
2325           returning certain values.
2326
2327       ·   Lvalue sub calls that are not determined to be such at compile time
2328           (&$name or &{"name"}) are no longer exempt from strict refs if they
2329           occur in the last statement of an lvalue subroutine [perl #102486].
2330
2331       ·   Sub calls whose subs are not visible at compile time, if they
2332           occurred in the last statement of an lvalue subroutine, would
2333           reject non-lvalue subroutines and die with "Can't modify non-lvalue
2334           subroutine call" [perl #102486].
2335
2336           Non-lvalue sub calls whose subs are visible at compile time
2337           exhibited the opposite bug.  If the call occurred in the last
2338           statement of an lvalue subroutine, there would be no error when the
2339           lvalue sub was called in lvalue context.  Perl would blindly assign
2340           to the temporary value returned by the non-lvalue subroutine.
2341
2342       ·   "AUTOLOAD" routines used to take precedence over the actual sub
2343           being called (i.e., when autoloading wasn't needed), for sub calls
2344           in lvalue or potential lvalue context, if the subroutine was not
2345           visible at compile time.
2346
2347       ·   Applying the ":lvalue" attribute to an XSUB or to an aliased
2348           subroutine stub with "sub foo :lvalue;" syntax stopped working in
2349           Perl 5.12.  This has been fixed.
2350
2351       ·   Applying the :lvalue attribute to subroutine that is already
2352           defined does not work properly, as the attribute changes the way
2353           the sub is compiled.  Hence, Perl 5.12 began warning when an
2354           attempt is made to apply the attribute to an already defined sub.
2355           In such cases, the attribute is discarded.
2356
2357           But the change in 5.12 missed the case where custom attributes are
2358           also present: that case still silently and ineffectively applied
2359           the attribute.  That omission has now been corrected.  "sub foo
2360           :lvalue :Whatever" (when "foo" is already defined) now warns about
2361           the :lvalue attribute, and does not apply it.
2362
2363       ·   A bug affecting lvalue context propagation through nested lvalue
2364           subroutine calls has been fixed.  Previously, returning a value in
2365           nested rvalue context would be treated as lvalue context by the
2366           inner subroutine call, resulting in some values (such as read-only
2367           values) being rejected.
2368
2369   Overloading
2370       ·   Arithmetic assignment ("$left += $right") involving overloaded
2371           objects that rely on the 'nomethod' override no longer segfault
2372           when the left operand is not overloaded.
2373
2374       ·   Errors that occur when methods cannot be found during overloading
2375           now mention the correct package name, as they did in 5.8.x, instead
2376           of erroneously mentioning the "overload" package, as they have
2377           since 5.10.0.
2378
2379       ·   Undefining %overload:: no longer causes a crash.
2380
2381   Prototypes of built-in keywords
2382       ·   The "prototype" function no longer dies for the "__FILE__",
2383           "__LINE__" and "__PACKAGE__" directives.  It now returns an empty-
2384           string prototype for them, because they are syntactically
2385           indistinguishable from nullary functions like "time".
2386
2387       ·   "prototype" now returns "undef" for all overridable infix
2388           operators, such as "eq", which are not callable in any way
2389           resembling functions.  It used to return incorrect prototypes for
2390           some and die for others [perl #94984].
2391
2392       ·   The prototypes of several built-in functions--"getprotobynumber",
2393           "lock", "not" and "select"--have been corrected, or at least are
2394           now closer to reality than before.
2395
2396   Regular expressions
2397       ·   "/[[:ascii:]]/" and "/[[:blank:]]/" now use locale rules under "use
2398           locale" when the platform supports that.  Previously, they used the
2399           platform's native character set.
2400
2401       ·   "m/[[:ascii:]]/i" and "/\p{ASCII}/i" now match identically (when
2402           not under a differing locale).  This fixes a regression introduced
2403           in 5.14 in which the first expression could match characters
2404           outside of ASCII, such as the KELVIN SIGN.
2405
2406       ·   "/.*/g" would sometimes refuse to match at the end of a string that
2407           ends with "\n".  This has been fixed [perl #109206].
2408
2409       ·   Starting with 5.12.0, Perl used to get its internal bookkeeping
2410           muddled up after assigning "${ qr// }" to a hash element and
2411           locking it with Hash::Util.  This could result in double frees,
2412           crashes, or erratic behavior.
2413
2414       ·   The new (in 5.14.0) regular expression modifier "/a" when repeated
2415           like "/aa" forbids the characters outside the ASCII range that
2416           match characters inside that range from matching under "/i".  This
2417           did not work under some circumstances, all involving alternation,
2418           such as:
2419
2420            "\N{KELVIN SIGN}" =~ /k|foo/iaa;
2421
2422           succeeded inappropriately.  This is now fixed.
2423
2424       ·   5.14.0 introduced some memory leaks in regular expression character
2425           classes such as "[\w\s]", which have now been fixed. (5.14.1)
2426
2427       ·   An edge case in regular expression matching could potentially loop.
2428           This happened only under "/i" in bracketed character classes that
2429           have characters with multi-character folds, and the target string
2430           to match against includes the first portion of the fold, followed
2431           by another character that has a multi-character fold that begins
2432           with the remaining portion of the fold, plus some more.
2433
2434            "s\N{U+DF}" =~ /[\x{DF}foo]/i
2435
2436           is one such case.  "\xDF" folds to "ss". (5.14.1)
2437
2438       ·   A few characters in regular expression pattern matches did not
2439           match correctly in some circumstances, all involving "/i".  The
2440           affected characters are: COMBINING GREEK YPOGEGRAMMENI, GREEK
2441           CAPITAL LETTER IOTA, GREEK CAPITAL LETTER UPSILON, GREEK
2442           PROSGEGRAMMENI, GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
2443           GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, GREEK SMALL
2444           LETTER UPSILON WITH DIALYTIKA AND OXIA, GREEK SMALL LETTER UPSILON
2445           WITH DIALYTIKA AND TONOS, LATIN SMALL LETTER LONG S, LATIN SMALL
2446           LIGATURE LONG S T, and LATIN SMALL LIGATURE ST.
2447
2448       ·   A memory leak regression in regular expression compilation under
2449           threading has been fixed.
2450
2451       ·   A regression introduced in 5.14.0 has been fixed.  This involved an
2452           inverted bracketed character class in a regular expression that
2453           consisted solely of a Unicode property.  That property wasn't
2454           getting inverted outside the Latin1 range.
2455
2456       ·   Three problematic Unicode characters now work better in regex
2457           pattern matching under "/i".
2458
2459           In the past, three Unicode characters: LATIN SMALL LETTER SHARP S,
2460           GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, and GREEK SMALL
2461           LETTER UPSILON WITH DIALYTIKA AND TONOS, along with the sequences
2462           that they fold to (including "ss" for LATIN SMALL LETTER SHARP S),
2463           did not properly match under "/i".  5.14.0 fixed some of these
2464           cases, but introduced others, including a panic when one of the
2465           characters or sequences was used in the "(?(DEFINE)" regular
2466           expression predicate.  The known bugs that were introduced in 5.14
2467           have now been fixed; as well as some other edge cases that have
2468           never worked until now.  These all involve using the characters and
2469           sequences outside bracketed character classes under "/i".  This
2470           closes [perl #98546].
2471
2472           There remain known problems when using certain characters with
2473           multi-character folds inside bracketed character classes, including
2474           such constructs as "qr/[\N{LATIN SMALL LETTER SHARP}a-z]/i".  These
2475           remaining bugs are addressed in [perl #89774].
2476
2477       ·   RT #78266: The regex engine has been leaking memory when accessing
2478           named captures that weren't matched as part of a regex ever since
2479           5.10 when they were introduced; e.g., this would consume over a
2480           hundred MB of memory:
2481
2482               for (1..10_000_000) {
2483                   if ("foo" =~ /(foo|(?<capture>bar))?/) {
2484                       my $capture = $+{capture}
2485                   }
2486               }
2487               system "ps -o rss $$"'
2488
2489       ·   In 5.14, "/[[:lower:]]/i" and "/[[:upper:]]/i" no longer matched
2490           the opposite case.  This has been fixed [perl #101970].
2491
2492       ·   A regular expression match with an overloaded object on the right-
2493           hand side would sometimes stringify the object too many times.
2494
2495       ·   A regression has been fixed that was introduced in 5.14, in "/i"
2496           regular expression matching, in which a match improperly fails if
2497           the pattern is in UTF-8, the target string is not, and a Latin-1
2498           character precedes a character in the string that should match the
2499           pattern.  [perl #101710]
2500
2501       ·   In case-insensitive regular expression pattern matching, no longer
2502           on UTF-8 encoded strings does the scan for the start of match look
2503           only at the first possible position.  This caused matches such as
2504           ""f\x{FB00}" =~ /ff/i" to fail.
2505
2506       ·   The regexp optimizer no longer crashes on debugging builds when
2507           merging fixed-string nodes with inconvenient contents.
2508
2509       ·   A panic involving the combination of the regular expression
2510           modifiers "/aa" and the "\b" escape sequence introduced in 5.14.0
2511           has been fixed [perl #95964]. (5.14.2)
2512
2513       ·   The combination of the regular expression modifiers "/aa" and the
2514           "\b" and "\B" escape sequences did not work properly on UTF-8
2515           encoded strings.  All non-ASCII characters under "/aa" should be
2516           treated as non-word characters, but what was happening was that
2517           Unicode rules were used to determine wordness/non-wordness for non-
2518           ASCII characters.  This is now fixed [perl #95968].
2519
2520       ·   "(?foo: ...)" no longer loses passed in character set.
2521
2522       ·   The trie optimization used to have problems with alternations
2523           containing an empty "(?:)", causing ""x" =~
2524           /\A(?>(?:(?:)A|B|C?x))\z/" not to match, whereas it should [perl
2525           #111842].
2526
2527       ·   Use of lexical ("my") variables in code blocks embedded in regular
2528           expressions will no longer result in memory corruption or crashes.
2529
2530           Nevertheless, these code blocks are still experimental, as there
2531           are still problems with the wrong variables being closed over (in
2532           loops for instance) and with abnormal exiting (e.g., "die") causing
2533           memory corruption.
2534
2535       ·   The "\h", "\H", "\v" and "\V" regular expression metacharacters
2536           used to cause a panic error message when trying to match at the end
2537           of the string [perl #96354].
2538
2539       ·   The abbreviations for four C1 control characters "MW" "PM", "RI",
2540           and "ST" were previously unrecognized by "\N{}", vianame(), and
2541           string_vianame().
2542
2543       ·   Mentioning a variable named "&" other than $& (i.e., "@&" or "%&")
2544           no longer stops $& from working.  The same applies to variables
2545           named "'" and "`" [perl #24237].
2546
2547       ·   Creating a "UNIVERSAL::AUTOLOAD" sub no longer stops "%+", "%-" and
2548           "%!" from working some of the time [perl #105024].
2549
2550   Smartmatching
2551       ·   "~~" now correctly handles the precedence of Any~~Object, and is
2552           not tricked by an overloaded object on the left-hand side.
2553
2554       ·   In Perl 5.14.0, "$tainted ~~ @array" stopped working properly.
2555           Sometimes it would erroneously fail (when $tainted contained a
2556           string that occurs in the array after the first element) or
2557           erroneously succeed (when "undef" occurred after the first element)
2558           [perl #93590].
2559
2560   The "sort" operator
2561       ·   "sort" was not treating "sub {}" and "sub {()}" as equivalent when
2562           such a sub was provided as the comparison routine.  It used to
2563           croak on "sub {()}".
2564
2565       ·   "sort" now works once more with custom sort routines that are
2566           XSUBs.  It stopped working in 5.10.0.
2567
2568       ·   "sort" with a constant for a custom sort routine, although it
2569           produces unsorted results, no longer crashes.  It started crashing
2570           in 5.10.0.
2571
2572       ·   Warnings emitted by "sort" when a custom comparison routine returns
2573           a non-numeric value now contain "in sort" and show the line number
2574           of the "sort" operator, rather than the last line of the comparison
2575           routine.  The warnings also now occur only if warnings are enabled
2576           in the scope where "sort" occurs.  Previously the warnings would
2577           occur if enabled in the comparison routine's scope.
2578
2579       ·   "sort { $a <=> $b }", which is optimized internally, now produces
2580           "uninitialized" warnings for NaNs (not-a-number values), since
2581           "<=>" returns "undef" for those.  This brings it in line with
2582           "sort { 1; $a <=> $b }" and other more complex cases, which are not
2583           optimized [perl #94390].
2584
2585   The "substr" operator
2586       ·   Tied (and otherwise magical) variables are no longer exempt from
2587           the "Attempt to use reference as lvalue in substr" warning.
2588
2589       ·   That warning now occurs when the returned lvalue is assigned to,
2590           not when "substr" itself is called.  This makes a difference only
2591           if the return value of "substr" is referenced and later assigned
2592           to.
2593
2594       ·   Passing a substring of a read-only value or a typeglob to a
2595           function (potential lvalue context) no longer causes an immediate
2596           "Can't coerce" or "Modification of a read-only value" error.  That
2597           error occurs only if the passed value is assigned to.
2598
2599           The same thing happens with the "substr outside of string" error.
2600           If the lvalue is only read from, not written to, it is now just a
2601           warning, as with rvalue "substr".
2602
2603       ·   "substr" assignments no longer call FETCH twice if the first
2604           argument is a tied variable, just once.
2605
2606   Support for embedded nulls
2607       Some parts of Perl did not work correctly with nulls ("chr 0") embedded
2608       in strings.  That meant that, for instance, "$m = "a\0b"; foo->$m"
2609       would call the "a" method, instead of the actual method name contained
2610       in $m.  These parts of perl have been fixed to support nulls:
2611
2612       ·   Method names
2613
2614       ·   Typeglob names (including filehandle and subroutine names)
2615
2616       ·   Package names, including the return value of "ref()"
2617
2618       ·   Typeglob elements (*foo{"THING\0stuff"})
2619
2620       ·   Signal names
2621
2622       ·   Various warnings and error messages that mention variable names or
2623           values, methods, etc.
2624
2625       One side effect of these changes is that blessing into "\0" no longer
2626       causes "ref()" to return false.
2627
2628   Threading bugs
2629       ·   Typeglobs returned from threads are no longer cloned if the parent
2630           thread already has a glob with the same name.  This means that
2631           returned subroutines will now assign to the right package variables
2632           [perl #107366].
2633
2634       ·   Some cases of threads crashing due to memory allocation during
2635           cloning have been fixed [perl #90006].
2636
2637       ·   Thread joining would sometimes emit "Attempt to free unreferenced
2638           scalar" warnings if "caller" had been used from the "DB" package
2639           before thread creation [perl #98092].
2640
2641       ·   Locking a subroutine (via "lock &sub") is no longer a compile-time
2642           error for regular subs.  For lvalue subroutines, it no longer tries
2643           to return the sub as a scalar, resulting in strange side effects
2644           like "ref \$_" returning "CODE" in some instances.
2645
2646           "lock &sub" is now a run-time error if threads::shared is loaded (a
2647           no-op otherwise), but that may be rectified in a future version.
2648
2649   Tied variables
2650       ·   Various cases in which FETCH was being ignored or called too many
2651           times have been fixed:
2652
2653           ·   "PerlIO::get_layers" [perl #97956]
2654
2655           ·   "$tied =~ y/a/b/", "chop $tied" and "chomp $tied" when $tied
2656               holds a reference.
2657
2658           ·   When calling "local $_" [perl #105912]
2659
2660           ·   Four-argument "select"
2661
2662           ·   A tied buffer passed to "sysread"
2663
2664           ·   "$tied .= <>"
2665
2666           ·   Three-argument "open", the third being a tied file handle (as
2667               in "open $fh, ">&", $tied")
2668
2669           ·   "sort" with a reference to a tied glob for the comparison
2670               routine.
2671
2672           ·   ".." and "..." in list context [perl #53554].
2673
2674           ·   "${$tied}", "@{$tied}", "%{$tied}" and "*{$tied}" where the
2675               tied variable returns a string ("&{}" was unaffected)
2676
2677           ·   "defined ${ $tied_variable }"
2678
2679           ·   Various functions that take a filehandle argument in rvalue
2680               context ("close", "readline", etc.) [perl #97482]
2681
2682           ·   Some cases of dereferencing a complex expression, such as "${
2683               (), $tied } = 1", used to call "FETCH" multiple times, but now
2684               call it once.
2685
2686           ·   "$tied->method" where $tied returns a package name--even
2687               resulting in a failure to call the method, due to memory
2688               corruption
2689
2690           ·   Assignments like "*$tied = \&{"..."}" and "*glob = $tied"
2691
2692           ·   "chdir", "chmod", "chown", "utime", "truncate", "stat", "lstat"
2693               and the filetest ops ("-r", "-x", etc.)
2694
2695       ·   "caller" sets @DB::args to the subroutine arguments when called
2696           from the DB package.  It used to crash when doing so if @DB::args
2697           happened to be tied.  Now it croaks instead.
2698
2699       ·   Tying an element of %ENV or "%^H" and then deleting that element
2700           would result in a call to the tie object's DELETE method, even
2701           though tying the element itself is supposed to be equivalent to
2702           tying a scalar (the element is, of course, a scalar) [perl #67490].
2703
2704       ·   When Perl autovivifies an element of a tied array or hash (which
2705           entails calling STORE with a new reference), it now calls FETCH
2706           immediately after the STORE, instead of assuming that FETCH would
2707           have returned the same reference.  This can make it easier to
2708           implement tied objects [perl #35865, #43011].
2709
2710       ·   Four-argument "select" no longer produces its "Non-string passed as
2711           bitmask" warning on tied or tainted variables that are strings.
2712
2713       ·   Localizing a tied scalar that returns a typeglob no longer stops it
2714           from being tied till the end of the scope.
2715
2716       ·   Attempting to "goto" out of a tied handle method used to cause
2717           memory corruption or crashes.  Now it produces an error message
2718           instead [perl #8611].
2719
2720       ·   A bug has been fixed that occurs when a tied variable is used as a
2721           subroutine reference:  if the last thing assigned to or returned
2722           from the variable was a reference or typeglob, the "\&$tied" could
2723           either crash or return the wrong subroutine.  The reference case is
2724           a regression introduced in Perl 5.10.0.  For typeglobs, it has
2725           probably never worked till now.
2726
2727   Version objects and vstrings
2728       ·   The bitwise complement operator (and possibly other operators, too)
2729           when passed a vstring would leave vstring magic attached to the
2730           return value, even though the string had changed.  This meant that
2731           "version->new(~v1.2.3)" would create a version looking like
2732           "v1.2.3" even though the string passed to "version->new" was
2733           actually "\376\375\374".  This also caused B::Deparse to deparse
2734           "~v1.2.3" incorrectly, without the "~" [perl #29070].
2735
2736       ·   Assigning a vstring to a magic (e.g., tied, $!) variable and then
2737           assigning something else used to blow away all magic.  This meant
2738           that tied variables would come undone, $! would stop getting
2739           updated on failed system calls, $| would stop setting autoflush,
2740           and other mischief would take place.  This has been fixed.
2741
2742       ·   "version->new("version")" and "printf "%vd", "version"" no longer
2743           crash [perl #102586].
2744
2745       ·   Version comparisons, such as those that happen implicitly with "use
2746           v5.43", no longer cause locale settings to change [perl #105784].
2747
2748       ·   Version objects no longer cause memory leaks in boolean context
2749           [perl #109762].
2750
2751   Warnings, redefinition
2752       ·   Subroutines from the "autouse" namespace are once more exempt from
2753           redefinition warnings.  This used to work in 5.005, but was broken
2754           in 5.6 for most subroutines.  For subs created via XS that redefine
2755           subroutines from the "autouse" package, this stopped working in
2756           5.10.
2757
2758       ·   New XSUBs now produce redefinition warnings if they overwrite
2759           existing subs, as they did in 5.8.x.  (The "autouse" logic was
2760           reversed in 5.10-14.  Only subroutines from the "autouse" namespace
2761           would warn when clobbered.)
2762
2763       ·   "newCONSTSUB" used to use compile-time warning hints, instead of
2764           run-time hints.  The following code should never produce a
2765           redefinition warning, but it used to, if "newCONSTSUB" redefined an
2766           existing subroutine:
2767
2768               use warnings;
2769               BEGIN {
2770                   no warnings;
2771                   some_XS_function_that_calls_new_CONSTSUB();
2772               }
2773
2774       ·   Redefinition warnings for constant subroutines are on by default
2775           (what are known as severe warnings in perldiag).  This occurred
2776           only when it was a glob assignment or declaration of a Perl
2777           subroutine that caused the warning.  If the creation of XSUBs
2778           triggered the warning, it was not a default warning.  This has been
2779           corrected.
2780
2781       ·   The internal check to see whether a redefinition warning should
2782           occur used to emit "uninitialized" warnings in cases like this:
2783
2784               use warnings "uninitialized";
2785               use constant {u => undef, v => undef};
2786               sub foo(){u}
2787               sub foo(){v}
2788
2789   Warnings, "Uninitialized"
2790       ·   Various functions that take a filehandle argument in rvalue context
2791           ("close", "readline", etc.) used to warn twice for an undefined
2792           handle [perl #97482].
2793
2794       ·   "dbmopen" now only warns once, rather than three times, if the mode
2795           argument is "undef" [perl #90064].
2796
2797       ·   The "+=" operator does not usually warn when the left-hand side is
2798           "undef", but it was doing so for tied variables.  This has been
2799           fixed [perl #44895].
2800
2801       ·   A bug fix in Perl 5.14 introduced a new bug, causing
2802           "uninitialized" warnings to report the wrong variable if the
2803           operator in question had two operands and one was "%{...}" or
2804           "@{...}".  This has been fixed [perl #103766].
2805
2806       ·   ".." and "..." in list context now mention the name of the variable
2807           in "uninitialized" warnings for string (as opposed to numeric)
2808           ranges.
2809
2810   Weak references
2811       ·   Weakening the first argument to an automatically-invoked "DESTROY"
2812           method could result in erroneous "DESTROY created new reference"
2813           errors or crashes.  Now it is an error to weaken a read-only
2814           reference.
2815
2816       ·   Weak references to lexical hashes going out of scope were not going
2817           stale (becoming undefined), but continued to point to the hash.
2818
2819       ·   Weak references to lexical variables going out of scope are now
2820           broken before any magical methods (e.g., DESTROY on a tie object)
2821           are called.  This prevents such methods from modifying the variable
2822           that will be seen the next time the scope is entered.
2823
2824       ·   Creating a weak reference to an @ISA array or accessing the array
2825           index ($#ISA) could result in confused internal bookkeeping for
2826           elements later added to the @ISA array.  For instance, creating a
2827           weak reference to the element itself could push that weak reference
2828           on to @ISA; and elements added after use of $#ISA would be ignored
2829           by method lookup [perl #85670].
2830
2831   Other notable fixes
2832       ·   "quotemeta" now quotes consistently the same non-ASCII characters
2833           under "use feature 'unicode_strings'", regardless of whether the
2834           string is encoded in UTF-8 or not, hence fixing the last vestiges
2835           (we hope) of the notorious "The "Unicode Bug"" in perlunicode.
2836           [perl #77654].
2837
2838           Which of these code points is quoted has changed, based on
2839           Unicode's recommendations.  See "quotemeta" in perlfunc for
2840           details.
2841
2842       ·   "study" is now a no-op, presumably fixing all outstanding bugs
2843           related to study causing regex matches to behave incorrectly!
2844
2845       ·   When one writes "open foo || die", which used to work in Perl 4, a
2846           "Precedence problem" warning is produced.  This warning used
2847           erroneously to apply to fully-qualified bareword handle names not
2848           followed by "||".  This has been corrected.
2849
2850       ·   After package aliasing ("*foo:: = *bar::"), "select" with 0 or 1
2851           argument would sometimes return a name that could not be used to
2852           refer to the filehandle, or sometimes it would return "undef" even
2853           when a filehandle was selected.  Now it returns a typeglob
2854           reference in such cases.
2855
2856       ·   "PerlIO::get_layers" no longer ignores some arguments that it
2857           thinks are numeric, while treating others as filehandle names.  It
2858           is now consistent for flat scalars (i.e., not references).
2859
2860       ·   Unrecognized switches on "#!" line
2861
2862           If a switch, such as -x, that cannot occur on the "#!" line is used
2863           there, perl dies with "Can't emulate...".
2864
2865           It used to produce the same message for switches that perl did not
2866           recognize at all, whether on the command line or the "#!" line.
2867
2868           Now it produces the "Unrecognized switch" error message [perl
2869           #104288].
2870
2871       ·   "system" now temporarily blocks the SIGCHLD signal handler, to
2872           prevent the signal handler from stealing the exit status [perl
2873           #105700].
2874
2875       ·   The %n formatting code for "printf" and "sprintf", which causes the
2876           number of characters to be assigned to the next argument, now
2877           actually assigns the number of characters, instead of the number of
2878           bytes.
2879
2880           It also works now with special lvalue functions like "substr" and
2881           with nonexistent hash and array elements [perl #3471, #103492].
2882
2883       ·   Perl skips copying values returned from a subroutine, for the sake
2884           of speed, if doing so would make no observable difference.  Because
2885           of faulty logic, this would happen with the result of "delete",
2886           "shift" or "splice", even if the result was referenced elsewhere.
2887           It also did so with tied variables about to be freed [perl #91844,
2888           #95548].
2889
2890       ·   "utf8::decode" now refuses to modify read-only scalars [perl
2891           #91850].
2892
2893       ·   Freeing $_ inside a "grep" or "map" block, a code block embedded in
2894           a regular expression, or an @INC filter (a subroutine returned by a
2895           subroutine in @INC) used to result in double frees or crashes [perl
2896           #91880, #92254, #92256].
2897
2898       ·   "eval" returns "undef" in scalar context or an empty list in list
2899           context when there is a run-time error.  When "eval" was passed a
2900           string in list context and a syntax error occurred, it used to
2901           return a list containing a single undefined element.  Now it
2902           returns an empty list in list context for all errors [perl #80630].
2903
2904       ·   "goto &func" no longer crashes, but produces an error message, when
2905           the unwinding of the current subroutine's scope fires a destructor
2906           that undefines the subroutine being "goneto" [perl #99850].
2907
2908       ·   Perl now holds an extra reference count on the package that code is
2909           currently compiling in.  This means that the following code no
2910           longer crashes [perl #101486]:
2911
2912               package Foo;
2913               BEGIN {*Foo:: = *Bar::}
2914               sub foo;
2915
2916       ·   The "x" repetition operator no longer crashes on 64-bit builds with
2917           large repeat counts [perl #94560].
2918
2919       ·   Calling "require" on an implicit $_ when *CORE::GLOBAL::require has
2920           been overridden does not segfault anymore, and $_ is now passed to
2921           the overriding subroutine [perl #78260].
2922
2923       ·   "use" and "require" are no longer affected by the I/O layers active
2924           in the caller's scope (enabled by open.pm) [perl #96008].
2925
2926       ·   "our $::e; $e" (which is invalid) no longer produces the
2927           "Compilation error at lib/utf8_heavy.pl..." error message, which it
2928           started emitting in 5.10.0 [perl #99984].
2929
2930       ·   On 64-bit systems, "read()" now understands large string offsets
2931           beyond the 32-bit range.
2932
2933       ·   Errors that occur when processing subroutine attributes no longer
2934           cause the subroutine's op tree to leak.
2935
2936       ·   Passing the same constant subroutine to both "index" and "formline"
2937           no longer causes one or the other to fail [perl #89218]. (5.14.1)
2938
2939       ·   List assignment to lexical variables declared with attributes in
2940           the same statement ("my ($x,@y) : blimp = (72,94)") stopped working
2941           in Perl 5.8.0.  It has now been fixed.
2942
2943       ·   Perl 5.10.0 introduced some faulty logic that made "U*" in the
2944           middle of a pack template equivalent to "U0" if the input string
2945           was empty.  This has been fixed [perl #90160]. (5.14.2)
2946
2947       ·   Destructors on objects were not called during global destruction on
2948           objects that were not referenced by any scalars.  This could happen
2949           if an array element were blessed (e.g., "bless \$a[0]") or if a
2950           closure referenced a blessed variable ("bless \my @a; sub foo { @a
2951           }").
2952
2953           Now there is an extra pass during global destruction to fire
2954           destructors on any objects that might be left after the usual
2955           passes that check for objects referenced by scalars [perl #36347].
2956
2957       ·   Fixed a case where it was possible that a freed buffer may have
2958           been read from when parsing a here document [perl #90128]. (5.14.1)
2959
2960       ·   "each(ARRAY)" is now wrapped in "defined(...)", like "each(HASH)",
2961           inside a "while" condition [perl #90888].
2962
2963       ·   A problem with context propagation when a "do" block is an argument
2964           to "return" has been fixed.  It used to cause "undef" to be
2965           returned in certain cases of a "return" inside an "if" block which
2966           itself is followed by another "return".
2967
2968       ·   Calling "index" with a tainted constant no longer causes constants
2969           in subsequently compiled code to become tainted [perl #64804].
2970
2971       ·   Infinite loops like "1 while 1" used to stop "strict 'subs'" mode
2972           from working for the rest of the block.
2973
2974       ·   For list assignments like "($a,$b) = ($b,$a)", Perl has to make a
2975           copy of the items on the right-hand side before assignment them to
2976           the left.  For efficiency's sake, it assigns the values on the
2977           right straight to the items on the left if no one variable is
2978           mentioned on both sides, as in "($a,$b) = ($c,$d)".  The logic for
2979           determining when it can cheat was faulty, in that "&&" and "||" on
2980           the right-hand side could fool it.  So "($a,$b) = $some_true_value
2981           && ($b,$a)" would end up assigning the value of $b to both scalars.
2982
2983       ·   Perl no longer tries to apply lvalue context to the string in
2984           "("string", $variable) ||= 1" (which used to be an error).  Since
2985           the left-hand side of "||=" is evaluated in scalar context, that's
2986           a scalar comma operator, which gives all but the last item void
2987           context.  There is no such thing as void lvalue context, so it was
2988           a mistake for Perl to try to force it [perl #96942].
2989
2990       ·   "caller" no longer leaks memory when called from the DB package if
2991           @DB::args was assigned to after the first call to "caller".  Carp
2992           was triggering this bug [perl #97010]. (5.14.2)
2993
2994       ·   "close" and similar filehandle functions, when called on built-in
2995           global variables (like $+), used to die if the variable happened to
2996           hold the undefined value, instead of producing the usual "Use of
2997           uninitialized value" warning.
2998
2999       ·   When autovivified file handles were introduced in Perl 5.6.0,
3000           "readline" was inadvertently made to autovivify when called as
3001           "readline($foo)" (but not as "<$foo>").  It has now been fixed
3002           never to autovivify.
3003
3004       ·   Calling an undefined anonymous subroutine (e.g., what $x holds
3005           after "undef &{$x = sub{}}") used to cause a "Not a CODE reference"
3006           error, which has been corrected to "Undefined subroutine called"
3007           [perl #71154].
3008
3009       ·   Causing @DB::args to be freed between uses of "caller" no longer
3010           results in a crash [perl #93320].
3011
3012       ·   "setpgrp($foo)" used to be equivalent to "($foo, setpgrp)", because
3013           "setpgrp" was ignoring its argument if there was just one.  Now it
3014           is equivalent to "setpgrp($foo,0)".
3015
3016       ·   "shmread" was not setting the scalar flags correctly when reading
3017           from shared memory, causing the existing cached numeric
3018           representation in the scalar to persist [perl #98480].
3019
3020       ·   "++" and "--" now work on copies of globs, instead of dying.
3021
3022       ·   "splice()" doesn't warn when truncating
3023
3024           You can now limit the size of an array using "splice(@a,MAX_LEN)"
3025           without worrying about warnings.
3026
3027       ·   $$ is no longer tainted.  Since this value comes directly from
3028           "getpid()", it is always safe.
3029
3030       ·   The parser no longer leaks a filehandle if STDIN was closed before
3031           parsing started [perl #37033].
3032
3033       ·   "die;" with a non-reference, non-string, or magical (e.g., tainted)
3034           value in $@ now properly propagates that value [perl #111654].
3035

Known Problems

3037       ·   On Solaris, we have two kinds of failure.
3038
3039           If make is Sun's make, we get an error about a badly formed macro
3040           assignment in the Makefile.  That happens when ./Configure tries to
3041           make depends.  Configure then exits 0, but further make-ing fails.
3042
3043           If make is gmake, Configure completes, then we get errors related
3044           to /usr/include/stdbool.h
3045
3046       ·   On Win32, a number of tests hang unless STDERR is redirected.  The
3047           cause of this is still under investigation.
3048
3049       ·   When building as root with a umask that prevents files from being
3050           other-readable, t/op/filetest.t will fail.  This is a test bug, not
3051           a bug in perl's behavior.
3052
3053       ·   Configuring with a recent gcc and link-time-optimization, such as
3054           "Configure -Doptimize='-O2 -flto'" fails because the optimizer
3055           optimizes away some of Configure's tests.  A workaround is to omit
3056           the "-flto" flag when running Configure, but add it back in while
3057           actually building, something like
3058
3059               sh Configure -Doptimize=-O2
3060               make OPTIMIZE='-O2 -flto'
3061
3062       ·   The following CPAN modules have test failures with perl 5.16.
3063           Patches have been submitted for all of these, so hopefully there
3064           will be new releases soon:
3065
3066           ·   Date::Pcalc version 6.1
3067
3068           ·   Module::CPANTS::Analyse version 0.85
3069
3070               This fails due to problems in Module::Find 0.10 and
3071               File::MMagic 1.27.
3072
3073           ·   PerlIO::Util version 0.72
3074

Acknowledgements

3076       Perl 5.16.0 represents approximately 12 months of development since
3077       Perl 5.14.0 and contains approximately 590,000 lines of changes across
3078       2,500 files from 139 authors.
3079
3080       Perl continues to flourish into its third decade thanks to a vibrant
3081       community of users and developers.  The following people are known to
3082       have contributed the improvements that became Perl 5.16.0:
3083
3084       Aaron Crane, Abhijit Menon-Sen, Abigail, Alan Haggai Alavi, Alberto
3085       Simo~es, Alexandr Ciornii, Andreas Koenig, Andy Dougherty, Aristotle
3086       Pagaltzis, Bo Johansson, Bo Lindbergh, Breno G. de Oliveira, brian d
3087       foy, Brian Fraser, Brian Greenfield, Carl Hayter, Chas. Owens, Chia-
3088       liang Kao, Chip Salzenberg, Chris 'BinGOs' Williams, Christian Hansen,
3089       Christopher J. Madsen, chromatic, Claes Jacobsson, Claudio Ramirez,
3090       Craig A. Berry, Damian Conway, Daniel Kahn Gillmor, Darin McBride, Dave
3091       Rolsky, David Cantrell, David Golden, David Leadbeater, David Mitchell,
3092       Dee Newcum, Dennis Kaarsemaker, Dominic Hargreaves, Douglas Christopher
3093       Wilson, Eric Brine, Father Chrysostomos, Florian Ragwitz, Frederic
3094       Briere, George Greer, Gerard Goossen, Gisle Aas, H.Merijn Brand, Hojung
3095       Youn, Ian Goodacre, James E Keenan, Jan Dubois, Jerry D. Hedden, Jesse
3096       Luehrs, Jesse Vincent, Jilles Tjoelker, Jim Cromie, Jim Meyering, Joel
3097       Berger, Johan Vromans, Johannes Plunien, John Hawkinson, John P.
3098       Linderman, John Peacock, Joshua ben Jore, Juerd Waalboer, Karl
3099       Williamson, Karthik Rajagopalan, Keith Thompson, Kevin J.  Woolley,
3100       Kevin Ryde, Laurent Dami, Leo Lapworth, Leon Brocard, Leon Timmermans,
3101       Louis Strous, Lukas Mai, Marc Green, Marcel Gruenauer, Mark A.
3102       Stratman, Mark Dootson, Mark Jason Dominus, Martin Hasch, Matthew
3103       Horsfall, Max Maischein, Michael G Schwern, Michael Witten, Mike
3104       Sheldrake, Moritz Lenz, Nicholas Clark, Niko Tyni, Nuno Carvalho, Pau
3105       Amma, Paul Evans, Paul Green, Paul Johnson, Perlover, Peter John
3106       Acklam, Peter Martini, Peter Scott, Phil Monsen, Pino Toscano, Rafael
3107       Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Robin
3108       Barker, Rodolfo Carvalho, Salvador Fandin~o, Sam Kimbrel, Samuel
3109       Thibault, Shawn M Moore, Shigeya Suzuki, Shirakata Kentaro, Shlomi
3110       Fish, Sisyphus, Slaven Rezic, Spiros Denaxas, Steffen Mueller, Steffen
3111       Schwigon, Stephen Bennett, Stephen Oberholtzer, Stevan Little, Steve
3112       Hay, Steve Peters, Thomas Sibley, Thorsten Glaser, Timothe Litt, Todd
3113       Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook, Vadim Konovalov,
3114       Vincent Pit, Vladimir Timofeev, Walt Mankowski, Yves Orton, Zefram,
3115       Zsban Ambrus, AEvar Arnfjoerd` Bjarmason.
3116
3117       The list above is almost certainly incomplete as it is automatically
3118       generated from version control history.  In particular, it does not
3119       include the names of the (very much appreciated) contributors who
3120       reported issues to the Perl bug tracker.
3121
3122       Many of the changes included in this version originated in the CPAN
3123       modules included in Perl's core.  We're grateful to the entire CPAN
3124       community for helping Perl to flourish.
3125
3126       For a more complete list of all of Perl's historical contributors,
3127       please see the AUTHORS file in the Perl source distribution.
3128

Reporting Bugs

3130       If you find what you think is a bug, you might check the articles
3131       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
3132       database at <http://rt.perl.org/perlbug/>.  There may also be
3133       information at <http://www.perl.org/>, the Perl Home Page.
3134
3135       If you believe you have an unreported bug, please run the perlbug
3136       program included with your release.  Be sure to trim your bug down to a
3137       tiny but sufficient test case.  Your bug report, along with the output
3138       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
3139       the Perl porting team.
3140
3141       If the bug you are reporting has security implications, which make it
3142       inappropriate to send to a publicly archived mailing list, then please
3143       send it to perl5-security-report@perl.org.  This points to a closed
3144       subscription unarchived mailing list, which includes all core
3145       committers, who will be able to help assess the impact of issues,
3146       figure out a resolution, and help co-ordinate the release of patches to
3147       mitigate or fix the problem across all platforms on which Perl is
3148       supported.  Please use this address only for security issues in the
3149       Perl core, not for modules independently distributed on CPAN.
3150

SEE ALSO

3152       The Changes file for an explanation of how to view exhaustive details
3153       on what changed.
3154
3155       The INSTALL file for how to build Perl.
3156
3157       The README file for general stuff.
3158
3159       The Artistic and Copying files for copyright information.
3160
3161
3162
3163perl v5.28.2                      2018-03-01                  PERL5160DELTA(1)
Impressum