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

NAME

6       perl5260delta - what is new for perl v5.26.0
7

DESCRIPTION

9       This document describes the differences between the 5.24.0 release and
10       the 5.26.0 release.
11

Notice

13       This release includes three updates with widespread effects:
14
15       ·   "." no longer in @INC
16
17           For security reasons, the current directory (".") is no longer
18           included by default at the end of the module search path (@INC).
19           This may have widespread implications for the building, testing and
20           installing of modules, and for the execution of scripts.  See the
21           section "Removal of the current directory (".") from @INC" for the
22           full details.
23
24       ·   "do" may now warn
25
26           "do" now gives a deprecation warning when it fails to load a file
27           which it would have loaded had "." been in @INC.
28
29       ·   In regular expression patterns, a literal left brace "{" should be
30           escaped
31
32           See "Unescaped literal "{" characters in regular expression
33           patterns are no longer permissible".
34

Core Enhancements

36   Lexical subroutines are no longer experimental
37       Using the "lexical_subs" feature introduced in v5.18 no longer emits a
38       warning.  Existing code that disables the "experimental::lexical_subs"
39       warning category that the feature previously used will continue to
40       work.  The "lexical_subs" feature has no effect; all Perl code can use
41       lexical subroutines, regardless of what feature declarations are in
42       scope.
43
44   Indented Here-documents
45       This adds a new modifier "~" to here-docs that tells the parser that it
46       should look for "/^\s*$DELIM\n/" as the closing delimiter.
47
48       These syntaxes are all supported:
49
50           <<~EOF;
51           <<~\EOF;
52           <<~'EOF';
53           <<~"EOF";
54           <<~`EOF`;
55           <<~ 'EOF';
56           <<~ "EOF";
57           <<~ `EOF`;
58
59       The "~" modifier will strip, from each line in the here-doc, the same
60       whitespace that appears before the delimiter.
61
62       Newlines will be copied as-is, and lines that don't include the proper
63       beginning whitespace will cause perl to croak.
64
65       For example:
66
67           if (1) {
68             print <<~EOF;
69               Hello there
70               EOF
71           }
72
73       prints "Hello there\n" with no leading whitespace.
74
75   New regular expression modifier "/xx"
76       Specifying two "x" characters to modify a regular expression pattern
77       does everything that a single one does, but additionally TAB and SPACE
78       characters within a bracketed character class are generally ignored and
79       can be added to improve readability, like "/[ ^ A-Z d-f p-x ]/xx".
80       Details are at "/x and /xx" in perlre.
81
82   "@{^CAPTURE}", "%{^CAPTURE}", and "%{^CAPTURE_ALL}"
83       "@{^CAPTURE}" exposes the capture buffers of the last match as an
84       array.  So $1 is "${^CAPTURE}[0]".  This is a more efficient equivalent
85       to code like "substr($matched_string,$-[0],$+[0]-$-[0])", and you don't
86       have to keep track of the $matched_string either.  This variable has no
87       single character equivalent.  Note that, like the other regex magic
88       variables, the contents of this variable is dynamic; if you wish to
89       store it beyond the lifetime of the match you must copy it to another
90       array.
91
92       "%{^CAPTURE}" is equivalent to "%+" (i.e., named captures).  Other than
93       being more self-documenting there is no difference between the two
94       forms.
95
96       "%{^CAPTURE_ALL}" is equivalent to "%-" (i.e., all named captures).
97       Other than being more self-documenting there is no difference between
98       the two forms.
99
100   Declaring a reference to a variable
101       As an experimental feature, Perl now allows the referencing operator to
102       come after "my()", "state()", "our()", or "local()".  This syntax must
103       be enabled with "use feature 'declared_refs'".  It is experimental, and
104       will warn by default unless "no warnings 'experimental::refaliasing'"
105       is in effect.  It is intended mainly for use in assignments to
106       references.  For example:
107
108           use experimental 'refaliasing', 'declared_refs';
109           my \$a = \$b;
110
111       See "Assigning to References" in perlref for more details.
112
113   Unicode 9.0 is now supported
114       A list of changes is at
115       <http://www.unicode.org/versions/Unicode9.0.0/>.  Modules that are
116       shipped with core Perl but not maintained by p5p do not necessarily
117       support Unicode 9.0.  Unicode::Normalize does work on 9.0.
118
119   Use of "\p{script}" uses the improved Script_Extensions property
120       Unicode 6.0 introduced an improved form of the Script ("sc") property,
121       and called it Script_Extensions ("scx").  Perl now uses this improved
122       version when a property is specified as just "\p{script}".  This should
123       make programs more accurate when determining if a character is used in
124       a given script, but there is a slight chance of breakage for programs
125       that very specifically needed the old behavior.  The meaning of
126       compound forms, like "\p{sc=script}" are unchanged.  See "Scripts" in
127       perlunicode.
128
129   Perl can now do default collation in UTF-8 locales on platforms that
130       support it
131       Some platforms natively do a reasonable job of collating and sorting in
132       UTF-8 locales.  Perl now works with those.  For portability and full
133       control, Unicode::Collate is still recommended, but now you may not
134       need to do anything special to get good-enough results, depending on
135       your application.  See "Category "LC_COLLATE": Collation: Text
136       Comparisons and Sorting" in perllocale.
137
138   Better locale collation of strings containing embedded "NUL" characters
139       In locales that have multi-level character weights, "NUL"s are now
140       ignored at the higher priority ones.  There are still some gotchas in
141       some strings, though.  See "Collation of strings containing embedded
142       "NUL" characters" in perllocale.
143
144   "CORE" subroutines for hash and array functions callable via reference
145       The hash and array functions in the "CORE" namespace ("keys", "each",
146       "values", "push", "pop", "shift", "unshift" and "splice") can now be
147       called with ampersand syntax ("&CORE::keys(\%hash") and via reference
148       ("my $k = \&CORE::keys; $k->(\%hash)").  Previously they could only be
149       used when inlined.
150
151   New Hash Function For 64-bit Builds
152       We have switched to a hybrid hash function to better balance
153       performance for short and long keys.
154
155       For short keys, 16 bytes and under, we use an optimised variant of One
156       At A Time Hard, and for longer keys we use Siphash 1-3.  For very long
157       keys this is a big improvement in performance.  For shorter keys there
158       is a modest improvement.
159

Security

161   Removal of the current directory (".") from @INC
162       The perl binary includes a default set of paths in @INC.  Historically
163       it has also included the current directory (".") as the final entry,
164       unless run with taint mode enabled ("perl -T").  While convenient, this
165       has security implications: for example, where a script attempts to load
166       an optional module when its current directory is untrusted (such as
167       /tmp), it could load and execute code from under that directory.
168
169       Starting with v5.26, "." is always removed by default, not just under
170       tainting.  This has major implications for installing modules and
171       executing scripts.
172
173       The following new features have been added to help ameliorate these
174       issues.
175
176       ·   Configure -Udefault_inc_excludes_dot
177
178           There is a new Configure option, "default_inc_excludes_dot"
179           (enabled by default) which builds a perl executable without ".";
180           unsetting this option using "-U" reverts perl to the old behaviour.
181           This may fix your path issues but will reintroduce all the security
182           concerns, so don't build a perl executable like this unless you're
183           really confident that such issues are not a concern in your
184           environment.
185
186       ·   "PERL_USE_UNSAFE_INC"
187
188           There is a new environment variable recognised by the perl
189           interpreter.  If this variable has the value 1 when the perl
190           interpreter starts up, then "." will be automatically appended to
191           @INC (except under tainting).
192
193           This allows you restore the old perl interpreter behaviour on a
194           case-by-case basis.  But note that this is intended to be a
195           temporary crutch, and this feature will likely be removed in some
196           future perl version.  It is currently set by the "cpan" utility and
197           "Test::Harness" to ease installation of CPAN modules which have not
198           been updated to handle the lack of dot.  Once again, don't use this
199           unless you are sure that this will not reintroduce any security
200           concerns.
201
202       ·   A new deprecation warning issued by "do".
203
204           While it is well-known that "use" and "require" use @INC to search
205           for the file to load, many people don't realise that "do "file""
206           also searches @INC if the file is a relative path.  With the
207           removal of ".", a simple "do "file.pl"" will fail to read in and
208           execute "file.pl" from the current directory.  Since this is
209           commonly expected behaviour, a new deprecation warning is now
210           issued whenever "do" fails to load a file which it otherwise would
211           have found if a dot had been in @INC.
212
213       Here are some things script and module authors may need to do to make
214       their software work in the new regime.
215
216       ·   Script authors
217
218           If the issue is within your own code (rather than within included
219           modules), then you have two main options.  Firstly, if you are
220           confident that your script will only be run within a trusted
221           directory (under which you expect to find trusted files and
222           modules), then add "." back into the path; e.g.:
223
224               BEGIN {
225                   my $dir = "/some/trusted/directory";
226                   chdir $dir or die "Can't chdir to $dir: $!\n";
227                   # safe now
228                   push @INC, '.';
229               }
230
231               use "Foo::Bar"; # may load /some/trusted/directory/Foo/Bar.pm
232               do "config.pl"; # may load /some/trusted/directory/config.pl
233
234           On the other hand, if your script is intended to be run from within
235           untrusted directories (such as /tmp), then your script suddenly
236           failing to load files may be indicative of a security issue.  You
237           most likely want to replace any relative paths with full paths; for
238           example,
239
240               do "foo_config.pl"
241
242           might become
243
244               do "$ENV{HOME}/foo_config.pl"
245
246           If you are absolutely certain that you want your script to load and
247           execute a file from the current directory, then use a "./" prefix;
248           for example:
249
250               do "./foo_config.pl"
251
252       ·   Installing and using CPAN modules
253
254           If you install a CPAN module using an automatic tool like "cpan",
255           then this tool will itself set the "PERL_USE_UNSAFE_INC"
256           environment variable while building and testing the module, which
257           may be sufficient to install a distribution which hasn't been
258           updated to be dot-aware.  If you want to install such a module
259           manually, then you'll need to replace the traditional invocation:
260
261               perl Makefile.PL && make && make test && make install
262
263           with something like
264
265               (export PERL_USE_UNSAFE_INC=1; \
266                perl Makefile.PL && make && make test && make install)
267
268           Note that this only helps build and install an unfixed module.
269           It's possible for the tests to pass (since they were run under
270           "PERL_USE_UNSAFE_INC=1"), but for the module itself to fail to
271           perform correctly in production.  In this case, you may have to
272           temporarily modify your script until a fixed version of the module
273           is released.  For example:
274
275               use Foo::Bar;
276               {
277                   local @INC = (@INC, '.');
278                   # assuming read_config() needs '.' in @INC
279                   $config = Foo::Bar->read_config();
280               }
281
282           This is only rarely expected to be necessary.  Again, if doing
283           this, assess the resultant risks first.
284
285       ·   Module Authors
286
287           If you maintain a CPAN distribution, it may need updating to run in
288           a dotless environment.  Although "cpan" and other such tools will
289           currently set the "PERL_USE_UNSAFE_INC" during module build, this
290           is a temporary workaround for the set of modules which rely on "."
291           being in @INC for installation and testing, and this may mask
292           deeper issues.  It could result in a module which passes tests and
293           installs, but which fails at run time.
294
295           During build, test, and install, it will normally be the case that
296           any perl processes will be executing directly within the root
297           directory of the untarred distribution, or a known subdirectory of
298           that, such as t/.  It may well be that Makefile.PL or t/foo.t will
299           attempt to include local modules and configuration files using
300           their direct relative filenames, which will now fail.
301
302           However, as described above, automatic tools like cpan will (for
303           now) set the "PERL_USE_UNSAFE_INC" environment variable, which
304           introduces dot during a build.
305
306           This makes it likely that your existing build and test code will
307           work, but this may mask issues with your code which only manifest
308           when used after install.  It is prudent to try and run your build
309           process with that variable explicitly disabled:
310
311               (export PERL_USE_UNSAFE_INC=0; \
312                perl Makefile.PL && make && make test && make install)
313
314           This is more likely to show up any potential problems with your
315           module's build process, or even with the module itself.  Fixing
316           such issues will ensure both that your module can again be
317           installed manually, and that it will still build once the
318           "PERL_USE_UNSAFE_INC" crutch goes away.
319
320           When fixing issues in tests due to the removal of dot from @INC,
321           reinsertion of dot into @INC should be performed with caution, for
322           this too may suppress real errors in your runtime code.  You are
323           encouraged wherever possible to apply the aforementioned approaches
324           with explicit absolute/relative paths, or to relocate your needed
325           files into a subdirectory and insert that subdirectory into @INC
326           instead.
327
328           If your runtime code has problems under the dotless @INC, then the
329           comments above on how to fix for script authors will mostly apply
330           here too.  Bear in mind though that it is considered bad form for a
331           module to globally add a dot to @INC, since it introduces both a
332           security risk and hides issues of accidentally requiring dot in
333           @INC, as explained above.
334
335   Escaped colons and relative paths in PATH
336       On Unix systems, Perl treats any relative paths in the "PATH"
337       environment variable as tainted when starting a new process.
338       Previously, it was allowing a backslash to escape a colon (unlike the
339       OS), consequently allowing relative paths to be considered safe if the
340       PATH was set to something like "/\:.".  The check has been fixed to
341       treat "." as tainted in that example.
342
343   New "-Di" switch is now required for PerlIO debugging output
344       This is used for debugging of code within PerlIO to avoid recursive
345       calls.  Previously this output would be sent to the file specified by
346       the "PERLIO_DEBUG" environment variable if perl wasn't running setuid
347       and the "-T" or "-t" switches hadn't been parsed yet.
348
349       If perl performed output at a point where it hadn't yet parsed its
350       switches this could result in perl creating or overwriting the file
351       named by "PERLIO_DEBUG" even when the "-T" switch had been supplied.
352
353       Perl now requires the "-Di" switch to be present before it will produce
354       PerlIO debugging output.  By default this is written to "stderr", but
355       can optionally be redirected to a file by setting the "PERLIO_DEBUG"
356       environment variable.
357
358       If perl is running setuid or the "-T" switch was supplied,
359       "PERLIO_DEBUG" is ignored and the debugging output is sent to "stderr"
360       as for any other "-D" switch.
361

