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

NAME

6       perl5220delta - what is new for perl v5.22.0
7

DESCRIPTION

9       This document describes differences between the 5.20.0 release and the
10       5.22.0 release.
11
12       If you are upgrading from an earlier release such as 5.18.0, first read
13       perl5200delta, which describes differences between 5.18.0 and 5.20.0.
14

Core Enhancements

16   New bitwise operators
17       A new experimental facility has been added that makes the four standard
18       bitwise operators ("& | ^ ~") treat their operands consistently as
19       numbers, and introduces four new dotted operators ("&. |. ^. ~.") that
20       treat their operands consistently as strings.  The same applies to the
21       assignment variants ("&= |= ^= &.= |.= ^.=").
22
23       To use this, enable the "bitwise" feature and disable the
24       "experimental::bitwise" warnings category.  See "Bitwise String
25       Operators" in perlop for details.  [GH #14348]
26       <https://github.com/Perl/perl5/issues/14348>.
27
28   New double-diamond operator
29       "<<>>" is like "<>" but uses three-argument "open" to open each file in
30       @ARGV.  This means that each element of @ARGV will be treated as an
31       actual file name, and "|foo" won't be treated as a pipe open.
32
33   New "\b" boundaries in regular expressions
34       "qr/\b{gcb}/"
35
36       "gcb" stands for Grapheme Cluster Boundary.  It is a Unicode property
37       that finds the boundary between sequences of characters that look like
38       a single character to a native speaker of a language.  Perl has long
39       had the ability to deal with these through the "\X" regular escape
40       sequence.  Now, there is an alternative way of handling these.  See
41       "\b{}, \b, \B{}, \B" in perlrebackslash for details.
42
43       "qr/\b{wb}/"
44
45       "wb" stands for Word Boundary.  It is a Unicode property that finds the
46       boundary between words.  This is similar to the plain "\b" (without
47       braces) but is more suitable for natural language processing.  It
48       knows, for example, that apostrophes can occur in the middle of words.
49       See "\b{}, \b, \B{}, \B" in perlrebackslash for details.
50
51       "qr/\b{sb}/"
52
53       "sb" stands for Sentence Boundary.  It is a Unicode property to aid in
54       parsing natural language sentences.  See "\b{}, \b, \B{}, \B" in
55       perlrebackslash for details.
56
57   Non-Capturing Regular Expression Flag
58       Regular expressions now support a "/n" flag that disables capturing and
59       filling in $1, $2, etc inside of groups:
60
61         "hello" =~ /(hi|hello)/n; # $1 is not set
62
63       This is equivalent to putting "?:" at the beginning of every capturing
64       group.
65
66       See "n" in perlre for more information.
67
68   "use re 'strict'"
69       This applies stricter syntax rules to regular expression patterns
70       compiled within its scope. This will hopefully alert you to typos and
71       other unintentional behavior that backwards-compatibility issues
72       prevent us from reporting in normal regular expression compilations.
73       Because the behavior of this is subject to change in future Perl
74       releases as we gain experience, using this pragma will raise a warning
75       of category "experimental::re_strict".  See 'strict' in re.
76
77   Unicode 7.0 (with correction) is now supported
78       For details on what is in this release, see
79       <http://www.unicode.org/versions/Unicode7.0.0/>.  The version of
80       Unicode 7.0 that comes with Perl includes a correction dealing with
81       glyph shaping in Arabic (see
82       <http://www.unicode.org/errata/#current_errata>).
83
84   "use locale" can restrict which locale categories are affected
85       It is now possible to pass a parameter to "use locale" to specify a
86       subset of locale categories to be locale-aware, with the remaining ones
87       unaffected.  See "The "use locale" pragma" in perllocale for details.
88
89   Perl now supports POSIX 2008 locale currency additions
90       On platforms that are able to handle POSIX.1-2008, the hash returned by
91       POSIX::localeconv() includes the international currency fields added by
92       that version of the POSIX standard.  These are "int_n_cs_precedes",
93       "int_n_sep_by_space", "int_n_sign_posn", "int_p_cs_precedes",
94       "int_p_sep_by_space", and "int_p_sign_posn".
95
96   Better heuristics on older platforms for determining locale UTF-8ness
97       On platforms that implement neither the C99 standard nor the POSIX 2001
98       standard, determining if the current locale is UTF-8 or not depends on
99       heuristics.  These are improved in this release.
100
101   Aliasing via reference
102       Variables and subroutines can now be aliased by assigning to a
103       reference:
104
105           \$c = \$d;
106           \&x = \&y;
107
108       Aliasing can also be accomplished by using a backslash before a
109       "foreach" iterator variable; this is perhaps the most useful idiom this
110       feature provides:
111
112           foreach \%hash (@array_of_hash_refs) { ... }
113
114       This feature is experimental and must be enabled via
115       use feature 'refaliasing'.  It will warn unless the
116       "experimental::refaliasing" warnings category is disabled.
117
118       See "Assigning to References" in perlref
119
120   "prototype" with no arguments
121       prototype() with no arguments now infers $_.  [GH #14376]
122       <https://github.com/Perl/perl5/issues/14376>.
123
124   New ":const" subroutine attribute
125       The "const" attribute can be applied to an anonymous subroutine.  It
126       causes the new sub to be executed immediately whenever one is created
127       (i.e. when the "sub" expression is evaluated).  Its value is captured
128       and used to create a new constant subroutine that is returned.  This
129       feature is experimental.  See "Constant Functions" in perlsub.
130
131   "fileno" now works on directory handles
132       When the relevant support is available in the operating system, the
133       "fileno" builtin now works on directory handles, yielding the
134       underlying file descriptor in the same way as for filehandles. On
135       operating systems without such support, "fileno" on a directory handle
136       continues to return the undefined value, as before, but also sets $! to
137       indicate that the operation is not supported.
138
139       Currently, this uses either a "dd_fd" member in the OS "DIR" structure,
140       or a dirfd(3) function as specified by POSIX.1-2008.
141
142   List form of pipe open implemented for Win32
143       The list form of pipe:
144
145         open my $fh, "-|", "program", @arguments;
146
147       is now implemented on Win32.  It has the same limitations as "system
148       LIST" on Win32, since the Win32 API doesn't accept program arguments as
149       a list.
150
151   Assignment to list repetition
152       "(...) x ..." can now be used within a list that is assigned to, as
153       long as the left-hand side is a valid lvalue.  This allows
154       "(undef,undef,$foo) = that_function()" to be written as
155       "((undef)x2, $foo) = that_function()".
156
157   Infinity and NaN (not-a-number) handling improved
158       Floating point values are able to hold the special values infinity,
159       negative infinity, and NaN (not-a-number).  Now we more robustly
160       recognize and propagate the value in computations, and on output
161       normalize them to the strings "Inf", "-Inf", and "NaN".
162
163       See also the POSIX enhancements.
164
165   Floating point parsing has been improved
166       Parsing and printing of floating point values has been improved.
167
168       As a completely new feature, hexadecimal floating point literals (like
169       "0x1.23p-4")  are now supported, and they can be output with
170       "printf "%a"". See "Scalar value constructors" in perldata for more
171       details.
172
173   Packing infinity or not-a-number into a character is now fatal
174       Before, when trying to pack infinity or not-a-number into a (signed)
175       character, Perl would warn, and assumed you tried to pack 0xFF; if you
176       gave it as an argument to "chr", "U+FFFD" was returned.
177
178       But now, all such actions ("pack", "chr", and "print '%c'") result in a
179       fatal error.
180
181   Experimental C Backtrace API
182       Perl now supports (via a C level API) retrieving the C level backtrace
183       (similar to what symbolic debuggers like gdb do).
184
185       The backtrace returns the stack trace of the C call frames, with the
186       symbol names (function names), the object names (like "perl"), and if
187       it can, also the source code locations (file:line).
188
189       The supported platforms are Linux and OS X (some *BSD might work at
190       least partly, but they have not yet been tested).
191
192       The feature needs to be enabled with "Configure -Dusecbacktrace".
193
194       See "C backtrace" in perlhacktips for more information.
195

Security

197   Perl is now compiled with "-fstack-protector-strong" if available
198       Perl has been compiled with the anti-stack-smashing option
199       "-fstack-protector" since 5.10.1.  Now Perl uses the newer variant
200       called "-fstack-protector-strong", if available.
201
202   The Safe module could allow outside packages to be replaced
203       Critical bugfix: outside packages could be replaced.  Safe has been
204       patched to 2.38 to address this.
205
206   Perl is now always compiled with "-D_FORTIFY_SOURCE=2" if available
207       The 'code hardening' option called "_FORTIFY_SOURCE", available in gcc
208       4.*, is now always used for compiling Perl, if available.
209
210       Note that this isn't necessarily a huge step since in many platforms
211       the step had already been taken several years ago: many Linux
212       distributions (like Fedora) have been using this option for Perl, and
213       OS X has enforced the same for many years.
214

Incompatible Changes

216   Subroutine signatures moved before attributes
217       The experimental sub signatures feature, as introduced in 5.20, parsed
218       signatures after attributes. In this release, following feedback from
219       users of the experimental feature, the positioning has been moved such
220       that signatures occur after the subroutine name (if any) and before the
221       attribute list (if any).
222
223   "&" and "\&" prototypes accepts only subs
224       The "&" prototype character now accepts only anonymous subs ("sub
225       {...}"), things beginning with "\&", or an explicit "undef".  Formerly
226       it erroneously also allowed references to arrays, hashes, and lists.
227       [GH #2776] <https://github.com/Perl/perl5/issues/2776>.  [GH #14186]
228       <https://github.com/Perl/perl5/issues/14186>.  [GH #14353]
229       <https://github.com/Perl/perl5/issues/14353>.
230
231       In addition, the "\&" prototype was allowing subroutine calls, whereas
232       now it only allows subroutines: &foo is still permitted as an argument,
233       while &foo() and foo() no longer are.  [GH #10633]
234       <https://github.com/Perl/perl5/issues/10633>.
235
236   "use encoding" is now lexical
237       The encoding pragma's effect is now limited to lexical scope.  This
238       pragma is deprecated, but in the meantime, it could adversely affect
239       unrelated modules that are included in the same program; this change
240       fixes that.
241
242   List slices returning empty lists
243       List slices now return an empty list only if the original list was
244       empty (or if there are no indices).  Formerly, a list slice would
245       return an empty list if all indices fell outside the original list; now
246       it returns a list of "undef" values in that case.  [GH #12335]
247       <https://github.com/Perl/perl5/issues/12335>.
248
249   "\N{}" with a sequence of multiple spaces is now a fatal error
250       E.g. "\N{TOO  MANY SPACES}" or "\N{TRAILING SPACE }".  This has been
251       deprecated since v5.18.
252
253   "use UNIVERSAL '...'" is now a fatal error
254       Importing functions from "UNIVERSAL" has been deprecated since v5.12,
255       and is now a fatal error.  "use UNIVERSAL" without any arguments is
256       still allowed.
257
258   In double-quotish "\cX", X must now be a printable ASCII character
259       In prior releases, failure to do this raised a deprecation warning.
260
261   Splitting the tokens "(?" and "(*" in regular expressions is now a fatal
262       compilation error.
263       These had been deprecated since v5.18.
264
265   "qr/foo/x" now ignores all Unicode pattern white space
266       The "/x" regular expression modifier allows the pattern to contain
267       white space and comments (both of which are ignored) for improved
268       readability.  Until now, not all the white space characters that
269       Unicode designates for this purpose were handled.  The additional ones
270       now recognized are:
271
272           U+0085 NEXT LINE
273           U+200E LEFT-TO-RIGHT MARK
274           U+200F RIGHT-TO-LEFT MARK
275           U+2028 LINE SEPARATOR
276           U+2029 PARAGRAPH SEPARATOR
277
278       The use of these characters with "/x" outside bracketed character
279       classes and when not preceded by a backslash has raised a deprecation
280       warning since v5.18.  Now they will be ignored.
281
282   Comment lines within "(?[ ])" are now ended only by a "\n"
283       "(?[ ])"  is an experimental feature, introduced in v5.18.  It operates
284       as if "/x" is always enabled.  But there was a difference: comment
285       lines (following a "#" character) were terminated by anything matching
286       "\R" which includes all vertical whitespace, such as form feeds.  For
287       consistency, this is now changed to match what terminates comment lines
288       outside "(?[ ])", namely a "\n" (even if escaped), which is the same as
289       what terminates a heredoc string and formats.
290
291   "(?[...])" operators now follow standard Perl precedence
292       This experimental feature allows set operations in regular expression
293       patterns.  Prior to this, the intersection operator had the same
294       precedence as the other binary operators.  Now it has higher
295       precedence.  This could lead to different outcomes than existing code
296       expects (though the documentation has always noted that this change
297       might happen, recommending fully parenthesizing the expressions).  See
298       "Extended Bracketed Character Classes" in perlrecharclass.
299
300   Omitting "%" and "@" on hash and array names is no longer permitted
301       Really old Perl let you omit the "@" on array names and the "%" on hash
302       names in some spots.  This has issued a deprecation warning since Perl
303       5.000, and is no longer permitted.
304
305   "$!" text is now in English outside the scope of "use locale"
306       Previously, the text, unlike almost everything else, always came out
307       based on the current underlying locale of the program.  (Also affected
308       on some systems is "$^E".)  For programs that are unprepared to handle
309       locale differences, this can cause garbage text to be displayed.  It's
310       better to display text that is translatable via some tool than garbage
311       text which is much harder to figure out.
312
313   "$!" text will be returned in UTF-8 when appropriate
314       The stringification of $! and $^E will have the UTF-8 flag set when the
315       text is actually non-ASCII UTF-8.  This will enable programs that are
316       set up to be locale-aware to properly output messages in the user's
317       native language.  Code that needs to continue the 5.20 and earlier
318       behavior can do the stringification within the scopes of both
319       "use bytes" and "use locale ":messages"".  Within these two scopes, no
320       other Perl operations will be affected by locale; only $! and $^E
321       stringification.  The "bytes" pragma causes the UTF-8 flag to not be
322       set, just as in previous Perl releases.  This resolves [GH #12035]
323       <https://github.com/Perl/perl5/issues/12035>.
324
325   Support for "?PATTERN?" without explicit operator has been removed
326       The "m?PATTERN?" construct, which allows matching a regex only once,
327       previously had an alternative form that was written directly with a
328       question mark delimiter, omitting the explicit "m" operator.  This
329       usage has produced a deprecation warning since 5.14.0.  It is now a
330       syntax error, so that the question mark can be available for use in new
331       operators.
332
333   defined(@array) and defined(%hash) are now fatal errors
334       These have been deprecated since v5.6.1 and have raised deprecation
335       warnings since v5.16.
336
337   Using a hash or an array as a reference are now fatal errors
338       For example, "%foo->{"bar"}" now causes a fatal compilation error.
339       These have been deprecated since before v5.8, and have raised
340       deprecation warnings since then.
341
342   Changes to the "*" prototype
343       The "*" character in a subroutine's prototype used to allow barewords
344       to take precedence over most, but not all, subroutine names.  It was
345       never consistent and exhibited buggy behavior.
346
347       Now it has been changed, so subroutines always take precedence over
348       barewords, which brings it into conformity with similarly prototyped
349       built-in functions:
350
351           sub splat(*) { ... }
352           sub foo { ... }
353           splat(foo); # now always splat(foo())
354           splat(bar); # still splat('bar') as before
355           close(foo); # close(foo())
356           close(bar); # close('bar')
357

Deprecations

359   Setting "${^ENCODING}" to anything but "undef"
360       This variable allows Perl scripts to be written in an encoding other
361       than ASCII or UTF-8.  However, it affects all modules globally, leading
362       to wrong answers and segmentation faults.  New scripts should be
363       written in UTF-8; old scripts should be converted to UTF-8, which is
364       easily done with the piconv utility.
365
366   Use of non-graphic characters in single-character variable names
367       The syntax for single-character variable names is more lenient than for
368       longer variable names, allowing the one-character name to be a
369       punctuation character or even invisible (a non-graphic).  Perl v5.20
370       deprecated the ASCII-range controls as such a name.  Now, all non-
371       graphic characters that formerly were allowed are deprecated.  The
372       practical effect of this occurs only when not under "use utf8", and
373       affects just the C1 controls (code points 0x80 through 0xFF), NO-BREAK
374       SPACE, and SOFT HYPHEN.
375
376   Inlining of "sub () { $var }" with observable side-effects
377       In many cases Perl makes "sub () { $var }" into an inlinable constant
378       subroutine, capturing the value of $var at the time the "sub"
379       expression is evaluated.  This can break the closure behavior in those
380       cases where $var is subsequently modified, since the subroutine won't
381       return the changed value. (Note that this all only applies to anonymous
382       subroutines with an empty prototype ("sub ()").)
383
384       This usage is now deprecated in those cases where the variable could be
385       modified elsewhere.  Perl detects those cases and emits a deprecation
386       warning.  Such code will likely change in the future and stop producing
387       a constant.
388
389       If your variable is only modified in the place where it is declared,
390       then Perl will continue to make the sub inlinable with no warnings.
391
392           sub make_constant {
393               my $var = shift;
394               return sub () { $var }; # fine
395           }
396
397           sub make_constant_deprecated {
398               my $var;
399               $var = shift;
400               return sub () { $var }; # deprecated
401           }
402
403           sub make_constant_deprecated2 {
404               my $var = shift;
405               log_that_value($var); # could modify $var
406               return sub () { $var }; # deprecated
407           }
408
409       In the second example above, detecting that $var is assigned to only
410       once is too hard to detect.  That it happens in a spot other than the
411       "my" declaration is enough for Perl to find it suspicious.
412
413       This deprecation warning happens only for a simple variable for the
414       body of the sub.  (A "BEGIN" block or "use" statement inside the sub is
415       ignored, because it does not become part of the sub's body.)  For more
416       complex cases, such as "sub () { do_something() if 0; $var }" the
417       behavior has changed such that inlining does not happen if the variable
418       is modifiable elsewhere.  Such cases should be rare.
419
420   Use of multiple "/x" regexp modifiers
421       It is now deprecated to say something like any of the following:
422
423           qr/foo/xx;
424           /(?xax:foo)/;
425           use re qw(/amxx);
426
427       That is, now "x" should only occur once in any string of contiguous
428       regular expression pattern modifiers.  We do not believe there are any
429       occurrences of this in all of CPAN.  This is in preparation for a
430       future Perl release having "/xx" permit white-space for readability in
431       bracketed character classes (those enclosed in square brackets:
432       "[...]").
433
434   Using a NO-BREAK space in a character alias for "\N{...}" is now deprecated
435       This non-graphic character is essentially indistinguishable from a
436       regular space, and so should not be allowed.  See "CUSTOM ALIASES" in
437       charnames.
438
439   A literal "{" should now be escaped in a pattern
440       If you want a literal left curly bracket (also called a left brace) in
441       a regular expression pattern, you should now escape it by either
442       preceding it with a backslash ("\{") or enclosing it within square
443       brackets "[{]", or by using "\Q"; otherwise a deprecation warning will
444       be raised.  This was first announced as forthcoming in the v5.16
445       release; it will allow future extensions to the language to happen.
446
447   Making all warnings fatal is discouraged
448       The documentation for fatal warnings notes that "use warnings FATAL =>
449       'all'" is discouraged, and provides stronger language about the risks
450       of fatal warnings in general.
451

Performance Enhancements

453       •   If a method or class name is known at compile time, a hash is
454           precomputed to speed up run-time method lookup.  Also, compound
455           method names like "SUPER::new" are parsed at compile time, to save
456           having to parse them at run time.
457
458       •   Array and hash lookups (especially nested ones) that use only
459           constants or simple variables as keys, are now considerably faster.
460           See "Internal Changes" for more details.
461
462       •   "(...)x1", "("constant")x0" and "($scalar)x0" are now optimised in
463           list context.  If the right-hand argument is a constant 1, the
464           repetition operator disappears.  If the right-hand argument is a
465           constant 0, the whole expression is optimised to the empty list, so
466           long as the left-hand argument is a simple scalar or constant.
467           (That is, "(foo())x0" is not subject to this optimisation.)
468
469       •   "substr" assignment is now optimised into 4-argument "substr" at
470           the end of a subroutine (or as the argument to "return").
471           Previously, this optimisation only happened in void context.
472
473       •   In "\L...", "\Q...", etc., the extra "stringify" op is now
474           optimised away, making these just as fast as "lcfirst",
475           "quotemeta", etc.
476
477       •   Assignment to an empty list is now sometimes faster.  In
478           particular, it never calls "FETCH" on tied arguments on the right-
479           hand side, whereas it used to sometimes.
480
481       •   There is a performance improvement of up to 20% when "length" is
482           applied to a non-magical, non-tied string, and either "use bytes"
483           is in scope or the string doesn't use UTF-8 internally.
484
485       •   On most perl builds with 64-bit integers, memory usage for non-
486           magical, non-tied scalars containing only a floating point value
487           has been reduced by between 8 and 32 bytes, depending on OS.
488
489       •   In "@array = split", the assignment can be optimized away, so that
490           "split" writes directly to the array.  This optimisation was
491           happening only for package arrays other than @_, and only
492           sometimes.  Now this optimisation happens almost all the time.
493
494       •   "join" is now subject to constant folding.  So for example
495           "join "-", "a", "b"" is converted at compile-time to "a-b".
496           Moreover, "join" with a scalar or constant for the separator and a
497           single-item list to join is simplified to a stringification, and
498           the separator doesn't even get evaluated.
499
500       •   qq(@array) is implemented using two ops: a stringify op and a join
501           op.  If the "qq" contains nothing but a single array, the
502           stringification is optimized away.
503
504       •   "our $var" and "our($s,@a,%h)" in void context are no longer
505           evaluated at run time.  Even a whole sequence of "our $foo;"
506           statements will simply be skipped over.  The same applies to
507           "state" variables.
508
509       •   Many internal functions have been refactored to improve performance
510           and reduce their memory footprints.  [GH #13659]
511           <https://github.com/Perl/perl5/issues/13659> [GH #13856]
512           <https://github.com/Perl/perl5/issues/13856> [GH #13874]
513           <https://github.com/Perl/perl5/issues/13874>
514
515       •   "-T" and "-B" filetests will return sooner when an empty file is
516           detected.  [GH #13686] <https://github.com/Perl/perl5/issues/13686>
517
518       •   Hash lookups where the key is a constant are faster.
519
520       •   Subroutines with an empty prototype and a body containing just
521           "undef" are now eligible for inlining.  [GH #14077]
522           <https://github.com/Perl/perl5/issues/14077>
523
524       •   Subroutines in packages no longer need to be stored in typeglobs:
525           declaring a subroutine will now put a simple sub reference directly
526           in the stash if possible, saving memory.  The typeglob still
527           notionally exists, so accessing it will cause the stash entry to be
528           upgraded to a typeglob (i.e. this is just an internal
529           implementation detail).  This optimization does not currently apply
530           to XSUBs or exported subroutines, and method calls will undo it,
531           since they cache things in typeglobs.  [GH #13392]
532           <https://github.com/Perl/perl5/issues/13392>
533
534       •   The functions utf8::native_to_unicode() and
535           utf8::unicode_to_native() (see utf8) are now optimized out on ASCII
536           platforms.  There is now not even a minimal performance hit in
537           writing code portable between ASCII and EBCDIC platforms.
538
539       •   Win32 Perl uses 8 KB less of per-process memory than before for
540           every perl process, because some data is now memory mapped from
541           disk and shared between processes from the same perl binary.
542

Modules and Pragmata

544   Updated Modules and Pragmata
545       Many of the libraries distributed with perl have been upgraded since
546       v5.20.0.  For a complete list of changes, run:
547
548         corelist --diff 5.20.0 5.22.0
549
550       You can substitute your favorite version in place of 5.20.0, too.
551
552       Some notable changes include:
553
554       •   Archive::Tar has been upgraded to version 2.04.
555
556           Tests can now be run in parallel.
557
558       •   attributes has been upgraded to version 0.27.
559
560           The usage of "memEQs" in the XS has been corrected.  [GH #14072]
561           <https://github.com/Perl/perl5/issues/14072>
562
563           Avoid reading beyond the end of a buffer. [perl #122629]
564
565       •   B has been upgraded to version 1.58.
566
567           It provides a new "B::safename" function, based on the existing
568           "B::GV->SAFENAME", that converts "\cOPEN" to "^OPEN".
569
570           Nulled COPs are now of class "B::COP", rather than "B::OP".
571
572           "B::REGEXP" objects now provide a "qr_anoncv" method for accessing
573           the implicit CV associated with "qr//" things containing code
574           blocks, and a "compflags" method that returns the pertinent flags
575           originating from the "qr//blahblah" op.
576
577           "B::PMOP" now provides a "pmregexp" method returning a "B::REGEXP"
578           object.  Two new classes, "B::PADNAME" and "B::PADNAMELIST", have
579           been introduced.
580
581           A bug where, after an ithread creation or pseudofork,
582           special/immortal SVs in the child ithread/pseudoprocess did not
583           have the correct class of "B::SPECIAL", has been fixed.  The "id"
584           and "outid" PADLIST methods have been added.
585
586       •   B::Concise has been upgraded to version 0.996.
587
588           Null ops that are part of the execution chain are now given
589           sequence numbers.
590
591           Private flags for nulled ops are now dumped with mnemonics as they
592           would be for the non-nulled counterparts.
593
594       •   B::Deparse has been upgraded to version 1.35.
595
596           It now deparses "+sub : attr { ... }" correctly at the start of a
597           statement.  Without the initial "+", "sub" would be a statement
598           label.
599
600           "BEGIN" blocks are now emitted in the right place most of the time,
601           but the change unfortunately introduced a regression, in that
602           "BEGIN" blocks occurring just before the end of the enclosing block
603           may appear below it instead.
604
605           "B::Deparse" no longer puts erroneous "local" here and there, such
606           as for "LIST = tr/a//d".  [perl #119815]
607
608           Adjacent "use" statements are no longer accidentally nested if one
609           contains a "do" block.  [perl #115066]
610
611           Parenthesised arrays in lists passed to "\" are now correctly
612           deparsed with parentheses (e.g., "\(@a, (@b), @c)" now retains the
613           parentheses around @b), thus preserving the flattening behavior of
614           referenced parenthesised arrays.  Formerly, it only worked for one
615           array: "\(@a)".
616
617           "local our" is now deparsed correctly, with the "our" included.
618
619           "for($foo; !$bar; $baz) {...}" was deparsed without the "!" (or
620           "not").  This has been fixed.
621
622           Core keywords that conflict with lexical subroutines are now
623           deparsed with the "CORE::" prefix.
624
625           "foreach state $x (...) {...}" now deparses correctly with "state"
626           and not "my".
627
628           "our @array = split(...)" now deparses correctly with "our" in
629           those cases where the assignment is optimized away.
630
631           It now deparses our(LIST) and typed lexical ("my Dog $spot")
632           correctly.
633
634           Deparse $#_ as that instead of as $#{_}.  [GH #14545]
635           <https://github.com/Perl/perl5/issues/14545>
636
637           BEGIN blocks at the end of the enclosing scope are now deparsed in
638           the right place.  [perl #77452]
639
640           BEGIN blocks were sometimes deparsed as __ANON__, but are now
641           always called BEGIN.
642
643           Lexical subroutines are now fully deparsed.  [perl #116553]
644
645           "Anything =~ y///r" with "/r" no longer omits the left-hand
646           operand.
647
648           The op trees that make up regexp code blocks are now deparsed for
649           real.  Formerly, the original string that made up the regular
650           expression was used.  That caused problems with
651           "qr/(?{<<heredoc})/" and multiline code blocks, which were deparsed
652           incorrectly.  [perl #123217] [perl #115256]
653
654           $; at the end of a statement no longer loses its semicolon.  [perl
655           #123357]
656
657           Some cases of subroutine declarations stored in the stash in
658           shorthand form were being omitted.
659
660           Non-ASCII characters are now consistently escaped in strings,
661           instead of some of the time.  (There are still outstanding problems
662           with regular expressions and identifiers that have not been fixed.)
663
664           When prototype sub calls are deparsed with "&" (e.g., under the -P
665           option), "scalar" is now added where appropriate, to force the
666           scalar context implied by the prototype.
667
668           "require(foo())", "do(foo())", "goto(foo())" and similar constructs
669           with loop controls are now deparsed correctly.  The outer
670           parentheses are not optional.
671
672           Whitespace is no longer escaped in regular expressions, because it
673           was getting erroneously escaped within "(?x:...)" sections.
674
675           "sub foo { foo() }" is now deparsed with those mandatory
676           parentheses.
677
678           "/@array/" is now deparsed as a regular expression, and not just
679           @array.
680
681           "/@{-}/", "/@{+}/" and $#{1} are now deparsed with the braces,
682           which are mandatory in these cases.
683
684           In deparsing feature bundles, "B::Deparse" was emitting "no
685           feature;" first instead of "no feature ':all';".  This has been
686           fixed.
687
688           "chdir FH" is now deparsed without quotation marks.
689
690           "\my @a" is now deparsed without parentheses.  (Parenthese would
691           flatten the array.)
692
693           "system" and "exec" followed by a block are now deparsed correctly.
694           Formerly there was an erroneous "do" before the block.
695
696           "use constant QR => qr/.../flags" followed by """ =~ QR" is no
697           longer without the flags.
698
699           Deparsing "BEGIN { undef &foo }" with the -w switch enabled started
700           to emit 'uninitialized' warnings in Perl 5.14.  This has been
701           fixed.
702
703           Deparsing calls to subs with a "(;+)" prototype resulted in an
704           infinite loop.  The "(;$") "(_)" and "(;_)" prototypes were given
705           the wrong precedence, causing foo($a<$b) to be deparsed without the
706           parentheses.
707
708           Deparse now provides a defined state sub in inner subs.
709
710       •   B::Op_private has been added.
711
712           B::Op_private provides detailed information about the flags used in
713           the "op_private" field of perl opcodes.
714
715       •   bigint, bignum, bigrat have been upgraded to version 0.39.
716
717           Document in CAVEATS that using strings as numbers won't always
718           invoke the big number overloading, and how to invoke it.
719           [rt.perl.org #123064]
720
721       •   Carp has been upgraded to version 1.36.
722
723           "Carp::Heavy" now ignores version mismatches with Carp if Carp is
724           newer than 1.12, since "Carp::Heavy"'s guts were merged into Carp
725           at that point.  [GH #13708]
726           <https://github.com/Perl/perl5/issues/13708>
727
728           Carp now handles non-ASCII platforms better.
729
730           Off-by-one error fix for Perl < 5.14.
731
732       •   constant has been upgraded to version 1.33.
733
734           It now accepts fully-qualified constant names, allowing constants
735           to be defined in packages other than the caller.
736
737       •   CPAN has been upgraded to version 2.11.
738
739           Add support for Cwd::getdcwd() and introduce workaround for a
740           misbehavior seen on Strawberry Perl 5.20.1.
741
742           Fix chdir() after building dependencies bug.
743
744           Introduce experimental support for plugins/hooks.
745
746           Integrate the "App::Cpan" sources.
747
748           Do not check recursion on optional dependencies.
749
750           Sanity check META.yml to contain a hash.  [cpan #95271]
751           <https://rt.cpan.org/Ticket/Display.html?id=95271>
752
753       •   CPAN::Meta::Requirements has been upgraded to version 2.132.
754
755           Works around limitations in "version::vpp" detecting v-string magic
756           and adds support for forthcoming ExtUtils::MakeMaker bootstrap
757           version.pm for Perls older than 5.10.0.
758
759       •   Data::Dumper has been upgraded to version 2.158.
760
761           Fixes CVE-2014-4330 by adding a configuration variable/option to
762           limit recursion when dumping deep data structures.
763
764           Changes to resolve Coverity issues.  XS dumps incorrectly stored
765           the name of code references stored in a GLOB.  [GH #13911]
766           <https://github.com/Perl/perl5/issues/13911>
767
768       •   DynaLoader has been upgraded to version 1.32.
769
770           Remove "dl_nonlazy" global if unused in Dynaloader. [perl #122926]
771
772       •   Encode has been upgraded to version 2.72.
773
774           "piconv" now has better error handling when the encoding name is
775           nonexistent, and a build breakage when upgrading Encode in
776           perl-5.8.2 and earlier has been fixed.
777
778           Building in C++ mode on Windows now works.
779
780       •   Errno has been upgraded to version 1.23.
781
782           Add "-P" to the preprocessor command-line on GCC 5.  GCC added
783           extra line directives, breaking parsing of error code definitions.
784           [rt.perl.org #123784]
785
786       •   experimental has been upgraded to version 0.013.
787
788           Hardcodes features for Perls older than 5.15.7.
789
790       •   ExtUtils::CBuilder has been upgraded to version 0.280221.
791
792           Fixes a regression on Android.  [GH #14064]
793           <https://github.com/Perl/perl5/issues/14064>
794
795       •   ExtUtils::Manifest has been upgraded to version 1.70.
796
797           Fixes a bug with maniread()'s handling of quoted filenames and
798           improves manifind() to follow symlinks.  [GH #14003]
799           <https://github.com/Perl/perl5/issues/14003>
800
801       •   ExtUtils::ParseXS has been upgraded to version 3.28.
802
803           Only declare "file" unused if we actually define it.  Improve
804           generated "RETVAL" code generation to avoid repeated references to
805           ST(0).  [perl #123278] Broaden and document the "/OBJ$/" to
806           "/REF$/" typemap optimization for the "DESTROY" method.  [perl
807           #123418]
808
809       •   Fcntl has been upgraded to version 1.13.
810
811           Add support for the Linux pipe buffer size fcntl() commands.
812
813       •   File::Find has been upgraded to version 1.29.
814
815           find() and finddepth() will now warn if passed inappropriate or
816           misspelled options.
817
818       •   File::Glob has been upgraded to version 1.24.
819
820           Avoid SvIV() expanding to call get_sv() three times in a few
821           places. [perl #123606]
822
823       •   HTTP::Tiny has been upgraded to version 0.054.
824
825           "keep_alive" is now fork-safe and thread-safe.
826
827       •   IO has been upgraded to version 1.35.
828
829           The XS implementation has been fixed for the sake of older Perls.
830
831       •   IO::Socket has been upgraded to version 1.38.
832
833           Document the limitations of the connected() method.  [perl #123096]
834
835       •   IO::Socket::IP has been upgraded to version 0.37.
836
837           A better fix for subclassing connect().  [cpan #95983]
838           <https://rt.cpan.org/Ticket/Display.html?id=95983> [cpan #97050]
839           <https://rt.cpan.org/Ticket/Display.html?id=97050>
840
841           Implements Timeout for connect().  [cpan #92075]
842           <https://rt.cpan.org/Ticket/Display.html?id=92075>
843
844       •   The libnet collection of modules has been upgraded to version 3.05.
845
846           Support for IPv6 and SSL to "Net::FTP", "Net::NNTP", "Net::POP3"
847           and "Net::SMTP".  Improvements in "Net::SMTP" authentication.
848
849       •   Locale::Codes has been upgraded to version 3.34.
850
851           Fixed a bug in the scripts used to extract data from spreadsheets
852           that prevented the SHP currency code from being found.  [cpan
853           #94229] <https://rt.cpan.org/Ticket/Display.html?id=94229>
854
855           New codes have been added.
856
857       •   Math::BigInt has been upgraded to version 1.9997.
858
859           Synchronize POD changes from the CPAN release.
860           "Math::BigFloat->blog(x)" would sometimes return blog(2*x) when the
861           accuracy was greater than 70 digits.  The result of
862           "Math::BigFloat->bdiv()" in list context now satisfies "x =
863           quotient * divisor + remainder".
864
865           Correct handling of subclasses.  [cpan #96254]
866           <https://rt.cpan.org/Ticket/Display.html?id=96254> [cpan #96329]
867           <https://rt.cpan.org/Ticket/Display.html?id=96329>
868
869       •   Module::Metadata has been upgraded to version 1.000026.
870
871           Support installations on older perls with an ExtUtils::MakeMaker
872           earlier than 6.63_03
873
874       •   overload has been upgraded to version 1.26.
875
876           A redundant "ref $sub" check has been removed.
877
878       •   The PathTools module collection has been upgraded to version 3.56.
879
880           A warning from the gcc compiler is now avoided when building the
881           XS.
882
883           Don't turn leading "//" into "/" on Cygwin. [perl #122635]
884
885       •   perl5db.pl has been upgraded to version 1.49.
886
887           The debugger would cause an assertion failure.  [GH #14605]
888           <https://github.com/Perl/perl5/issues/14605>
889
890           fork() in the debugger under "tmux" will now create a new window
891           for the forked process. [GH #13602]
892           <https://github.com/Perl/perl5/issues/13602>
893
894           The debugger now saves the current working directory on startup and
895           restores it when you restart your program with "R" or "rerun".  [GH
896           #13691] <https://github.com/Perl/perl5/issues/13691>
897
898       •   PerlIO::scalar has been upgraded to version 0.22.
899
900           Reading from a position well past the end of the scalar now
901           correctly returns end of file.  [perl #123443]
902
903           Seeking to a negative position still fails, but no longer leaves
904           the file position set to a negation location.
905
906           eof() on a "PerlIO::scalar" handle now properly returns true when
907           the file position is past the 2GB mark on 32-bit systems.
908
909           Attempting to write at file positions impossible for the platform
910           now fail early rather than wrapping at 4GB.
911
912       •   Pod::Perldoc has been upgraded to version 3.25.
913
914           Filehandles opened for reading or writing now have :encoding(UTF-8)
915           set.  [cpan #98019]
916           <https://rt.cpan.org/Ticket/Display.html?id=98019>
917
918       •   POSIX has been upgraded to version 1.53.
919
920           The C99 math functions and constants (for example "acosh", "isinf",
921           "isnan", "round", "trunc"; "M_E", "M_SQRT2", "M_PI") have been
922           added.
923
924           POSIX::tmpnam() now produces a deprecation warning.  [perl #122005]
925
926       •   Safe has been upgraded to version 2.39.
927
928           "reval" was not propagating void context properly.
929
930       •   Scalar-List-Utils has been upgraded to version 1.41.
931
932           A new module, Sub::Util, has been added, containing functions
933           related to CODE refs, including "subname" (inspired by
934           "Sub::Identity") and "set_subname" (copied and renamed from
935           "Sub::Name").  The use of "GetMagic" in List::Util::reduce() has
936           also been fixed.  [cpan #63211]
937           <https://rt.cpan.org/Ticket/Display.html?id=63211>
938
939       •   SDBM_File has been upgraded to version 1.13.
940
941           Simplified the build process.  [perl #123413]
942
943       •   Time::Piece has been upgraded to version 1.29.
944
945           When pretty printing negative "Time::Seconds", the "minus" is no
946           longer lost.
947
948       •   Unicode::Collate has been upgraded to version 1.12.
949
950           Version 0.67's improved discontiguous contractions is invalidated
951           by default and is supported as a parameter "long_contraction".
952
953       •   Unicode::Normalize has been upgraded to version 1.18.
954
955           The XSUB implementation has been removed in favor of pure Perl.
956
957       •   Unicode::UCD has been upgraded to version 0.61.
958
959           A new function property_values() has been added to return a given
960           property's possible values.
961
962           A new function charprop() has been added to return the value of a
963           given property for a given code point.
964
965           A new function charprops_all() has been added to return the values
966           of all Unicode properties for a given code point.
967
968           A bug has been fixed so that propaliases() returns the correct
969           short and long names for the Perl extensions where it was
970           incorrect.
971
972           A bug has been fixed so that prop_value_aliases() returns "undef"
973           instead of a wrong result for properties that are Perl extensions.
974
975           This module now works on EBCDIC platforms.
976
977       •   utf8 has been upgraded to version 1.17
978
979           A mismatch between the documentation and the code in
980           utf8::downgrade() was fixed in favor of the documentation. The
981           optional second argument is now correctly treated as a perl boolean
982           (true/false semantics) and not as an integer.
983
984       •   version has been upgraded to version 0.9909.
985
986           Numerous changes.  See the Changes file in the CPAN distribution
987           for details.
988
989       •   Win32 has been upgraded to version 0.51.
990
991           GetOSName() now supports Windows 8.1, and building in C++ mode now
992           works.
993
994       •   Win32API::File has been upgraded to version 0.1202
995
996           Building in C++ mode now works.
997
998       •   XSLoader has been upgraded to version 0.20.
999
1000           Allow XSLoader to load modules from a different namespace.  [perl
1001           #122455]
1002
1003   Removed Modules and Pragmata
1004       The following modules (and associated modules) have been removed from
1005       the core perl distribution:
1006
1007       •   CGI
1008
1009       •   Module::Build
1010

Documentation

1012   New Documentation
1013       perlunicook
1014
1015       This document, by Tom Christiansen, provides examples of handling
1016       Unicode in Perl.
1017
1018   Changes to Existing Documentation
1019       perlaix
1020
1021       •   A note on long doubles has been added.
1022
1023       perlapi
1024
1025       •   Note that "SvSetSV" doesn't do set magic.
1026
1027       •   "sv_usepvn_flags" - fix documentation to mention the use of "Newx"
1028           instead of "malloc".
1029
1030           [GH #13835] <https://github.com/Perl/perl5/issues/13835>
1031
1032       •   Clarify where "NUL" may be embedded or is required to terminate a
1033           string.
1034
1035       •   Some documentation that was previously missing due to formatting
1036           errors is now included.
1037
1038       •   Entries are now organized into groups rather than by the file where
1039           they are found.
1040
1041       •   Alphabetical sorting of entries is now done consistently
1042           (automatically by the POD generator) to make entries easier to find
1043           when scanning.
1044
1045       perldata
1046
1047       •   The syntax of single-character variable names has been brought up-
1048           to-date and more fully explained.
1049
1050       •   Hexadecimal floating point numbers are described, as are infinity
1051           and NaN.
1052
1053       perlebcdic
1054
1055       •   This document has been significantly updated in the light of recent
1056           improvements to EBCDIC support.
1057
1058       perlfilter
1059
1060       •   Added a LIMITATIONS section.
1061
1062       perlfunc
1063
1064       •   Mention that study() is currently a no-op.
1065
1066       •   Calling "delete" or "exists" on array values is now described as
1067           "strongly discouraged" rather than "deprecated".
1068
1069       •   Improve documentation of "our".
1070
1071       •   "-l" now notes that it will return false if symlinks aren't
1072           supported by the file system.  [GH #13695]
1073           <https://github.com/Perl/perl5/issues/13695>
1074
1075       •   Note that "exec LIST" and "system LIST" may fall back to the shell
1076           on Win32. Only the indirect-object syntax "exec PROGRAM LIST" and
1077           "system PROGRAM LIST" will reliably avoid using the shell.
1078
1079           This has also been noted in perlport.
1080
1081           [GH #13907] <https://github.com/Perl/perl5/issues/13907>
1082
1083       perlguts
1084
1085       •   The OOK example has been updated to account for COW changes and a
1086           change in the storage of the offset.
1087
1088       •   Details on C level symbols and libperl.t added.
1089
1090       •   Information on Unicode handling has been added
1091
1092       •   Information on EBCDIC handling has been added
1093
1094       perlhack
1095
1096       •   A note has been added about running on platforms with non-ASCII
1097           character sets
1098
1099       •   A note has been added about performance testing
1100
1101       perlhacktips
1102
1103       •   Documentation has been added illustrating the perils of assuming
1104           that there is no change to the contents of static memory pointed to
1105           by the return values of Perl's wrappers for C library functions.
1106
1107       •   Replacements for "tmpfile", "atoi", "strtol", and "strtoul" are now
1108           recommended.
1109
1110       •   Updated documentation for the "test.valgrind" "make" target.  [GH
1111           #13658] <https://github.com/Perl/perl5/issues/13658>
1112
1113       •   Information is given about writing test files portably to non-ASCII
1114           platforms.
1115
1116       •   A note has been added about how to get a C language stack
1117           backtrace.
1118
1119       perlhpux
1120
1121       •   Note that the message "Redeclaration of "sendpath" with a different
1122           storage class specifier" is harmless.
1123
1124       perllocale
1125
1126       •   Updated for the enhancements in v5.22, along with some
1127           clarifications.
1128
1129       perlmodstyle
1130
1131       •   Instead of pointing to the module list, we are now pointing to
1132           PrePAN <http://prepan.org/>.
1133
1134       perlop
1135
1136       •   Updated for the enhancements in v5.22, along with some
1137           clarifications.
1138
1139       perlpodspec
1140
1141       •   The specification of the pod language is changing so that the
1142           default encoding of pods that aren't in UTF-8 (unless otherwise
1143           indicated) is CP1252 instead of ISO 8859-1 (Latin1).
1144
1145       perlpolicy
1146
1147       •   We now have a code of conduct for the p5p mailing list, as
1148           documented in "STANDARDS OF CONDUCT" in perlpolicy.
1149
1150       •   The conditions for marking an experimental feature as non-
1151           experimental are now set out.
1152
1153       •   Clarification has been made as to what sorts of changes are
1154           permissible in maintenance releases.
1155
1156       perlport
1157
1158       •   Out-of-date VMS-specific information has been fixed and/or
1159           simplified.
1160
1161       •   Notes about EBCDIC have been added.
1162
1163       perlre
1164
1165       •   The description of the "/x" modifier has been clarified to note
1166           that comments cannot be continued onto the next line by escaping
1167           them; and there is now a list of all the characters that are
1168           considered whitespace by this modifier.
1169
1170       •   The new "/n" modifier is described.
1171
1172       •   A note has been added on how to make bracketed character class
1173           ranges portable to non-ASCII machines.
1174
1175       perlrebackslash
1176
1177       •   Added documentation of "\b{sb}", "\b{wb}", "\b{gcb}", and "\b{g}".
1178
1179       perlrecharclass
1180
1181       •   Clarifications have been added to "Character Ranges" in
1182           perlrecharclass to the effect "[A-Z]", "[a-z]", "[0-9]" and any
1183           subranges thereof in regular expression bracketed character classes
1184           are guaranteed to match exactly what a naive English speaker would
1185           expect them to match, even on platforms (such as EBCDIC) where perl
1186           has to do extra work to accomplish this.
1187
1188       •   The documentation of Bracketed Character Classes has been expanded
1189           to cover the improvements in "qr/[\N{named sequence}]/" (see under
1190           "Selected Bug Fixes").
1191
1192       perlref
1193
1194       •   A new section has been added Assigning to References
1195
1196       perlsec
1197
1198       •   Comments added on algorithmic complexity and tied hashes.
1199
1200       perlsyn
1201
1202       •   An ambiguity in the documentation of the "..." statement has been
1203           corrected.  [GH #14054]
1204           <https://github.com/Perl/perl5/issues/14054>
1205
1206       •   The empty conditional in "for" and "while" is now documented in
1207           perlsyn.
1208
1209       perlunicode
1210
1211       •   This has had extensive revisions to bring it up-to-date with
1212           current Unicode support and to make it more readable.  Notable is
1213           that Unicode 7.0 changed what it should do with non-characters.
1214           Perl retains the old way of handling for reasons of backward
1215           compatibility.  See "Noncharacter code points" in perlunicode.
1216
1217       perluniintro
1218
1219       •   Advice for how to make sure your strings and regular expression
1220           patterns are interpreted as Unicode has been updated.
1221
1222       perlvar
1223
1224       •   $] is no longer listed as being deprecated.  Instead, discussion
1225           has been added on the advantages and disadvantages of using it
1226           versus $^V.  $OLD_PERL_VERSION was re-added to the documentation as
1227           the long form of $].
1228
1229       •   "${^ENCODING}" is now marked as deprecated.
1230
1231       •   The entry for "%^H" has been clarified to indicate it can only
1232           handle simple values.
1233
1234       perlvms
1235
1236       •   Out-of-date and/or incorrect material has been removed.
1237
1238       •   Updated documentation on environment and shell interaction in VMS.
1239
1240       perlxs
1241
1242       •   Added a discussion of locale issues in XS code.
1243

Diagnostics

1245       The following additions or changes have been made to diagnostic output,
1246       including warnings and fatal error messages.  For the complete list of
1247       diagnostic messages, see perldiag.
1248
1249   New Diagnostics
1250       New Errors
1251
1252       •   Bad symbol for scalar
1253
1254           (P) An internal request asked to add a scalar entry to something
1255           that wasn't a symbol table entry.
1256
1257       •   Can't use a hash as a reference
1258
1259           (F) You tried to use a hash as a reference, as in "%foo->{"bar"}"
1260           or "%$ref->{"hello"}".  Versions of perl <= 5.6.1 used to allow
1261           this syntax, but shouldn't have.
1262
1263       •   Can't use an array as a reference
1264
1265           (F) You tried to use an array as a reference, as in "@foo->[23]" or
1266           "@$ref->[99]".  Versions of perl <= 5.6.1 used to allow this
1267           syntax, but shouldn't have.
1268
1269       •   Can't use 'defined(@array)' (Maybe you should just omit the
1270           defined()?)
1271
1272           (F) defined() is not useful on arrays because it checks for an
1273           undefined scalar value.  If you want to see if the array is empty,
1274           just use "if (@array) { # not empty }" for example.
1275
1276       •   Can't use 'defined(%hash)' (Maybe you should just omit the
1277           defined()?)
1278
1279           (F) defined() is not usually right on hashes.
1280
1281           Although "defined %hash" is false on a plain not-yet-used hash, it
1282           becomes true in several non-obvious circumstances, including
1283           iterators, weak references, stash names, even remaining true after
1284           "undef %hash".  These things make "defined %hash" fairly useless in
1285           practice, so it now generates a fatal error.
1286
1287           If a check for non-empty is what you wanted then just put it in
1288           boolean context (see "Scalar values" in perldata):
1289
1290               if (%hash) {
1291                  # not empty
1292               }
1293
1294           If you had "defined %Foo::Bar::QUUX" to check whether such a
1295           package variable exists then that's never really been reliable, and
1296           isn't a good way to enquire about the features of a package, or
1297           whether it's loaded, etc.
1298
1299       •   Cannot chr %f
1300
1301           (F) You passed an invalid number (like an infinity or not-a-number)
1302           to "chr".
1303
1304       •   Cannot compress %f in pack
1305
1306           (F) You tried converting an infinity or not-a-number to an unsigned
1307           character, which makes no sense.
1308
1309       •   Cannot pack %f with '%c'
1310
1311           (F) You tried converting an infinity or not-a-number to a
1312           character, which makes no sense.
1313
1314       •   Cannot print %f with '%c'
1315
1316           (F) You tried printing an infinity or not-a-number as a character
1317           (%c), which makes no sense.  Maybe you meant '%s', or just
1318           stringifying it?
1319
1320       •   charnames alias definitions may not contain a sequence of multiple
1321           spaces
1322
1323           (F) You defined a character name which had multiple space
1324           characters in a row.  Change them to single spaces.  Usually these
1325           names are defined in the ":alias" import argument to "use
1326           charnames", but they could be defined by a translator installed
1327           into $^H{charnames}.  See "CUSTOM ALIASES" in charnames.
1328
1329       •   charnames alias definitions may not contain trailing white-space
1330
1331           (F) You defined a character name which ended in a space character.
1332           Remove the trailing space(s).  Usually these names are defined in
1333           the ":alias" import argument to "use charnames", but they could be
1334           defined by a translator installed into $^H{charnames}.  See "CUSTOM
1335           ALIASES" in charnames.
1336
1337       •   :const is not permitted on named subroutines
1338
1339           (F) The "const" attribute causes an anonymous subroutine to be run
1340           and its value captured at the time that it is cloned.  Named
1341           subroutines are not cloned like this, so the attribute does not
1342           make sense on them.
1343
1344       •   Hexadecimal float: internal error
1345
1346           (F) Something went horribly bad in hexadecimal float handling.
1347
1348       •   Hexadecimal float: unsupported long double format
1349
1350           (F) You have configured Perl to use long doubles but the internals
1351           of the long double format are unknown, therefore the hexadecimal
1352           float output is impossible.
1353
1354       •   Illegal suidscript
1355
1356           (F) The script run under suidperl was somehow illegal.
1357
1358       •   In '(?...)', the '(' and '?' must be adjacent in regex; marked by
1359           <-- HERE in m/%s/
1360
1361           (F) The two-character sequence "(?" in this context in a regular
1362           expression pattern should be an indivisible token, with nothing
1363           intervening between the "(" and the "?", but you separated them.
1364
1365       •   In '(*VERB...)', the '(' and '*' must be adjacent in regex; marked
1366           by <-- HERE in m/%s/
1367
1368           (F) The two-character sequence "(*" in this context in a regular
1369           expression pattern should be an indivisible token, with nothing
1370           intervening between the "(" and the "*", but you separated them.
1371
1372       •   Invalid quantifier in {,} in regex; marked by <-- HERE in m/%s/
1373
1374           (F) The pattern looks like a {min,max} quantifier, but the min or
1375           max could not be parsed as a valid number: either it has leading
1376           zeroes, or it represents too big a number to cope with.  The
1377           <-- HERE shows where in the regular expression the problem was
1378           discovered.  See perlre.
1379
1380       •   '%s' is an unknown bound type in regex
1381
1382           (F) You used "\b{...}" or "\B{...}" and the "..." is not known to
1383           Perl.  The current valid ones are given in "\b{}, \b, \B{}, \B" in
1384           perlrebackslash.
1385
1386       •   Missing or undefined argument to require
1387
1388           (F) You tried to call "require" with no argument or with an
1389           undefined value as an argument.  "require" expects either a package
1390           name or a file-specification as an argument.  See "require" in
1391           perlfunc.
1392
1393           Formerly, "require" with no argument or "undef" warned about a Null
1394           filename.
1395
1396       New Warnings
1397
1398       •   \C is deprecated in regex
1399
1400           (D deprecated) The "/\C/" character class was deprecated in v5.20,
1401           and now emits a warning. It is intended that it will become an
1402           error in v5.24.  This character class matches a single byte even if
1403           it appears within a multi-byte character, breaks encapsulation, and
1404           can corrupt UTF-8 strings.
1405
1406       •   "%s" is more clearly written simply as "%s" in regex; marked by <--
1407           HERE in m/%s/
1408
1409           (W regexp) (only under "use re 'strict'" or within "(?[...])")
1410
1411           You specified a character that has the given plainer way of writing
1412           it, and which is also portable to platforms running with different
1413           character sets.
1414
1415       •   Argument "%s" treated as 0 in increment (++)
1416
1417           (W numeric) The indicated string was fed as an argument to the "++"
1418           operator which expects either a number or a string matching
1419           "/^[a-zA-Z]*[0-9]*\z/".  See "Auto-increment and Auto-decrement" in
1420           perlop for details.
1421
1422       •   Both or neither range ends should be Unicode in regex; marked by
1423           <-- HERE in m/%s/
1424
1425           (W regexp) (only under "use re 'strict'" or within "(?[...])")
1426
1427           In a bracketed character class in a regular expression pattern, you
1428           had a range which has exactly one end of it specified using "\N{}",
1429           and the other end is specified using a non-portable mechanism.
1430           Perl treats the range as a Unicode range, that is, all the
1431           characters in it are considered to be the Unicode characters, and
1432           which may be different code points on some platforms Perl runs on.
1433           For example, "[\N{U+06}-\x08]" is treated as if you had instead
1434           said "[\N{U+06}-\N{U+08}]", that is it matches the characters whose
1435           code points in Unicode are 6, 7, and 8.  But that "\x08" might
1436           indicate that you meant something different, so the warning gets
1437           raised.
1438
1439       •   Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".
1440
1441           (W locale) You are 1) running under ""use locale""; 2) the current
1442           locale is not a UTF-8 one; 3) you tried to do the designated case-
1443           change operation on the specified Unicode character; and 4) the
1444           result of this operation would mix Unicode and locale rules, which
1445           likely conflict.
1446
1447           The warnings category "locale" is new.
1448
1449       •   :const is experimental
1450
1451           (S experimental::const_attr) The "const" attribute is experimental.
1452           If you want to use the feature, disable the warning with no
1453           warnings 'experimental::const_attr', but know that in doing so you
1454           are taking the risk that your code may break in a future Perl
1455           version.
1456
1457       •   gmtime(%f) failed
1458
1459           (W overflow) You called "gmtime" with a number that it could not
1460           handle: too large, too small, or NaN.  The returned value is
1461           "undef".
1462
1463       •   Hexadecimal float: exponent overflow
1464
1465           (W overflow) The hexadecimal floating point has larger exponent
1466           than the floating point supports.
1467
1468       •   Hexadecimal float: exponent underflow
1469
1470           (W overflow) The hexadecimal floating point has smaller exponent
1471           than the floating point supports.
1472
1473       •   Hexadecimal float: mantissa overflow
1474
1475           (W overflow) The hexadecimal floating point literal had more bits
1476           in the mantissa (the part between the "0x" and the exponent, also
1477           known as the fraction or the significand) than the floating point
1478           supports.
1479
1480       •   Hexadecimal float: precision loss
1481
1482           (W overflow) The hexadecimal floating point had internally more
1483           digits than could be output.  This can be caused by unsupported
1484           long double formats, or by 64-bit integers not being available
1485           (needed to retrieve the digits under some configurations).
1486
1487       •   Locale '%s' may not work well.%s
1488
1489           (W locale) You are using the named locale, which is a non-UTF-8
1490           one, and which perl has determined is not fully compatible with
1491           what it can handle.  The second %s gives a reason.
1492
1493           The warnings category "locale" is new.
1494
1495       •   localtime(%f) failed
1496
1497           (W overflow) You called "localtime" with a number that it could not
1498           handle: too large, too small, or NaN.  The returned value is
1499           "undef".
1500
1501       •   Negative repeat count does nothing
1502
1503           (W numeric) You tried to execute the "x" repetition operator fewer
1504           than 0 times, which doesn't make sense.
1505
1506       •   NO-BREAK SPACE in a charnames alias definition is deprecated
1507
1508           (D deprecated) You defined a character name which contained a no-
1509           break space character.  Change it to a regular space.  Usually
1510           these names are defined in the ":alias" import argument to "use
1511           charnames", but they could be defined by a translator installed
1512           into $^H{charnames}.  See "CUSTOM ALIASES" in charnames.
1513
1514       •   Non-finite repeat count does nothing
1515
1516           (W numeric) You tried to execute the "x" repetition operator "Inf"
1517           (or "-Inf") or NaN times, which doesn't make sense.
1518
1519       •   PerlIO layer ':win32' is experimental
1520
1521           (S experimental::win32_perlio) The ":win32" PerlIO layer is
1522           experimental.  If you want to take the risk of using this layer,
1523           simply disable this warning:
1524
1525               no warnings "experimental::win32_perlio";
1526
1527       •   Ranges of ASCII printables should be some subset of "0-9", "A-Z",
1528           or "a-z" in regex; marked by <-- HERE in m/%s/
1529
1530           (W regexp) (only under "use re 'strict'" or within "(?[...])")
1531
1532           Stricter rules help to find typos and other errors.  Perhaps you
1533           didn't even intend a range here, if the "-" was meant to be some
1534           other character, or should have been escaped (like "\-").  If you
1535           did intend a range, the one that was used is not portable between
1536           ASCII and EBCDIC platforms, and doesn't have an obvious meaning to
1537           a casual reader.
1538
1539            [3-7]    # OK; Obvious and portable
1540            [d-g]    # OK; Obvious and portable
1541            [A-Y]    # OK; Obvious and portable
1542            [A-z]    # WRONG; Not portable; not clear what is meant
1543            [a-Z]    # WRONG; Not portable; not clear what is meant
1544            [%-.]    # WRONG; Not portable; not clear what is meant
1545            [\x41-Z] # WRONG; Not portable; not obvious to non-geek
1546
1547           (You can force portability by specifying a Unicode range, which
1548           means that the endpoints are specified by "\N{...}", but the
1549           meaning may still not be obvious.)  The stricter rules require that
1550           ranges that start or stop with an ASCII character that is not a
1551           control have all their endpoints be a literal character, and not
1552           some escape sequence (like "\x41"), and the ranges must be all
1553           digits, or all uppercase letters, or all lowercase letters.
1554
1555       •   Ranges of digits should be from the same group in regex; marked by
1556           <-- HERE in m/%s/
1557
1558           (W regexp) (only under "use re 'strict'" or within "(?[...])")
1559
1560           Stricter rules help to find typos and other errors.  You included a
1561           range, and at least one of the end points is a decimal digit.
1562           Under the stricter rules, when this happens, both end points should
1563           be digits in the same group of 10 consecutive digits.
1564
1565       •   Redundant argument in %s
1566
1567           (W redundant) You called a function with more arguments than were
1568           needed, as indicated by information within other arguments you
1569           supplied (e.g. a printf format). Currently only emitted when a
1570           printf-type format required fewer arguments than were supplied, but
1571           might be used in the future for e.g. "pack" in perlfunc.
1572
1573           The warnings category "redundant" is new. See also [GH #13534]
1574           <https://github.com/Perl/perl5/issues/13534>.
1575
1576       •   Replacement list is longer than search list
1577
1578           This is not a new diagnostic, but in earlier releases was
1579           accidentally not displayed if the transliteration contained wide
1580           characters.  This is now fixed, so that you may see this diagnostic
1581           in places where you previously didn't (but should have).
1582
1583       •   Use of \b{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale
1584
1585           (W locale) You are matching a regular expression using locale
1586           rules, and a Unicode boundary is being matched, but the locale is
1587           not a Unicode one.  This doesn't make sense.  Perl will continue,
1588           assuming a Unicode (UTF-8) locale, but the results could well be
1589           wrong except if the locale happens to be ISO-8859-1 (Latin1) where
1590           this message is spurious and can be ignored.
1591
1592           The warnings category "locale" is new.
1593
1594       •   Using /u for '%s' instead of /%s in regex; marked by <-- HERE in
1595           m/%s/
1596
1597           (W regexp) You used a Unicode boundary ("\b{...}" or "\B{...}") in
1598           a portion of a regular expression where the character set modifiers
1599           "/a" or "/aa" are in effect.  These two modifiers indicate an ASCII
1600           interpretation, and this doesn't make sense for a Unicode
1601           definition.  The generated regular expression will compile so that
1602           the boundary uses all of Unicode.  No other portion of the regular
1603           expression is affected.
1604
1605       •   The bitwise feature is experimental
1606
1607           (S experimental::bitwise) This warning is emitted if you use
1608           bitwise operators ("& | ^ ~ &. |. ^. ~.") with the "bitwise"
1609           feature enabled.  Simply suppress the warning if you want to use
1610           the feature, but know that in doing so you are taking the risk of
1611           using an experimental feature which may change or be removed in a
1612           future Perl version:
1613
1614               no warnings "experimental::bitwise";
1615               use feature "bitwise";
1616               $x |.= $y;
1617
1618       •   Unescaped left brace in regex is deprecated, passed through in
1619           regex; marked by <-- HERE in m/%s/
1620
1621           (D deprecated, regexp) You used a literal "{" character in a
1622           regular expression pattern. You should change to use "\{" instead,
1623           because a future version of Perl (tentatively v5.26) will consider
1624           this to be a syntax error.  If the pattern delimiters are also
1625           braces, any matching right brace ("}") should also be escaped to
1626           avoid confusing the parser, for example,
1627
1628               qr{abc\{def\}ghi}
1629
1630       •   Use of literal non-graphic characters in variable names is
1631           deprecated
1632
1633           (D deprecated) Using literal non-graphic (including control)
1634           characters in the source to refer to the ^FOO variables, like $^X
1635           and "${^GLOBAL_PHASE}" is now deprecated.
1636
1637       •   Useless use of attribute "const"
1638
1639           (W misc) The "const" attribute has no effect except on anonymous
1640           closure prototypes.  You applied it to a subroutine via
1641           attributes.pm.  This is only useful inside an attribute handler for
1642           an anonymous subroutine.
1643
1644       •   Useless use of /d modifier in transliteration operator
1645
1646           This is not a new diagnostic, but in earlier releases was
1647           accidentally not displayed if the transliteration contained wide
1648           characters.  This is now fixed, so that you may see this diagnostic
1649           in places where you previously didn't (but should have).
1650
1651       •   "use re 'strict'" is experimental
1652
1653           (S experimental::re_strict) The things that are different when a
1654           regular expression pattern is compiled under 'strict' are subject
1655           to change in future Perl releases in incompatible ways; there are
1656           also proposals to change how to enable strict checking instead of
1657           using this subpragma.  This means that a pattern that compiles
1658           today may not in a future Perl release.  This warning is to alert
1659           you to that risk.
1660
1661       •   Warning: unable to close filehandle properly: %s
1662
1663           Warning: unable to close filehandle %s properly: %s
1664
1665           (S io) Previously, perl silently ignored any errors when doing an
1666           implicit close of a filehandle, i.e. where the reference count of
1667           the filehandle reached zero and the user's code hadn't already
1668           called close(); e.g.
1669
1670               {
1671                   open my $fh, '>', $file  or die "open: '$file': $!\n";
1672                   print $fh, $data  or die;
1673               } # implicit close here
1674
1675           In a situation such as disk full, due to buffering, the error may
1676           only be detected during the final close, so not checking the result
1677           of the close is dangerous.
1678
1679           So perl now warns in such situations.
1680
1681       •   Wide character (U+%X) in %s
1682
1683           (W locale) While in a single-byte locale (i.e., a non-UTF-8 one), a
1684           multi-byte character was encountered.   Perl considers this
1685           character to be the specified Unicode code point.  Combining
1686           non-UTF-8 locales and Unicode is dangerous.  Almost certainly some
1687           characters will have two different representations.  For example,
1688           in the ISO 8859-7 (Greek) locale, the code point 0xC3 represents a
1689           Capital Gamma.  But so also does 0x393.  This will make string
1690           comparisons unreliable.
1691
1692           You likely need to figure out how this multi-byte character got
1693           mixed up with your single-byte locale (or perhaps you thought you
1694           had a UTF-8 locale, but Perl disagrees).
1695
1696           The warnings category "locale" is new.
1697
1698   Changes to Existing Diagnostics
1699       •   <> should be quotes
1700
1701           This warning has been changed to <> at require-statement should be
1702           quotes to make the issue more identifiable.
1703
1704       •   Argument "%s" isn't numeric%s
1705
1706           The perldiag entry for this warning has added this clarifying note:
1707
1708            Note that for the Inf and NaN (infinity and not-a-number) the
1709            definition of "numeric" is somewhat unusual: the strings themselves
1710            (like "Inf") are considered numeric, and anything following them is
1711            considered non-numeric.
1712
1713       •   Global symbol "%s" requires explicit package name
1714
1715           This message has had '(did you forget to declare "my %s"?)'
1716           appended to it, to make it more helpful to new Perl programmers.
1717           [GH #13732] <https://github.com/Perl/perl5/issues/13732>
1718
1719       •   '"my" variable &foo::bar can't be in a package' has been reworded
1720           to say 'subroutine' instead of 'variable'.
1721
1722       •   \N{} in character class restricted to one character in regex;
1723           marked by <-- HERE in m/%s/
1724
1725           This message has had character class changed to inverted character
1726           class or as a range end-point is to reflect improvements in
1727           "qr/[\N{named sequence}]/" (see under "Selected Bug Fixes").
1728
1729       •   panic: frexp
1730
1731           This message has had ': %f' appended to it, to show what the
1732           offending floating point number is.
1733
1734Possible precedence problem on bitwise %c operator reworded as
1735           Possible precedence problem on bitwise %s operator.
1736
1737       •   Unsuccessful %s on filename containing newline
1738
1739           This warning is now only produced when the newline is at the end of
1740           the filename.
1741
1742       •   "Variable %s will not stay shared" has been changed to say
1743           "Subroutine" when it is actually a lexical sub that will not stay
1744           shared.
1745
1746       •   Variable length lookbehind not implemented in regex m/%s/
1747
1748           The perldiag entry for this warning has had information about
1749           Unicode behavior added.
1750
1751   Diagnostic Removals
1752       •   "Ambiguous use of -foo resolved as -&foo()"
1753
1754           There is actually no ambiguity here, and this impedes the use of
1755           negated constants; e.g., "-Inf".
1756
1757       •   "Constant is not a FOO reference"
1758
1759           Compile-time checking of constant dereferencing (e.g.,
1760           my_constant->()) has been removed, since it was not taking
1761           overloading into account.  [GH #9891]
1762           <https://github.com/Perl/perl5/issues/9891> [GH #14044]
1763           <https://github.com/Perl/perl5/issues/14044>
1764

Utility Changes

1766   find2perl, s2p and a2p removal
1767       •   The x2p/ directory has been removed from the Perl core.
1768
1769           This removes find2perl, s2p and a2p. They have all been released to
1770           CPAN as separate distributions ("App::find2perl", "App::s2p",
1771           "App::a2p").
1772
1773   h2ph
1774h2ph now handles hexadecimal constants in the compiler's predefined
1775           macro definitions, as visible in $Config{cppsymbols}.  [GH #14491]
1776           <https://github.com/Perl/perl5/issues/14491>.
1777
1778   encguess
1779       •   No longer depends on non-core modules.
1780

Configuration and Compilation

1782Configure now checks for lrintl(), lroundl(), llrintl(), and
1783           llroundl().
1784
1785Configure with "-Dmksymlinks" should now be faster.  [GH #13890]
1786           <https://github.com/Perl/perl5/issues/13890>.
1787
1788       •   The "pthreads" and "cl" libraries will be linked by default if
1789           present.  This allows XS modules that require threading to work on
1790           non-threaded perls. Note that you must still pass "-Dusethreads" if
1791           you want a threaded perl.
1792
1793       •   To get more precision and range for floating point numbers one can
1794           now use the GCC quadmath library which implements the quadruple
1795           precision floating point numbers on x86 and IA-64 platforms.  See
1796           INSTALL for details.
1797
1798       •   MurmurHash64A and MurmurHash64B can now be configured as the
1799           internal hash function.
1800
1801       •   "make test.valgrind" now supports parallel testing.
1802
1803           For example:
1804
1805               TEST_JOBS=9 make test.valgrind
1806
1807           See "valgrind" in perlhacktips for more information.
1808
1809           [GH #13658] <https://github.com/Perl/perl5/issues/13658>
1810
1811       •   The MAD (Misc Attribute Decoration) build option has been removed
1812
1813           This was an unmaintained attempt at preserving the Perl parse tree
1814           more faithfully so that automatic conversion of Perl 5 to Perl 6
1815           would have been easier.
1816
1817           This build-time configuration option had been unmaintained for
1818           years, and had probably seriously diverged on both Perl 5 and Perl
1819           6 sides.
1820
1821       •   A new compilation flag, "-DPERL_OP_PARENT" is available. For
1822           details, see the discussion below at "Internal Changes".
1823
1824       •   Pathtools no longer tries to load XS on miniperl. This speeds up
1825           building perl slightly.
1826

Testing

1828t/porting/re_context.t has been added to test that utf8 and its
1829           dependencies only use the subset of the "$1..$n" capture vars that
1830           Perl_save_re_context() is hard-coded to localize, because that
1831           function has no efficient way of determining at runtime what vars
1832           to localize.
1833
1834       •   Tests for performance issues have been added in the file
1835           t/perf/taint.t.
1836
1837       •   Some regular expression tests are written in such a way that they
1838           will run very slowly if certain optimizations break. These tests
1839           have been moved into new files, t/re/speed.t and t/re/speed_thr.t,
1840           and are run with a watchdog().
1841
1842       •   "test.pl" now allows "plan skip_all => $reason", to make it more
1843           compatible with "Test::More".
1844
1845       •   A new test script, op/infnan.t, has been added to test if infinity
1846           and NaN are working correctly.  See "Infinity and NaN (not-a-
1847           number) handling improved".
1848

Platform Support

1850   Regained Platforms
1851       IRIX and Tru64 platforms are working again.
1852           Some "make test" failures remain: [GH #14557]
1853           <https://github.com/Perl/perl5/issues/14557> and [GH #14727]
1854           <https://github.com/Perl/perl5/issues/14727> for IRIX; [GH #14629]
1855           <https://github.com/Perl/perl5/issues/14629>, [cpan #99605]
1856           <https://rt.cpan.org/Public/Bug/Display.html?id=99605>, and [cpan
1857           #104836] <https://rt.cpan.org/Ticket/Display.html?id=104836> for
1858           Tru64.
1859
1860       z/OS running EBCDIC Code Page 1047
1861           Core perl now works on this EBCDIC platform.  Earlier perls also
1862           worked, but, even though support wasn't officially withdrawn,
1863           recent perls would not compile and run well.  Perl 5.20 would work,
1864           but had many bugs which have now been fixed.  Many CPAN modules
1865           that ship with Perl still fail tests, including "Pod::Simple".
1866           However the version of "Pod::Simple" currently on CPAN should work;
1867           it was fixed too late to include in Perl 5.22.  Work is under way
1868           to fix many of the still-broken CPAN modules, which likely will be
1869           installed on CPAN when completed, so that you may not have to wait
1870           until Perl 5.24 to get a working version.
1871
1872   Discontinued Platforms
1873       NeXTSTEP/OPENSTEP
1874           NeXTSTEP was a proprietary operating system bundled with NeXT's
1875           workstations in the early to mid 90s; OPENSTEP was an API
1876           specification that provided a NeXTSTEP-like environment on a non-
1877           NeXTSTEP system.  Both are now long dead, so support for building
1878           Perl on them has been removed.
1879
1880   Platform-Specific Notes
1881       EBCDIC
1882           Special handling is required of the perl interpreter on EBCDIC
1883           platforms to get "qr/[i-j]/" to match only "i" and "j", since there
1884           are 7 characters between the code points for "i" and "j".  This
1885           special handling had only been invoked when both ends of the range
1886           are literals.  Now it is also invoked if any of the "\N{...}" forms
1887           for specifying a character by name or Unicode code point is used
1888           instead of a literal.  See "Character Ranges" in perlrecharclass.
1889
1890       HP-UX
1891           The archname now distinguishes use64bitint from use64bitall.
1892
1893       Android
1894           Build support has been improved for cross-compiling in general and
1895           for Android in particular.
1896
1897       VMS
1898           •   When spawning a subprocess without waiting, the return value is
1899               now the correct PID.
1900
1901           •   Fix a prototype so linking doesn't fail under the VMS C++
1902               compiler.
1903
1904           •   "finite", "finitel", and "isfinite" detection has been added to
1905               "configure.com", environment handling has had some minor
1906               changes, and a fix for legacy feature checking status.
1907
1908       Win32
1909miniperl.exe is now built with "-fno-strict-aliasing", allowing
1910               64-bit builds to complete on GCC 4.8.  [GH #14556]
1911               <https://github.com/Perl/perl5/issues/14556>
1912
1913           •   "nmake minitest" now works on Win32.  Due to dependency issues
1914               you need to build "nmake test-prep" first, and a small number
1915               of the tests fail.  [GH #14318]
1916               <https://github.com/Perl/perl5/issues/14318>
1917
1918           •   Perl can now be built in C++ mode on Windows by setting the
1919               makefile macro "USE_CPLUSPLUS" to the value "define".
1920
1921           •   The list form of piped open has been implemented for Win32.
1922               Note: unlike "system LIST" this does not fall back to the
1923               shell.  [GH #13574]
1924               <https://github.com/Perl/perl5/issues/13574>
1925
1926           •   New "DebugSymbols" and "DebugFull" configuration options added
1927               to Windows makefiles.
1928
1929           •   Previously, compiling XS modules (including CPAN ones) using
1930               Visual C++ for Win64 resulted in around a dozen warnings per
1931               file from hv_func.h.  These warnings have been silenced.
1932
1933           •   Support for building without PerlIO has been removed from the
1934               Windows makefiles.  Non-PerlIO builds were all but deprecated
1935               in Perl 5.18.0 and are already not supported by Configure on
1936               POSIX systems.
1937
1938           •   Between 2 and 6 milliseconds and seven I/O calls have been
1939               saved per attempt to open a perl module for each path in @INC.
1940
1941           •   Intel C builds are now always built with C99 mode on.
1942
1943           •   %I64d is now being used instead of %lld for MinGW.
1944
1945           •   In the experimental ":win32" layer, a crash in "open" was
1946               fixed. Also opening /dev/null (which works under Win32 Perl's
1947               default ":unix" layer) was implemented for ":win32".  [GH
1948               #13968] <https://github.com/Perl/perl5/issues/13968>
1949
1950           •   A new makefile option, "USE_LONG_DOUBLE", has been added to the
1951               Windows dmake makefile for gcc builds only.  Set this to
1952               "define" if you want perl to use long doubles to give more
1953               accuracy and range for floating point numbers.
1954
1955       OpenBSD
1956           On OpenBSD, Perl will now default to using the system "malloc" due
1957           to the security features it provides. Perl's own malloc wrapper has
1958           been in use since v5.14 due to performance reasons, but the OpenBSD
1959           project believes the tradeoff is worth it and would prefer that
1960           users who need the speed specifically ask for it.
1961
1962           [GH #13888] <https://github.com/Perl/perl5/issues/13888>.
1963
1964       Solaris
1965           •   We now look for the Sun Studio compiler in both /opt/solstudio*
1966               and /opt/solarisstudio*.
1967
1968           •   Builds on Solaris 10 with "-Dusedtrace" would fail early since
1969               make didn't follow implied dependencies to build
1970               "perldtrace.h".  Added an explicit dependency to "depend".  [GH
1971               #13334] <https://github.com/Perl/perl5/issues/13334>
1972
1973           •   C99 options have been cleaned up; hints look for "solstudio" as
1974               well as "SUNWspro"; and support for native "setenv" has been
1975               added.
1976

Internal Changes

1978       •   Experimental support has been added to allow ops in the optree to
1979           locate their parent, if any. This is enabled by the non-default
1980           build option "-DPERL_OP_PARENT". It is envisaged that this will
1981           eventually become enabled by default, so XS code which directly
1982           accesses the "op_sibling" field of ops should be updated to be
1983           future-proofed.
1984
1985           On "PERL_OP_PARENT" builds, the "op_sibling" field has been renamed
1986           "op_sibparent" and a new flag, "op_moresib", added. On the last op
1987           in a sibling chain, "op_moresib" is false and "op_sibparent" points
1988           to the parent (if any) rather than being "NULL".
1989
1990           To make existing code work transparently whether using
1991           "PERL_OP_PARENT" or not, a number of new macros and functions have
1992           been added that should be used, rather than directly manipulating
1993           "op_sibling".
1994
1995           For the case of just reading "op_sibling" to determine the next
1996           sibling, two new macros have been added. A simple scan through a
1997           sibling chain like this:
1998
1999               for (; kid->op_sibling; kid = kid->op_sibling) { ... }
2000
2001           should now be written as:
2002
2003               for (; OpHAS_SIBLING(kid); kid = OpSIBLING(kid)) { ... }
2004
2005           For altering optrees, a general-purpose function
2006           op_sibling_splice() has been added, which allows for manipulation
2007           of a chain of sibling ops.  By analogy with the Perl function
2008           splice(), it allows you to cut out zero or more ops from a sibling
2009           chain and replace them with zero or more new ops.  It transparently
2010           handles all the updating of sibling, parent, op_last pointers etc.
2011
2012           If you need to manipulate ops at a lower level, then three new
2013           macros, "OpMORESIB_set", "OpLASTSIB_set" and "OpMAYBESIB_set" are
2014           intended to be a low-level portable way to set "op_sibling" /
2015           "op_sibparent" while also updating "op_moresib".  The first sets
2016           the sibling pointer to a new sibling, the second makes the op the
2017           last sibling, and the third conditionally does the first or second
2018           action.  Note that unlike op_sibling_splice() these macros won't
2019           maintain consistency in the parent at the same time (e.g. by
2020           updating "op_first" and "op_last" where appropriate).
2021
2022           A C-level Perl_op_parent() function and a Perl-level
2023           B::OP::parent() method have been added. The C function only exists
2024           under "PERL_OP_PARENT" builds (using it is build-time error on
2025           vanilla perls).  B::OP::parent() exists always, but on a vanilla
2026           build it always returns "NULL". Under "PERL_OP_PARENT", they return
2027           the parent of the current op, if any. The variable
2028           $B::OP::does_parent allows you to determine whether "B" supports
2029           retrieving an op's parent.
2030
2031           "PERL_OP_PARENT" was introduced in 5.21.2, but the interface was
2032           changed considerably in 5.21.11. If you updated your code before
2033           the 5.21.11 changes, it may require further revision. The main
2034           changes after 5.21.2 were:
2035
2036           •   The "OP_SIBLING" and "OP_HAS_SIBLING" macros have been renamed
2037               "OpSIBLING" and "OpHAS_SIBLING" for consistency with other op-
2038               manipulating macros.
2039
2040           •   The "op_lastsib" field has been renamed "op_moresib", and its
2041               meaning inverted.
2042
2043           •   The macro "OpSIBLING_set" has been removed, and has been
2044               superseded by "OpMORESIB_set" et al.
2045
2046           •   The op_sibling_splice() function now accepts a null "parent"
2047               argument where the splicing doesn't affect the first or last
2048               ops in the sibling chain
2049
2050       •   Macros have been created to allow XS code to better manipulate the
2051           POSIX locale category "LC_NUMERIC".  See "Locale-related functions
2052           and macros" in perlapi.
2053
2054       •   The previous "atoi" et al replacement function, "grok_atou", has
2055           now been superseded by "grok_atoUV".  See perlclib for details.
2056
2057       •   A new function, Perl_sv_get_backrefs(), has been added which allows
2058           you retrieve the weak references, if any, which point at an SV.
2059
2060       •   The screaminstr() function has been removed. Although marked as
2061           public API, it was undocumented and had no usage in CPAN modules.
2062           Calling it has been fatal since 5.17.0.
2063
2064       •   The newDEFSVOP(), block_start(), block_end() and intro_my()
2065           functions have been added to the API.
2066
2067       •   The internal "convert" function in op.c has been renamed
2068           "op_convert_list" and added to the API.
2069
2070       •   The sv_magic() function no longer forbids "ext" magic on read-only
2071           values.  After all, perl can't know whether the custom magic will
2072           modify the SV or not.  [GH #14202]
2073           <https://github.com/Perl/perl5/issues/14202>.
2074
2075       •   Accessing "CvPADLIST" in perlapi on an XSUB is now forbidden.
2076
2077           The "CvPADLIST" field has been reused for a different internal
2078           purpose for XSUBs. So in particular, you can no longer rely on it
2079           being NULL as a test of whether a CV is an XSUB. Use CvISXSUB()
2080           instead.
2081
2082       •   SVs of type "SVt_NV" are now sometimes bodiless when the build
2083           configuration and platform allow it: specifically, when sizeof(NV)
2084           <= sizeof(IV). "Bodiless" means that the NV value is stored
2085           directly in the head of an SV, without requiring a separate body to
2086           be allocated. This trick has already been used for IVs since 5.9.2
2087           (though in the case of IVs, it is always used, regardless of
2088           platform and build configuration).
2089
2090       •   The $DB::single, $DB::signal and $DB::trace variables now have set-
2091           and get-magic that stores their values as IVs, and those IVs are
2092           used when testing their values in pp_dbstate().  This prevents perl
2093           from recursing infinitely if an overloaded object is assigned to
2094           any of those variables.  [GH #14013]
2095           <https://github.com/Perl/perl5/issues/14013>.
2096
2097       •   Perl_tmps_grow(), which is marked as public API but is
2098           undocumented, has been removed from the public API. This change
2099           does not affect XS code that uses the "EXTEND_MORTAL" macro to pre-
2100           extend the mortal stack.
2101
2102       •   Perl's internals no longer sets or uses the "SVs_PADMY" flag.
2103           SvPADMY() now returns a true value for anything not marked "PADTMP"
2104           and "SVs_PADMY" is now defined as 0.
2105
2106       •   The macros "SETsv" and "SETsvUN" have been removed. They were no
2107           longer used in the core since commit 6f1401dc2a five years ago, and
2108           have not been found present on CPAN.
2109
2110       •   The "SvFAKE" bit (unused on HVs) got informally reserved by David
2111           Mitchell for future work on vtables.
2112
2113       •   The sv_catpvn_flags() function accepts "SV_CATBYTES" and
2114           "SV_CATUTF8" flags, which specify whether the appended string is
2115           bytes or UTF-8, respectively. (These flags have in fact been
2116           present since 5.16.0, but were formerly not regarded as part of the
2117           API.)
2118
2119       •   A new opcode class, "METHOP", has been introduced. It holds
2120           information used at runtime to improve the performance of
2121           class/object method calls.
2122
2123           "OP_METHOD" and "OP_METHOD_NAMED" have changed from being
2124           "UNOP/SVOP" to being "METHOP".
2125
2126       •   cv_name() is a new API function that can be passed a CV or GV.  It
2127           returns an SV containing the name of the subroutine, for use in
2128           diagnostics.
2129
2130           [GH #12767] <https://github.com/Perl/perl5/issues/12767> [GH
2131           #13392] <https://github.com/Perl/perl5/issues/13392>
2132
2133       •   cv_set_call_checker_flags() is a new API function that works like
2134           cv_set_call_checker(), except that it allows the caller to specify
2135           whether the call checker requires a full GV for reporting the
2136           subroutine's name, or whether it could be passed a CV instead.
2137           Whatever value is passed will be acceptable to cv_name().
2138           cv_set_call_checker() guarantees there will be a GV, but it may
2139           have to create one on the fly, which is inefficient.  [GH #12767]
2140           <https://github.com/Perl/perl5/issues/12767>
2141
2142       •   "CvGV" (which is not part of the API) is now a more complex macro,
2143           which may call a function and reify a GV.  For those cases where it
2144           has been used as a boolean, "CvHASGV" has been added, which will
2145           return true for CVs that notionally have GVs, but without reifying
2146           the GV.  "CvGV" also returns a GV now for lexical subs.  [GH
2147           #13392] <https://github.com/Perl/perl5/issues/13392>
2148
2149       •   The "sync_locale" in perlapi function has been added to the public
2150           API.  Changing the program's locale should be avoided by XS code.
2151           Nevertheless, certain non-Perl libraries called from XS need to do
2152           so, such as "Gtk".  When this happens, Perl needs to be told that
2153           the locale has changed.  Use this function to do so, before
2154           returning to Perl.
2155
2156       •   The defines and labels for the flags in the "op_private" field of
2157           OPs are now auto-generated from data in regen/op_private.  The
2158           noticeable effect of this is that some of the flag output of
2159           "Concise" might differ slightly, and the flag output of "perl -Dx"
2160           may differ considerably (they both use the same set of labels now).
2161           Also, debugging builds now have a new assertion in op_free() to
2162           ensure that the op doesn't have any unrecognized flags set in
2163           "op_private".
2164
2165       •   The deprecated variable "PL_sv_objcount" has been removed.
2166
2167       •   Perl now tries to keep the locale category "LC_NUMERIC" set to "C"
2168           except around operations that need it to be set to the program's
2169           underlying locale.  This protects the many XS modules that cannot
2170           cope with the decimal radix character not being a dot.  Prior to
2171           this release, Perl initialized this category to "C", but a call to
2172           POSIX::setlocale() would change it.  Now such a call will change
2173           the underlying locale of the "LC_NUMERIC" category for the program,
2174           but the locale exposed to XS code will remain "C".  There are new
2175           macros to manipulate the LC_NUMERIC locale, including
2176           "STORE_LC_NUMERIC_SET_TO_NEEDED" and
2177           "STORE_LC_NUMERIC_FORCE_TO_UNDERLYING".  See "Locale-related
2178           functions and macros" in perlapi.
2179
2180       •   A new macro "isUTF8_CHAR" has been written which efficiently
2181           determines if the string given by its parameters begins with a
2182           well-formed UTF-8 encoded character.
2183
2184       •   The following private API functions had their context parameter
2185           removed: "Perl_cast_ulong",  "Perl_cast_i32", "Perl_cast_iv",
2186           "Perl_cast_uv", "Perl_cv_const_sv", "Perl_mg_find",
2187           "Perl_mg_findext", "Perl_mg_magical", "Perl_mini_mktime",
2188           "Perl_my_dirfd", "Perl_sv_backoff", "Perl_utf8_hop".
2189
2190           Note that the prefix-less versions of those functions that are part
2191           of the public API, such as cast_i32(), remain unaffected.
2192
2193       •   The "PADNAME" and "PADNAMELIST" types are now separate types, and
2194           no longer simply aliases for SV and AV.  [GH #14250]
2195           <https://github.com/Perl/perl5/issues/14250>.
2196
2197       •   Pad names are now always UTF-8.  The "PadnameUTF8" macro always
2198           returns true.  Previously, this was effectively the case already,
2199           but any support for two different internal representations of pad
2200           names has now been removed.
2201
2202       •   A new op class, "UNOP_AUX", has been added. This is a subclass of
2203           "UNOP" with an "op_aux" field added, which points to an array of
2204           unions of UV, SV* etc. It is intended for where an op needs to
2205           store more data than a simple "op_sv" or whatever. Currently the
2206           only op of this type is "OP_MULTIDEREF" (see next item).
2207
2208       •   A new op has been added, "OP_MULTIDEREF", which performs one or
2209           more nested array and hash lookups where the key is a constant or
2210           simple variable. For example the expression "$a[0]{$k}[$i]", which
2211           previously involved ten "rv2Xv", "Xelem", "gvsv" and "const" ops is
2212           now performed by a single "multideref" op. It can also handle
2213           "local", "exists" and "delete". A non-simple index expression, such
2214           as "[$i+1]" is still done using "aelem"/"helem", and single-level
2215           array lookup with a small constant index is still done using
2216           "aelemfast".
2217

Selected Bug Fixes

2219       •   "close" now sets $!
2220
2221           When an I/O error occurs, the fact that there has been an error is
2222           recorded in the handle.  "close" returns false for such a handle.
2223           Previously, the value of $! would be untouched by "close", so the
2224           common convention of writing "close $fh or die $!" did not work
2225           reliably.  Now the handle records the value of $!, too, and "close"
2226           restores it.
2227
2228       •   "no re" now can turn off everything that "use re" enables
2229
2230           Previously, running "no re" would turn off only a few things. Now
2231           it can turn off all the enabled things. For example, the only way
2232           to stop debugging, once enabled, was to exit the enclosing block;
2233           that is now fixed.
2234
2235       •   "pack("D", $x)" and "pack("F", $x)" now zero the padding on x86
2236           long double builds.  Under some build options on GCC 4.8 and later,
2237           they used to either overwrite the zero-initialized padding, or
2238           bypass the initialized buffer entirely.  This caused op/pack.t to
2239           fail.  [GH #14554] <https://github.com/Perl/perl5/issues/14554>
2240
2241       •   Extending an array cloned from a parent thread could result in
2242           "Modification of a read-only value attempted" errors when
2243           attempting to modify the new elements.  [GH #14605]
2244           <https://github.com/Perl/perl5/issues/14605>
2245
2246       •   An assertion failure and subsequent crash with "*x=<y>" has been
2247           fixed.  [GH #14493] <https://github.com/Perl/perl5/issues/14493>
2248
2249       •   A possible crashing/looping bug related to compiling lexical subs
2250           has been fixed.  [GH #14596]
2251           <https://github.com/Perl/perl5/issues/14596>
2252
2253       •   UTF-8 now works correctly in function names, in unquoted HERE-
2254           document terminators, and in variable names used as array indexes.
2255           [GH #14601] <https://github.com/Perl/perl5/issues/14601>
2256
2257       •   Repeated global pattern matches in scalar context on large tainted
2258           strings were exponentially slow depending on the current match
2259           position in the string.  [GH #14238]
2260           <https://github.com/Perl/perl5/issues/14238>
2261
2262       •   Various crashes due to the parser getting confused by syntax errors
2263           have been fixed.  [GH #14496]
2264           <https://github.com/Perl/perl5/issues/14496> [GH #14497]
2265           <https://github.com/Perl/perl5/issues/14497> [GH #14548]
2266           <https://github.com/Perl/perl5/issues/14548> [GH #14564]
2267           <https://github.com/Perl/perl5/issues/14564>
2268
2269       •   "split" in the scope of lexical $_ has been fixed not to fail
2270           assertions.  [GH #14483]
2271           <https://github.com/Perl/perl5/issues/14483>
2272
2273       •   "my $x : attr" syntax inside various list operators no longer fails
2274           assertions.  [GH #14500]
2275           <https://github.com/Perl/perl5/issues/14500>
2276
2277       •   An "@" sign in quotes followed by a non-ASCII digit (which is not a
2278           valid identifier) would cause the parser to crash, instead of
2279           simply trying the "@" as literal.  This has been fixed.  [GH
2280           #14553] <https://github.com/Perl/perl5/issues/14553>
2281
2282       •   "*bar::=*foo::=*glob_with_hash" has been crashing since Perl 5.14,
2283           but no longer does.  [GH #14512]
2284           <https://github.com/Perl/perl5/issues/14512>
2285
2286       •   "foreach" in scalar context was not pushing an item on to the
2287           stack, resulting in bugs.
2288           ("print 4, scalar do { foreach(@x){} } + 1" would print 5.)  It has
2289           been fixed to return "undef".  [GH #14569]
2290           <https://github.com/Perl/perl5/issues/14569>
2291
2292       •   Several cases of data used to store environment variable contents
2293           in core C code being potentially overwritten before being used have
2294           been fixed.  [GH #14476]
2295           <https://github.com/Perl/perl5/issues/14476>
2296
2297       •   Some patterns starting with "/.*..../" matched against long strings
2298           have been slow since v5.8, and some of the form "/.*..../i" have
2299           been slow since v5.18. They are now all fast again.  [GH #14475]
2300           <https://github.com/Perl/perl5/issues/14475>.
2301
2302       •   The original visible value of $/ is now preserved when it is set to
2303           an invalid value.  Previously if you set $/ to a reference to an
2304           array, for example, perl would produce a runtime error and not set
2305           "PL_rs", but Perl code that checked $/ would see the array
2306           reference.  [GH #14245]
2307           <https://github.com/Perl/perl5/issues/14245>.
2308
2309       •   In a regular expression pattern, a POSIX class, like "[:ascii:]",
2310           must be inside a bracketed character class, like "qr/[[:ascii:]]/".
2311           A warning is issued when something looking like a POSIX class is
2312           not inside a bracketed class.  That warning wasn't getting
2313           generated when the POSIX class was negated: "[:^ascii:]".  This is
2314           now fixed.
2315
2316       •   Perl 5.14.0 introduced a bug whereby "eval { LABEL: }" would crash.
2317           This has been fixed.  [GH #14438]
2318           <https://github.com/Perl/perl5/issues/14438>.
2319
2320       •   Various crashes due to the parser getting confused by syntax errors
2321           have been fixed.  [GH #14421]
2322           <https://github.com/Perl/perl5/issues/14421>.  [GH #14472]
2323           <https://github.com/Perl/perl5/issues/14472>.  [GH #14480]
2324           <https://github.com/Perl/perl5/issues/14480>.  [GH #14447]
2325           <https://github.com/Perl/perl5/issues/14447>.
2326
2327       •   Code like "/$a[/" used to read the next line of input and treat it
2328           as though it came immediately after the opening bracket.  Some
2329           invalid code consequently would parse and run, but some code caused
2330           crashes, so this is now disallowed.  [GH #14462]
2331           <https://github.com/Perl/perl5/issues/14462>.
2332
2333       •   Fix argument underflow for "pack".  [GH #14525]
2334           <https://github.com/Perl/perl5/issues/14525>.
2335
2336       •   Fix handling of non-strict "\x{}". Now "\x{}" is equivalent to
2337           "\x{0}" instead of faulting.
2338
2339       •   "stat -t" is now no longer treated as stackable, just like "-t
2340           stat".  [GH #14499] <https://github.com/Perl/perl5/issues/14499>.
2341
2342       •   The following no longer causes a SEGV: "qr{x+(y(?0))*}".
2343
2344       •   Fixed infinite loop in parsing backrefs in regexp patterns.
2345
2346       •   Several minor bug fixes in behavior of Infinity and NaN, including
2347           warnings when stringifying Infinity-like or NaN-like strings. For
2348           example, "NaNcy" doesn't numify to NaN anymore.
2349
2350       •   A bug in regular expression patterns that could lead to segfaults
2351           and other crashes has been fixed.  This occurred only in patterns
2352           compiled with "/i" while taking into account the current POSIX
2353           locale (which usually means they have to be compiled within the
2354           scope of "use locale"), and there must be a string of at least 128
2355           consecutive bytes to match.  [GH #14389]
2356           <https://github.com/Perl/perl5/issues/14389>.
2357
2358       •   "s///g" now works on very long strings (where there are more than 2
2359           billion iterations) instead of dying with 'Substitution loop'.  [GH
2360           #11742] <https://github.com/Perl/perl5/issues/11742>.  [GH #14190]
2361           <https://github.com/Perl/perl5/issues/14190>.
2362
2363       •   "gmtime" no longer crashes with not-a-number values.  [GH #14365]
2364           <https://github.com/Perl/perl5/issues/14365>.
2365
2366       •   "\()" (a reference to an empty list), and "y///" with lexical $_ in
2367           scope, could both do a bad write past the end of the stack.  They
2368           have both been fixed to extend the stack first.
2369
2370       •   prototype() with no arguments used to read the previous item on the
2371           stack, so "print "foo", prototype()" would print foo's prototype.
2372           It has been fixed to infer $_ instead.  [GH #14376]
2373           <https://github.com/Perl/perl5/issues/14376>.
2374
2375       •   Some cases of lexical state subs declared inside predeclared subs
2376           could crash, for example when evalling a string including the name
2377           of an outer variable, but no longer do.
2378
2379       •   Some cases of nested lexical state subs inside anonymous subs could
2380           cause 'Bizarre copy' errors or possibly even crashes.
2381
2382       •   When trying to emit warnings, perl's default debugger (perl5db.pl)
2383           was sometimes giving 'Undefined subroutine &DB::db_warn called'
2384           instead.  This bug, which started to occur in Perl 5.18, has been
2385           fixed.  [GH #14400] <https://github.com/Perl/perl5/issues/14400>.
2386
2387       •   Certain syntax errors in substitutions, such as "s/${<>{})//",
2388           would crash, and had done so since Perl 5.10.  (In some cases the
2389           crash did not start happening till 5.16.)  The crash has, of
2390           course, been fixed.  [GH #14391]
2391           <https://github.com/Perl/perl5/issues/14391>.
2392
2393       •   Fix a couple of string grow size calculation overflows; in
2394           particular, a repeat expression like "33 x ~3" could cause a large
2395           buffer overflow since the new output buffer size was not correctly
2396           handled by SvGROW().  An expression like this now properly produces
2397           a memory wrap panic.  [GH #14401]
2398           <https://github.com/Perl/perl5/issues/14401>.
2399
2400       •   "formline("@...", "a");" would crash.  The "FF_CHECKNL" case in
2401           pp_formline() didn't set the pointer used to mark the chop
2402           position, which led to the "FF_MORE" case crashing with a
2403           segmentation fault.  This has been fixed.  [GH #14388]
2404           <https://github.com/Perl/perl5/issues/14388>.
2405
2406       •   A possible buffer overrun and crash when parsing a literal pattern
2407           during regular expression compilation has been fixed.  [GH #14416]
2408           <https://github.com/Perl/perl5/issues/14416>.
2409
2410       •   fchmod() and futimes() now set $! when they fail due to being
2411           passed a closed file handle.  [GH #14073]
2412           <https://github.com/Perl/perl5/issues/14073>.
2413
2414       •   op_free() and scalarvoid() no longer crash due to a stack overflow
2415           when freeing a deeply recursive op tree.  [GH #11866]
2416           <https://github.com/Perl/perl5/issues/11866>.
2417
2418       •   In Perl 5.20.0, $^N accidentally had the internal UTF-8 flag turned
2419           off if accessed from a code block within a regular expression,
2420           effectively UTF-8-encoding the value.  This has been fixed.  [GH
2421           #14211] <https://github.com/Perl/perl5/issues/14211>.
2422
2423       •   A failed "semctl" call no longer overwrites existing items on the
2424           stack, which means that "(semctl(-1,0,0,0))[0]" no longer gives an
2425           "uninitialized" warning.
2426
2427       •   "else{foo()}" with no space before "foo" is now better at assigning
2428           the right line number to that statement.  [GH #14070]
2429           <https://github.com/Perl/perl5/issues/14070>.
2430
2431       •   Sometimes the assignment in "@array = split" gets optimised so that
2432           "split" itself writes directly to the array.  This caused a bug,
2433           preventing this assignment from being used in lvalue context.  So
2434           "(@a=split//,"foo")=bar()" was an error.  (This bug probably goes
2435           back to Perl 3, when the optimisation was added.) It has now been
2436           fixed.  [GH #14183] <https://github.com/Perl/perl5/issues/14183>.
2437
2438       •   When an argument list fails the checks specified by a subroutine
2439           signature (which is still an experimental feature), the resulting
2440           error messages now give the file and line number of the caller, not
2441           of the called subroutine.  [GH #13643]
2442           <https://github.com/Perl/perl5/issues/13643>.
2443
2444       •   The flip-flop operators (".." and "..." in scalar context) used to
2445           maintain a separate state for each recursion level (the number of
2446           times the enclosing sub was called recursively), contrary to the
2447           documentation.  Now each closure has one internal state for each
2448           flip-flop.  [GH #14110]
2449           <https://github.com/Perl/perl5/issues/14110>.
2450
2451       •   The flip-flop operator (".." in scalar context) would return the
2452           same scalar each time, unless the containing subroutine was called
2453           recursively.  Now it always returns a new scalar.  [GH #14110]
2454           <https://github.com/Perl/perl5/issues/14110>.
2455
2456       •   "use", "no", statement labels, special blocks ("BEGIN") and pod are
2457           now permitted as the first thing in a "map" or "grep" block, the
2458           block after "print" or "say" (or other functions) returning a
2459           handle, and within "${...}", "@{...}", etc.  [GH #14088]
2460           <https://github.com/Perl/perl5/issues/14088>.
2461
2462       •   The repetition operator "x" now propagates lvalue context to its
2463           left-hand argument when used in contexts like "foreach".  That
2464           allows "for(($#that_array)x2) { ... }" to work as expected if the
2465           loop modifies $_.
2466
2467       •   "(...) x ..." in scalar context used to corrupt the stack if one
2468           operand was an object with "x" overloading, causing erratic
2469           behavior.  [GH #13811]
2470           <https://github.com/Perl/perl5/issues/13811>.
2471
2472       •   Assignment to a lexical scalar is often optimised away; for example
2473           in "my $x; $x = $y + $z", the assign operator is optimised away and
2474           the add operator writes its result directly to $x.  Various bugs
2475           related to this optimisation have been fixed.  Certain operators on
2476           the right-hand side would sometimes fail to assign the value at all
2477           or assign the wrong value, or would call STORE twice or not at all
2478           on tied variables.  The operators affected were "$foo++", "$foo--",
2479           and "-$foo" under "use integer", "chomp", "chr" and "setpgrp".
2480
2481       •   List assignments were sometimes buggy if the same scalar ended up
2482           on both sides of the assignment due to use of "tied", "values" or
2483           "each".  The result would be the wrong value getting assigned.
2484
2485       •   setpgrp($nonzero) (with one argument) was accidentally changed in
2486           5.16 to mean setpgrp(0).  This has been fixed.
2487
2488       •   "__SUB__" could return the wrong value or even corrupt memory under
2489           the debugger (the "-d" switch) and in subs containing "eval
2490           $string".
2491
2492       •   When "sub () { $var }" becomes inlinable, it now returns a
2493           different scalar each time, just as a non-inlinable sub would,
2494           though Perl still optimises the copy away in cases where it would
2495           make no observable difference.
2496
2497       •   "my sub f () { $var }" and "sub () : attr { $var }" are no longer
2498           eligible for inlining.  The former would crash; the latter would
2499           just throw the attributes away.  An exception is made for the
2500           little-known ":method" attribute, which does nothing much.
2501
2502       •   Inlining of subs with an empty prototype is now more consistent
2503           than before. Previously, a sub with multiple statements, of which
2504           all but the last were optimised away, would be inlinable only if it
2505           were an anonymous sub containing a string "eval" or "state"
2506           declaration or closing over an outer lexical variable (or any
2507           anonymous sub under the debugger).  Now any sub that gets folded to
2508           a single constant after statements have been optimised away is
2509           eligible for inlining.  This applies to things like "sub () {
2510           jabber() if DEBUG; 42 }".
2511
2512           Some subroutines with an explicit "return" were being made
2513           inlinable, contrary to the documentation,  Now "return" always
2514           prevents inlining.
2515
2516       •   On some systems, such as VMS, "crypt" can return a non-ASCII
2517           string.  If a scalar assigned to had contained a UTF-8 string
2518           previously, then "crypt" would not turn off the UTF-8 flag, thus
2519           corrupting the return value.  This would happen with
2520           "$lexical = crypt ...".
2521
2522       •   "crypt" no longer calls "FETCH" twice on a tied first argument.
2523
2524       •   An unterminated here-doc on the last line of a quote-like operator
2525           ("qq[${ <<END }]", "/(?{ <<END })/") no longer causes a double
2526           free.  It started doing so in 5.18.
2527
2528       •   index() and rindex() no longer crash when used on strings over 2GB
2529           in size.  [GH #13700] <https://github.com/Perl/perl5/issues/13700>.
2530
2531       •   A small, previously intentional, memory leak in
2532           "PERL_SYS_INIT"/"PERL_SYS_INIT3" on Win32 builds was fixed. This
2533           might affect embedders who repeatedly create and destroy perl
2534           engines within the same process.
2535
2536       •   POSIX::localeconv() now returns the data for the program's
2537           underlying locale even when called from outside the scope of
2538           "use locale".
2539
2540       •   POSIX::localeconv() now works properly on platforms which don't
2541           have "LC_NUMERIC" and/or "LC_MONETARY", or for which Perl has been
2542           compiled to disregard either or both of these locale categories.
2543           In such circumstances, there are now no entries for the
2544           corresponding values in the hash returned by localeconv().
2545
2546       •   POSIX::localeconv() now marks appropriately the values it returns
2547           as UTF-8 or not.  Previously they were always returned as bytes,
2548           even if they were supposed to be encoded as UTF-8.
2549
2550       •   On Microsoft Windows, within the scope of "use locale", the
2551           following POSIX character classes gave results for many locales
2552           that did not conform to the POSIX standard: "[[:alnum:]]",
2553           "[[:alpha:]]", "[[:blank:]]", "[[:digit:]]", "[[:graph:]]",
2554           "[[:lower:]]", "[[:print:]]", "[[:punct:]]", "[[:upper:]]",
2555           "[[:word:]]", and "[[:xdigit:]]".  This was because the underlying
2556           Microsoft implementation does not follow the standard.  Perl now
2557           takes special precautions to correct for this.
2558
2559       •   Many issues have been detected by Coverity
2560           <http://www.coverity.com/> and fixed.
2561
2562       •   system() and friends should now work properly on more Android
2563           builds.
2564
2565           Due to an oversight, the value specified through "-Dtargetsh" to
2566           Configure would end up being ignored by some of the build process.
2567           This caused perls cross-compiled for Android to end up with
2568           defective versions of system(), exec() and backticks: the commands
2569           would end up looking for "/bin/sh" instead of "/system/bin/sh", and
2570           so would fail for the vast majority of devices, leaving $! as
2571           "ENOENT".
2572
2573       •   "qr(...\(...\)...)", "qr[...\[...\]...]", and "qr{...\{...\}...}"
2574           now work.  Previously it was impossible to escape these three left-
2575           characters with a backslash within a regular expression pattern
2576           where otherwise they would be considered metacharacters, and the
2577           pattern opening delimiter was the character, and the closing
2578           delimiter was its mirror character.
2579
2580       •   "s///e" on tainted UTF-8 strings corrupted pos(). This bug,
2581           introduced in 5.20, is now fixed.  [GH #13948]
2582           <https://github.com/Perl/perl5/issues/13948>.
2583
2584       •   A non-word boundary in a regular expression ("\B") did not always
2585           match the end of the string; in particular "q{} =~ /\B/" did not
2586           match. This bug, introduced in perl 5.14, is now fixed.  [GH
2587           #13917] <https://github.com/Perl/perl5/issues/13917>.
2588
2589       •   "" P" =~ /(?=.*P)P/" should match, but did not. This is now fixed.
2590           [GH #13954] <https://github.com/Perl/perl5/issues/13954>.
2591
2592       •   Failing to compile "use Foo" in an "eval" could leave a spurious
2593           "BEGIN" subroutine definition, which would produce a "Subroutine
2594           BEGIN redefined" warning on the next use of "use", or other "BEGIN"
2595           block.  [GH #13926] <https://github.com/Perl/perl5/issues/13926>.
2596
2597       •   "method { BLOCK } ARGS" syntax now correctly parses the arguments
2598           if they begin with an opening brace.  [GH #9085]
2599           <https://github.com/Perl/perl5/issues/9085>.
2600
2601       •   External libraries and Perl may have different ideas of what the
2602           locale is.  This is problematic when parsing version strings if the
2603           locale's numeric separator has been changed.  Version parsing has
2604           been patched to ensure it handles the locales correctly.  [GH
2605           #13863] <https://github.com/Perl/perl5/issues/13863>.
2606
2607       •   A bug has been fixed where zero-length assertions and code blocks
2608           inside of a regex could cause "pos" to see an incorrect value.  [GH
2609           #14016] <https://github.com/Perl/perl5/issues/14016>.
2610
2611       •   Dereferencing of constants now works correctly for typeglob
2612           constants.  Previously the glob was stringified and its name looked
2613           up.  Now the glob itself is used.  [GH #9891]
2614           <https://github.com/Perl/perl5/issues/9891>
2615
2616       •   When parsing a sigil ("$" "@" "%" "&)" followed by braces, the
2617           parser no longer tries to guess whether it is a block or a hash
2618           constructor (causing a syntax error when it guesses the latter),
2619           since it can only be a block.
2620
2621       •   "undef $reference" now frees the referent immediately, instead of
2622           hanging on to it until the next statement.  [GH #14032]
2623           <https://github.com/Perl/perl5/issues/14032>
2624
2625       •   Various cases where the name of a sub is used (autoload,
2626           overloading, error messages) used to crash for lexical subs, but
2627           have been fixed.
2628
2629       •   Bareword lookup now tries to avoid vivifying packages if it turns
2630           out the bareword is not going to be a subroutine name.
2631
2632       •   Compilation of anonymous constants (e.g., "sub () { 3 }") no longer
2633           deletes any subroutine named "__ANON__" in the current package.
2634           Not only was "*__ANON__{CODE}" cleared, but there was a memory
2635           leak, too.  This bug goes back to Perl 5.8.0.
2636
2637       •   Stub declarations like "sub f;" and "sub f ();" no longer wipe out
2638           constants of the same name declared by "use constant".  This bug
2639           was introduced in Perl 5.10.0.
2640
2641       •   "qr/[\N{named sequence}]/" now works properly in many instances.
2642
2643           Some names known to "\N{...}" refer to a sequence of multiple
2644           characters, instead of the usual single character.  Bracketed
2645           character classes generally only match single characters, but now
2646           special handling has been added so that they can match named
2647           sequences, but not if the class is inverted or the sequence is
2648           specified as the beginning or end of a range.  In these cases, the
2649           only behavior change from before is a slight rewording of the fatal
2650           error message given when this class is part of a "?[...])"
2651           construct.  When the "[...]"  stands alone, the same non-fatal
2652           warning as before is raised, and only the first character in the
2653           sequence is used, again just as before.
2654
2655       •   Tainted constants evaluated at compile time no longer cause
2656           unrelated statements to become tainted.  [GH #14059]
2657           <https://github.com/Perl/perl5/issues/14059>
2658
2659       •   "open $$fh, ...", which vivifies a handle with a name like
2660           "main::_GEN_0", was not giving the handle the right reference
2661           count, so a double free could happen.
2662
2663       •   When deciding that a bareword was a method name, the parser would
2664           get confused if an "our" sub with the same name existed, and look
2665           up the method in the package of the "our" sub, instead of the
2666           package of the invocant.
2667
2668       •   The parser no longer gets confused by "\U=" within a double-quoted
2669           string.  It used to produce a syntax error, but now compiles it
2670           correctly.  [GH #10882]
2671           <https://github.com/Perl/perl5/issues/10882>
2672
2673       •   It has always been the intention for the "-B" and "-T" file test
2674           operators to treat UTF-8 encoded files as text.  (perlfunc has been
2675           updated to say this.)  Previously, it was possible for some files
2676           to be considered UTF-8 that actually weren't valid UTF-8.  This is
2677           now fixed.  The operators now work on EBCDIC platforms as well.
2678
2679       •   Under some conditions warning messages raised during regular
2680           expression pattern compilation were being output more than once.
2681           This has now been fixed.
2682
2683       •   Perl 5.20.0 introduced a regression in which a UTF-8 encoded
2684           regular expression pattern that contains a single ASCII lowercase
2685           letter did not match its uppercase counterpart. That has been fixed
2686           in both 5.20.1 and 5.22.0.  [GH #14051]
2687           <https://github.com/Perl/perl5/issues/14051>
2688
2689       •   Constant folding could incorrectly suppress warnings if lexical
2690           warnings ("use warnings" or "no warnings") were not in effect and
2691           $^W were false at compile time and true at run time.
2692
2693       •   Loading Unicode tables during a regular expression match could
2694           cause assertion failures under debugging builds if the previous
2695           match used the very same regular expression.  [GH #14081]
2696           <https://github.com/Perl/perl5/issues/14081>
2697
2698       •   Thread cloning used to work incorrectly for lexical subs, possibly
2699           causing crashes or double frees on exit.
2700
2701       •   Since Perl 5.14.0, deleting $SomePackage::{__ANON__} and then
2702           undefining an anonymous subroutine could corrupt things internally,
2703           resulting in Devel::Peek crashing or B.pm giving nonsensical data.
2704           This has been fixed.
2705
2706       •   "(caller $n)[3]" now reports names of lexical subs, instead of
2707           treating them as "(unknown)".
2708
2709       •   "sort subname LIST" now supports using a lexical sub as the
2710           comparison routine.
2711
2712       •   Aliasing (e.g., via "*x = *y") could confuse list assignments that
2713           mention the two names for the same variable on either side, causing
2714           wrong values to be assigned.  [GH #5788]
2715           <https://github.com/Perl/perl5/issues/5788>
2716
2717       •   Long here-doc terminators could cause a bad read on short lines of
2718           input.  This has been fixed.  It is doubtful that any crash could
2719           have occurred.  This bug goes back to when here-docs were
2720           introduced in Perl 3.000 twenty-five years ago.
2721
2722       •   An optimization in "split" to treat "split /^/" like "split /^/m"
2723           had the unfortunate side-effect of also treating "split /\A/" like
2724           "split /^/m", which it should not.  This has been fixed.  (Note,
2725           however, that "split /^x/" does not behave like "split /^x/m",
2726           which is also considered to be a bug and will be fixed in a future
2727           version.)  [GH #14086] <https://github.com/Perl/perl5/issues/14086>
2728
2729       •   The little-known "my Class $var" syntax (see fields and attributes)
2730           could get confused in the scope of "use utf8" if "Class" were a
2731           constant whose value contained Latin-1 characters.
2732
2733       •   Locking and unlocking values via Hash::Util or
2734           "Internals::SvREADONLY" no longer has any effect on values that
2735           were read-only to begin with.  Previously, unlocking such values
2736           could result in crashes, hangs or other erratic behavior.
2737
2738       •   Some unterminated "(?(...)...)" constructs in regular expressions
2739           would either crash or give erroneous error messages.  "/(?(1)/" is
2740           one such example.
2741
2742       •   "pack "w", $tied" no longer calls FETCH twice.
2743
2744       •   List assignments like "($x, $z) = (1, $y)" now work correctly if $x
2745           and $y have been aliased by "foreach".
2746
2747       •   Some patterns including code blocks with syntax errors, such as
2748           "/ (?{(^{})/", would hang or fail assertions on debugging builds.
2749           Now they produce errors.
2750
2751       •   An assertion failure when parsing "sort" with debugging enabled has
2752           been fixed.  [GH #14087]
2753           <https://github.com/Perl/perl5/issues/14087>.
2754
2755       •   "*a = *b; @a = split //, $b[1]" could do a bad read and produce
2756           junk results.
2757
2758       •   In "() = @array = split", the "() =" at the beginning no longer
2759           confuses the optimizer into assuming a limit of 1.
2760
2761       •   Fatal warnings no longer prevent the output of syntax errors.  [GH
2762           #14155] <https://github.com/Perl/perl5/issues/14155>.
2763
2764       •   Fixed a NaN double-to-long-double conversion error on VMS. For
2765           quiet NaNs (and only on Itanium, not Alpha) negative infinity
2766           instead of NaN was produced.
2767
2768       •   Fixed the issue that caused "make distclean" to incorrectly leave
2769           some files behind.  [GH #14108]
2770           <https://github.com/Perl/perl5/issues/14108>.
2771
2772       •   AIX now sets the length in "getsockopt" correctly.  [GH #13484]
2773           <https://github.com/Perl/perl5/issues/13484>.  [cpan #91183]
2774           <https://rt.cpan.org/Ticket/Display.html?id=91183>.  [cpan #85570]
2775           <https://rt.cpan.org/Ticket/Display.html?id=85570>.
2776
2777       •   The optimization phase of a regexp compilation could run "forever"
2778           and exhaust all memory under certain circumstances; now fixed.  [GH
2779           #13984] <https://github.com/Perl/perl5/issues/13984>.
2780
2781       •   The test script t/op/crypt.t now uses the SHA-256 algorithm if the
2782           default one is disabled, rather than giving failures.  [GH #13715]
2783           <https://github.com/Perl/perl5/issues/13715>.
2784
2785       •   Fixed an off-by-one error when setting the size of a shared array.
2786           [GH #14151] <https://github.com/Perl/perl5/issues/14151>.
2787
2788       •   Fixed a bug that could cause perl to enter an infinite loop during
2789           compilation. In particular, a while(1) within a sublist, e.g.
2790
2791               sub foo { () = ($a, my $b, ($c, do { while(1) {} })) }
2792
2793           The bug was introduced in 5.20.0 [GH #14165]
2794           <https://github.com/Perl/perl5/issues/14165>.
2795
2796       •   On Win32, if a variable was "local"-ized in a pseudo-process that
2797           later forked, restoring the original value in the child pseudo-
2798           process caused memory corruption and a crash in the child pseudo-
2799           process (and therefore the OS process).  [GH #8641]
2800           <https://github.com/Perl/perl5/issues/8641>.
2801
2802       •   Calling "write" on a format with a "^**" field could produce a
2803           panic in sv_chop() if there were insufficient arguments or if the
2804           variable used to fill the field was empty.  [GH #14255]
2805           <https://github.com/Perl/perl5/issues/14255>.
2806
2807       •   Non-ASCII lexical sub names now appear without trailing junk when
2808           they appear in error messages.
2809
2810       •   The "\@" subroutine prototype no longer flattens parenthesized
2811           arrays (taking a reference to each element), but takes a reference
2812           to the array itself.  [GH #9111]
2813           <https://github.com/Perl/perl5/issues/9111>.
2814
2815       •   A block containing nothing except a C-style "for" loop could
2816           corrupt the stack, causing lists outside the block to lose elements
2817           or have elements overwritten.  This could happen with "map {
2818           for(...){...} } ..." and with lists containing "do { for(...){...}
2819           }".  [GH #14269] <https://github.com/Perl/perl5/issues/14269>.
2820
2821       •   scalar() now propagates lvalue context, so that
2822           "for(scalar($#foo)) { ... }" can modify $#foo through $_.
2823
2824       •   "qr/@array(?{block})/" no longer dies with "Bizarre copy of ARRAY".
2825           [GH #14292] <https://github.com/Perl/perl5/issues/14292>.
2826
2827       •   "eval '$variable'" in nested named subroutines would sometimes look
2828           up a global variable even with a lexical variable in scope.
2829
2830       •   In perl 5.20.0, "sort CORE::fake" where 'fake' is anything other
2831           than a keyword, started chopping off the last 6 characters and
2832           treating the result as a sort sub name.  The previous behavior of
2833           treating "CORE::fake" as a sort sub name has been restored.  [GH
2834           #14323] <https://github.com/Perl/perl5/issues/14323>.
2835
2836       •   Outside of "use utf8", a single-character Latin-1 lexical variable
2837           is disallowed.  The error message for it, "Can't use global
2838           $foo...", was giving garbage instead of the variable name.
2839
2840       •   "readline" on a nonexistent handle was causing "${^LAST_FH}" to
2841           produce a reference to an undefined scalar (or fail an assertion).
2842           Now "${^LAST_FH}" ends up undefined.
2843
2844       •   "(...) x ..." in void context now applies scalar context to the
2845           left-hand argument, instead of the context the current sub was
2846           called in.  [GH #14174]
2847           <https://github.com/Perl/perl5/issues/14174>.
2848

Known Problems

2850       •   "pack"-ing a NaN on a perl compiled with Visual C 6 does not behave
2851           properly, leading to a test failure in t/op/infnan.t.  [GH #14705]
2852           <https://github.com/Perl/perl5/issues/14705>
2853
2854       •   A goal is for Perl to be able to be recompiled to work reasonably
2855           well on any Unicode version.  In Perl 5.22, though, the earliest
2856           such version is Unicode 5.1 (current is 7.0).
2857
2858       •   EBCDIC platforms
2859
2860           •   The "cmp" (and hence "sort") operators do not necessarily give
2861               the correct results when both operands are UTF-EBCDIC encoded
2862               strings and there is a mixture of ASCII and/or control
2863               characters, along with other characters.
2864
2865           •   Ranges containing "\N{...}" in the "tr///" (and "y///")
2866               transliteration operators are treated differently than the
2867               equivalent ranges in regular expression patterns.  They should,
2868               but don't, cause the values in the ranges to all be treated as
2869               Unicode code points, and not native ones.  ("Version 8 Regular
2870               Expressions" in perlre gives details as to how it should work.)
2871
2872           •   Encode and encoding are mostly broken.
2873
2874           •   Many CPAN modules that are shipped with core show failing
2875               tests.
2876
2877           •   "pack"/"unpack" with "U0" format may not work properly.
2878
2879       •   The following modules are known to have test failures with this
2880           version of Perl.  In many cases, patches have been submitted, so
2881           there will hopefully be new releases soon:
2882
2883           •   B::Generate version 1.50
2884
2885           •   B::Utils version 0.25
2886
2887           •   Coro version 6.42
2888
2889           •   Dancer version 1.3130
2890
2891           •   Data::Alias version 1.18
2892
2893           •   Data::Dump::Streamer version 2.38
2894
2895           •   Data::Util version 0.63
2896
2897           •   Devel::Spy version 0.07
2898
2899           •   invoker version 0.34
2900
2901           •   Lexical::Var version 0.009
2902
2903           •   LWP::ConsoleLogger version 0.000018
2904
2905           •   Mason version 2.22
2906
2907           •   NgxQueue version 0.02
2908
2909           •   Padre version 1.00
2910
2911           •   Parse::Keyword 0.08
2912

Obituary

2914       Brian McCauley died on May 8, 2015.  He was a frequent poster to
2915       Usenet, Perl Monks, and other Perl forums, and made several CPAN
2916       contributions under the nick NOBULL, including to the Perl FAQ.  He
2917       attended almost every YAPC::Europe, and indeed, helped organise
2918       YAPC::Europe 2006 and the QA Hackathon 2009.  His wit and his delight
2919       in intricate systems were particularly apparent in his love of board
2920       games; many Perl mongers will have fond memories of playing Fluxx and
2921       other games with Brian.  He will be missed.
2922

Acknowledgements

2924       Perl 5.22.0 represents approximately 12 months of development since
2925       Perl 5.20.0 and contains approximately 590,000 lines of changes across
2926       2,400 files from 94 authors.
2927
2928       Excluding auto-generated files, documentation and release tools, there
2929       were approximately 370,000 lines of changes to 1,500 .pm, .t, .c and .h
2930       files.
2931
2932       Perl continues to flourish into its third decade thanks to a vibrant
2933       community of users and developers. The following people are known to
2934       have contributed the improvements that became Perl 5.22.0:
2935
2936       Aaron Crane, Abhijit Menon-Sen, Abigail, Alberto Simões, Alex Solovey,
2937       Alex Vandiver, Alexandr Ciornii, Alexandre (Midnite) Jousset, Andreas
2938       König, Andreas Voegele, Andrew Fresh, Andy Dougherty, Anthony Heading,
2939       Aristotle Pagaltzis, brian d foy, Brian Fraser, Chad Granum, Chris
2940       'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel
2941       Dragan, Darin McBride, Dave Rolsky, David Golden, David Mitchell, David
2942       Wheeler, Dmitri Tikhonov, Doug Bell, E. Choroba, Ed J, Eric Herman,
2943       Father Chrysostomos, George Greer, Glenn D. Golden, Graham Knop,
2944       H.Merijn Brand, Herbert Breunung, Hugo van der Sanden, James E Keenan,
2945       James McCoy, James Raspass, Jan Dubois, Jarkko Hietaniemi, Jasmine
2946       Ngan, Jerry D. Hedden, Jim Cromie, John Goodyear, kafka, Karen
2947       Etheridge, Karl Williamson, Kent Fredric, kmx, Lajos Veres, Leon
2948       Timmermans, Lukas Mai, Mathieu Arnold, Matthew Horsfall, Max Maischein,
2949       Michael Bunk, Nicholas Clark, Niels Thykier, Niko Tyni, Norman Koch,
2950       Olivier Mengué, Peter John Acklam, Peter Martini, Petr Písař, Philippe
2951       Bruhat (BooK), Pierre Bogossian, Rafael Garcia-Suarez, Randy Stauner,
2952       Reini Urban, Ricardo Signes, Rob Hoelz, Rostislav Skudnov, Sawyer X,
2953       Shirakata Kentaro, Shlomi Fish, Sisyphus, Slaven Rezic, Smylers,
2954       Steffen Müller, Steve Hay, Sullivan Beck, syber, Tadeusz Sośnierz,
2955       Thomas Sibley, Todd Rinaldo, Tony Cook, Vincent Pit, Vladimir Marek,
2956       Yaroslav Kuzmin, Yves Orton, Ævar Arnfjörð Bjarmason.
2957
2958       The list above is almost certainly incomplete as it is automatically
2959       generated from version control history. In particular, it does not
2960       include the names of the (very much appreciated) contributors who
2961       reported issues to the Perl bug tracker.
2962
2963       Many of the changes included in this version originated in the CPAN
2964       modules included in Perl's core. We're grateful to the entire CPAN
2965       community for helping Perl to flourish.
2966
2967       For a more complete list of all of Perl's historical contributors,
2968       please see the AUTHORS file in the Perl source distribution.
2969

Reporting Bugs

2971       If you find what you think is a bug, you might check the articles
2972       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
2973       database at <https://rt.perl.org/>.  There may also be information at
2974       <http://www.perl.org/>, the Perl Home Page.
2975
2976       If you believe you have an unreported bug, please run the perlbug
2977       program included with your release.  Be sure to trim your bug down to a
2978       tiny but sufficient test case.  Your bug report, along with the output
2979       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
2980       the Perl porting team.
2981
2982       If the bug you are reporting has security implications, which make it
2983       inappropriate to send to a publicly archived mailing list, then please
2984       send it to perl5-security-report@perl.org.  This points to a closed
2985       subscription unarchived mailing list, which includes all the core
2986       committers, who will be able to help assess the impact of issues,
2987       figure out a resolution, and help co-ordinate the release of patches to
2988       mitigate or fix the problem across all platforms on which Perl is
2989       supported.  Please only use this address for security issues in the
2990       Perl core, not for modules independently distributed on CPAN.
2991

SEE ALSO

2993       The Changes file for an explanation of how to view exhaustive details
2994       on what changed.
2995
2996       The INSTALL file for how to build Perl.
2997
2998       The README file for general stuff.
2999
3000       The Artistic and Copying files for copyright information.
3001
3002
3003
3004perl v5.38.2                      2023-11-30                  PERL5220DELTA(1)
Impressum