1PERL5260DELTA(1) Perl Programmers Reference Guide PERL5260DELTA(1)
2
3
4
6 perl5260delta - what is new for perl v5.26.0
7
9 This document describes the differences between the 5.24.0 release and
10 the 5.26.0 release.
11
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.26.3 2018-03-23 PERL5260DELTA(1)