Incompatible Changes

363   Unescaped literal "{" characters in regular expression patterns are no
364       longer permissible
365       You have to now say something like "\{" or "[{]" to specify to match a
366       LEFT CURLY BRACKET; otherwise, it is a fatal pattern compilation error.
367       This change will allow future extensions to the language.
368
369       These have been deprecated since v5.16, with a deprecation message
370       raised for some uses starting in v5.22.  Unfortunately, the code added
371       to raise the message was buggy and failed to warn in some cases where
372       it should have.  Therefore, enforcement of this ban for these cases is
373       deferred until Perl 5.30, but the code has been fixed to raise a
374       default-on deprecation message for them in the meantime.
375
376       Some uses of literal "{" occur in contexts where we do not foresee the
377       meaning ever being anything but the literal, such as the very first
378       character in the pattern, or after a "|" meaning alternation.  Thus
379
380        qr/{fee|{fie/
381
382       matches either of the strings "{fee" or "{fie".  To avoid forcing
383       unnecessary code changes, these uses do not need to be escaped, and no
384       warning is raised about them, and there are no current plans to change
385       this.
386
387       But it is always correct to escape "{", and the simple rule to remember
388       is to always do so.
389
390       See Unescaped left brace in regex is illegal here.
391
392   "scalar(%hash)" return signature changed
393       The value returned for "scalar(%hash)" will no longer show information
394       about the buckets allocated in the hash.  It will simply return the
395       count of used keys.  It is thus equivalent to "0+keys(%hash)".
396
397       A form of backward compatibility is provided via
398       "Hash::Util::bucket_ratio()" which provides the same behavior as
399       "scalar(%hash)" provided in Perl 5.24 and earlier.
400
401   "keys" returned from an lvalue subroutine
402       "keys" returned from an lvalue subroutine can no longer be assigned to
403       in list context.
404
405           sub foo : lvalue { keys(%INC) }
406           (foo) = 3; # death
407           sub bar : lvalue { keys(@_) }
408           (bar) = 3; # also an error
409
410       This makes the lvalue sub case consistent with "(keys %hash) = ..." and
411       "(keys @_) = ...", which are also errors.  [perl #128187]
412       <https://rt.perl.org/Public/Bug/Display.html?id=128187>
413
414   The "${^ENCODING}" facility has been removed
415       The special behaviour associated with assigning a value to this
416       variable has been removed.  As a consequence, the encoding pragma's
417       default mode is no longer supported.  If you still need to write your
418       source code in encodings other than UTF-8, use a source filter such as
419       Filter::Encoding on CPAN or encoding's "Filter" option.
420
421   "POSIX::tmpnam()" has been removed
422       The fundamentally unsafe "tmpnam()" interface was deprecated in Perl
423       5.22 and has now been removed.  In its place, you can use, for example,
424       the File::Temp interfaces.
425
426   require ::Foo::Bar is now illegal.
427       Formerly, "require ::Foo::Bar" would try to read /Foo/Bar.pm.  Now any
428       bareword require which starts with a double colon dies instead.
429
430   Literal control character variable names are no longer permissible
431       A variable name may no longer contain a literal control character under
432       any circumstances.  These previously were allowed in single-character
433       names on ASCII platforms, but have been deprecated there since Perl
434       5.20.  This affects things like "$\cT", where \cT is a literal control
435       (such as a "NAK" or "NEGATIVE ACKNOWLEDGE" character) in the source
436       code.
437
438   "NBSP" is no longer permissible in "\N{...}"
439       The name of a character may no longer contain non-breaking spaces.  It
440       has been deprecated to do so since Perl 5.22.
441

Deprecations

443   String delimiters that aren't stand-alone graphemes are now deprecated
444       For Perl to eventually allow string delimiters to be Unicode grapheme
445       clusters (which look like a single character, but may be a sequence of
446       several ones), we have to stop allowing a single character delimiter
447       that isn't a grapheme by itself.  These are unlikely to exist in actual
448       code, as they would typically display as attached to the character in
449       front of them.
450
451   "\cX" that maps to a printable is no longer deprecated
452       This means we have no plans to remove this feature.  It still raises a
453       warning, but only if syntax warnings are enabled.  The feature was
454       originally intended to be a way to express non-printable characters
455       that don't have a mnemonic ("\t" and "\n" are mnemonics for two non-
456       printable characters, but most non-printables don't have a mnemonic.)
457       But the feature can be used to specify a few printable characters,
458       though those are more clearly expressed as the printable itself.  See
459       <http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html>.
460

Performance Enhancements

462       ·   A hash in boolean context is now sometimes faster, e.g.
463
464               if (!%h) { ... }
465
466           This was already special-cased, but some cases were missed (such as
467           "grep %$_, @AoH"), and even the ones which weren't have been
468           improved.
469
470       ·   New Faster Hash Function on 64 bit builds
471
472           We use a different hash function for short and long keys.  This
473           should improve performance and security, especially for long keys.
474
475       ·   readline is faster
476
477           Reading from a file line-by-line with "readline()" or "<>" should
478           now typically be faster due to a better implementation of the code
479           that searches for the next newline character.
480
481       ·   Assigning one reference to another, e.g. "$ref1 = $ref2" has been
482           optimized in some cases.
483
484       ·   Remove some exceptions to creating Copy-on-Write strings. The
485           string buffer growth algorithm has been slightly altered so that
486           you're less likely to encounter a string which can't be COWed.
487
488       ·   Better optimise array and hash assignment: where an array or hash
489           appears in the LHS of a list assignment, such as "(..., @a) =
490           (...);", it's likely to be considerably faster, especially if it
491           involves emptying the array/hash. For example, this code runs about
492           a third faster compared to Perl 5.24.0:
493
494               my @a;
495               for my $i (1..10_000_000) {
496                   @a = (1,2,3);
497                   @a = ();
498               }
499
500       ·   Converting a single-digit string to a number is now substantially
501           faster.
502
503       ·   The "split" builtin is now slightly faster in many cases: in
504           particular for the two specially-handled forms
505
506               my    @a = split ...;
507               local @a = split ...;
508
509       ·   The rather slow implementation for the experimental subroutine
510           signatures feature has been made much faster; it is now comparable
511           in speed with the traditional "my ($a, $b, @c) = @_".
512
513       ·   Bareword constant strings are now permitted to take part in
514           constant folding.  They were originally exempted from constant
515           folding in August 1999, during the development of Perl 5.6, to
516           ensure that "use strict "subs"" would still apply to bareword
517           constants.  That has now been accomplished a different way, so
518           barewords, like other constants, now gain the performance benefits
519           of constant folding.
520
521           This also means that void-context warnings on constant expressions
522           of barewords now report the folded constant operand, rather than
523           the operation; this matches the behaviour for non-bareword
524           constants.
525

Modules and Pragmata

527   Updated Modules and Pragmata
528       ·   IO::Compress has been upgraded from version 2.069 to 2.074.
529
530       ·   Archive::Tar has been upgraded from version 2.04 to 2.24.
531
532       ·   arybase has been upgraded from version 0.11 to 0.12.
533
534       ·   attributes has been upgraded from version 0.27 to 0.29.
535
536           The deprecation message for the ":unique" and ":locked" attributes
537           now mention that they will disappear in Perl 5.28.
538
539       ·   B has been upgraded from version 1.62 to 1.68.
540
541       ·   B::Concise has been upgraded from version 0.996 to 0.999.
542
543           Its output is now more descriptive for "op_private" flags.
544
545       ·   B::Debug has been upgraded from version 1.23 to 1.24.
546
547       ·   B::Deparse has been upgraded from version 1.37 to 1.40.
548
549       ·   B::Xref has been upgraded from version 1.05 to 1.06.
550
551           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
552           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
553
554       ·   base has been upgraded from version 2.23 to 2.25.
555
556       ·   bignum has been upgraded from version 0.42 to 0.47.
557
558       ·   Carp has been upgraded from version 1.40 to 1.42.
559
560       ·   charnames has been upgraded from version 1.43 to 1.44.
561
562       ·   Compress::Raw::Bzip2 has been upgraded from version 2.069 to 2.074.
563
564       ·   Compress::Raw::Zlib has been upgraded from version 2.069 to 2.074.
565
566       ·   Config::Perl::V has been upgraded from version 0.25 to 0.28.
567
568       ·   CPAN has been upgraded from version 2.11 to 2.18.
569
570       ·   CPAN::Meta has been upgraded from version 2.150005 to 2.150010.
571
572       ·   Data::Dumper has been upgraded from version 2.160 to 2.167.
573
574           The XS implementation now supports Deparse.
575
576       ·   DB_File has been upgraded from version 1.835 to 1.840.
577
578       ·   Devel::Peek has been upgraded from version 1.23 to 1.26.
579
580       ·   Devel::PPPort has been upgraded from version 3.32 to 3.35.
581
582       ·   Devel::SelfStubber has been upgraded from version 1.05 to 1.06.
583
584           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
585           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
586
587       ·   diagnostics has been upgraded from version 1.34 to 1.36.
588
589           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
590           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
591
592       ·   Digest has been upgraded from version 1.17 to 1.17_01.
593
594       ·   Digest::MD5 has been upgraded from version 2.54 to 2.55.
595
596       ·   Digest::SHA has been upgraded from version 5.95 to 5.96.
597
598       ·   DynaLoader has been upgraded from version 1.38 to 1.42.
599
600       ·   Encode has been upgraded from version 2.80 to 2.88.
601
602       ·   encoding has been upgraded from version 2.17 to 2.19.
603
604           This module's default mode is no longer supported.  It now dies
605           when imported, unless the "Filter" option is being used.
606
607       ·   encoding::warnings has been upgraded from version 0.12 to 0.13.
608
609           This module is no longer supported.  It emits a warning to that
610           effect and then does nothing.
611
612       ·   Errno has been upgraded from version 1.25 to 1.28.
613
614           It now documents that using "%!" automatically loads Errno for you.
615
616           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
617           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
618
619       ·   ExtUtils::Embed has been upgraded from version 1.33 to 1.34.
620
621           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
622           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
623
624       ·   ExtUtils::MakeMaker has been upgraded from version 7.10_01 to 7.24.
625
626       ·   ExtUtils::Miniperl has been upgraded from version 1.05 to 1.06.
627
628       ·   ExtUtils::ParseXS has been upgraded from version 3.31 to 3.34.
629
630       ·   ExtUtils::Typemaps has been upgraded from version 3.31 to 3.34.
631
632       ·   feature has been upgraded from version 1.42 to 1.47.
633
634       ·   File::Copy has been upgraded from version 2.31 to 2.32.
635
636       ·   File::Fetch has been upgraded from version 0.48 to 0.52.
637
638       ·   File::Glob has been upgraded from version 1.26 to 1.28.
639
640           It now Issues a deprecation message for "File::Glob::glob()".
641
642       ·   File::Spec has been upgraded from version 3.63 to 3.67.
643
644       ·   FileHandle has been upgraded from version 2.02 to 2.03.
645
646       ·   Filter::Simple has been upgraded from version 0.92 to 0.93.
647
648           It no longer treats "no MyFilter" immediately following "use
649           MyFilter" as end-of-file.  [perl #107726]
650           <https://rt.perl.org/Public/Bug/Display.html?id=107726>
651
652       ·   Getopt::Long has been upgraded from version 2.48 to 2.49.
653
654       ·   Getopt::Std has been upgraded from version 1.11 to 1.12.
655
656       ·   Hash::Util has been upgraded from version 0.19 to 0.22.
657
658       ·   HTTP::Tiny has been upgraded from version 0.056 to 0.070.
659
660           Internal 599-series errors now include the redirect history.
661
662       ·   I18N::LangTags has been upgraded from version 0.40 to 0.42.
663
664           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
665           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
666
667       ·   IO has been upgraded from version 1.36 to 1.38.
668
669       ·   IO::Socket::IP has been upgraded from version 0.37 to 0.38.
670
671       ·   IPC::Cmd has been upgraded from version 0.92 to 0.96.
672
673       ·   IPC::SysV has been upgraded from version 2.06_01 to 2.07.
674
675       ·   JSON::PP has been upgraded from version 2.27300 to 2.27400_02.
676
677       ·   lib has been upgraded from version 0.63 to 0.64.
678
679           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
680           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
681
682       ·   List::Util has been upgraded from version 1.42_02 to 1.46_02.
683
684       ·   Locale::Codes has been upgraded from version 3.37 to 3.42.
685
686       ·   Locale::Maketext has been upgraded from version 1.26 to 1.28.
687
688       ·   Locale::Maketext::Simple has been upgraded from version 0.21 to
689           0.21_01.
690
691       ·   Math::BigInt has been upgraded from version 1.999715 to 1.999806.
692
693       ·   Math::BigInt::FastCalc has been upgraded from version 0.40 to
694           0.5005.
695
696       ·   Math::BigRat has been upgraded from version 0.260802 to 0.2611.
697
698       ·   Math::Complex has been upgraded from version 1.59 to 1.5901.
699
700       ·   Memoize has been upgraded from version 1.03 to 1.03_01.
701
702       ·   Module::CoreList has been upgraded from version 5.20170420 to
703           5.20170530.
704
705       ·   Module::Load::Conditional has been upgraded from version 0.64 to
706           0.68.
707
708       ·   Module::Metadata has been upgraded from version 1.000031 to
709           1.000033.
710
711       ·   mro has been upgraded from version 1.18 to 1.20.
712
713       ·   Net::Ping has been upgraded from version 2.43 to 2.55.
714
715           IPv6 addresses and "AF_INET6" sockets are now supported, along with
716           several other enhancements.
717
718       ·   NEXT has been upgraded from version 0.65 to 0.67.
719
720       ·   Opcode has been upgraded from version 1.34 to 1.39.
721
722       ·   open has been upgraded from version 1.10 to 1.11.
723
724       ·   OS2::Process has been upgraded from version 1.11 to 1.12.
725
726           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
727           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
728
729       ·   overload has been upgraded from version 1.26 to 1.28.
730
731           Its compilation speed has been improved slightly.
732
733       ·   parent has been upgraded from version 0.234 to 0.236.
734
735       ·   perl5db.pl has been upgraded from version 1.50 to 1.51.
736
737           It now ignores /dev/tty on non-Unix systems.  [perl #113960]
738           <https://rt.perl.org/Public/Bug/Display.html?id=113960>
739
740       ·   Perl::OSType has been upgraded from version 1.009 to 1.010.
741
742       ·   perlfaq has been upgraded from version 5.021010 to 5.021011.
743
744       ·   PerlIO has been upgraded from version 1.09 to 1.10.
745
746       ·   PerlIO::encoding has been upgraded from version 0.24 to 0.25.
747
748       ·   PerlIO::scalar has been upgraded from version 0.24 to 0.26.
749
750       ·   Pod::Checker has been upgraded from version 1.60 to 1.73.
751
752       ·   Pod::Functions has been upgraded from version 1.10 to 1.11.
753
754       ·   Pod::Html has been upgraded from version 1.22 to 1.2202.
755
756       ·   Pod::Perldoc has been upgraded from version 3.25_02 to 3.28.
757
758       ·   Pod::Simple has been upgraded from version 3.32 to 3.35.
759
760       ·   Pod::Usage has been upgraded from version 1.68 to 1.69.
761
762       ·   POSIX has been upgraded from version 1.65 to 1.76.
763
764           This remedies several defects in making its symbols exportable.
765           [perl #127821]
766           <https://rt.perl.org/Public/Bug/Display.html?id=127821>
767
768           The "POSIX::tmpnam()" interface has been removed, see
769           "POSIX::tmpnam() has been removed".
770
771           The following deprecated functions have been removed:
772
773               POSIX::isalnum
774               POSIX::isalpha
775               POSIX::iscntrl
776               POSIX::isdigit
777               POSIX::isgraph
778               POSIX::islower
779               POSIX::isprint
780               POSIX::ispunct
781               POSIX::isspace
782               POSIX::isupper
783               POSIX::isxdigit
784               POSIX::tolower
785               POSIX::toupper
786
787           Trying to import POSIX subs that have no real implementations (like
788           "POSIX::atend()") now fails at import time, instead of waiting
789           until runtime.
790
791       ·   re has been upgraded from version 0.32 to 0.34
792
793           This adds support for the new "/xx" regular expression pattern
794           modifier, and a change to the "use re 'strict'" experimental
795           feature.  When "re 'strict'" is enabled, a warning now will be
796           generated for all unescaped uses of the two characters "}" and "]"
797           in regular expression patterns (outside bracketed character
798           classes) that are taken literally.  This brings them more in line
799           with the ")" character which is always a metacharacter unless
800           escaped.  Being a metacharacter only sometimes, depending on an
801           action at a distance, can lead to silently having the pattern mean
802           something quite different than was intended, which the
803           "re 'strict'" mode is intended to minimize.
804
805       ·   Safe has been upgraded from version 2.39 to 2.40.
806
807       ·   Scalar::Util has been upgraded from version 1.42_02 to 1.46_02.
808
809       ·   Storable has been upgraded from version 2.56 to 2.62.
810
811           Fixes [perl #130098]
812           <https://rt.perl.org/Public/Bug/Display.html?id=130098>.
813
814       ·   Symbol has been upgraded from version 1.07 to 1.08.
815
816       ·   Sys::Syslog has been upgraded from version 0.33 to 0.35.
817
818       ·   Term::ANSIColor has been upgraded from version 4.04 to 4.06.
819
820       ·   Term::ReadLine has been upgraded from version 1.15 to 1.16.
821
822           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
823           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
824
825       ·   Test has been upgraded from version 1.28 to 1.30.
826
827           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
828           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
829
830       ·   Test::Harness has been upgraded from version 3.36 to 3.38.
831
832       ·   Test::Simple has been upgraded from version 1.001014 to 1.302073.
833
834       ·   Thread::Queue has been upgraded from version 3.09 to 3.12.
835
836       ·   Thread::Semaphore has been upgraded from 2.12 to 2.13.
837
838           Added the "down_timed" method.
839
840       ·   threads has been upgraded from version 2.07 to 2.15.
841
842       ·   threads::shared has been upgraded from version 1.51 to 1.56.
843
844       ·   Tie::Hash::NamedCapture has been upgraded from version 0.09 to
845           0.10.
846
847       ·   Time::HiRes has been upgraded from version 1.9733 to 1.9741.
848
849           It now builds on systems with C++11 compilers (such as G++ 6 and
850           Clang++ 3.9).
851
852           Now uses "clockid_t".
853
854       ·   Time::Local has been upgraded from version 1.2300 to 1.25.
855
856       ·   Unicode::Collate has been upgraded from version 1.14 to 1.19.
857
858       ·   Unicode::UCD has been upgraded from version 0.64 to 0.68.
859
860           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
861           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
862
863       ·   version has been upgraded from version 0.9916 to 0.9917.
864
865       ·   VMS::DCLsym has been upgraded from version 1.06 to 1.08.
866
867           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
868           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
869
870       ·   warnings has been upgraded from version 1.36 to 1.37.
871
872       ·   XS::Typemap has been upgraded from version 0.14 to 0.15.
873
874       ·   XSLoader has been upgraded from version 0.21 to 0.27.
875
876           Fixed a security hole in which binary files could be loaded from a
877           path outside of @INC.
878
879           It now uses 3-arg "open()" instead of 2-arg "open()".  [perl
880           #130122] <https://rt.perl.org/Public/Bug/Display.html?id=130122>
881

Documentation

883   New Documentation
884       perldeprecation
885
886       This file documents all upcoming deprecations, and some of the
887       deprecations which already have been removed.  The purpose of this
888       documentation is two-fold: document what will disappear, and by which
889       version, and serve as a guide for people dealing with code which has
890       features that no longer work after an upgrade of their perl.
891
892   Changes to Existing Documentation
893       We have attempted to update the documentation to reflect the changes
894       listed in this document.  If you find any we have missed, send email to
895       perlbug@perl.org <mailto:perlbug@perl.org>.
896
897       Additionally, all references to Usenet have been removed, and the
898       following selected changes have been made:
899
900       perlfunc
901
902       ·   Removed obsolete text about "defined()" on aggregates that should
903           have been deleted earlier, when the feature was removed.
904
905       ·   Corrected documentation of "eval()", and "evalbytes()".
906
907       ·   Clarified documentation of "seek()", "tell()" and "sysseek()"
908           emphasizing that positions are in bytes and not characters.  [perl
909           #128607] <https://rt.perl.org/Public/Bug/Display.html?id=128607>
910
911       ·   Clarified documentation of "sort()" concerning the variables $a and
912           $b.
913
914       ·   In "split()" noted that certain pattern modifiers are legal, and
915           added a caution about its use in Perls before v5.11.
916
917       ·   Removed obsolete documentation of "study()", noting that it is now
918           a no-op.
919
920       ·   Noted that "vec()" doesn't work well when the string contains
921           characters whose code points are above 255.
922
923       perlguts
924
925       ·   Added advice on formatted printing of operands of "Size_t" and
926           "SSize_t"
927
928       perlhack
929
930       ·   Clarify what editor tab stop rules to use, and note that we are
931           migrating away from using tabs, replacing them with sequences of
932           SPACE characters.
933
934       perlhacktips
935
936       ·   Give another reason to use "cBOOL" to cast an expression to
937           boolean.
938
939       ·   Note that the macros "TRUE" and "FALSE" are available to express
940           boolean values.
941
942       perlinterp
943
944       ·   perlinterp has been expanded to give a more detailed example of how
945           to hunt around in the parser for how a given operator is handled.
946
947       perllocale
948
949       ·   Some locales aren't compatible with Perl.  Note that these can
950           cause core dumps.
951
952       perlmod
953
954       ·   Various clarifications have been added.
955
956       perlmodlib
957
958       ·   Updated the site mirror list.
959
960       perlobj
961
962       ·   Added a section on calling methods using their fully qualified
963           names.
964
965       ·   Do not discourage manual @ISA.
966
967       perlootut
968
969       ·   Mention "Moo" more.
970
971       perlop
972
973       ·   Note that white space must be used for quoting operators if the
974           delimiter is a word character (i.e., matches "\w").
975
976       ·   Clarify that in regular expression patterns delimited by single
977           quotes, no variable interpolation is done.
978
979       perlre
980
981       ·   The first part was extensively rewritten to incorporate various
982           basic points, that in earlier versions were mentioned in sort of an
983           appendix on Version 8 regular expressions.
984
985       ·   Note that it is common to have the "/x" modifier and forget that
986           this means that "#" has to be escaped.
987
988       perlretut
989
990       ·   Add introductory material.
991
992       ·   Note that a metacharacter occurring in a context where it can't
993           mean that, silently loses its meta-ness and matches literally.
994           "use re 'strict'" can catch some of these.
995
996       perlunicode
997
998       ·   Corrected the text about Unicode BYTE ORDER MARK handling.
999
1000       ·   Updated the text to correspond with changes in Unicode UTS#18,
1001           concerning regular expressions, and Perl compatibility with what it
1002           says.
1003
1004       perlvar
1005
1006       ·   Document @ISA.  It was documented in other places, but not in
1007           perlvar.
1008

Diagnostics

1010   New Diagnostics
1011       New Errors
1012
1013       ·   A signature parameter must start with '$', '@' or '%'
1014
1015       ·   Bareword in require contains "%s"
1016
1017       ·   Bareword in require maps to empty filename
1018
1019       ·   Bareword in require maps to disallowed filename "%s"
1020
1021       ·   Bareword in require must not start with a double-colon: "%s"
1022
1023       ·   %s: command not found
1024
1025           (A) You've accidentally run your script through bash or another
1026           shell instead of Perl.  Check the "#!" line, or manually feed your
1027           script into Perl yourself.  The "#!" line at the top of your file
1028           could look like:
1029
1030             #!/usr/bin/perl
1031
1032       ·   %s: command not found: %s
1033
1034           (A) You've accidentally run your script through zsh or another
1035           shell instead of Perl.  Check the "#!" line, or manually feed your
1036           script into Perl yourself.  The "#!" line at the top of your file
1037           could look like:
1038
1039             #!/usr/bin/perl
1040
1041       ·   The experimental declared_refs feature is not enabled
1042
1043           (F) To declare references to variables, as in "my \%x", you must
1044           first enable the feature:
1045
1046               no warnings "experimental::declared_refs";
1047               use feature "declared_refs";
1048
1049           See "Declaring a reference to a variable".
1050
1051       ·   Illegal character following sigil in a subroutine signature
1052
1053       ·   Indentation on line %d of here-doc doesn't match delimiter
1054
1055       ·   Infinite recursion via empty pattern.
1056
1057           Using the empty pattern (which re-executes the last successfully-
1058           matched pattern) inside a code block in another regex, as in "/(?{
1059           s!!new! })/", has always previously yielded a segfault.  It now
1060           produces this error.
1061
1062       ·   Malformed UTF-8 string in "%s"
1063
1064       ·   Multiple slurpy parameters not allowed
1065
1066       ·   '#' not allowed immediately following a sigil in a subroutine
1067           signature
1068
1069       ·   panic: unknown OA_*: %x
1070
1071       ·   Unescaped left brace in regex is illegal here
1072
1073           Unescaped left braces are now illegal in some contexts in regular
1074           expression patterns.  In other contexts, they are still just
1075           deprecated; they will be illegal in Perl 5.30.
1076
1077       ·   Version control conflict marker
1078
1079           (F) The parser found a line starting with "<<<<<<<", ">>>>>>>", or
1080           "=======".  These may be left by a version control system to mark
1081           conflicts after a failed merge operation.
1082
1083       New Warnings
1084
1085       ·   Can't determine class of operator %s, assuming "BASEOP"
1086
1087       ·   Declaring references is experimental
1088
1089           (S experimental::declared_refs) This warning is emitted if you use
1090           a reference constructor on the right-hand side of "my()",
1091           "state()", "our()", or "local()".  Simply suppress the warning if
1092           you want to use the feature, but know that in doing so you are
1093           taking the risk of using an experimental feature which may change
1094           or be removed in a future Perl version:
1095
1096               no warnings "experimental::declared_refs";
1097               use feature "declared_refs";
1098               $fooref = my \$foo;
1099
1100           See "Declaring a reference to a variable".
1101
1102       ·   do "%s" failed, '.' is no longer in @INC
1103
1104           Since "." is now removed from @INC by default, "do" will now
1105           trigger a warning recommending to fix the "do" statement.
1106
1107       ·   "File::Glob::glob()" will disappear in perl 5.30. Use
1108           "File::Glob::bsd_glob()" instead.
1109
1110       ·   Unescaped literal '%c' in regex; marked by <-- HERE in m/%s/
1111
1112       ·   Use of unassigned code point or non-standalone grapheme for a
1113           delimiter will be a fatal error starting in Perl 5.30
1114
1115           See "Deprecations"
1116
1117   Changes to Existing Diagnostics
1118       ·   When a "require" fails, we now do not provide @INC when the
1119           "require" is for a file instead of a module.
1120
1121       ·   When @INC is not scanned for a "require" call, we no longer display
1122           @INC to avoid confusion.
1123
1124       ·   Attribute "locked" is deprecated, and will disappear in Perl 5.28
1125
1126           This existing warning has had the and will disappear text added in
1127           this release.
1128
1129       ·   Attribute "unique" is deprecated, and will disappear in Perl 5.28
1130
1131           This existing warning has had the and will disappear text added in
1132           this release.
1133
1134       ·   Calling POSIX::%s() is deprecated
1135
1136           This warning has been removed, as the deprecated functions have
1137           been removed from POSIX.
1138
1139       ·   Constants from lexical variables potentially modified elsewhere are
1140           deprecated. This will not be allowed in Perl 5.32
1141
1142           This existing warning has had the this will not be allowed text
1143           added in this release.
1144
1145       ·   Deprecated use of "my()" in false conditional. This will be a fatal
1146           error in Perl 5.30
1147
1148           This existing warning has had the this will be a fatal error text
1149           added in this release.
1150
1151       ·   "dump()" better written as "CORE::dump()". "dump()" will no longer
1152           be available in Perl 5.30
1153
1154           This existing warning has had the no longer be available text added
1155           in this release.
1156
1157       ·   Experimental %s on scalar is now forbidden
1158
1159           This message is now followed by more helpful text.  [perl #127976]
1160           <https://rt.perl.org/Public/Bug/Display.html?id=127976>
1161
1162       ·   Experimental "%s" subs not enabled
1163
1164           This warning was been removed, as lexical subs are no longer
1165           experimental.
1166
1167       ·   Having more than one /%c regexp modifier is deprecated
1168
1169           This deprecation warning has been removed, since "/xx" now has a
1170           new meaning.
1171
1172       ·   %s() is deprecated on ":utf8" handles. This will be a fatal error
1173           in Perl 5.30 .
1174
1175           where "%s" is one of "sysread", "recv", "syswrite", or "send".
1176
1177           This existing warning has had the this will be a fatal error text
1178           added in this release.
1179
1180           This warning is now enabled by default, as all "deprecated"
1181           category warnings should be.
1182
1183       ·   $* is no longer supported. Its use will be fatal in Perl 5.30
1184
1185           This existing warning has had the its use will be fatal text added
1186           in this release.
1187
1188       ·   $# is no longer supported. Its use will be fatal in Perl 5.30
1189
1190           This existing warning has had the its use will be fatal text added
1191           in this release.
1192
1193       ·   Malformed UTF-8 character%s
1194
1195           Details as to the exact problem have been added at the end of this
1196           message
1197
1198       ·   Missing or undefined argument to %s
1199
1200           This warning used to warn about "require", even if it was actually
1201           "do" which being executed. It now gets the operation name right.
1202
1203       ·   NO-BREAK SPACE in a charnames alias definition is deprecated
1204
1205           This warning has been removed as the behavior is now an error.
1206
1207       ·   Odd name/value argument for subroutine '%s'
1208
1209           This warning now includes the name of the offending subroutine.
1210
1211       ·   Opening dirhandle %s also as a file. This will be a fatal error in
1212           Perl 5.28
1213
1214           This existing warning has had the this will be a fatal error text
1215           added in this release.
1216
1217       ·   Opening filehandle %s also as a directory. This will be a fatal
1218           error in Perl 5.28
1219
1220           This existing warning has had the this will be a fatal error text
1221           added in this release.
1222
1223       ·   panic: ck_split, type=%u
1224
1225           panic: pp_split, pm=%p, s=%p
1226
1227           These panic errors have been removed.
1228
1229       ·   Passing malformed UTF-8 to "%s" is deprecated
1230
1231           This warning has been changed to the fatal Malformed UTF-8 string
1232           in "%s"
1233
1234       ·   Setting $/ to a reference to %s as a form of slurp is deprecated,
1235           treating as undef. This will be fatal in Perl 5.28
1236
1237           This existing warning has had the this will be fatal text added in
1238           this release.
1239
1240       ·   "${^ENCODING}" is no longer supported. Its use will be fatal in
1241           Perl 5.28
1242
1243           This warning used to be: "Setting "${^ENCODING}" is deprecated".
1244
1245           The special action of the variable "${^ENCODING}" was formerly used
1246           to implement the "encoding" pragma. As of Perl 5.26, rather than
1247           being deprecated, assigning to this variable now has no effect
1248           except to issue the warning.
1249
1250       ·   Too few arguments for subroutine '%s'
1251
1252           This warning now includes the name of the offending subroutine.
1253
1254       ·   Too many arguments for subroutine '%s'
1255
1256           This warning now includes the name of the offending subroutine.
1257
1258       ·   Unescaped left brace in regex is deprecated here (and will be fatal
1259           in Perl 5.30), passed through in regex; marked by <-- HERE in m/%s/
1260
1261           This existing warning has had the here (and will be fatal...) text
1262           added in this release.
1263
1264       ·   Unknown charname '' is deprecated. Its use will be fatal in Perl
1265           5.28
1266
1267           This existing warning has had the its use will be fatal text added
1268           in this release.
1269
1270       ·   Use of bare << to mean <<"" is deprecated. Its use will be fatal in
1271           Perl 5.28
1272
1273           This existing warning has had the its use will be fatal text added
1274           in this release.
1275
1276       ·   Use of code point 0x%s is deprecated; the permissible max is 0x%s.
1277           This will be fatal in Perl 5.28
1278
1279           This existing warning has had the this will be fatal text added in
1280           this release.
1281
1282       ·   Use of comma-less variable list is deprecated. Its use will be
1283           fatal in Perl 5.28
1284
1285           This existing warning has had the its use will be fatal text added
1286           in this release.
1287
1288       ·   Use of inherited "AUTOLOAD" for non-method %s() is deprecated. This
1289           will be fatal in Perl 5.28
1290
1291           This existing warning has had the this will be fatal text added in
1292           this release.
1293
1294       ·   Use of strings with code points over 0xFF as arguments to %s
1295           operator is deprecated. This will be a fatal error in Perl 5.28
1296
1297           This existing warning has had the this will be a fatal error text
1298           added in this release.
1299

Utility Changes

1301   c2ph and pstruct
1302       ·   These old utilities have long since superceded by h2xs, and are now
1303           gone from the distribution.
1304
1305   Porting/pod_lib.pl
1306       ·   Removed spurious executable bit.
1307
1308       ·   Account for the possibility of DOS file endings.
1309
1310   Porting/sync-with-cpan
1311       ·   Many improvements.
1312
1313   perf/benchmarks
1314       ·   Tidy file, rename some symbols.
1315
1316   Porting/checkAUTHORS.pl
1317       ·   Replace obscure character range with "\w".
1318
1319   t/porting/regen.t
1320       ·   Try to be more helpful when tests fail.
1321
1322   utils/h2xs.PL
1323       ·   Avoid infinite loop for enums.
1324
1325   perlbug
1326       ·   Long lines in the message body are now wrapped at 900 characters,
1327           to stay well within the 1000-character limit imposed by SMTP mail
1328           transfer agents.  This is particularly likely to be important for
1329           the list of arguments to Configure, which can readily exceed the
1330           limit if, for example, it names several non-default installation
1331           paths.  This change also adds the first unit tests for perlbug.
1332           [perl #128020]
1333           <https://rt.perl.org/Public/Bug/Display.html?id=128020>
1334

Configuration and Compilation

1336       ·   "-Ddefault_inc_excludes_dot" has added, and enabled by default.
1337
1338       ·   The "dtrace" build process has further changes [perl #130108]
1339           <https://rt.perl.org/Public/Bug/Display.html?id=130108>:
1340
1341           ·   If the "-xnolibs" is available, use that so a dtrace perl can
1342               be built within a FreeBSD jail.
1343
1344           ·   On systems that build a dtrace object file (FreeBSD, Solaris,
1345               and SystemTap's dtrace emulation), copy the input objects to a
1346               separate directory and process them there, and use those
1347               objects in the link, since "dtrace -G" also modifies these
1348               objects.
1349
1350           ·   Add libelf to the build on FreeBSD 10.x, since dtrace adds
1351               references to libelf symbols.
1352
1353           ·   Generate a dummy dtrace_main.o if "dtrace -G" fails to build
1354               it.  A default build on Solaris generates probes from the
1355               unused inline functions, while they don't on FreeBSD, which
1356               causes "dtrace -G" to fail.
1357
1358       ·   You can now disable perl's use of the "PERL_HASH_SEED" and
1359           "PERL_PERTURB_KEYS" environment variables by configuring perl with
1360           "-Accflags=NO_PERL_HASH_ENV".
1361
1362       ·   You can now disable perl's use of the "PERL_HASH_SEED_DEBUG"
1363           environment variable by configuring perl with
1364           "-Accflags=-DNO_PERL_HASH_SEED_DEBUG".
1365
1366       ·   Configure now zeroes out the alignment bytes when calculating the
1367           bytes for 80-bit "NaN" and "Inf" to make builds more reproducible.
1368           [perl #130133]
1369           <https://rt.perl.org/Public/Bug/Display.html?id=130133>
1370
1371       ·   Since v5.18, for testing purposes we have included support for
1372           building perl with a variety of non-standard, and non-recommended
1373           hash functions.  Since we do not recommend the use of these
1374           functions, we have removed them and their corresponding build
1375           options.  Specifically this includes the following build options:
1376
1377               PERL_HASH_FUNC_SDBM
1378               PERL_HASH_FUNC_DJB2
1379               PERL_HASH_FUNC_SUPERFAST
1380               PERL_HASH_FUNC_MURMUR3
1381               PERL_HASH_FUNC_ONE_AT_A_TIME
1382               PERL_HASH_FUNC_ONE_AT_A_TIME_OLD
1383               PERL_HASH_FUNC_MURMUR_HASH_64A
1384               PERL_HASH_FUNC_MURMUR_HASH_64B
1385
1386       ·   Remove "Warning: perl appears in your path"
1387
1388           This install warning is more or less obsolete, since most platforms
1389           already will have a /usr/bin/perl or similar provided by the OS.
1390
1391       ·   Reduce verbosity of "make install.man"
1392
1393           Previously, two progress messages were emitted for each manpage:
1394           one by installman itself, and one by the function in install_lib.pl
1395           that it calls to actually install the file.  Disabling the second
1396           of those in each case saves over 750 lines of unhelpful output.
1397
1398       ·   Cleanup for "clang -Weverything" support.  [perl #129961]
1399           <https://rt.perl.org/Public/Bug/Display.html?id=129961>
1400
1401       ·   Configure: signbit scan was assuming too much, stop assuming
1402           negative 0.
1403
1404       ·   Various compiler warnings have been silenced.
1405
1406       ·   Several smaller changes have been made to remove impediments to
1407           compiling under C++11.
1408
1409       ·   Builds using "USE_PAD_RESET" now work again; this configuration had
1410           bit-rotted.
1411
1412       ·   A probe for "gai_strerror" was added to Configure that checks if
1413           the "gai_strerror()" routine is available and can be used to
1414           translate error codes returned by "getaddrinfo()" into human
1415           readable strings.
1416
1417       ·   Configure now aborts if both "-Duselongdouble" and "-Dusequadmath"
1418           are requested.  [perl #126203]
1419           <https://rt.perl.org/Public/Bug/Display.html?id=126203>
1420
1421       ·   Fixed a bug in which Configure could append "-quadmath" to the
1422           archname even if it was already present.  [perl #128538]
1423           <https://rt.perl.org/Public/Bug/Display.html?id=128538>
1424
1425       ·   Clang builds with "-DPERL_GLOBAL_STRUCT" or
1426           "-DPERL_GLOBAL_STRUCT_PRIVATE" have been fixed (by disabling Thread
1427           Safety Analysis for these configurations).
1428
1429       ·   make_ext.pl no longer updates a module's pm_to_blib file when no
1430           files require updates.  This could cause dependencies, perlmain.c
1431           in particular, to be rebuilt unnecessarily.  [perl #126710]
1432           <https://rt.perl.org/Public/Bug/Display.html?id=126710>
1433
1434       ·   The output of "perl -V" has been reformatted so that each
1435           configuration and compile-time option is now listed one per line,
1436           to improve readability.
1437
1438       ·   Configure now builds "miniperl" and "generate_uudmap" if you invoke
1439           it with "-Dusecrosscompiler" but not "-Dtargethost=somehost".  This
1440           means you can supply your target platform "config.sh", generate the
1441           headers and proceed to build your cross-target perl.  [perl
1442           #127234] <https://rt.perl.org/Public/Bug/Display.html?id=127234>
1443
1444       ·   Perl built with "-Accflags=-DPERL_TRACE_OPS" now only dumps the
1445           operator counts when the environment variable "PERL_TRACE_OPS" is
1446           set to a non-zero integer.  This allows "make test" to pass on such
1447           a build.
1448
1449       ·   When building with GCC 6 and link-time optimization (the "-flto"
1450           option to "gcc"), Configure was treating all probed symbols as
1451           present on the system, regardless of whether they actually exist.
1452           This has been fixed.  [perl #128131]
1453           <https://rt.perl.org/Public/Bug/Display.html?id=128131>
1454
1455       ·   The t/test.pl library is used for internal testing of Perl itself,
1456           and also copied by several CPAN modules.  Some of those modules
1457           must work on older versions of Perl, so t/test.pl must in turn
1458           avoid newer Perl features.  Compatibility with Perl 5.8 was
1459           inadvertently removed some time ago; it has now been restored.
1460           [perl #128052]
1461           <https://rt.perl.org/Public/Bug/Display.html?id=128052>
1462
1463       ·   The build process no longer emits an extra blank line before
1464           building each "simple" extension (those with only *.pm and *.pod
1465           files).
1466

Testing

1468       Tests were added and changed to reflect the other additions and changes
1469       in this release.  Furthermore, these substantive changes were made:
1470
1471       ·   A new test script, comp/parser_run.t, has been added that is like
1472           comp/parser.t but with test.pl included so that "runperl()" and the
1473           like are available for use.
1474
1475       ·   Tests for locales were erroneously using locales incompatible with
1476           Perl.
1477
1478       ·   Some parts of the test suite that try to exhaustively test edge
1479           cases in the regex implementation have been restricted to running
1480           for a maximum of five minutes.  On slow systems they could
1481           otherwise take several hours, without significantly improving our
1482           understanding of the correctness of the code under test.
1483
1484       ·   A new internal facility allows analysing the time taken by the
1485           individual tests in Perl's own test suite; see
1486           Porting/harness-timer-report.pl.
1487
1488       ·   t/re/regexp_nonull.t has been added to test that the regular
1489           expression engine can handle scalars that do not have a null byte
1490           just past the end of the string.
1491
1492       ·   A new test script, t/op/decl-refs.t, has been added to test the new
1493           feature "Declaring a reference to a variable".
1494
1495       ·   A new test script, t/re/keep_tabs.t has been added to contain tests
1496           where "\t" characters should not be expanded into spaces.
1497
1498       ·   A new test script, t/re/anyof.t, has been added to test that the
1499           ANYOF nodes generated by bracketed character classes are as
1500           expected.
1501
1502       ·   There is now more extensive testing of the Unicode-related API
1503           macros and functions.
1504
1505       ·   Several of the longer running API test files have been split into
1506           multiple test files so that they can be run in parallel.
1507
1508       ·   t/harness now tries really hard not to run tests which are located
1509           outside of the Perl source tree.  [perl #124050]
1510           <https://rt.perl.org/Public/Bug/Display.html?id=124050>
1511
1512       ·   Prevent debugger tests (lib/perl5db.t) from failing due to the
1513           contents of $ENV{PERLDB_OPTS}.  [perl #130445]
1514           <https://rt.perl.org/Public/Bug/Display.html?id=130445>
1515

Platform Support

1517   New Platforms
1518       NetBSD/VAX
1519           Perl now compiles under NetBSD on VAX machines.  However, it's not
1520           possible for that platform to implement floating-point infinities
1521           and NaNs compatible with most modern systems, which implement the
1522           IEEE-754 floating point standard.  The hexadecimal floating point
1523           ("0x...p[+-]n" literals, "printf %a") is not implemented, either.
1524           The "make test" passes 98% of tests.
1525
1526           ·   Test fixes and minor updates.
1527
1528           ·   Account for lack of "inf", "nan", and "-0.0" support.
1529
1530   Platform-Specific Notes
1531       Darwin
1532           ·   Don't treat "-Dprefix=/usr" as special: instead require an
1533               extra option "-Ddarwin_distribution" to produce the same
1534               results.
1535
1536           ·   OS X El Capitan doesn't implement the "clock_gettime()" or
1537               "clock_getres()" APIs; emulate them as necessary.
1538
1539           ·   Deprecated syscall(2) on macOS 10.12.
1540
1541       EBCDIC
1542           Several tests have been updated to work (or be skipped) on EBCDIC
1543           platforms.
1544
1545       HP-UX
1546           The Net::Ping UDP test is now skipped on HP-UX.
1547
1548       Hurd
1549           The hints for Hurd have been improved, enabling malloc wrap and
1550           reporting the GNU libc used (previously it was an empty string when
1551           reported).
1552
1553       VAX VAX floating point formats are now supported on NetBSD.
1554
1555       VMS
1556           ·   The path separator for the "PERL5LIB" and "PERLLIB" environment
1557               entries is now a colon (":") when running under a Unix shell.
1558               There is no change when running under DCL (it's still "|").
1559
1560           ·   configure.com now recognizes the VSI-branded C compiler and no
1561               longer recognizes the "DEC"-branded C compiler (as there hasn't
1562               been such a thing for 15 or more years).
1563
1564       Windows
1565           ·   Support for compiling perl on Windows using Microsoft Visual
1566               Studio 2015 (containing Visual C++ 14.0) has been added.
1567
1568               This version of VC++ includes a completely rewritten C run-time
1569               library, some of the changes in which mean that work done to
1570               resolve a socket "close()" bug in perl #120091 and perl #118059
1571               is not workable in its current state with this version of VC++.
1572               Therefore, we have effectively reverted that bug fix for VS2015
1573               onwards on the basis that being able to build with VS2015
1574               onwards is more important than keeping the bug fix.  We may
1575               revisit this in the future to attempt to fix the bug again in a
1576               way that is compatible with VS2015.
1577
1578               These changes do not affect compilation with GCC or with Visual
1579               Studio versions up to and including VS2013, i.e., the bug fix
1580               is retained (unchanged) for those compilers.
1581
1582               Note that you may experience compatibility problems if you mix
1583               a perl built with GCC or VS <= VS2013 with XS modules built
1584               with VS2015, or if you mix a perl built with VS2015 with XS
1585               modules built with GCC or VS <= VS2013.  Some incompatibility
1586               may arise because of the bug fix that has been reverted for
1587               VS2015 builds of perl, but there may well be incompatibility
1588               anyway because of the rewritten CRT in VS2015 (e.g., see
1589               discussion at <http://stackoverflow.com/questions/30412951>).
1590
1591           ·   It now automatically detects GCC versus Visual C and sets the
1592               VC version number on Win32.
1593
1594       Linux
1595           Drop support for Linux a.out executable format. Linux has used ELF
1596           for over twenty years.
1597
1598       OpenBSD 6
1599           OpenBSD 6 still does not support returning "pid", "gid", or "uid"
1600           with "SA_SIGINFO".  Make sure to account for it.
1601
1602       FreeBSD
1603           t/uni/overload.t: Skip hanging test on FreeBSD.
1604
1605       DragonFly BSD
1606           DragonFly BSD now has support for "setproctitle()".  [perl #130068]
1607           <https://rt.perl.org/Public/Bug/Display.html?id=130068>.
1608

Internal Changes

1610       ·   A new API function "sv_setpv_bufsize()" allows simultaneously
1611           setting the length and the allocated size of the buffer in an "SV",
1612           growing the buffer if necessary.
1613
1614       ·   A new API macro "SvPVCLEAR()" sets its "SV" argument to an empty
1615           string, like Perl-space "$x = ''", but with several optimisations.
1616
1617       ·   Several new macros and functions for dealing with Unicode and
1618           UTF-8-encoded strings have been added to the API, as well as some
1619           changes in the functionality of existing functions (see "Unicode
1620           Support" in perlapi for more details):
1621
1622           ·   New versions of the API macros like "isALPHA_utf8" and
1623               "toLOWER_utf8" have been added, each with the suffix "_safe",
1624               like "isSPACE_utf8_safe".  These take an extra parameter,
1625               giving an upper limit of how far into the string it is safe to
1626               read.  Using the old versions could cause attempts to read
1627               beyond the end of the input buffer if the UTF-8 is not well-
1628               formed, and their use now raises a deprecation warning.
1629               Details are at "Character classification" in perlapi.
1630
1631           ·   Macros like "isALPHA_utf8" and "toLOWER_utf8" now die if they
1632               detect that their input UTF-8 is malformed.  A deprecation
1633               warning had been issued since Perl 5.18.
1634
1635           ·   Several new macros for analysing the validity of utf8
1636               sequences. These are:
1637
1638               "UTF8_GOT_ABOVE_31_BIT" "UTF8_GOT_CONTINUATION"
1639               "UTF8_GOT_EMPTY" "UTF8_GOT_LONG" "UTF8_GOT_NONCHAR"
1640               "UTF8_GOT_NON_CONTINUATION" "UTF8_GOT_OVERFLOW"
1641               "UTF8_GOT_SHORT" "UTF8_GOT_SUPER" "UTF8_GOT_SURROGATE"
1642               "UTF8_IS_INVARIANT" "UTF8_IS_NONCHAR" "UTF8_IS_SUPER"
1643               "UTF8_IS_SURROGATE" "UVCHR_IS_INVARIANT" "isUTF8_CHAR_flags"
1644               "isSTRICT_UTF8_CHAR" "isC9_STRICT_UTF8_CHAR"
1645
1646           ·   Functions that are all extensions of the "is_utf8_string_*()"
1647               functions, that apply various restrictions to the UTF-8
1648               recognized as valid:
1649
1650               "is_strict_utf8_string", "is_strict_utf8_string_loc",
1651               "is_strict_utf8_string_loclen",
1652
1653               "is_c9strict_utf8_string", "is_c9strict_utf8_string_loc",
1654               "is_c9strict_utf8_string_loclen",
1655
1656               "is_utf8_string_flags", "is_utf8_string_loc_flags",
1657               "is_utf8_string_loclen_flags",
1658
1659               "is_utf8_fixed_width_buf_flags",
1660               "is_utf8_fixed_width_buf_loc_flags",
1661               "is_utf8_fixed_width_buf_loclen_flags".
1662
1663               "is_utf8_invariant_string".  "is_utf8_valid_partial_char".
1664               "is_utf8_valid_partial_char_flags".
1665
1666           ·   The functions "utf8n_to_uvchr" and its derivatives have had
1667               several changes of behaviour.
1668
1669               Calling them, while passing a string length of 0 is now
1670               asserted against in DEBUGGING builds, and otherwise, returns
1671               the Unicode REPLACEMENT CHARACTER.   If you have nothing to
1672               decode, you shouldn't call the decode function.
1673
1674               They now return the Unicode REPLACEMENT CHARACTER if called
1675               with UTF-8 that has the overlong malformation and that
1676               malformation is allowed by the input parameters.  This
1677               malformation is where the UTF-8 looks valid syntactically, but
1678               there is a shorter sequence that yields the same code point.
1679               This has been forbidden since Unicode version 3.1.
1680
1681               They now accept an input flag to allow the overflow
1682               malformation.  This malformation is when the UTF-8 may be
1683               syntactically valid, but the code point it represents is not
1684               capable of being represented in the word length on the
1685               platform.  What "allowed" means, in this case, is that the
1686               function doesn't return an error, and it advances the parse
1687               pointer to beyond the UTF-8 in question, but it returns the
1688               Unicode REPLACEMENT CHARACTER as the value of the code point
1689               (since the real value is not representable).
1690
1691               They no longer abandon searching for other malformations when
1692               the first one is encountered.  A call to one of these functions
1693               thus can generate multiple diagnostics, instead of just one.
1694
1695           ·   "valid_utf8_to_uvchr()" has been added to the API (although it
1696               was present in core earlier). Like "utf8_to_uvchr_buf()", but
1697               assumes that the next character is well-formed.  Use with
1698               caution.
1699
1700           ·   A new function, "utf8n_to_uvchr_error", has been added for use
1701               by modules that need to know the details of UTF-8 malformations
1702               beyond pass/fail.  Previously, the only ways to know why a
1703               sequence was ill-formed was to capture and parse the generated
1704               diagnostics or to do your own analysis.
1705
1706           ·   There is now a safer version of utf8_hop(), called
1707               "utf8_hop_safe()".  Unlike utf8_hop(), utf8_hop_safe() won't
1708               navigate before the beginning or after the end of the supplied
1709               buffer.
1710
1711           ·   Two new functions, "utf8_hop_forward()" and "utf8_hop_back()"
1712               are similar to "utf8_hop_safe()" but are for when you know
1713               which direction you wish to travel.
1714
1715           ·   Two new macros which return useful utf8 byte sequences:
1716
1717               "BOM_UTF8"
1718
1719               "REPLACEMENT_CHARACTER_UTF8"
1720
1721       ·   Perl is now built with the "PERL_OP_PARENT" compiler define enabled
1722           by default.  To disable it, use the "PERL_NO_OP_PARENT" compiler
1723           define.  This flag alters how the "op_sibling" field is used in
1724           "OP" structures, and has been available optionally since perl 5.22.
1725
1726           See "Internal Changes" in perl5220delta for more details of what
1727           this build option does.
1728
1729       ·   Three new ops, "OP_ARGELEM", "OP_ARGDEFELEM", and "OP_ARGCHECK"
1730           have been added.  These are intended principally to implement the
1731           individual elements of a subroutine signature, plus any overall
1732           checking required.
1733
1734       ·   The "OP_PUSHRE" op has been eliminated and the "OP_SPLIT" op has
1735           been changed from class "LISTOP" to "PMOP".
1736
1737           Formerly the first child of a split would be a "pushre", which
1738           would have the "split"'s regex attached to it. Now the regex is
1739           attached directly to the "split" op, and the "pushre" has been
1740           eliminated.
1741
1742       ·   The "op_class()" API function has been added.  This is like the
1743           existing "OP_CLASS()" macro, but can more accurately determine what
1744           struct an op has been allocated as.  For example "OP_CLASS()" might
1745           return "OA_BASEOP_OR_UNOP" indicating that ops of this type are
1746           usually allocated as an "OP" or "UNOP"; while "op_class()" will
1747           return "OPclass_BASEOP" or "OPclass_UNOP" as appropriate.
1748
1749       ·   All parts of the internals now agree that the "sassign" op is a
1750           "BINOP"; previously it was listed as a "BASEOP" in regen/opcodes,
1751           which meant that several parts of the internals had to be special-
1752           cased to accommodate it.  This oddity's original motivation was to
1753           handle code like "$x ||= 1"; that is now handled in a simpler way.
1754
1755       ·   The output format of the "op_dump()" function (as used by "perl
1756           -Dx") has changed: it now displays an "ASCII-art" tree structure,
1757           and shows more low-level details about each op, such as its address
1758           and class.
1759
1760       ·   The "PADOFFSET" type has changed from being unsigned to signed, and
1761           several pad-related variables such as "PL_padix" have changed from
1762           being of type "I32" to type "PADOFFSET".
1763
1764       ·   The "DEBUGGING"-mode output for regex compilation and execution has
1765           been enhanced.
1766
1767       ·   Several obscure SV flags have been eliminated, sometimes along with
1768           the macros which manipulate them: "SVpbm_VALID", "SVpbm_TAIL",
1769           "SvTAIL_on", "SvTAIL_off", "SVrepl_EVAL", "SvEVALED".
1770
1771       ·   An OP "op_private" flag has been eliminated: "OPpRUNTIME". This
1772           used to often get set on "PMOP" ops, but had become meaningless
1773           over time.
1774

Selected Bug Fixes

1776       ·   Perl no longer panics when switching into some locales on machines
1777           with buggy "strxfrm()" implementations in their libc.  [perl
1778           #121734] <https://rt.perl.org/Public/Bug/Display.html?id=121734>
1779
1780       ·   " $-{$name} " would leak an "AV" on each access if the regular
1781           expression had no named captures.  The same applies to access to
1782           any hash tied with Tie::Hash::NamedCapture and "all => 1".  [perl
1783           #130822] <https://rt.perl.org/Public/Bug/Display.html?id=130822>
1784
1785       ·   Attempting to use the deprecated variable $# as the object in an
1786           indirect object method call could cause a heap use after free or
1787           buffer overflow.  [perl #129274]
1788           <https://rt.perl.org/Public/Bug/Display.html?id=129274>
1789
1790       ·   When checking for an indirect object method call, in some rare
1791           cases the parser could reallocate the line buffer but then continue
1792           to use pointers to the old buffer.  [perl #129190]
1793           <https://rt.perl.org/Public/Bug/Display.html?id=129190>
1794
1795       ·   Supplying a glob as the format argument to "formline" would cause
1796           an assertion failure.  [perl #130722]
1797           <https://rt.perl.org/Public/Bug/Display.html?id=130722>
1798
1799       ·   Code like " $value1 =~ qr/.../ ~~ $value2 " would have the match
1800           converted into a "qr//" operator, leaving extra elements on the
1801           stack to confuse any surrounding expression.  [perl #130705]
1802           <https://rt.perl.org/Public/Bug/Display.html?id=130705>
1803
1804       ·   Since v5.24 in some obscure cases, a regex which included code
1805           blocks from multiple sources (e.g., via embedded via "qr//"
1806           objects) could end up with the wrong current pad and crash or give
1807           weird results.  [perl #129881]
1808           <https://rt.perl.org/Public/Bug/Display.html?id=129881>
1809
1810       ·   Occasionally "local()"s in a code block within a patterns weren't
1811           being undone when the pattern matching backtracked over the code
1812           block.  [perl #126697]
1813           <https://rt.perl.org/Public/Bug/Display.html?id=126697>
1814
1815       ·   Using "substr()" to modify a magic variable could access freed
1816           memory in some cases.  [perl #129340]
1817           <https://rt.perl.org/Public/Bug/Display.html?id=129340>
1818
1819       ·   Under "use utf8", the entire source code is now checked for being
1820           UTF-8 well formed, not just quoted strings as before.  [perl
1821           #126310] <https://rt.perl.org/Public/Bug/Display.html?id=126310>.
1822
1823       ·   The range operator ".." on strings now handles its arguments
1824           correctly when in the scope of the "unicode_strings" feature.  The
1825           previous behaviour was sufficiently unexpected that we believe no
1826           correct program could have made use of it.
1827
1828       ·   The "split" operator did not ensure enough space was allocated for
1829           its return value in scalar context.  It could then write a single
1830           pointer immediately beyond the end of the memory block allocated
1831           for the stack.  [perl #130262]
1832           <https://rt.perl.org/Public/Bug/Display.html?id=130262>
1833
1834       ·   Using a large code point with the "W" pack template character with
1835           the current output position aligned at just the right point could
1836           cause a write of a single zero byte immediately beyond the end of
1837           an allocated buffer.  [perl #129149]
1838           <https://rt.perl.org/Public/Bug/Display.html?id=129149>
1839
1840       ·   Supplying a format's picture argument as part of the format
1841           argument list where the picture specifies modifying the argument
1842           could cause an access to the new freed compiled form.at.  [perl
1843           #129125] <https://rt.perl.org/Public/Bug/Display.html?id=129125>
1844
1845       ·   The sort() operator's built-in numeric comparison function didn't
1846           handle large integers that weren't exactly representable by a
1847           double.  This now uses the same code used to implement the "<=>"
1848           operator.  [perl #130335]
1849           <https://rt.perl.org/Public/Bug/Display.html?id=130335>
1850
1851       ·   Fix issues with "/(?{ ... <<EOF })/" that broke Method::Signatures.
1852           [perl #130398]
1853           <https://rt.perl.org/Public/Bug/Display.html?id=130398>
1854
1855       ·   Fixed an assertion failure with "chop" and "chomp", which could be
1856           triggered by "chop(@x =~ tr/1/1/)".  [perl #130198]
1857           <https://rt.perl.org/Public/Bug/Display.html?id=130198>.
1858
1859       ·   Fixed a comment skipping error in patterns under "/x"; it could
1860           stop skipping a byte early, which could be in the middle of a UTF-8
1861           character.  [perl #130495]
1862           <https://rt.perl.org/Public/Bug/Display.html?id=130495>.
1863
1864       ·   perldb now ignores /dev/tty on non-Unix systems.  [perl #113960]
1865           <https://rt.perl.org/Public/Bug/Display.html?id=113960>;
1866
1867       ·   Fix assertion failure for "{}->$x" when $x isn't defined.  [perl
1868           #130496] <https://rt.perl.org/Public/Bug/Display.html?id=130496>.
1869
1870       ·   Fix an assertion error which could be triggered when a lookahead
1871           string in patterns exceeded a minimum length.  [perl #130522]
1872           <https://rt.perl.org/Public/Bug/Display.html?id=130522>.
1873
1874       ·   Only warn once per literal number about a misplaced "_".  [perl
1875           #70878] <https://rt.perl.org/Public/Bug/Display.html?id=70878>.
1876
1877       ·   The "tr///" parse code could be looking at uninitialized data after
1878           a perse error.  [perl #129342]
1879           <https://rt.perl.org/Public/Bug/Display.html?id=129342>.
1880
1881       ·   In a pattern match, a back-reference ("\1") to an unmatched capture
1882           could read back beyond the start of the string being matched.
1883           [perl #129377]
1884           <https://rt.perl.org/Public/Bug/Display.html?id=129377>.
1885
1886       ·   "use re 'strict'" is supposed to warn if you use a range (such as
1887           "/(?[ [ X-Y ] ])/") whose start and end digit aren't from the same
1888           group of 10.  It didn't do that for five groups of mathematical
1889           digits starting at "U+1D7E".
1890
1891       ·   A sub containing a "forward" declaration with the same name (e.g.,
1892           "sub c { sub c; }") could sometimes crash or loop infinitely.
1893           [perl #129090]
1894           <https://rt.perl.org/Public/Bug/Display.html?id=129090>
1895
1896       ·   A crash in executing a regex with a non-anchored UTF-8 substring
1897           against a target string that also used UTF-8 has been fixed.  [perl
1898           #129350] <https://rt.perl.org/Public/Bug/Display.html?id=129350>
1899
1900       ·   Previously, a shebang line like "#!perl -i u" could be erroneously
1901           interpreted as requesting the "-u" option.  This has been fixed.
1902           [perl #129336]
1903           <https://rt.perl.org/Public/Bug/Display.html?id=129336>
1904
1905       ·   The regex engine was previously producing incorrect results in some
1906           rare situations when backtracking past an alternation that matches
1907           only one thing; this showed up as capture buffers ($1, $2, etc.)
1908           erroneously containing data from regex execution paths that weren't
1909           actually executed for the final match.  [perl #129897]
1910           <https://rt.perl.org/Public/Bug/Display.html?id=129897>
1911
1912       ·   Certain regexes making use of the experimental "regex_sets" feature
1913           could trigger an assertion failure.  This has been fixed.  [perl
1914           #129322] <https://rt.perl.org/Public/Bug/Display.html?id=129322>
1915
1916       ·   Invalid assignments to a reference constructor (e.g., "\eval=time")
1917           could sometimes crash in addition to giving a syntax error.  [perl
1918           #125679] <https://rt.perl.org/Public/Bug/Display.html?id=125679>
1919
1920       ·   The parser could sometimes crash if a bareword came after
1921           "evalbytes".  [perl #129196]
1922           <https://rt.perl.org/Public/Bug/Display.html?id=129196>
1923
1924       ·   Autoloading via a method call would warn erroneously ("Use of
1925           inherited AUTOLOAD for non-method") if there was a stub present in
1926           the package into which the invocant had been blessed.  The warning
1927           is no longer emitted in such circumstances.  [perl #47047]
1928           <https://rt.perl.org/Public/Bug/Display.html?id=47047>
1929
1930       ·   The use of "splice" on arrays with non-existent elements could
1931           cause other operators to crash.  [perl #129164]
1932           <https://rt.perl.org/Public/Bug/Display.html?id=129164>
1933
1934       ·   A possible buffer overrun when a pattern contains a fixed utf8
1935           substring.  [perl #129012]
1936           <https://rt.perl.org/Public/Bug/Display.html?id=129012>
1937
1938       ·   Fixed two possible use-after-free bugs in perl's lexer.  [perl
1939           #129069] <https://rt.perl.org/Public/Bug/Display.html?id=129069>
1940
1941       ·   Fixed a crash with "s///l" where it thought it was dealing with
1942           UTF-8 when it wasn't.  [perl #129038]
1943           <https://rt.perl.org/Public/Bug/Display.html?id=129038>
1944
1945       ·   Fixed a place where the regex parser was not setting the syntax
1946           error correctly on a syntactically incorrect pattern.  [perl
1947           #129122] <https://rt.perl.org/Public/Bug/Display.html?id=129122>
1948
1949       ·   The "&." operator (and the "&" operator, when it treats its
1950           arguments as strings) were failing to append a trailing null byte
1951           if at least one string was marked as utf8 internally.  Many code
1952           paths (system calls, regexp compilation) still expect there to be a
1953           null byte in the string buffer just past the end of the logical
1954           string.  An assertion failure was the result.  [perl #129287]
1955           <https://rt.perl.org/Public/Bug/Display.html?id=129287>
1956
1957       ·   Avoid a heap-after-use error in the parser when creating an error
1958           messge for a syntactically invalid heredoc.  [perl #128988]
1959           <https://rt.perl.org/Public/Bug/Display.html?id=128988>
1960
1961       ·   Fix a segfault when run with "-DC" options on DEBUGGING builds.
1962           [perl #129106]
1963           <https://rt.perl.org/Public/Bug/Display.html?id=129106>
1964
1965       ·   Fixed the parser error handling in subroutine attributes for an
1966           '":attr(foo"' that does not have an ending '")"'.
1967
1968       ·   Fix the perl lexer to correctly handle a backslash as the last char
1969           in quoted-string context. This actually fixed two bugs, [perl
1970           #129064] <https://rt.perl.org/Public/Bug/Display.html?id=129064>
1971           and [perl #129176]
1972           <https://rt.perl.org/Public/Bug/Display.html?id=129176>.
1973
1974       ·   In the API function "gv_fetchmethod_pvn_flags", rework separator
1975           parsing to prevent possible string overrun with an invalid "len"
1976           argument.  [perl #129267]
1977           <https://rt.perl.org/Public/Bug/Display.html?id=129267>
1978
1979       ·   Problems with in-place array sorts: code like "@a = sort { ... }
1980           @a", where the source and destination of the sort are the same
1981           plain array, are optimised to do less copying around.  Two side-
1982           effects of this optimisation were that the contents of @a as seen
1983           by sort routines were partially sorted; and under some
1984           circumstances accessing @a during the sort could crash the
1985           interpreter.  Both these issues have been fixed, and Sort functions
1986           see the original value of @a.  [perl #128340]
1987           <https://rt.perl.org/Public/Bug/Display.html?id=128340>
1988
1989       ·   Non-ASCII string delimiters are now reported correctly in error
1990           messages for unterminated strings.  [perl #128701]
1991           <https://rt.perl.org/Public/Bug/Display.html?id=128701>
1992
1993       ·   "pack("p", ...)" used to emit its warning ("Attempt to pack pointer
1994           to temporary value") erroneously in some cases, but has been fixed.
1995
1996       ·   @DB::args is now exempt from "used once" warnings.  The warnings
1997           only occurred under -w, because warnings.pm itself uses @DB::args
1998           multiple times.
1999
2000       ·   The use of built-in arrays or hash slices in a double-quoted string
2001           no longer issues a warning ("Possible unintended interpolation...")
2002           if the variable has not been mentioned before.  This affected code
2003           like "qq|@DB::args|" and "qq|@SIG{'CHLD', 'HUP'}|".  (The special
2004           variables "@-" and "@+" were already exempt from the warning.)
2005
2006       ·   "gethostent" and similar functions now perform a null check
2007           internally, to avoid crashing with the torsocks library.  This was
2008           a regression from v5.22.  [perl #128740]
2009           <https://rt.perl.org/Public/Bug/Display.html?id=128740>
2010
2011       ·   "defined *{'!'}", "defined *{'['}", and "defined *{'-'}" no longer
2012           leak memory if the typeglob in question has never been accessed
2013           before.
2014
2015       ·   Mentioning the same constant twice in a row (which is a syntax
2016           error) no longer fails an assertion under debugging builds.  This
2017           was a regression from v5.20.  [perl #126482]
2018           <https://rt.perl.org/Public/Bug/Display.html?id=126482>
2019
2020       ·   Many issues relating to "printf "%a"" of hexadecimal floating point
2021           were fixed.  In addition, the "subnormals" (formerly known as
2022           "denormals") floating point numbers are now supported both with the
2023           plain IEEE 754 floating point numbers (64-bit or 128-bit) and the
2024           x86 80-bit "extended precision".  Note that subnormal hexadecimal
2025           floating point literals will give a warning about "exponent
2026           underflow".  [perl #128843]
2027           <https://rt.perl.org/Public/Bug/Display.html?id=128843> [perl
2028           #128889] <https://rt.perl.org/Public/Bug/Display.html?id=128889>
2029           [perl #128890]
2030           <https://rt.perl.org/Public/Bug/Display.html?id=128890> [perl
2031           #128893] <https://rt.perl.org/Public/Bug/Display.html?id=128893>
2032           [perl #128909]
2033           <https://rt.perl.org/Public/Bug/Display.html?id=128909> [perl
2034           #128919] <https://rt.perl.org/Public/Bug/Display.html?id=128919>
2035
2036       ·   A regression in v5.24 with "tr/\N{U+...}/foo/" when the code point
2037           was between 128 and 255 has been fixed.  [perl #128734]
2038           <https://rt.perl.org/Public/Bug/Display.html?id=128734>.
2039
2040       ·   Use of a string delimiter whose code point is above 2**31 now works
2041           correctly on platforms that allow this.  Previously, certain
2042           characters, due to truncation, would be confused with other
2043           delimiter characters with special meaning (such as "?" in
2044           "m?...?"), resulting in inconsistent behaviour.  Note that this is
2045           non-portable, and is based on Perl's extension to UTF-8, and is
2046           probably not displayable nor enterable by any editor.  [perl
2047           #128738] <https://rt.perl.org/Public/Bug/Display.html?id=128738>
2048
2049       ·   "@{x" followed by a newline where "x" represents a control or non-
2050           ASCII character no longer produces a garbled syntax error message
2051           or a crash.  [perl #128951]
2052           <https://rt.perl.org/Public/Bug/Display.html?id=128951>
2053
2054       ·   An assertion failure with "%: = 0" has been fixed.  [perl #128238]
2055           <https://rt.perl.org/Public/Bug/Display.html?id=128238>
2056
2057       ·   In Perl 5.18, the parsing of "$foo::$bar" was accidentally changed,
2058           such that it would be treated as "$foo."::".$bar".  The previous
2059           behavior, which was to parse it as "$foo:: . $bar", has been
2060           restored.  [perl #128478]
2061           <https://rt.perl.org/Public/Bug/Display.html?id=128478>
2062
2063       ·   Since Perl 5.20, line numbers have been off by one when perl is
2064           invoked with the -x switch.  This has been fixed.  [perl #128508]
2065           <https://rt.perl.org/Public/Bug/Display.html?id=128508>
2066
2067       ·   Vivifying a subroutine stub in a deleted stash (e.g., "delete
2068           $My::{"Foo::"}; \&My::Foo::foo") no longer crashes.  It had begun
2069           crashing in Perl 5.18.  [perl #128532]
2070           <https://rt.perl.org/Public/Bug/Display.html?id=128532>
2071
2072       ·   Some obscure cases of subroutines and file handles being freed at
2073           the same time could result in crashes, but have been fixed.  The
2074           crash was introduced in Perl 5.22.  [perl #128597]
2075           <https://rt.perl.org/Public/Bug/Display.html?id=128597>
2076
2077       ·   Code that looks for a variable name associated with an
2078           uninitialized value could cause an assertion failure in cases where
2079           magic is involved, such as $ISA[0][0].  This has now been fixed.
2080           [perl #128253]
2081           <https://rt.perl.org/Public/Bug/Display.html?id=128253>
2082
2083       ·   A crash caused by code generating the warning "Subroutine
2084           STASH::NAME redefined" in cases such as "sub P::f{} undef *P::;
2085           *P::f =sub{};" has been fixed.  In these cases, where the STASH is
2086           missing, the warning will now appear as "Subroutine NAME
2087           redefined".  [perl #128257]
2088           <https://rt.perl.org/Public/Bug/Display.html?id=128257>
2089
2090       ·   Fixed an assertion triggered by some code that handles deprecated
2091           behavior in formats, e.g., in cases like this:
2092
2093               format STDOUT =
2094               @
2095               0"$x"
2096
2097           [perl #128255]
2098           <https://rt.perl.org/Public/Bug/Display.html?id=128255>
2099
2100       ·   A possible divide by zero in string transformation code on Windows
2101           has been avoided, fixing a crash when collating an empty string.
2102           [perl #128618]
2103           <https://rt.perl.org/Public/Bug/Display.html?id=128618>
2104
2105       ·   Some regular expression parsing glitches could lead to assertion
2106           failures with regular expressions such as "/(?<=/" and "/(?<!/".
2107           This has now been fixed.  [perl #128170]
2108           <https://rt.perl.org/Public/Bug/Display.html?id=128170>
2109
2110       ·   " until ($x = 1) { ... } " and " ... until $x = 1 " now properly
2111           warn when syntax warnings are enabled.  [perl #127333]
2112           <https://rt.perl.org/Public/Bug/Display.html?id=127333>
2113
2114       ·   socket() now leaves the error code returned by the system in $! on
2115           failure.  [perl #128316]
2116           <https://rt.perl.org/Public/Bug/Display.html?id=128316>
2117
2118       ·   Assignment variants of any bitwise ops under the "bitwise" feature
2119           would crash if the left-hand side was an array or hash.  [perl
2120           #128204] <https://rt.perl.org/Public/Bug/Display.html?id=128204>
2121
2122       ·   "require" followed by a single colon (as in "foo() ? require : ..."
2123           is now parsed correctly as "require" with implicit $_, rather than
2124           "require """.  [perl #128307]
2125           <https://rt.perl.org/Public/Bug/Display.html?id=128307>
2126
2127       ·   Scalar "keys %hash" can now be assigned to consistently in all
2128           scalar lvalue contexts.  Previously it worked for some contexts but
2129           not others.
2130
2131       ·   List assignment to "vec" or "substr" with an array or hash for its
2132           first argument used to result in crashes or "Can't coerce" error
2133           messages at run time, unlike scalar assignment, which would give an
2134           error at compile time.  List assignment now gives a compile-time
2135           error, too.  [perl #128260]
2136           <https://rt.perl.org/Public/Bug/Display.html?id=128260>
2137
2138       ·   Expressions containing an "&&" or "||" operator (or their synonyms
2139           "and" and "or") were being compiled incorrectly in some cases.  If
2140           the left-hand side consisted of either a negated bareword constant
2141           or a negated "do {}" block containing a constant expression, and
2142           the right-hand side consisted of a negated non-foldable expression,
2143           one of the negations was effectively ignored.  The same was true of
2144           "if" and "unless" statement modifiers, though with the left-hand
2145           and right-hand sides swapped.  This long-standing bug has now been
2146           fixed.  [perl #127952]
2147           <https://rt.perl.org/Public/Bug/Display.html?id=127952>
2148
2149       ·   "reset" with an argument no longer crashes when encountering stash
2150           entries other than globs.  [perl #128106]
2151           <https://rt.perl.org/Public/Bug/Display.html?id=128106>
2152
2153       ·   Assignment of hashes to, and deletion of, typeglobs named *::::::
2154           no longer causes crashes.  [perl #128086]
2155           <https://rt.perl.org/Public/Bug/Display.html?id=128086>
2156
2157       ·   Perl wasn't correctly handling true/false values in the LHS of a
2158           list assign; specifically the truth values returned by boolean
2159           operators.  This could trigger an assertion failure in something
2160           like the following:
2161
2162               for ($x > $y) {
2163                   ($_, ...) = (...); # here $_ is aliased to a truth value
2164               }
2165
2166           This was a regression from v5.24.  [perl #129991]
2167           <https://rt.perl.org/Public/Bug/Display.html?id=129991>
2168
2169       ·   Assertion failure with user-defined Unicode-like properties.  [perl
2170           #130010] <https://rt.perl.org/Public/Bug/Display.html?id=130010>
2171
2172       ·   Fix error message for unclosed "\N{" in a regex.  An unclosed "\N{"
2173           could give the wrong error message: "\N{NAME} must be resolved by
2174           the lexer".
2175
2176       ·   List assignment in list context where the LHS contained aggregates
2177           and where there were not enough RHS elements, used to skip scalar
2178           lvalues.  Previously, "(($a,$b,@c,$d) = (1))" in list context
2179           returned "($a)"; now it returns "($a,$b,$d)".  "(($a,$b,$c) = (1))"
2180           is unchanged: it still returns "($a,$b,$c)".  This can be seen in
2181           the following:
2182
2183               sub inc { $_++ for @_ }
2184               inc(($a,$b,@c,$d) = (10))
2185
2186           Formerly, the values of "($a,$b,$d)" would be left as
2187           "(11,undef,undef)"; now they are "(11,1,1)".
2188
2189       ·   Code like this: "/(?{ s!!! })/" could trigger infinite recursion on
2190           the C stack (not the normal perl stack) when the last successful
2191           pattern in scope is itself.  We avoid the segfault by simply
2192           forbidding the use of the empty pattern when it would resolve to
2193           the currently executing pattern.  [perl #129903]
2194           <https://rt.perl.org/Public/Bug/Display.html?id=129903>
2195
2196       ·   Avoid reading beyond the end of the line buffer in perl's lexer
2197           when there's a short UTF-8 character at the end.  [perl #128997]
2198           <https://rt.perl.org/Public/Bug/Display.html?id=128997>
2199
2200       ·   Alternations in regular expressions were sometimes failing to match
2201           a utf8 string against a utf8 alternate.  [perl #129950]
2202           <https://rt.perl.org/Public/Bug/Display.html?id=129950>
2203
2204       ·   Make "do "a\0b"" fail silently (and return "undef" and set $!)
2205           instead of throwing an error.  [perl #129928]
2206           <https://rt.perl.org/Public/Bug/Display.html?id=129928>
2207
2208       ·   "chdir" with no argument didn't ensure that there was stack space
2209           available for returning its result.  [perl #129130]
2210           <https://rt.perl.org/Public/Bug/Display.html?id=129130>
2211
2212       ·   All error messages related to "do" now refer to "do"; some formerly
2213           claimed to be from "require" instead.
2214
2215       ·   Executing "undef $x" where $x is tied or magical no longer
2216           incorrectly blames the variable for an uninitialized-value warning
2217           encountered by the tied/magical code.
2218
2219       ·   Code like "$x = $x . "a"" was incorrectly failing to yield a use of
2220           uninitialized value warning when $x was a lexical variable with an
2221           undefined value. That has now been fixed.  [perl #127877]
2222           <https://rt.perl.org/Public/Bug/Display.html?id=127877>
2223
2224       ·   "undef *_; shift" or "undef *_; pop" inside a subroutine, with no
2225           argument to "shift" or "pop", began crashing in Perl 5.14, but has
2226           now been fixed.
2227
2228       ·   "string$scalar->$*" now correctly prefers concatenation overloading
2229           to string overloading if "$scalar->$*" returns an overloaded
2230           object, bringing it into consistency with $$scalar.
2231
2232       ·   "/@0{0*->@*/*0" and similar contortions used to crash, but no
2233           longer do, but merely produce a syntax error.  [perl #128171]
2234           <https://rt.perl.org/Public/Bug/Display.html?id=128171>
2235
2236       ·   "do" or "require" with an argument which is a reference or typeglob
2237           which, when stringified, contains a null character, started
2238           crashing in Perl 5.20, but has now been fixed.  [perl #128182]
2239           <https://rt.perl.org/Public/Bug/Display.html?id=128182>
2240
2241       ·   Improve the error message for a missing "tie()" package/method.
2242           This brings the error messages in line with the ones used for
2243           normal method calls.
2244
2245       ·   Parsing bad POSIX charclasses no longer leaks memory.  [perl
2246           #128313] <https://rt.perl.org/Public/Bug/Display.html?id=128313>
2247

Known Problems

2249       ·   G++ 6 handles subnormal (denormal) floating point values
2250           differently than gcc 6 or g++ 5 resulting in "flush-to-zero". The
2251           end result is that if you specify very small values using the
2252           hexadecimal floating point format, like "0x1.fffffffffffffp-1022",
2253           they become zeros.  [perl #131388]
2254           <https://rt.perl.org/Ticket/Display.html?id=131388>
2255

Errata From Previous Releases

2257       ·   Fixed issues with recursive regexes.  The behavior was fixed in
2258           Perl 5.24.  [perl #126182]
2259           <https://rt.perl.org/Public/Bug/Display.html?id=126182>
2260

Obituary

2262       Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo
2263       community member, has passed away on August 10, 2016.  He will be
2264       remembered and missed by all those who he came in contact with, and
2265       enriched with his intellect, wit, and spirit.
2266
2267       It is with great sadness that we also note Kip Hampton's passing.
2268       Probably best known as the author of the Perl & XML column on XML.com,
2269       he was a core contributor to AxKit, an XML server platform that became
2270       an Apache Foundation project.  He was a frequent speaker in the early
2271       days at OSCON, and most recently at YAPC::NA in Madison.  He was
2272       frequently on irc.perl.org as ubu, generally in the #axkit-dahut
2273       community, the group responsible for YAPC::NA Asheville in 2011.
2274
2275       Kip and his constant contributions to the community will be greatly
2276       missed.
2277

Acknowledgements

2279       Perl 5.26.0 represents approximately 13 months of development since
2280       Perl 5.24.0 and contains approximately 360,000 lines of changes across
2281       2,600 files from 86 authors.
2282
2283       Excluding auto-generated files, documentation and release tools, there
2284       were approximately 230,000 lines of changes to 1,800 .pm, .t, .c and .h
2285       files.
2286
2287       Perl continues to flourish into its third decade thanks to a vibrant
2288       community of users and developers.  The following people are known to
2289       have contributed the improvements that became Perl 5.26.0:
2290
2291       Aaron Crane, Abigail, AEvar Arnfjoerd` Bjarmason, Alex Vandiver, Andreas
2292       Koenig, Andreas Voegele, Andrew Fresh, Andy Lester, Aristotle
2293       Pagaltzis, Chad Granum, Chase Whitener, Chris 'BinGOs' Williams, Chris
2294       Lamb, Christian Hansen, Christian Millour, Colin Newell, Craig A.
2295       Berry, Dagfinn Ilmari Mannsaaker, Dan Collins, Daniel Dragan, Dave
2296       Cross, Dave Rolsky, David Golden, David H.  Gutteridge, David Mitchell,
2297       Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis, Father
2298       Chrysostomos, Francois Perrad, Hauke D, H.Merijn Brand, Hugo van der
2299       Sanden, Ivan Pozdeev, James E Keenan, James Raspass, Jarkko Hietaniemi,
2300       Jerry D. Hedden, Jim Cromie, J. Nick Koston, John Lightsey, Karen
2301       Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Matthew
2302       Horsfall, Maxwell Carey, Misty De Meo, Neil Bowers, Nicholas Clark,
2303       Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter Avalos, Petr PisaX,
2304       Pino Toscano, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Ricardo
2305       Signes, Richard Levitte, Rick Delaney, Salvador Fandin~o, Samuel
2306       Thibault, Sawyer X, Sebastien Aperghis-Tramoni, Sergey Aleynikov,
2307       Shlomi Fish, Smylers, Stefan Seifert, Steffen Mueller, Stevan Little,
2308       Steve Hay, Steven Humphrey, Sullivan Beck, Theo Buehler, Thomas Sibley,
2309       Todd Rinaldo, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yaroslav
2310       Kuzmin, Yves Orton, Zefram.
2311
2312       The list above is almost certainly incomplete as it is automatically
2313       generated from version control history.  In particular, it does not
2314       include the names of the (very much appreciated) contributors who
2315       reported issues to the Perl bug tracker.
2316
2317       Many of the changes included in this version originated in the CPAN
2318       modules included in Perl's core.  We're grateful to the entire CPAN
2319       community for helping Perl to flourish.
2320
2321       For a more complete list of all of Perl's historical contributors,
2322       please see the AUTHORS file in the Perl source distribution.
2323

Reporting Bugs

2325       If you find what you think is a bug, you might check the perl bug
2326       database at <https://rt.perl.org/>.  There may also be information at
2327       <http://www.perl.org/>, the Perl Home Page.
2328
2329       If you believe you have an unreported bug, please run the perlbug
2330       program included with your release.  Be sure to trim your bug down to a
2331       tiny but sufficient test case.  Your bug report, along with the output
2332       of "perl -V", will be sent off to "perlbug@perl.org" to be analysed by
2333       the Perl porting team.
2334
2335       If the bug you are reporting has security implications which make it
2336       inappropriate to send to a publicly archived mailing list, then see
2337       "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec for details of
2338       how to report the issue.
2339

Give Thanks

2341       If you wish to thank the Perl 5 Porters for the work we had done in
2342       Perl 5, you can do so by running the "perlthanks" program:
2343
2344           perlthanks
2345
2346       This will send an email to the Perl 5 Porters list with your show of
2347       thanks.
2348

SEE ALSO

2350       The Changes file for an explanation of how to view exhaustive details
2351       on what changed.
2352
2353       The INSTALL file for how to build Perl.
2354
2355       The README file for general stuff.
2356
2357       The Artistic and Copying files for copyright information.
2358
2359
2360
2361perl v5.30.1                      2019-11-29                  PERL5260DELTA(1)
Impressum