1=encoding utf8 2 3=head1 NAME 4 5perl5260delta - what is new for perl v5.26.0 6 7=head1 DESCRIPTION 8 9This document describes the differences between the 5.24.0 release and the 105.26.0 release. 11 12=head1 Notice 13 14This release includes three updates with widespread effects: 15 16=over 4 17 18=item * C<"."> no longer in C<@INC> 19 20For security reasons, the current directory (C<".">) is no longer included 21by default at the end of the module search path (C<@INC>). This may have 22widespread implications for the building, testing and installing of 23modules, and for the execution of scripts. See the section 24L<< Removal of the current directory (C<".">) from C<@INC> >> 25for the full details. 26 27=item * C<do> may now warn 28 29C<do> now gives a deprecation warning when it fails to load a file which 30it would have loaded had C<"."> been in C<@INC>. 31 32=item * In regular expression patterns, a literal left brace C<"{"> 33should be escaped 34 35See L</Unescaped literal C<"{"> characters in regular expression patterns are no longer permissible>. 36 37=back 38 39=head1 Core Enhancements 40 41=head2 Lexical subroutines are no longer experimental 42 43Using the C<lexical_subs> feature introduced in v5.18 no longer emits a warning. Existing 44code that disables the C<experimental::lexical_subs> warning category 45that the feature previously used will continue to work. The 46C<lexical_subs> feature has no effect; all Perl code can use lexical 47subroutines, regardless of what feature declarations are in scope. 48 49=head2 Indented Here-documents 50 51This adds a new modifier C<"~"> to here-docs that tells the parser 52that it should look for C</^\s*$DELIM\n/> as the closing delimiter. 53 54These syntaxes are all supported: 55 56 <<~EOF; 57 <<~\EOF; 58 <<~'EOF'; 59 <<~"EOF"; 60 <<~`EOF`; 61 <<~ 'EOF'; 62 <<~ "EOF"; 63 <<~ `EOF`; 64 65The C<"~"> modifier will strip, from each line in the here-doc, the 66same whitespace that appears before the delimiter. 67 68Newlines will be copied as-is, and lines that don't include the 69proper beginning whitespace will cause perl to croak. 70 71For example: 72 73 if (1) { 74 print <<~EOF; 75 Hello there 76 EOF 77 } 78 79prints "Hello there\n" with no leading whitespace. 80 81=head2 New regular expression modifier C</xx> 82 83Specifying two C<"x"> characters to modify a regular expression pattern 84does everything that a single one does, but additionally TAB and SPACE 85characters within a bracketed character class are generally ignored and 86can be added to improve readability, like 87S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at 88L<perlre/E<sol>x and E<sol>xx>. 89 90=head2 C<@{^CAPTURE}>, C<%{^CAPTURE}>, and C<%{^CAPTURE_ALL}> 91 92C<@{^CAPTURE}> exposes the capture buffers of the last match as an 93array. So C<$1> is C<${^CAPTURE}[0]>. This is a more efficient equivalent 94to code like C<substr($matched_string,$-[0],$+[0]-$-[0])>, and you don't 95have to keep track of the C<$matched_string> either. This variable has no 96single character equivalent. Note that, like the other regex magic variables, 97the contents of this variable is dynamic; if you wish to store it beyond 98the lifetime of the match you must copy it to another array. 99 100C<%{^CAPTURE}> is equivalent to C<%+> (I<i.e.>, named captures). Other than 101being more self-documenting there is no difference between the two forms. 102 103C<%{^CAPTURE_ALL}> is equivalent to C<%-> (I<i.e.>, all named captures). 104Other than being more self-documenting there is no difference between the 105two forms. 106 107=head2 Declaring a reference to a variable 108 109As an experimental feature, Perl now allows the referencing operator to come 110after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>, 111L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>. This syntax must 112be enabled with C<use feature 'declared_refs'>. It is experimental, and will 113warn by default unless C<no warnings 'experimental::refaliasing'> is in effect. 114It is intended mainly for use in assignments to references. For example: 115 116 use experimental 'refaliasing', 'declared_refs'; 117 my \$a = \$b; 118 119See L<perlref/Assigning to References> for more details. 120 121=head2 Unicode 9.0 is now supported 122 123A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>. 124Modules that are shipped with core Perl but not maintained by p5p do not 125necessarily support Unicode 9.0. L<Unicode::Normalize> does work on 9.0. 126 127=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property 128 129Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and 130called it Script_Extensions (C<scx>). Perl now uses this improved 131version when a property is specified as just C<\p{I<script>}>. This 132should make programs more accurate when determining if a character is 133used in a given script, but there is a slight chance of breakage for 134programs that very specifically needed the old behavior. The meaning of 135compound forms, like C<\p{sc=I<script>}> are unchanged. See 136L<perlunicode/Scripts>. 137 138=head2 Perl can now do default collation in UTF-8 locales on platforms 139that support it 140 141Some platforms natively do a reasonable job of collating and sorting in 142UTF-8 locales. Perl now works with those. For portability and full 143control, L<Unicode::Collate> is still recommended, but now you may 144not need to do anything special to get good-enough results, depending on 145your application. See 146L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>. 147 148=head2 Better locale collation of strings containing embedded C<NUL> 149characters 150 151In locales that have multi-level character weights, C<NUL>s are now 152ignored at the higher priority ones. There are still some gotchas in 153some strings, though. See 154L<perllocale/Collation of strings containing embedded C<NUL> characters>. 155 156=head2 C<CORE> subroutines for hash and array functions callable via 157reference 158 159The hash and array functions in the C<CORE> namespace (C<keys>, C<each>, 160C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>) can now 161be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference 162(C<< my $k = \&CORE::keys; $k-E<gt>(\%hash) >>). Previously they could only be 163used when inlined. 164 165=head2 New Hash Function For 64-bit Builds 166 167We have switched to a hybrid hash function to better balance 168performance for short and long keys. 169 170For short keys, 16 bytes and under, we use an optimised variant of 171One At A Time Hard, and for longer keys we use Siphash 1-3. For very 172long keys this is a big improvement in performance. For shorter keys 173there is a modest improvement. 174 175=head1 Security 176 177=head2 Removal of the current directory (C<".">) from C<@INC> 178 179The perl binary includes a default set of paths in C<@INC>. Historically 180it has also included the current directory (C<".">) as the final entry, 181unless run with taint mode enabled (C<perl -T>). While convenient, this has 182security implications: for example, where a script attempts to load an 183optional module when its current directory is untrusted (such as F</tmp>), 184it could load and execute code from under that directory. 185 186Starting with v5.26, C<"."> is always removed by default, not just under 187tainting. This has major implications for installing modules and executing 188scripts. 189 190The following new features have been added to help ameliorate these 191issues. 192 193=over 194 195=item * F<Configure -Udefault_inc_excludes_dot> 196 197There is a new F<Configure> option, C<default_inc_excludes_dot> (enabled 198by default) which builds a perl executable without C<".">; unsetting this 199option using C<-U> reverts perl to the old behaviour. This may fix your 200path issues but will reintroduce all the security concerns, so don't 201build a perl executable like this unless you're I<really> confident that 202such issues are not a concern in your environment. 203 204=item * C<PERL_USE_UNSAFE_INC> 205 206There is a new environment variable recognised by the perl interpreter. 207If this variable has the value 1 when the perl interpreter starts up, 208then C<"."> will be automatically appended to C<@INC> (except under tainting). 209 210This allows you restore the old perl interpreter behaviour on a 211case-by-case basis. But note that this is intended to be a temporary crutch, 212and this feature will likely be removed in some future perl version. 213It is currently set by the C<cpan> utility and C<Test::Harness> to 214ease installation of CPAN modules which have not been updated to handle the 215lack of dot. Once again, don't use this unless you are sure that this 216will not reintroduce any security concerns. 217 218=item * A new deprecation warning issued by C<do>. 219 220While it is well-known that C<use> and C<require> use C<@INC> to search 221for the file to load, many people don't realise that C<do "file"> also 222searches C<@INC> if the file is a relative path. With the removal of C<".">, 223a simple C<do "file.pl"> will fail to read in and execute C<file.pl> from 224the current directory. Since this is commonly expected behaviour, a new 225deprecation warning is now issued whenever C<do> fails to load a file which 226it otherwise would have found if a dot had been in C<@INC>. 227 228=back 229 230Here are some things script and module authors may need to do to make 231their software work in the new regime. 232 233=over 234 235=item * Script authors 236 237If the issue is within your own code (rather than within included 238modules), then you have two main options. Firstly, if you are confident 239that your script will only be run within a trusted directory (under which 240you expect to find trusted files and modules), then add C<"."> back into the 241path; I<e.g.>: 242 243 BEGIN { 244 my $dir = "/some/trusted/directory"; 245 chdir $dir or die "Can't chdir to $dir: $!\n"; 246 # safe now 247 push @INC, '.'; 248 } 249 250 use "Foo::Bar"; # may load /some/trusted/directory/Foo/Bar.pm 251 do "config.pl"; # may load /some/trusted/directory/config.pl 252 253On the other hand, if your script is intended to be run from within 254untrusted directories (such as F</tmp>), then your script suddenly failing 255to load files may be indicative of a security issue. You most likely want 256to replace any relative paths with full paths; for example, 257 258 do "foo_config.pl" 259 260might become 261 262 do "$ENV{HOME}/foo_config.pl" 263 264If you are absolutely certain that you want your script to load and 265execute a file from the current directory, then use a C<./> prefix; for 266example: 267 268 do "./foo_config.pl" 269 270=item * Installing and using CPAN modules 271 272If you install a CPAN module using an automatic tool like C<cpan>, then 273this tool will itself set the C<PERL_USE_UNSAFE_INC> environment variable 274while building and testing the module, which may be sufficient to install 275a distribution which hasn't been updated to be dot-aware. If you want to 276install such a module manually, then you'll need to replace the 277traditional invocation: 278 279 perl Makefile.PL && make && make test && make install 280 281with something like 282 283 (export PERL_USE_UNSAFE_INC=1; \ 284 perl Makefile.PL && make && make test && make install) 285 286Note that this only helps build and install an unfixed module. It's 287possible for the tests to pass (since they were run under 288C<PERL_USE_UNSAFE_INC=1>), but for the module itself to fail to perform 289correctly in production. In this case, you may have to temporarily modify 290your script until a fixed version of the module is released. 291For example: 292 293 use Foo::Bar; 294 { 295 local @INC = (@INC, '.'); 296 # assuming read_config() needs '.' in @INC 297 $config = Foo::Bar->read_config(); 298 } 299 300This is only rarely expected to be necessary. Again, if doing this, 301assess the resultant risks first. 302 303=item * Module Authors 304 305If you maintain a CPAN distribution, it may need updating to run in 306a dotless environment. Although C<cpan> and other such tools will 307currently set the C<PERL_USE_UNSAFE_INC> during module build, this is a 308temporary workaround for the set of modules which rely on C<"."> being in 309C<@INC> for installation and testing, and this may mask deeper issues. It 310could result in a module which passes tests and installs, but which 311fails at run time. 312 313During build, test, and install, it will normally be the case that any perl 314processes will be executing directly within the root directory of the 315untarred distribution, or a known subdirectory of that, such as F<t/>. It 316may well be that F<Makefile.PL> or F<t/foo.t> will attempt to include 317local modules and configuration files using their direct relative 318filenames, which will now fail. 319 320However, as described above, automatic tools like F<cpan> will (for now) 321set the C<PERL_USE_UNSAFE_INC> environment variable, which introduces 322dot during a build. 323 324This makes it likely that your existing build and test code will work, but 325this may mask issues with your code which only manifest when used after 326install. It is prudent to try and run your build process with that 327variable explicitly disabled: 328 329 (export PERL_USE_UNSAFE_INC=0; \ 330 perl Makefile.PL && make && make test && make install) 331 332This is more likely to show up any potential problems with your module's 333build process, or even with the module itself. Fixing such issues will 334ensure both that your module can again be installed manually, and that 335it will still build once the C<PERL_USE_UNSAFE_INC> crutch goes away. 336 337When fixing issues in tests due to the removal of dot from C<@INC>, 338reinsertion of dot into C<@INC> should be performed with caution, for this 339too may suppress real errors in your runtime code. You are encouraged 340wherever possible to apply the aforementioned approaches with explicit 341absolute/relative paths, or to relocate your needed files into a 342subdirectory and insert that subdirectory into C<@INC> instead. 343 344If your runtime code has problems under the dotless C<@INC>, then the comments 345above on how to fix for script authors will mostly apply here too. Bear in 346mind though that it is considered bad form for a module to globally add a dot to 347C<@INC>, since it introduces both a security risk and hides issues of 348accidentally requiring dot in C<@INC>, as explained above. 349 350=back 351 352=head2 Escaped colons and relative paths in PATH 353 354On Unix systems, Perl treats any relative paths in the C<PATH> environment 355variable as tainted when starting a new process. Previously, it was 356allowing a backslash to escape a colon (unlike the OS), consequently 357allowing relative paths to be considered safe if the PATH was set to 358something like C</\:.>. The check has been fixed to treat C<"."> as tainted 359in that example. 360 361=head2 New C<-Di> switch is now required for PerlIO debugging output 362 363This is used for debugging of code within PerlIO to avoid recursive 364calls. Previously this output would be sent to the file specified 365by the C<PERLIO_DEBUG> environment variable if perl wasn't running 366setuid and the C<-T> or C<-t> switches hadn't been parsed yet. 367 368If perl performed output at a point where it hadn't yet parsed its 369switches this could result in perl creating or overwriting the file 370named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied. 371 372Perl now requires the C<-Di> switch to be present before it will produce 373PerlIO debugging 374output. By default this is written to C<stderr>, but can optionally 375be redirected to a file by setting the C<PERLIO_DEBUG> environment 376variable. 377 378If perl is running setuid or the C<-T> switch was supplied, 379C<PERLIO_DEBUG> is ignored and the debugging output is sent to 380C<stderr> as for any other C<-D> switch. 381 382=head1 Incompatible Changes 383 384=head2 Unescaped literal C<"{"> characters in regular expression 385patterns are no longer permissible 386 387You have to now say something like C<"\{"> or C<"[{]"> to specify to 388match a LEFT CURLY BRACKET; otherwise, it is a fatal pattern compilation 389error. This change will allow future extensions to the language. 390 391These have been deprecated since v5.16, with a deprecation message 392raised for some uses starting in v5.22. Unfortunately, the code added 393to raise the message was buggy and failed to warn in some cases where 394it should have. Therefore, enforcement of this ban for these cases is 395deferred until Perl 5.30, but the code has been fixed to raise a 396default-on deprecation message for them in the meantime. 397 398Some uses of literal C<"{"> occur in contexts where we do not foresee 399the meaning ever being anything but the literal, such as the very first 400character in the pattern, or after a C<"|"> meaning alternation. Thus 401 402 qr/{fee|{fie/ 403 404matches either of the strings C<{fee> or C<{fie>. To avoid forcing 405unnecessary code changes, these uses do not need to be escaped, and no 406warning is raised about them, and there are no current plans to change this. 407 408But it is always correct to escape C<"{">, and the simple rule to 409remember is to always do so. 410 411See L<Unescaped left brace in regex is illegal here|perldiag/Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>>. 412 413=head2 C<scalar(%hash)> return signature changed 414 415The value returned for C<scalar(%hash)> will no longer show information about 416the buckets allocated in the hash. It will simply return the count of used 417keys. It is thus equivalent to C<0+keys(%hash)>. 418 419A form of backward compatibility is provided via 420L<C<Hash::Util::bucket_ratio()>|Hash::Util/bucket_ratio> which provides 421the same behavior as 422C<scalar(%hash)> provided in Perl 5.24 and earlier. 423 424=head2 C<keys> returned from an lvalue subroutine 425 426C<keys> returned from an lvalue subroutine can no longer be assigned 427to in list context. 428 429 sub foo : lvalue { keys(%INC) } 430 (foo) = 3; # death 431 sub bar : lvalue { keys(@_) } 432 (bar) = 3; # also an error 433 434This makes the lvalue sub case consistent with C<(keys %hash) = ...> and 435C<(keys @_) = ...>, which are also errors. 436L<[perl #128187]|https://rt.perl.org/Public/Bug/Display.html?id=128187> 437 438=head2 The C<${^ENCODING}> facility has been removed 439 440The special behaviour associated with assigning a value to this variable 441has been removed. As a consequence, the L<encoding> pragma's default mode 442is no longer supported. If 443you still need to write your source code in encodings other than UTF-8, use a 444source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter> 445option. 446 447=head2 C<POSIX::tmpnam()> has been removed 448 449The fundamentally unsafe C<tmpnam()> interface was deprecated in 450Perl 5.22 and has now been removed. In its place, you can use, 451for example, the L<File::Temp> interfaces. 452 453=head2 require ::Foo::Bar is now illegal. 454 455Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any 456bareword require which starts with a double colon dies instead. 457 458=head2 Literal control character variable names are no longer permissible 459 460A variable name may no longer contain a literal control character under 461any circumstances. These previously were allowed in single-character 462names on ASCII platforms, but have been deprecated there since Perl 4635.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal 464control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the 465source code. 466 467=head2 C<NBSP> is no longer permissible in C<\N{...}> 468 469The name of a character may no longer contain non-breaking spaces. It 470has been deprecated to do so since Perl 5.22. 471 472=head1 Deprecations 473 474=head2 String delimiters that aren't stand-alone graphemes are now deprecated 475 476For Perl to eventually allow string delimiters to be Unicode 477grapheme clusters (which look like a single character, but may be 478a sequence of several ones), we have to stop allowing a single character 479delimiter that isn't a grapheme by itself. These are unlikely to exist 480in actual code, as they would typically display as attached to the 481character in front of them. 482 483=head2 C<\cI<X>> that maps to a printable is no longer deprecated 484 485This means we have no plans to remove this feature. It still raises a 486warning, but only if syntax warnings are enabled. The feature was 487originally intended to be a way to express non-printable characters that 488don't have a mnemonic (C<\t> and C<\n> are mnemonics for two 489non-printable characters, but most non-printables don't have a 490mnemonic.) But the feature can be used to specify a few printable 491characters, though those are more clearly expressed as the printable 492itself. See 493L<http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html>. 494 495=head1 Performance Enhancements 496 497=over 4 498 499=item * 500 501A hash in boolean context is now sometimes faster, I<e.g.> 502 503 if (!%h) { ... } 504 505This was already special-cased, but some cases were missed (such as 506C<grep %$_, @AoH>), and even the ones which weren't have been improved. 507 508=item * New Faster Hash Function on 64 bit builds 509 510We use a different hash function for short and long keys. This should 511improve performance and security, especially for long keys. 512 513=item * readline is faster 514 515Reading from a file line-by-line with C<readline()> or C<< E<lt>E<gt> >> should 516now typically be faster due to a better implementation of the code that 517searches for the next newline character. 518 519=item * 520 521Assigning one reference to another, I<e.g.> C<$ref1 = $ref2> has been 522optimized in some cases. 523 524=item * 525 526Remove some exceptions to creating Copy-on-Write strings. The string 527buffer growth algorithm has been slightly altered so that you're less 528likely to encounter a string which can't be COWed. 529 530=item * 531 532Better optimise array and hash assignment: where an array or hash appears 533in the LHS of a list assignment, such as C<(..., @a) = (...);>, it's 534likely to be considerably faster, especially if it involves emptying the 535array/hash. For example, this code runs about a third faster compared to 536Perl 5.24.0: 537 538 my @a; 539 for my $i (1..10_000_000) { 540 @a = (1,2,3); 541 @a = (); 542 } 543 544=item * 545 546Converting a single-digit string to a number is now substantially faster. 547 548=item * 549 550The C<split> builtin is now slightly faster in many cases: in particular 551for the two specially-handled forms 552 553 my @a = split ...; 554 local @a = split ...; 555 556=item * 557 558The rather slow implementation for the experimental subroutine signatures 559feature has been made much faster; it is now comparable in speed with the 560traditional C<my ($a, $b, @c) = @_>. 561 562=item * 563 564Bareword constant strings are now permitted to take part in constant 565folding. They were originally exempted from constant folding in August 1999, 566during the development of Perl 5.6, to ensure that C<use strict "subs"> 567would still apply to bareword constants. That has now been accomplished a 568different way, so barewords, like other constants, now gain the performance 569benefits of constant folding. 570 571This also means that void-context warnings on constant expressions of 572barewords now report the folded constant operand, rather than the operation; 573this matches the behaviour for non-bareword constants. 574 575=back 576 577=head1 Modules and Pragmata 578 579=head2 Updated Modules and Pragmata 580 581=over 4 582 583=item * 584 585IO::Compress has been upgraded from version 2.069 to 2.074. 586 587=item * 588 589L<Archive::Tar> has been upgraded from version 2.04 to 2.24. 590 591=item * 592 593L<arybase> has been upgraded from version 0.11 to 0.12. 594 595=item * 596 597L<attributes> has been upgraded from version 0.27 to 0.29. 598 599The deprecation message for the C<:unique> and C<:locked> attributes 600now mention that they will disappear in Perl 5.28. 601 602=item * 603 604L<B> has been upgraded from version 1.62 to 1.68. 605 606=item * 607 608L<B::Concise> has been upgraded from version 0.996 to 0.999. 609 610Its output is now more descriptive for C<op_private> flags. 611 612=item * 613 614L<B::Debug> has been upgraded from version 1.23 to 1.24. 615 616=item * 617 618L<B::Deparse> has been upgraded from version 1.37 to 1.40. 619 620=item * 621 622L<B::Xref> has been upgraded from version 1.05 to 1.06. 623 624It now uses 3-arg C<open()> instead of 2-arg C<open()>. 625L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 626 627=item * 628 629L<base> has been upgraded from version 2.23 to 2.25. 630 631=item * 632 633L<bignum> has been upgraded from version 0.42 to 0.47. 634 635=item * 636 637L<Carp> has been upgraded from version 1.40 to 1.42. 638 639=item * 640 641L<charnames> has been upgraded from version 1.43 to 1.44. 642 643=item * 644 645L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.074. 646 647=item * 648 649L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.074. 650 651=item * 652 653L<Config::Perl::V> has been upgraded from version 0.25 to 0.28. 654 655=item * 656 657L<CPAN> has been upgraded from version 2.11 to 2.18. 658 659=item * 660 661L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010. 662 663=item * 664 665L<Data::Dumper> has been upgraded from version 2.160 to 2.167. 666 667The XS implementation now supports Deparse. 668 669=item * 670 671L<DB_File> has been upgraded from version 1.835 to 1.840. 672 673=item * 674 675L<Devel::Peek> has been upgraded from version 1.23 to 1.26. 676 677=item * 678 679L<Devel::PPPort> has been upgraded from version 3.32 to 3.35. 680 681=item * 682 683L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06. 684 685It now uses 3-arg C<open()> instead of 2-arg C<open()>. 686L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 687 688=item * 689 690L<diagnostics> has been upgraded from version 1.34 to 1.36. 691 692It now uses 3-arg C<open()> instead of 2-arg C<open()>. 693L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 694 695=item * 696 697L<Digest> has been upgraded from version 1.17 to 1.17_01. 698 699=item * 700 701L<Digest::MD5> has been upgraded from version 2.54 to 2.55. 702 703=item * 704 705L<Digest::SHA> has been upgraded from version 5.95 to 5.96. 706 707=item * 708 709L<DynaLoader> has been upgraded from version 1.38 to 1.42. 710 711=item * 712 713L<Encode> has been upgraded from version 2.80 to 2.88. 714 715=item * 716 717L<encoding> has been upgraded from version 2.17 to 2.19. 718 719This module's default mode is no longer supported. It now 720dies when imported, unless the C<Filter> option is being used. 721 722=item * 723 724L<encoding::warnings> has been upgraded from version 0.12 to 0.13. 725 726This module is no longer supported. It emits a warning to 727that effect and then does nothing. 728 729=item * 730 731L<Errno> has been upgraded from version 1.25 to 1.28. 732 733It now documents that using C<%!> automatically loads Errno for you. 734 735It now uses 3-arg C<open()> instead of 2-arg C<open()>. 736L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 737 738=item * 739 740L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34. 741 742It now uses 3-arg C<open()> instead of 2-arg C<open()>. 743L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 744 745=item * 746 747L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.24. 748 749=item * 750 751L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06. 752 753=item * 754 755L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.34. 756 757=item * 758 759L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.34. 760 761=item * 762 763L<feature> has been upgraded from version 1.42 to 1.47. 764 765=item * 766 767L<File::Copy> has been upgraded from version 2.31 to 2.32. 768 769=item * 770 771L<File::Fetch> has been upgraded from version 0.48 to 0.52. 772 773=item * 774 775L<File::Glob> has been upgraded from version 1.26 to 1.28. 776 777It now Issues a deprecation message for C<File::Glob::glob()>. 778 779=item * 780 781L<File::Spec> has been upgraded from version 3.63 to 3.67. 782 783=item * 784 785L<FileHandle> has been upgraded from version 2.02 to 2.03. 786 787=item * 788 789L<Filter::Simple> has been upgraded from version 0.92 to 0.93. 790 791It no longer treats C<no MyFilter> immediately following C<use MyFilter> as 792end-of-file. 793L<[perl #107726]|https://rt.perl.org/Public/Bug/Display.html?id=107726> 794 795=item * 796 797L<Getopt::Long> has been upgraded from version 2.48 to 2.49. 798 799=item * 800 801L<Getopt::Std> has been upgraded from version 1.11 to 1.12. 802 803=item * 804 805L<Hash::Util> has been upgraded from version 0.19 to 0.22. 806 807=item * 808 809L<HTTP::Tiny> has been upgraded from version 0.056 to 0.070. 810 811Internal 599-series errors now include the redirect history. 812 813=item * 814 815L<I18N::LangTags> has been upgraded from version 0.40 to 0.42. 816 817It now uses 3-arg C<open()> instead of 2-arg C<open()>. 818L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 819 820=item * 821 822L<IO> has been upgraded from version 1.36 to 1.38. 823 824=item * 825 826L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38. 827 828=item * 829 830L<IPC::Cmd> has been upgraded from version 0.92 to 0.96. 831 832=item * 833 834L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07. 835 836=item * 837 838L<JSON::PP> has been upgraded from version 2.27300 to 2.27400_02. 839 840=item * 841 842L<lib> has been upgraded from version 0.63 to 0.64. 843 844It now uses 3-arg C<open()> instead of 2-arg C<open()>. 845L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 846 847=item * 848 849L<List::Util> has been upgraded from version 1.42_02 to 1.46_02. 850 851=item * 852 853L<Locale::Codes> has been upgraded from version 3.37 to 3.42. 854 855=item * 856 857L<Locale::Maketext> has been upgraded from version 1.26 to 1.28. 858 859=item * 860 861L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01. 862 863=item * 864 865L<Math::BigInt> has been upgraded from version 1.999715 to 1.999806. 866 867=item * 868 869L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.5005. 870 871=item * 872 873L<Math::BigRat> has been upgraded from version 0.260802 to 0.2611. 874 875=item * 876 877L<Math::Complex> has been upgraded from version 1.59 to 1.5901. 878 879=item * 880 881L<Memoize> has been upgraded from version 1.03 to 1.03_01. 882 883=item * 884 885L<Module::CoreList> has been upgraded from version 5.20170420 to 5.20170530. 886 887=item * 888 889L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68. 890 891=item * 892 893L<Module::Metadata> has been upgraded from version 1.000031 to 1.000033. 894 895=item * 896 897L<mro> has been upgraded from version 1.18 to 1.20. 898 899=item * 900 901L<Net::Ping> has been upgraded from version 2.43 to 2.55. 902 903IPv6 addresses and C<AF_INET6> sockets are now supported, along with several 904other enhancements. 905 906=item * 907 908L<NEXT> has been upgraded from version 0.65 to 0.67. 909 910=item * 911 912L<Opcode> has been upgraded from version 1.34 to 1.39. 913 914=item * 915 916L<open> has been upgraded from version 1.10 to 1.11. 917 918=item * 919 920L<OS2::Process> has been upgraded from version 1.11 to 1.12. 921 922It now uses 3-arg C<open()> instead of 2-arg C<open()>. 923L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 924 925=item * 926 927L<overload> has been upgraded from version 1.26 to 1.28. 928 929Its compilation speed has been improved slightly. 930 931=item * 932 933L<parent> has been upgraded from version 0.234 to 0.236. 934 935=item * 936 937L<perl5db.pl> has been upgraded from version 1.50 to 1.51. 938 939It now ignores F</dev/tty> on non-Unix systems. 940L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960> 941 942=item * 943 944L<Perl::OSType> has been upgraded from version 1.009 to 1.010. 945 946=item * 947 948L<perlfaq> has been upgraded from version 5.021010 to 5.021011. 949 950=item * 951 952L<PerlIO> has been upgraded from version 1.09 to 1.10. 953 954=item * 955 956L<PerlIO::encoding> has been upgraded from version 0.24 to 0.25. 957 958=item * 959 960L<PerlIO::scalar> has been upgraded from version 0.24 to 0.26. 961 962=item * 963 964L<Pod::Checker> has been upgraded from version 1.60 to 1.73. 965 966=item * 967 968L<Pod::Functions> has been upgraded from version 1.10 to 1.11. 969 970=item * 971 972L<Pod::Html> has been upgraded from version 1.22 to 1.2202. 973 974=item * 975 976L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.28. 977 978=item * 979 980L<Pod::Simple> has been upgraded from version 3.32 to 3.35. 981 982=item * 983 984L<Pod::Usage> has been upgraded from version 1.68 to 1.69. 985 986=item * 987 988L<POSIX> has been upgraded from version 1.65 to 1.76. 989 990This remedies several defects in making its symbols exportable. 991L<[perl #127821]|https://rt.perl.org/Public/Bug/Display.html?id=127821> 992 993The C<POSIX::tmpnam()> interface has been removed, 994see L</"POSIX::tmpnam() has been removed">. 995 996The following deprecated functions have been removed: 997 998 POSIX::isalnum 999 POSIX::isalpha 1000 POSIX::iscntrl 1001 POSIX::isdigit 1002 POSIX::isgraph 1003 POSIX::islower 1004 POSIX::isprint 1005 POSIX::ispunct 1006 POSIX::isspace 1007 POSIX::isupper 1008 POSIX::isxdigit 1009 POSIX::tolower 1010 POSIX::toupper 1011 1012Trying to import POSIX subs that have no real implementations 1013(like C<POSIX::atend()>) now fails at import time, instead of 1014waiting until runtime. 1015 1016=item * 1017 1018L<re> has been upgraded from version 0.32 to 0.34 1019 1020This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx> 1021regular expression pattern modifier, and a change to the L<S<C<use re 1022'strict'>>|re/'strict' mode> experimental feature. When S<C<re 1023'strict'>> is enabled, a warning now will be generated for all 1024unescaped uses of the two characters C<"}"> and C<"]"> in regular 1025expression patterns (outside bracketed character classes) that are taken 1026literally. This brings them more in line with the C<")"> character which 1027is always a metacharacter unless escaped. Being a metacharacter only 1028sometimes, depending on an action at a distance, can lead to silently 1029having the pattern mean something quite different than was intended, 1030which the S<C<re 'strict'>> mode is intended to minimize. 1031 1032=item * 1033 1034L<Safe> has been upgraded from version 2.39 to 2.40. 1035 1036=item * 1037 1038L<Scalar::Util> has been upgraded from version 1.42_02 to 1.46_02. 1039 1040=item * 1041 1042L<Storable> has been upgraded from version 2.56 to 2.62. 1043 1044Fixes 1045L<[perl #130098]|https://rt.perl.org/Public/Bug/Display.html?id=130098>. 1046 1047=item * 1048 1049L<Symbol> has been upgraded from version 1.07 to 1.08. 1050 1051=item * 1052 1053L<Sys::Syslog> has been upgraded from version 0.33 to 0.35. 1054 1055=item * 1056 1057L<Term::ANSIColor> has been upgraded from version 4.04 to 4.06. 1058 1059=item * 1060 1061L<Term::ReadLine> has been upgraded from version 1.15 to 1.16. 1062 1063It now uses 3-arg C<open()> instead of 2-arg C<open()>. 1064L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 1065 1066=item * 1067 1068L<Test> has been upgraded from version 1.28 to 1.30. 1069 1070It now uses 3-arg C<open()> instead of 2-arg C<open()>. 1071L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 1072 1073=item * 1074 1075L<Test::Harness> has been upgraded from version 3.36 to 3.38. 1076 1077=item * 1078 1079L<Test::Simple> has been upgraded from version 1.001014 to 1.302073. 1080 1081=item * 1082 1083L<Thread::Queue> has been upgraded from version 3.09 to 3.12. 1084 1085=item * 1086 1087L<Thread::Semaphore> has been upgraded from 2.12 to 2.13. 1088 1089Added the C<down_timed> method. 1090 1091=item * 1092 1093L<threads> has been upgraded from version 2.07 to 2.15. 1094 1095=item * 1096 1097L<threads::shared> has been upgraded from version 1.51 to 1.56. 1098 1099=item * 1100 1101L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10. 1102 1103=item * 1104 1105L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741. 1106 1107It now builds on systems with C++11 compilers (such as G++ 6 and Clang++ 11083.9). 1109 1110Now uses C<clockid_t>. 1111 1112=item * 1113 1114L<Time::Local> has been upgraded from version 1.2300 to 1.25. 1115 1116=item * 1117 1118L<Unicode::Collate> has been upgraded from version 1.14 to 1.19. 1119 1120=item * 1121 1122L<Unicode::UCD> has been upgraded from version 0.64 to 0.68. 1123 1124It now uses 3-arg C<open()> instead of 2-arg C<open()>. 1125L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 1126 1127=item * 1128 1129L<version> has been upgraded from version 0.9916 to 0.9917. 1130 1131=item * 1132 1133L<VMS::DCLsym> has been upgraded from version 1.06 to 1.08. 1134 1135It now uses 3-arg C<open()> instead of 2-arg C<open()>. 1136L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 1137 1138=item * 1139 1140L<warnings> has been upgraded from version 1.36 to 1.37. 1141 1142=item * 1143 1144L<XS::Typemap> has been upgraded from version 0.14 to 0.15. 1145 1146=item * 1147 1148L<XSLoader> has been upgraded from version 0.21 to 0.27. 1149 1150Fixed a security hole in which binary files could be loaded from a path 1151outside of L<C<@INC>|perlvar/@INC>. 1152 1153It now uses 3-arg C<open()> instead of 2-arg C<open()>. 1154L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> 1155 1156=back 1157 1158=head1 Documentation 1159 1160=head2 New Documentation 1161 1162=head3 L<perldeprecation> 1163 1164This file documents all upcoming deprecations, and some of the deprecations 1165which already have been removed. The purpose of this documentation is 1166two-fold: document what will disappear, and by which version, and serve 1167as a guide for people dealing with code which has features that no longer 1168work after an upgrade of their perl. 1169 1170=head2 Changes to Existing Documentation 1171 1172We have attempted to update the documentation to reflect the changes 1173listed in this document. If you find any we have missed, send email to 1174L<perlbug@perl.org|mailto:perlbug@perl.org>. 1175 1176Additionally, all references to Usenet have been removed, and the 1177following selected changes have been made: 1178 1179=head3 L<perlfunc> 1180 1181=over 4 1182 1183=item * 1184 1185Removed obsolete text about L<C<defined()>|perlfunc/defined> 1186on aggregates that should have been deleted earlier, when the feature 1187was removed. 1188 1189=item * 1190 1191Corrected documentation of L<C<eval()>|perlfunc/eval>, 1192and L<C<evalbytes()>|perlfunc/evalbytes>. 1193 1194=item * 1195 1196Clarified documentation of L<C<seek()>|perlfunc/seek>, 1197L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek> 1198emphasizing that positions are in bytes and not characters. 1199L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607> 1200 1201=item * 1202 1203Clarified documentation of L<C<sort()>|perlfunc/sort LIST> concerning 1204the variables C<$a> and C<$b>. 1205 1206=item * 1207 1208In L<C<split()>|perlfunc/split> noted that certain pattern modifiers are 1209legal, and added a caution about its use in Perls before v5.11. 1210 1211=item * 1212 1213Removed obsolete documentation of L<C<study()>|perlfunc/study>, noting 1214that it is now a no-op. 1215 1216=item * 1217 1218Noted that L<C<vec()>|perlfunc/vec> doesn't work well when the string 1219contains characters whose code points are above 255. 1220 1221=back 1222 1223=head3 L<perlguts> 1224 1225=over 4 1226 1227=item * 1228 1229Added advice on 1230L<formatted printing of operands of C<Size_t> and C<SSize_t>|perlguts/Formatted Printing of Size_t and SSize_t> 1231 1232=back 1233 1234=head3 L<perlhack> 1235 1236=over 4 1237 1238=item * 1239 1240Clarify what editor tab stop rules to use, and note that we are 1241migrating away from using tabs, replacing them with sequences of SPACE 1242characters. 1243 1244=back 1245 1246=head3 L<perlhacktips> 1247 1248=over 4 1249 1250=item * 1251 1252Give another reason to use C<cBOOL> to cast an expression to boolean. 1253 1254=item * 1255 1256Note that the macros C<TRUE> and C<FALSE> are available to express 1257boolean values. 1258 1259=back 1260 1261=head3 L<perlinterp> 1262 1263=over 4 1264 1265=item * 1266 1267L<perlinterp> has been expanded to give a more detailed example of how to 1268hunt around in the parser for how a given operator is handled. 1269 1270=back 1271 1272=head3 L<perllocale> 1273 1274=over 4 1275 1276=item * 1277 1278Some locales aren't compatible with Perl. Note that these can cause 1279core dumps. 1280 1281=back 1282 1283=head3 L<perlmod> 1284 1285=over 4 1286 1287=item * 1288 1289Various clarifications have been added. 1290 1291=back 1292 1293=head3 L<perlmodlib> 1294 1295=over 4 1296 1297=item * 1298 1299Updated the site mirror list. 1300 1301=back 1302 1303=head3 L<perlobj> 1304 1305=over 4 1306 1307=item * 1308 1309Added a section on calling methods using their fully qualified names. 1310 1311=item * 1312 1313Do not discourage manual C<@ISA>. 1314 1315=back 1316 1317=head3 L<perlootut> 1318 1319=over 4 1320 1321=item * 1322 1323Mention C<Moo> more. 1324 1325=back 1326 1327=head3 L<perlop> 1328 1329=over 4 1330 1331=item * 1332 1333Note that white space must be used for quoting operators if the 1334delimiter is a word character (I<i.e.>, matches C<\w>). 1335 1336=item * 1337 1338Clarify that in regular expression patterns delimited by single quotes, 1339no variable interpolation is done. 1340 1341=back 1342 1343=head3 L<perlre> 1344 1345=over 4 1346 1347=item * 1348 1349The first part was extensively rewritten to incorporate various basic 1350points, that in earlier versions were mentioned in sort of an appendix 1351on Version 8 regular expressions. 1352 1353=item * 1354 1355Note that it is common to have the C</x> modifier and forget that this 1356means that C<"#"> has to be escaped. 1357 1358=back 1359 1360=head3 L<perlretut> 1361 1362=over 4 1363 1364=item * 1365 1366Add introductory material. 1367 1368=item * 1369 1370Note that a metacharacter occurring in a context where it can't mean 1371that, silently loses its meta-ness and matches literally. 1372L<C<use re 'strict'>|re/'strict' mode> can catch some of these. 1373 1374=back 1375 1376=head3 L<perlunicode> 1377 1378=over 4 1379 1380=item * 1381 1382Corrected the text about Unicode BYTE ORDER MARK handling. 1383 1384=item * 1385 1386Updated the text to correspond with changes in Unicode UTS#18, concerning 1387regular expressions, and Perl compatibility with what it says. 1388 1389=back 1390 1391=head3 L<perlvar> 1392 1393=over 4 1394 1395=item * 1396 1397Document C<@ISA>. It was documented in other places, but not in L<perlvar>. 1398 1399=back 1400 1401=head1 Diagnostics 1402 1403=head2 New Diagnostics 1404 1405=head3 New Errors 1406 1407=over 4 1408 1409=item * 1410 1411L<A signature parameter must start with C<'$'>, C<'@'> or C<'%'> 1412|perldiag/A signature parameter must start with C<'$'>, C<'@'> or C<'%'>> 1413 1414=item * 1415 1416L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s""> 1417 1418=item * 1419 1420L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename"> 1421 1422=item * 1423 1424L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s""> 1425 1426=item * 1427 1428L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s""> 1429 1430=item * 1431 1432L<%s: command not found|perldiag/"%s: command not found"> 1433 1434(A) You've accidentally run your script through B<bash> or another shell 1435instead of Perl. Check the C<#!> line, or manually feed your script into 1436Perl yourself. The C<#!> line at the top of your file could look like: 1437 1438 #!/usr/bin/perl 1439 1440=item * 1441 1442L<%s: command not found: %s|perldiag/"%s: command not found: %s"> 1443 1444(A) You've accidentally run your script through B<zsh> or another shell 1445instead of Perl. Check the C<#!> line, or manually feed your script into 1446Perl yourself. The C<#!> line at the top of your file could look like: 1447 1448 #!/usr/bin/perl 1449 1450=item * 1451 1452L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled"> 1453 1454(F) To declare references to variables, as in C<my \%x>, you must first enable 1455the feature: 1456 1457 no warnings "experimental::declared_refs"; 1458 use feature "declared_refs"; 1459 1460See L</Declaring a reference to a variable>. 1461 1462=item * 1463 1464L<Illegal character following sigil in a subroutine signature 1465|perldiag/Illegal character following sigil in a subroutine signature> 1466 1467=item * 1468 1469L<Indentation on line %d of here-doc doesn't match delimiter 1470|perldiag/Indentation on line %d of here-doc doesn't match delimiter> 1471 1472=item * 1473 1474L<Infinite recursion via empty pattern|perldiag/"Infinite recursion via empty pattern">. 1475 1476Using the empty pattern (which re-executes the last successfully-matched 1477pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has 1478always previously yielded a segfault. It now produces this error. 1479 1480=item * 1481 1482L<Malformed UTF-8 string in "%s" 1483|perldiag/Malformed UTF-8 string in "%s"> 1484 1485=item * 1486 1487L<Multiple slurpy parameters not allowed 1488|perldiag/Multiple slurpy parameters not allowed> 1489 1490=item * 1491 1492L<C<'#'> not allowed immediately following a sigil in a subroutine signature 1493|perldiag/C<'#'> not allowed immediately following a sigil in a subroutine signature> 1494 1495=item * 1496 1497L<panic: unknown OA_*: %x 1498|perldiag/panic: unknown OA_*: %x> 1499 1500=item * 1501 1502L<Unescaped left brace in regex is illegal here|perldiag/Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>> 1503 1504Unescaped left braces are now illegal in some contexts in regular expression 1505patterns. In other contexts, they are still just deprecated; they will 1506be illegal in Perl 5.30. 1507 1508=item * 1509 1510L<Version control conflict marker|perldiag/"Version control conflict marker"> 1511 1512(F) The parser found a line starting with C<E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>>, 1513C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a 1514version control system to mark conflicts after a failed merge operation. 1515 1516=back 1517 1518=head3 New Warnings 1519 1520=over 4 1521 1522=item * 1523 1524L<Can't determine class of operator %s, assuming C<BASEOP> 1525|perldiag/Can't determine class of operator %s, assuming C<BASEOP>> 1526 1527=item * 1528 1529L<Declaring references is experimental|perldiag/"Declaring references is experimental"> 1530 1531(S experimental::declared_refs) This warning is emitted if you use a reference 1532constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or 1533C<local()>. Simply suppress the warning if you want to use the feature, but 1534know that in doing so you are taking the risk of using an experimental feature 1535which may change or be removed in a future Perl version: 1536 1537 no warnings "experimental::declared_refs"; 1538 use feature "declared_refs"; 1539 $fooref = my \$foo; 1540 1541See L</Declaring a reference to a variable>. 1542 1543=item * 1544 1545L<do "%s" failed, '.' is no longer in @INC|perldiag/do "%s" failed, '.' is no longer in @INC; did you mean do ".E<sol>%s"?> 1546 1547Since C<"."> is now removed from C<@INC> by default, C<do> will now trigger a warning recommending to fix the C<do> statement. 1548 1549=item * 1550 1551L<C<File::Glob::glob()> will disappear in perl 5.30. Use C<File::Glob::bsd_glob()> instead. 1552|perldiag/C<File::Glob::glob()> will disappear in perl 5.30. Use C<File::Glob::bsd_glob()> instead.> 1553 1554=item * 1555 1556L<Unescaped literal '%c' in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> 1557|perldiag/Unescaped literal '%c' in regex; marked by <-- HERE in mE<sol>%sE<sol>> 1558 1559=item * 1560 1561L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30"> 1562 1563See L</Deprecations> 1564 1565=back 1566 1567=head2 Changes to Existing Diagnostics 1568 1569=over 4 1570 1571=item * 1572 1573When a C<require> fails, we now do not provide C<@INC> when the C<require> 1574is for a file instead of a module. 1575 1576=item * 1577 1578When C<@INC> is not scanned for a C<require> call, we no longer display 1579C<@INC> to avoid confusion. 1580 1581=item * 1582 1583L<Attribute "locked" is deprecated, and will disappear in Perl 5.28 1584|perldiag/Attribute "locked" is deprecated, and will disappear in Perl 5.28> 1585 1586This existing warning has had the I<and will disappear> text added in this 1587release. 1588 1589=item * 1590 1591L<Attribute "unique" is deprecated, and will disappear in Perl 5.28 1592|perldiag/Attribute "unique" is deprecated, and will disappear in Perl 5.28> 1593 1594This existing warning has had the I<and will disappear> text added in this 1595release. 1596 1597=item * 1598 1599Calling POSIX::%s() is deprecated 1600 1601This warning has been removed, as the deprecated functions have been 1602removed from POSIX. 1603 1604=item * 1605 1606L<Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32 1607|perldiag/Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32> 1608 1609This existing warning has had the I<this will not be allowed> text added 1610in this release. 1611 1612=item * 1613 1614L<Deprecated use of C<my()> in false conditional. This will be a fatal error in Perl 5.30 1615|perldiag/Deprecated use of C<my()> in false conditional. This will be a fatal error in Perl 5.30> 1616 1617This existing warning has had the I<this will be a fatal error> text added 1618in this release. 1619 1620=item * 1621 1622L<C<dump()> better written as C<CORE::dump()>. C<dump()> will no longer be available in Perl 5.30 1623|perldiag/C<dump()> better written as C<CORE::dump()>. C<dump()> will no longer be available in Perl 5.30> 1624 1625This existing warning has had the I<no longer be available> text added in 1626this release. 1627 1628=item * 1629 1630L<Experimental %s on scalar is now forbidden 1631|perldiag/Experimental %s on scalar is now forbidden> 1632 1633This message is now followed by more helpful text. 1634L<[perl #127976]|https://rt.perl.org/Public/Bug/Display.html?id=127976> 1635 1636=item * 1637 1638Experimental "%s" subs not enabled 1639 1640This warning was been removed, as lexical subs are no longer experimental. 1641 1642=item * 1643 1644Having more than one /%c regexp modifier is deprecated 1645 1646This deprecation warning has been removed, since C</xx> now has a new 1647meaning. 1648 1649=item * 1650 1651L<%s() is deprecated on C<:utf8> handles. This will be a fatal error in Perl 5.30 1652|perldiag/%s() is deprecated on C<:utf8> handles. This will be a fatal error in Perl 5.30>. 1653 1654where "%s" is one of C<sysread>, C<recv>, C<syswrite>, or C<send>. 1655 1656This existing warning has had the I<this will be a fatal error> text added 1657in this release. 1658 1659This warning is now enabled by default, as all C<deprecated> category 1660warnings should be. 1661 1662=item * 1663 1664L<C<$*> is no longer supported. Its use will be fatal in Perl 5.30 1665|perldiag/C<$*> is no longer supported. Its use will be fatal in Perl 5.30> 1666 1667This existing warning has had the I<its use will be fatal> text added in 1668this release. 1669 1670=item * 1671 1672L<C<$#> is no longer supported. Its use will be fatal in Perl 5.30 1673|perldiag/C<$#> is no longer supported. Its use will be fatal in Perl 5.30> 1674 1675This existing warning has had the I<its use will be fatal> text added in 1676this release. 1677 1678=item * 1679 1680L<Malformed UTF-8 character%s 1681|perldiag/Malformed UTF-8 character%s> 1682 1683Details as to the exact problem have been added at the end of this 1684message 1685 1686=item * 1687 1688L<Missing or undefined argument to %s 1689|perldiag/Missing or undefined argument to %s> 1690 1691This warning used to warn about C<require>, even if it was actually C<do> 1692which being executed. It now gets the operation name right. 1693 1694=item * 1695 1696NO-BREAK SPACE in a charnames alias definition is deprecated 1697 1698This warning has been removed as the behavior is now an error. 1699 1700=item * 1701 1702L<Odd nameE<sol>value argument for subroutine '%s' 1703|perldiag/"Odd nameE<sol>value argument for subroutine '%s'"> 1704 1705This warning now includes the name of the offending subroutine. 1706 1707=item * 1708 1709L<Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28 1710|perldiag/Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28> 1711 1712This existing warning has had the I<this will be a fatal error> text added 1713in this release. 1714 1715=item * 1716 1717L<Opening filehandle %s also as a directory. This will be a fatal error in Perl 5.28 1718|perldiag/Opening filehandle %s also as a directory. This will be a fatal error in Perl 5.28> 1719 1720This existing warning has had the I<this will be a fatal error> text added 1721in this release. 1722 1723=item * 1724 1725panic: ck_split, type=%u 1726 1727panic: pp_split, pm=%p, s=%p 1728 1729These panic errors have been removed. 1730 1731=item * 1732 1733Passing malformed UTF-8 to "%s" is deprecated 1734 1735This warning has been changed to the fatal 1736L<Malformed UTF-8 string in "%s" 1737|perldiag/Malformed UTF-8 string in "%s"> 1738 1739=item * 1740 1741L<Setting C<< $E<sol> >> to a reference to %s as a form of slurp is deprecated, treating as undef. This will be fatal in Perl 5.28 1742|perldiag/Setting C<< $E<sol> >> to a reference to %s as a form of slurp is deprecated, treating as undef. This will be fatal in Perl 5.28> 1743 1744This existing warning has had the I<this will be fatal> text added in 1745this release. 1746 1747=item * 1748 1749L<C<${^ENCODING}> is no longer supported. Its use will be fatal in Perl 5.28|perldiag/"${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28"> 1750 1751This warning used to be: "Setting C<${^ENCODING}> is deprecated". 1752 1753The special action of the variable C<${^ENCODING}> was formerly used to 1754implement the C<encoding> pragma. As of Perl 5.26, rather than being 1755deprecated, assigning to this variable now has no effect except to issue 1756the warning. 1757 1758=item * 1759 1760L<Too few arguments for subroutine '%s' 1761|perldiag/Too few arguments for subroutine '%s'> 1762 1763This warning now includes the name of the offending subroutine. 1764 1765=item * 1766 1767L<Too many arguments for subroutine '%s' 1768|perldiag/Too many arguments for subroutine '%s'> 1769 1770This warning now includes the name of the offending subroutine. 1771 1772=item * 1773 1774L<Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in mE<sol>%sE<sol> 1775|perldiag/Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in mE<sol>%sE<sol>> 1776 1777This existing warning has had the I<here (and will be fatal...)> text 1778added in this release. 1779 1780=item * 1781 1782L<Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 1783|perldiag/Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28> 1784 1785This existing warning has had the I<its use will be fatal> text added in 1786this release. 1787 1788=item * 1789 1790L<Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28 1791|perldiag/Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28> 1792 1793This existing warning has had the I<its use will be fatal> text added in 1794this release. 1795 1796=item * 1797 1798L<Use of code point 0x%s is deprecated; the permissible max is 0x%s. This will be fatal in Perl 5.28 1799|perldiag/Use of code point 0x%s is deprecated; the permissible max is 0x%s. This will be fatal in Perl 5.28> 1800 1801This existing warning has had the I<this will be fatal> text added in 1802this release. 1803 1804=item * 1805 1806L<Use of comma-less variable list is deprecated. Its use will be fatal in Perl 5.28 1807|perldiag/Use of comma-less variable list is deprecated. Its use will be fatal in Perl 5.28> 1808 1809This existing warning has had the I<its use will be fatal> text added in 1810this release. 1811 1812=item * 1813 1814L<Use of inherited C<AUTOLOAD> for non-method %s() is deprecated. This will be fatal in Perl 5.28 1815|perldiag/Use of inherited C<AUTOLOAD> for non-method %s() is deprecated. This will be fatal in Perl 5.28> 1816 1817This existing warning has had the I<this will be fatal> text added in 1818this release. 1819 1820=item * 1821 1822L<Use of strings with code points over 0xFF as arguments to %s operator is deprecated. This will be a fatal error in Perl 5.28 1823|perldiag/Use of strings with code points over 0xFF as arguments to %s operator is deprecated. This will be a fatal error in Perl 5.28> 1824 1825This existing warning has had the I<this will be a fatal error> text added in 1826this release. 1827 1828=back 1829 1830=head1 Utility Changes 1831 1832=head2 F<c2ph> and F<pstruct> 1833 1834=over 4 1835 1836=item * 1837 1838These old utilities have long since superceded by L<h2xs>, and are 1839now gone from the distribution. 1840 1841=back 1842 1843=head2 F<Porting/pod_lib.pl> 1844 1845=over 4 1846 1847=item * 1848 1849Removed spurious executable bit. 1850 1851=item * 1852 1853Account for the possibility of DOS file endings. 1854 1855=back 1856 1857=head2 F<Porting/sync-with-cpan> 1858 1859=over 4 1860 1861=item * 1862 1863Many improvements. 1864 1865=back 1866 1867=head2 F<perf/benchmarks> 1868 1869=over 4 1870 1871=item * 1872 1873Tidy file, rename some symbols. 1874 1875=back 1876 1877=head2 F<Porting/checkAUTHORS.pl> 1878 1879=over 4 1880 1881=item * 1882 1883Replace obscure character range with C<\w>. 1884 1885=back 1886 1887=head2 F<t/porting/regen.t> 1888 1889=over 4 1890 1891=item * 1892 1893Try to be more helpful when tests fail. 1894 1895=back 1896 1897=head2 F<utils/h2xs.PL> 1898 1899=over 4 1900 1901=item * 1902 1903Avoid infinite loop for enums. 1904 1905=back 1906 1907=head2 L<perlbug> 1908 1909=over 4 1910 1911=item * 1912 1913Long lines in the message body are now wrapped at 900 characters, to stay 1914well within the 1000-character limit imposed by SMTP mail transfer agents. 1915This is particularly likely to be important for the list of arguments to 1916F<Configure>, which can readily exceed the limit if, for example, it names 1917several non-default installation paths. This change also adds the first unit 1918tests for perlbug. 1919L<[perl #128020]|https://rt.perl.org/Public/Bug/Display.html?id=128020> 1920 1921=back 1922 1923=head1 Configuration and Compilation 1924 1925=over 4 1926 1927=item * 1928 1929C<-Ddefault_inc_excludes_dot> has added, and enabled by default. 1930 1931=item * 1932 1933The C<dtrace> build process has further changes 1934L<[perl #130108]|https://rt.perl.org/Public/Bug/Display.html?id=130108>: 1935 1936=over 1937 1938=item * 1939 1940If the C<-xnolibs> is available, use that so a F<dtrace> perl can be 1941built within a FreeBSD jail. 1942 1943=item * 1944 1945On systems that build a F<dtrace> object file (FreeBSD, Solaris, and 1946SystemTap's dtrace emulation), copy the input objects to a separate 1947directory and process them there, and use those objects in the link, 1948since C<dtrace -G> also modifies these objects. 1949 1950=item * 1951 1952Add F<libelf> to the build on FreeBSD 10.x, since F<dtrace> adds 1953references to F<libelf> symbols. 1954 1955=item * 1956 1957Generate a dummy F<dtrace_main.o> if C<dtrace -G> fails to build it. A 1958default build on Solaris generates probes from the unused inline 1959functions, while they don't on FreeBSD, which causes C<dtrace -G> to 1960fail. 1961 1962=back 1963 1964=item * 1965 1966You can now disable perl's use of the C<PERL_HASH_SEED> and 1967C<PERL_PERTURB_KEYS> environment variables by configuring perl with 1968C<-Accflags=NO_PERL_HASH_ENV>. 1969 1970=item * 1971 1972You can now disable perl's use of the C<PERL_HASH_SEED_DEBUG> environment 1973variable by configuring perl with 1974C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>. 1975 1976=item * 1977 1978F<Configure> now zeroes out the alignment bytes when calculating the bytes 1979for 80-bit C<NaN> and C<Inf> to make builds more reproducible. 1980L<[perl #130133]|https://rt.perl.org/Public/Bug/Display.html?id=130133> 1981 1982=item * 1983 1984Since v5.18, for testing purposes we have included support for 1985building perl with a variety of non-standard, and non-recommended 1986hash functions. Since we do not recommend the use of these functions, 1987we have removed them and their corresponding build options. Specifically 1988this includes the following build options: 1989 1990 PERL_HASH_FUNC_SDBM 1991 PERL_HASH_FUNC_DJB2 1992 PERL_HASH_FUNC_SUPERFAST 1993 PERL_HASH_FUNC_MURMUR3 1994 PERL_HASH_FUNC_ONE_AT_A_TIME 1995 PERL_HASH_FUNC_ONE_AT_A_TIME_OLD 1996 PERL_HASH_FUNC_MURMUR_HASH_64A 1997 PERL_HASH_FUNC_MURMUR_HASH_64B 1998 1999=item * 2000 2001Remove "Warning: perl appears in your path" 2002 2003This install warning is more or less obsolete, since most platforms already 2004B<will> have a F</usr/bin/perl> or similar provided by the OS. 2005 2006=item * 2007 2008Reduce verbosity of C<make install.man> 2009 2010Previously, two progress messages were emitted for each manpage: one by 2011installman itself, and one by the function in F<install_lib.pl> that it calls to 2012actually install the file. Disabling the second of those in each case saves 2013over 750 lines of unhelpful output. 2014 2015=item * 2016 2017Cleanup for C<clang -Weverything> support. 2018L<[perl #129961]|https://rt.perl.org/Public/Bug/Display.html?id=129961> 2019 2020=item * 2021 2022F<Configure>: signbit scan was assuming too much, stop assuming negative 0. 2023 2024=item * 2025 2026Various compiler warnings have been silenced. 2027 2028=item * 2029 2030Several smaller changes have been made to remove impediments to compiling 2031under C++11. 2032 2033=item * 2034 2035Builds using C<USE_PAD_RESET> now work again; this configuration had 2036bit-rotted. 2037 2038=item * 2039 2040A probe for C<gai_strerror> was added to F<Configure> that checks if 2041the C<gai_strerror()> routine is available and can be used to 2042translate error codes returned by C<getaddrinfo()> into human 2043readable strings. 2044 2045=item * 2046 2047F<Configure> now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are 2048requested. 2049L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203> 2050 2051=item * 2052 2053Fixed a bug in which F<Configure> could append C<-quadmath> to the 2054archname even if it was already present. 2055L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538> 2056 2057=item * 2058 2059Clang builds with C<-DPERL_GLOBAL_STRUCT> or 2060C<-DPERL_GLOBAL_STRUCT_PRIVATE> have 2061been fixed (by disabling Thread Safety Analysis for these configurations). 2062 2063=item * 2064 2065F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no 2066files require updates. This could cause dependencies, F<perlmain.c> 2067in particular, to be rebuilt unnecessarily. 2068L<[perl #126710]|https://rt.perl.org/Public/Bug/Display.html?id=126710> 2069 2070=item * 2071 2072The output of C<perl -V> has been reformatted so that each configuration 2073and compile-time option is now listed one per line, to improve 2074readability. 2075 2076=item * 2077 2078F<Configure> now builds C<miniperl> and C<generate_uudmap> if you 2079invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>. 2080This means you can supply your target platform C<config.sh>, generate 2081the headers and proceed to build your cross-target perl. 2082L<[perl #127234]|https://rt.perl.org/Public/Bug/Display.html?id=127234> 2083 2084=item * 2085 2086Perl built with C<-Accflags=-DPERL_TRACE_OPS> now only dumps the operator 2087counts when the environment variable C<PERL_TRACE_OPS> is set to a 2088non-zero integer. This allows C<make test> to pass on such a build. 2089 2090=item * 2091 2092When building with GCC 6 and link-time optimization (the C<-flto> option to 2093C<gcc>), F<Configure> was treating all probed symbols as present on the 2094system, regardless of whether they actually exist. This has been fixed. 2095L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131> 2096 2097=item * 2098 2099The F<t/test.pl> library is used for internal testing of Perl itself, and 2100also copied by several CPAN modules. Some of those modules must work on 2101older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl 2102features. Compatibility with Perl 5.8 was inadvertently removed some time 2103ago; it has now been restored. 2104L<[perl #128052]|https://rt.perl.org/Public/Bug/Display.html?id=128052> 2105 2106=item * 2107 2108The build process no longer emits an extra blank line before building each 2109"simple" extension (those with only F<*.pm> and F<*.pod> files). 2110 2111=back 2112 2113=head1 Testing 2114 2115Tests were added and changed to reflect the other additions and changes 2116in this release. Furthermore, these substantive changes were made: 2117 2118=over 4 2119 2120=item * 2121 2122A new test script, F<comp/parser_run.t>, has been added that is like 2123F<comp/parser.t> but with F<test.pl> included so that C<runperl()> and the 2124like are available for use. 2125 2126=item * 2127 2128Tests for locales were erroneously using locales incompatible with Perl. 2129 2130=item * 2131 2132Some parts of the test suite that try to exhaustively test edge cases in the 2133regex implementation have been restricted to running for a maximum of five 2134minutes. On slow systems they could otherwise take several hours, without 2135significantly improving our understanding of the correctness of the code 2136under test. 2137 2138=item * 2139 2140A new internal facility allows analysing the time taken by the individual 2141tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>. 2142 2143=item * 2144 2145F<t/re/regexp_nonull.t> has been added to test that the regular expression 2146engine can handle scalars that do not have a null byte just past the end of 2147the string. 2148 2149=item * 2150 2151A new test script, F<t/op/decl-refs.t>, has been added to test the new feature 2152L</Declaring a reference to a variable>. 2153 2154=item * 2155 2156A new test script, F<t/re/keep_tabs.t> has been added to contain tests 2157where C<\t> characters should not be expanded into spaces. 2158 2159=item * 2160 2161A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes 2162generated by bracketed character classes are as expected. 2163 2164=item * 2165 2166There is now more extensive testing of the Unicode-related API macros 2167and functions. 2168 2169=item * 2170 2171Several of the longer running API test files have been split into 2172multiple test files so that they can be run in parallel. 2173 2174=item * 2175 2176F<t/harness> now tries really hard not to run tests which are located 2177outside of the Perl source tree. 2178L<[perl #124050]|https://rt.perl.org/Public/Bug/Display.html?id=124050> 2179 2180=item * 2181 2182Prevent debugger tests (F<lib/perl5db.t>) from failing due to the contents 2183of C<$ENV{PERLDB_OPTS}>. 2184L<[perl #130445]|https://rt.perl.org/Public/Bug/Display.html?id=130445> 2185 2186=back 2187 2188=head1 Platform Support 2189 2190=head2 New Platforms 2191 2192=over 4 2193 2194=item NetBSD/VAX 2195 2196Perl now compiles under NetBSD on VAX machines. However, it's not 2197possible for that platform to implement floating-point infinities and 2198NaNs compatible with most modern systems, which implement the IEEE-754 2199floating point standard. The hexadecimal floating point (C<0x...p[+-]n> 2200literals, C<printf %a>) is not implemented, either. 2201The C<make test> passes 98% of tests. 2202 2203=over 4 2204 2205=item * 2206 2207Test fixes and minor updates. 2208 2209=item * 2210 2211Account for lack of C<inf>, C<nan>, and C<-0.0> support. 2212 2213=back 2214 2215=back 2216 2217=head2 Platform-Specific Notes 2218 2219=over 4 2220 2221=item Darwin 2222 2223=over 4 2224 2225=item * 2226 2227Don't treat C<-Dprefix=/usr> as special: instead require an extra option 2228C<-Ddarwin_distribution> to produce the same results. 2229 2230=item * 2231 2232OS X El Capitan doesn't implement the C<clock_gettime()> or 2233C<clock_getres()> APIs; emulate them as necessary. 2234 2235=item * 2236 2237Deprecated C<syscall(2)> on macOS 10.12. 2238 2239=back 2240 2241=item EBCDIC 2242 2243Several tests have been updated to work (or be skipped) on EBCDIC platforms. 2244 2245=item HP-UX 2246 2247The L<Net::Ping> UDP test is now skipped on HP-UX. 2248 2249=item Hurd 2250 2251The hints for Hurd have been improved, enabling malloc wrap and reporting the 2252GNU libc used (previously it was an empty string when reported). 2253 2254=item VAX 2255 2256VAX floating point formats are now supported on NetBSD. 2257 2258=item VMS 2259 2260=over 4 2261 2262=item * 2263 2264The path separator for the C<PERL5LIB> and C<PERLLIB> environment entries is 2265now a colon (C<":">) when running under a Unix shell. There is no change when 2266running under DCL (it's still C<"|">). 2267 2268=item * 2269 2270F<configure.com> now recognizes the VSI-branded C compiler and no longer 2271recognizes the "DEC"-branded C compiler (as there hasn't been such a thing for 227215 or more years). 2273 2274=back 2275 2276=item Windows 2277 2278=over 4 2279 2280=item * 2281 2282Support for compiling perl on Windows using Microsoft Visual Studio 2015 2283(containing Visual C++ 14.0) has been added. 2284 2285This version of VC++ includes a completely rewritten C run-time library, some 2286of the changes in which mean that work done to resolve a socket 2287C<close()> bug in 2288perl #120091 and perl #118059 is not workable in its current state with this 2289version of VC++. Therefore, we have effectively reverted that bug fix for 2290VS2015 onwards on the basis that being able to build with VS2015 onwards is 2291more important than keeping the bug fix. We may revisit this in the future to 2292attempt to fix the bug again in a way that is compatible with VS2015. 2293 2294These changes do not affect compilation with GCC or with Visual Studio versions 2295up to and including VS2013, I<i.e.>, the bug fix is retained (unchanged) for those 2296compilers. 2297 2298Note that you may experience compatibility problems if you mix a perl built 2299with GCC or VS E<lt>= VS2013 with XS modules built with VS2015, or if you mix a 2300perl built with VS2015 with XS modules built with GCC or VS E<lt>= VS2013. 2301Some incompatibility may arise because of the bug fix that has been reverted 2302for VS2015 builds of perl, but there may well be incompatibility anyway because 2303of the rewritten CRT in VS2015 (I<e.g.>, see discussion at 2304L<http://stackoverflow.com/questions/30412951>). 2305 2306=item * 2307 2308It now automatically detects GCC versus Visual C and sets the VC version 2309number on Win32. 2310 2311=back 2312 2313=item Linux 2314 2315Drop support for Linux F<a.out> executable format. Linux has used ELF for 2316over twenty years. 2317 2318=item OpenBSD 6 2319 2320OpenBSD 6 still does not support returning C<pid>, C<gid>, or C<uid> with 2321C<SA_SIGINFO>. Make sure to account for it. 2322 2323=item FreeBSD 2324 2325F<t/uni/overload.t>: Skip hanging test on FreeBSD. 2326 2327=item DragonFly BSD 2328 2329DragonFly BSD now has support for C<setproctitle()>. 2330L<[perl #130068]|https://rt.perl.org/Public/Bug/Display.html?id=130068>. 2331 2332=back 2333 2334=head1 Internal Changes 2335 2336=over 4 2337 2338=item * 2339 2340A new API function L<C<sv_setpv_bufsize()>|perlapi/sv_setpv_bufsize> 2341allows simultaneously setting the 2342length and the allocated size of the buffer in an C<SV>, growing the 2343buffer if necessary. 2344 2345=item * 2346 2347A new API macro L<C<SvPVCLEAR()>|perlapi/SvPVCLEAR> sets its C<SV> 2348argument to an empty string, 2349like Perl-space C<$x = ''>, but with several optimisations. 2350 2351=item * 2352 2353Several new macros and functions for dealing with Unicode and 2354UTF-8-encoded strings have been added to the API, as well as some 2355changes in the 2356functionality of existing functions (see L<perlapi/Unicode Support> for 2357more details): 2358 2359=over 2360 2361=item * 2362 2363New versions of the API macros like C<isALPHA_utf8> and C<toLOWER_utf8> 2364have been added, each with the suffix C<_safe>, like 2365L<C<isSPACE_utf8_safe>|perlapi/isSPACE>. These take an extra 2366parameter, giving an upper 2367limit of how far into the string it is safe to read. Using the old 2368versions could cause attempts to read beyond the end of the input buffer 2369if the UTF-8 is not well-formed, and their use now raises a deprecation 2370warning. Details are at L<perlapi/Character classification>. 2371 2372=item * 2373 2374Macros like L<C<isALPHA_utf8>|perlapi/isALPHA> and 2375L<C<toLOWER_utf8>|perlapi/toLOWER_utf8> now die if they detect 2376that their input UTF-8 is malformed. A deprecation warning had been 2377issued since Perl 5.18. 2378 2379=item * 2380 2381Several new macros for analysing the validity of utf8 sequences. These 2382are: 2383 2384L<C<UTF8_GOT_ABOVE_31_BIT>|perlapi/UTF8_GOT_ABOVE_31_BIT> 2385L<C<UTF8_GOT_CONTINUATION>|perlapi/UTF8_GOT_CONTINUATION> 2386L<C<UTF8_GOT_EMPTY>|perlapi/UTF8_GOT_EMPTY> 2387L<C<UTF8_GOT_LONG>|perlapi/UTF8_GOT_LONG> 2388L<C<UTF8_GOT_NONCHAR>|perlapi/UTF8_GOT_NONCHAR> 2389L<C<UTF8_GOT_NON_CONTINUATION>|perlapi/UTF8_GOT_NON_CONTINUATION> 2390L<C<UTF8_GOT_OVERFLOW>|perlapi/UTF8_GOT_OVERFLOW> 2391L<C<UTF8_GOT_SHORT>|perlapi/UTF8_GOT_SHORT> 2392L<C<UTF8_GOT_SUPER>|perlapi/UTF8_GOT_SUPER> 2393L<C<UTF8_GOT_SURROGATE>|perlapi/UTF8_GOT_SURROGATE> 2394L<C<UTF8_IS_INVARIANT>|perlapi/UTF8_IS_INVARIANT> 2395L<C<UTF8_IS_NONCHAR>|perlapi/UTF8_IS_NONCHAR> 2396L<C<UTF8_IS_SUPER>|perlapi/UTF8_IS_SUPER> 2397L<C<UTF8_IS_SURROGATE>|perlapi/UTF8_IS_SURROGATE> 2398L<C<UVCHR_IS_INVARIANT>|perlapi/UVCHR_IS_INVARIANT> 2399L<C<isUTF8_CHAR_flags>|perlapi/isUTF8_CHAR_flags> 2400L<C<isSTRICT_UTF8_CHAR>|perlapi/isSTRICT_UTF8_CHAR> 2401L<C<isC9_STRICT_UTF8_CHAR>|perlapi/isC9_STRICT_UTF8_CHAR> 2402 2403=item * 2404 2405Functions that are all extensions of the C<is_utf8_string_I<*>()> functions, 2406that apply various restrictions to the UTF-8 recognized as valid: 2407 2408L<C<is_strict_utf8_string>|perlapi/is_strict_utf8_string>, 2409L<C<is_strict_utf8_string_loc>|perlapi/is_strict_utf8_string_loc>, 2410L<C<is_strict_utf8_string_loclen>|perlapi/is_strict_utf8_string_loclen>, 2411 2412L<C<is_c9strict_utf8_string>|perlapi/is_c9strict_utf8_string>, 2413L<C<is_c9strict_utf8_string_loc>|perlapi/is_c9strict_utf8_string_loc>, 2414L<C<is_c9strict_utf8_string_loclen>|perlapi/is_c9strict_utf8_string_loclen>, 2415 2416L<C<is_utf8_string_flags>|perlapi/is_utf8_string_flags>, 2417L<C<is_utf8_string_loc_flags>|perlapi/is_utf8_string_loc_flags>, 2418L<C<is_utf8_string_loclen_flags>|perlapi/is_utf8_string_loclen_flags>, 2419 2420L<C<is_utf8_fixed_width_buf_flags>|perlapi/is_utf8_fixed_width_buf_flags>, 2421L<C<is_utf8_fixed_width_buf_loc_flags>|perlapi/is_utf8_fixed_width_buf_loc_flags>, 2422L<C<is_utf8_fixed_width_buf_loclen_flags>|perlapi/is_utf8_fixed_width_buf_loclen_flags>. 2423 2424L<C<is_utf8_invariant_string>|perlapi/is_utf8_invariant_string>. 2425L<C<is_utf8_valid_partial_char>|perlapi/is_utf8_valid_partial_char>. 2426L<C<is_utf8_valid_partial_char_flags>|perlapi/is_utf8_valid_partial_char_flags>. 2427 2428=item * 2429 2430The functions L<C<utf8n_to_uvchr>|perlapi/utf8n_to_uvchr> and its 2431derivatives have had several changes of behaviour. 2432 2433Calling them, while passing a string length of 0 is now asserted against 2434in DEBUGGING builds, and otherwise, returns the Unicode REPLACEMENT 2435CHARACTER. If you have nothing to decode, you shouldn't call the decode 2436function. 2437 2438They now return the Unicode REPLACEMENT CHARACTER if called with UTF-8 2439that has the overlong malformation and that malformation is allowed by 2440the input parameters. This malformation is where the UTF-8 looks valid 2441syntactically, but there is a shorter sequence that yields the same code 2442point. This has been forbidden since Unicode version 3.1. 2443 2444They now accept an input 2445flag to allow the overflow malformation. This malformation is when the 2446UTF-8 may be syntactically valid, but the code point it represents is 2447not capable of being represented in the word length on the platform. 2448What "allowed" means, in this case, is that the function doesn't return an 2449error, and it advances the parse pointer to beyond the UTF-8 in 2450question, but it returns the Unicode REPLACEMENT CHARACTER as the value 2451of the code point (since the real value is not representable). 2452 2453They no longer abandon searching for other malformations when the first 2454one is encountered. A call to one of these functions thus can generate 2455multiple diagnostics, instead of just one. 2456 2457=item * 2458 2459L<C<valid_utf8_to_uvchr()>|perlapi/valid_utf8_to_uvchr> has been added 2460to the API (although it was 2461present in core earlier). Like C<utf8_to_uvchr_buf()>, but assumes that 2462the next character is well-formed. Use with caution. 2463 2464=item * 2465 2466A new function, L<C<utf8n_to_uvchr_error>|perlapi/utf8n_to_uvchr_error>, 2467has been added for 2468use by modules that need to know the details of UTF-8 malformations 2469beyond pass/fail. Previously, the only ways to know why a sequence was 2470ill-formed was to capture and parse the generated diagnostics or to do 2471your own analysis. 2472 2473=item * 2474 2475There is now a safer version of utf8_hop(), called 2476L<C<utf8_hop_safe()>|perlapi/utf8_hop_safe>. 2477Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or 2478after the end of the supplied buffer. 2479 2480=item * 2481 2482Two new functions, L<C<utf8_hop_forward()>|perlapi/utf8_hop_forward> and 2483L<C<utf8_hop_back()>|perlapi/utf8_hop_back> are 2484similar to C<utf8_hop_safe()> but are for when you know which direction 2485you wish to travel. 2486 2487=item * 2488 2489Two new macros which return useful utf8 byte sequences: 2490 2491L<C<BOM_UTF8>|perlapi/BOM_UTF8> 2492 2493L<C<REPLACEMENT_CHARACTER_UTF8>|perlapi/REPLACEMENT_CHARACTER_UTF8> 2494 2495=back 2496 2497=item * 2498 2499Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by 2500default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define. 2501This flag alters how the C<op_sibling> field is used in C<OP> structures, 2502and has been available optionally since perl 5.22. 2503 2504See L<perl5220delta/"Internal Changes"> for more details of what this 2505build option does. 2506 2507=item * 2508 2509Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM>, and C<OP_ARGCHECK> have 2510been added. These are intended principally to implement the individual 2511elements of a subroutine signature, plus any overall checking required. 2512 2513=item * 2514 2515The C<OP_PUSHRE> op has been eliminated and the C<OP_SPLIT> op has been 2516changed from class C<LISTOP> to C<PMOP>. 2517 2518Formerly the first child of a split would be a C<pushre>, which would have the 2519C<split>'s regex attached to it. Now the regex is attached directly to the 2520C<split> op, and the C<pushre> has been eliminated. 2521 2522=item * 2523 2524The L<C<op_class()>|perlapi/op_class> API function has been added. This 2525is like the existing 2526C<OP_CLASS()> macro, but can more accurately determine what struct an op 2527has been allocated as. For example C<OP_CLASS()> might return 2528C<OA_BASEOP_OR_UNOP> indicating that ops of this type are usually 2529allocated as an C<OP> or C<UNOP>; while C<op_class()> will return 2530C<OPclass_BASEOP> or C<OPclass_UNOP> as appropriate. 2531 2532=item * 2533 2534All parts of the internals now agree that the C<sassign> op is a C<BINOP>; 2535previously it was listed as a C<BASEOP> in F<regen/opcodes>, which meant 2536that several parts of the internals had to be special-cased to accommodate 2537it. This oddity's original motivation was to handle code like C<$x ||= 1>; 2538that is now handled in a simpler way. 2539 2540=item * 2541 2542The output format of the L<C<op_dump()>|perlapi/op_dump> function (as 2543used by C<perl -Dx>) 2544has changed: it now displays an "ASCII-art" tree structure, and shows more 2545low-level details about each op, such as its address and class. 2546 2547=item * 2548 2549The C<PADOFFSET> type has changed from being unsigned to signed, and 2550several pad-related variables such as C<PL_padix> have changed from being 2551of type C<I32> to type C<PADOFFSET>. 2552 2553=item * 2554 2555The C<DEBUGGING>-mode output for regex compilation and execution has been 2556enhanced. 2557 2558=item * 2559 2560Several obscure SV flags have been eliminated, sometimes along with the 2561macros which manipulate them: C<SVpbm_VALID>, C<SVpbm_TAIL>, C<SvTAIL_on>, 2562C<SvTAIL_off>, C<SVrepl_EVAL>, C<SvEVALED>. 2563 2564=item * 2565 2566An OP C<op_private> flag has been eliminated: C<OPpRUNTIME>. This used to 2567often get set on C<PMOP> ops, but had become meaningless over time. 2568 2569=back 2570 2571=head1 Selected Bug Fixes 2572 2573=over 4 2574 2575=item * 2576 2577Perl no longer panics when switching into some locales on machines with 2578buggy C<strxfrm()> implementations in their F<libc>. 2579L<[perl #121734]|https://rt.perl.org/Public/Bug/Display.html?id=121734> 2580 2581=item * 2582 2583C< $-{$name} > would leak an C<AV> on each access if the regular 2584expression had no named captures. The same applies to access to any 2585hash tied with L<Tie::Hash::NamedCapture> and C<< all =E<gt> 1 >>. 2586L<[perl #130822]|https://rt.perl.org/Public/Bug/Display.html?id=130822> 2587 2588=item * 2589 2590Attempting to use the deprecated variable C<$#> as the object in an 2591indirect object method call could cause a heap use after free or 2592buffer overflow. 2593L<[perl #129274]|https://rt.perl.org/Public/Bug/Display.html?id=129274> 2594 2595=item * 2596 2597When checking for an indirect object method call, in some rare cases 2598the parser could reallocate the line buffer but then continue to use 2599pointers to the old buffer. 2600L<[perl #129190]|https://rt.perl.org/Public/Bug/Display.html?id=129190> 2601 2602=item * 2603 2604Supplying a glob as the format argument to 2605L<C<formline>|perlfunc/formline> would 2606cause an assertion failure. 2607L<[perl #130722]|https://rt.perl.org/Public/Bug/Display.html?id=130722> 2608 2609=item * 2610 2611Code like C< $value1 =~ qr/.../ ~~ $value2 > would have the match 2612converted into a C<qr//> operator, leaving extra elements on the stack to 2613confuse any surrounding expression. 2614L<[perl #130705]|https://rt.perl.org/Public/Bug/Display.html?id=130705> 2615 2616=item * 2617 2618Since v5.24 in some obscure cases, a regex which included code blocks 2619from multiple sources (I<e.g.>, via embedded via C<qr//> objects) could end up 2620with the wrong current pad and crash or give weird results. 2621L<[perl #129881]|https://rt.perl.org/Public/Bug/Display.html?id=129881> 2622 2623=item * 2624 2625Occasionally C<local()>s in a code block within a patterns weren't being 2626undone when the pattern matching backtracked over the code block. 2627L<[perl #126697]|https://rt.perl.org/Public/Bug/Display.html?id=126697> 2628 2629=item * 2630 2631Using C<substr()> to modify a magic variable could access freed memory 2632in some cases. 2633L<[perl #129340]|https://rt.perl.org/Public/Bug/Display.html?id=129340> 2634 2635=item * 2636 2637Under C<use utf8>, the entire source code is now checked for being UTF-8 2638well formed, not just quoted strings as before. 2639L<[perl #126310]|https://rt.perl.org/Public/Bug/Display.html?id=126310>. 2640 2641=item * 2642 2643The range operator C<".."> on strings now handles its arguments correctly when in 2644the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >> 2645feature. The previous behaviour was sufficiently unexpected that we believe no 2646correct program could have made use of it. 2647 2648=item * 2649 2650The C<split> operator did not ensure enough space was allocated for 2651its return value in scalar context. It could then write a single 2652pointer immediately beyond the end of the memory block allocated for 2653the stack. 2654L<[perl #130262]|https://rt.perl.org/Public/Bug/Display.html?id=130262> 2655 2656=item * 2657 2658Using a large code point with the C<"W"> pack template character with 2659the current output position aligned at just the right point could 2660cause a write of a single zero byte immediately beyond the end of an 2661allocated buffer. 2662L<[perl #129149]|https://rt.perl.org/Public/Bug/Display.html?id=129149> 2663 2664=item * 2665 2666Supplying a format's picture argument as part of the format argument list 2667where the picture specifies modifying the argument could cause an 2668access to the new freed compiled format. 2669L<[perl #129125]|https://rt.perl.org/Public/Bug/Display.html?id=129125> 2670 2671=item * 2672 2673The L<sort()|perlfunc/sort> operator's built-in numeric comparison 2674function didn't handle large integers that weren't exactly 2675representable by a double. This now uses the same code used to 2676implement the C<< E<lt>=E<gt> >> operator. 2677L<[perl #130335]|https://rt.perl.org/Public/Bug/Display.html?id=130335> 2678 2679=item * 2680 2681Fix issues with C</(?{ ... E<lt>E<lt>EOF })/> that broke 2682L<Method::Signatures>. 2683L<[perl #130398]|https://rt.perl.org/Public/Bug/Display.html?id=130398> 2684 2685=item * 2686 2687Fixed an assertion failure with C<chop> and C<chomp>, which 2688could be triggered by C<chop(@x =~ tr/1/1/)>. 2689L<[perl #130198]|https://rt.perl.org/Public/Bug/Display.html?id=130198>. 2690 2691=item * 2692 2693Fixed a comment skipping error in patterns under C</x>; it could stop 2694skipping a byte early, which could be in the middle of a UTF-8 2695character. 2696L<[perl #130495]|https://rt.perl.org/Public/Bug/Display.html?id=130495>. 2697 2698=item * 2699 2700F<perldb> now ignores F</dev/tty> on non-Unix systems. 2701L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960>; 2702 2703=item * 2704 2705Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined. 2706L<[perl #130496]|https://rt.perl.org/Public/Bug/Display.html?id=130496>. 2707 2708=item * 2709 2710Fix an assertion error which could be triggered when a lookahead string 2711in patterns exceeded a minimum length. 2712L<[perl #130522]|https://rt.perl.org/Public/Bug/Display.html?id=130522>. 2713 2714=item * 2715 2716Only warn once per literal number about a misplaced C<"_">. 2717L<[perl #70878]|https://rt.perl.org/Public/Bug/Display.html?id=70878>. 2718 2719=item * 2720 2721The C<tr///> parse code could be looking at uninitialized data after a 2722perse error. 2723L<[perl #129342]|https://rt.perl.org/Public/Bug/Display.html?id=129342>. 2724 2725=item * 2726 2727In a pattern match, a back-reference (C<\1>) to an unmatched capture could 2728read back beyond the start of the string being matched. 2729L<[perl #129377]|https://rt.perl.org/Public/Bug/Display.html?id=129377>. 2730 2731=item * 2732 2733C<use re 'strict'> is supposed to warn if you use a range (such as 2734C</(?[ [ X-Y ] ])/>) whose start and end digit aren't from the same group 2735of 10. It didn't do that for five groups of mathematical digits starting 2736at C<U+1D7E>. 2737 2738=item * 2739 2740A sub containing a "forward" declaration with the same name (I<e.g.>, 2741C<sub c { sub c; }>) could sometimes crash or loop infinitely. 2742L<[perl #129090]|https://rt.perl.org/Public/Bug/Display.html?id=129090> 2743 2744=item * 2745 2746A crash in executing a regex with a non-anchored UTF-8 substring against a 2747target string that also used UTF-8 has been fixed. 2748L<[perl #129350]|https://rt.perl.org/Public/Bug/Display.html?id=129350> 2749 2750=item * 2751 2752Previously, a shebang line like C<#!perl -i u> could be erroneously 2753interpreted as requesting the C<-u> option. This has been fixed. 2754L<[perl #129336]|https://rt.perl.org/Public/Bug/Display.html?id=129336> 2755 2756=item * 2757 2758The regex engine was previously producing incorrect results in some rare 2759situations when backtracking past an alternation that matches only one 2760thing; this 2761showed up as capture buffers (C<$1>, C<$2>, I<etc.>) erroneously containing data 2762from regex execution paths that weren't actually executed for the final 2763match. 2764L<[perl #129897]|https://rt.perl.org/Public/Bug/Display.html?id=129897> 2765 2766=item * 2767 2768Certain regexes making use of the experimental C<regex_sets> feature could 2769trigger an assertion failure. This has been fixed. 2770L<[perl #129322]|https://rt.perl.org/Public/Bug/Display.html?id=129322> 2771 2772=item * 2773 2774Invalid assignments to a reference constructor (I<e.g.>, C<\eval=time>) could 2775sometimes crash in addition to giving a syntax error. 2776L<[perl #125679]|https://rt.perl.org/Public/Bug/Display.html?id=125679> 2777 2778=item * 2779 2780The parser could sometimes crash if a bareword came after C<evalbytes>. 2781L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196> 2782 2783=item * 2784 2785Autoloading via a method call would warn erroneously ("Use of inherited 2786AUTOLOAD for non-method") if there was a stub present in the package into 2787which the invocant had been blessed. The warning is no longer emitted in 2788such circumstances. 2789L<[perl #47047]|https://rt.perl.org/Public/Bug/Display.html?id=47047> 2790 2791=item * 2792 2793The use of C<splice> on arrays with non-existent elements could cause other 2794operators to crash. 2795L<[perl #129164]|https://rt.perl.org/Public/Bug/Display.html?id=129164> 2796 2797=item * 2798 2799A possible buffer overrun when a pattern contains a fixed utf8 substring. 2800L<[perl #129012]|https://rt.perl.org/Public/Bug/Display.html?id=129012> 2801 2802=item * 2803 2804Fixed two possible use-after-free bugs in perl's lexer. 2805L<[perl #129069]|https://rt.perl.org/Public/Bug/Display.html?id=129069> 2806 2807=item * 2808 2809Fixed a crash with C<s///l> where it thought it was dealing with UTF-8 2810when it wasn't. 2811L<[perl #129038]|https://rt.perl.org/Public/Bug/Display.html?id=129038> 2812 2813=item * 2814 2815Fixed a place where the regex parser was not setting the syntax error 2816correctly on a syntactically incorrect pattern. 2817L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122> 2818 2819=item * 2820 2821The C<&.> operator (and the C<"&"> operator, when it treats its arguments as 2822strings) were failing to append a trailing null byte if at least one string 2823was marked as utf8 internally. Many code paths (system calls, regexp 2824compilation) still expect there to be a null byte in the string buffer 2825just past the end of the logical string. An assertion failure was the 2826result. 2827L<[perl #129287]|https://rt.perl.org/Public/Bug/Display.html?id=129287> 2828 2829=item * 2830 2831Avoid a heap-after-use error in the parser when creating an error messge 2832for a syntactically invalid heredoc. 2833L<[perl #128988]|https://rt.perl.org/Public/Bug/Display.html?id=128988> 2834 2835=item * 2836 2837Fix a segfault when run with C<-DC> options on DEBUGGING builds. 2838L<[perl #129106]|https://rt.perl.org/Public/Bug/Display.html?id=129106> 2839 2840=item * 2841 2842Fixed the parser error handling in subroutine attributes for an 2843'C<:attr(foo>' that does not have an ending 'C<")">'. 2844 2845=item * 2846 2847Fix the perl lexer to correctly handle a backslash as the last char in 2848quoted-string context. This actually fixed two bugs, 2849L<[perl #129064]|https://rt.perl.org/Public/Bug/Display.html?id=129064> and 2850L<[perl #129176]|https://rt.perl.org/Public/Bug/Display.html?id=129176>. 2851 2852=item * 2853 2854In the API function C<gv_fetchmethod_pvn_flags>, rework separator parsing 2855to prevent possible string overrun with an invalid C<len> argument. 2856L<[perl #129267]|https://rt.perl.org/Public/Bug/Display.html?id=129267> 2857 2858=item * 2859 2860Problems with in-place array sorts: code like C<@a = sort { ... } @a>, 2861where the source and destination of the sort are the same plain array, are 2862optimised to do less copying around. Two side-effects of this optimisation 2863were that the contents of C<@a> as seen by sort routines were 2864partially sorted; and under some circumstances accessing C<@a> during the 2865sort could crash the interpreter. Both these issues have been fixed, and 2866Sort functions see the original value of C<@a>. 2867L<[perl #128340]|https://rt.perl.org/Public/Bug/Display.html?id=128340> 2868 2869=item * 2870 2871Non-ASCII string delimiters are now reported correctly in error messages 2872for unterminated strings. 2873L<[perl #128701]|https://rt.perl.org/Public/Bug/Display.html?id=128701> 2874 2875=item * 2876 2877C<pack("p", ...)> used to emit its warning ("Attempt to pack pointer to 2878temporary value") erroneously in some cases, but has been fixed. 2879 2880=item * 2881 2882C<@DB::args> is now exempt from "used once" warnings. The warnings only 2883occurred under B<-w>, because F<warnings.pm> itself uses C<@DB::args> 2884multiple times. 2885 2886=item * 2887 2888The use of built-in arrays or hash slices in a double-quoted string no 2889longer issues a warning ("Possible unintended interpolation...") if the 2890variable has not been mentioned before. This affected code like 2891C<qq|@DB::args|> and C<qq|@SIG{'CHLD', 'HUP'}|>. (The special variables 2892C<@-> and C<@+> were already exempt from the warning.) 2893 2894=item * 2895 2896C<gethostent> and similar functions now perform a null check internally, to 2897avoid crashing with the torsocks library. This was a regression from v5.22. 2898L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740> 2899 2900=item * 2901 2902C<defined *{'!'}>, C<defined *{'['}>, and C<defined *{'-'}> no longer leak 2903memory if the typeglob in question has never been accessed before. 2904 2905=item * 2906 2907Mentioning the same constant twice in a row (which is a syntax error) no 2908longer fails an assertion under debugging builds. This was a regression 2909from v5.20. 2910L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482> 2911 2912=item * 2913 2914Many issues relating to C<printf "%a"> of hexadecimal floating point 2915were fixed. In addition, the "subnormals" (formerly known as "denormals") 2916floating point numbers are now supported both with the plain IEEE 754 2917floating point numbers (64-bit or 128-bit) and the x86 80-bit 2918"extended precision". Note that subnormal hexadecimal floating 2919point literals will give a warning about "exponent underflow". 2920L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843> 2921L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889> 2922L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890> 2923L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893> 2924L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909> 2925L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919> 2926 2927=item * 2928 2929A regression in v5.24 with C<tr/\N{U+...}/foo/> when the code point was between 2930128 and 255 has been fixed. 2931L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>. 2932 2933=item * 2934 2935Use of a string delimiter whose code point is above 2**31 now works 2936correctly on platforms that allow this. Previously, certain characters, 2937due to truncation, would be confused with other delimiter characters 2938with special meaning (such as C<"?"> in C<m?...?>), resulting 2939in inconsistent behaviour. Note that this is non-portable, 2940and is based on Perl's extension to UTF-8, and is probably not 2941displayable nor enterable by any editor. 2942L<[perl #128738]|https://rt.perl.org/Public/Bug/Display.html?id=128738> 2943 2944=item * 2945 2946C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII 2947character no longer produces a garbled syntax error message or a crash. 2948L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951> 2949 2950=item * 2951 2952An assertion failure with C<%: = 0> has been fixed. 2953L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238> 2954 2955=item * 2956 2957In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such 2958that it would be treated as C<$foo."::".$bar>. The previous behavior, which 2959was to parse it as C<$foo:: . $bar>, has been restored. 2960L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478> 2961 2962=item * 2963 2964Since Perl 5.20, line numbers have been off by one when perl is invoked with 2965the B<-x> switch. This has been fixed. 2966L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508> 2967 2968=item * 2969 2970Vivifying a subroutine stub in a deleted stash (I<e.g.>, 2971C<delete $My::{"Foo::"}; \&My::Foo::foo>) no longer crashes. It had begun 2972crashing in Perl 5.18. 2973L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532> 2974 2975=item * 2976 2977Some obscure cases of subroutines and file handles being freed at the same time 2978could result in crashes, but have been fixed. The crash was introduced in Perl 29795.22. 2980L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597> 2981 2982=item * 2983 2984Code that looks for a variable name associated with an uninitialized value 2985could cause an assertion failure in cases where magic is involved, such as 2986C<$ISA[0][0]>. This has now been fixed. 2987L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253> 2988 2989=item * 2990 2991A crash caused by code generating the warning "Subroutine STASH::NAME 2992redefined" in cases such as C<sub P::f{} undef *P::; *P::f =sub{};> has been 2993fixed. In these cases, where the STASH is missing, the warning will now appear 2994as "Subroutine NAME redefined". 2995L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257> 2996 2997=item * 2998 2999Fixed an assertion triggered by some code that handles deprecated behavior in 3000formats, I<e.g.>, in cases like this: 3001 3002 format STDOUT = 3003 @ 3004 0"$x" 3005 3006L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255> 3007 3008=item * 3009 3010A possible divide by zero in string transformation code on Windows has been 3011avoided, fixing a crash when collating an empty string. 3012L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618> 3013 3014=item * 3015 3016Some regular expression parsing glitches could lead to assertion failures with 3017regular expressions such as C</(?E<lt>=/> and C</(?E<lt>!/>. This has now been fixed. 3018L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170> 3019 3020=item * 3021 3022C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly 3023warn when syntax warnings are enabled. 3024L<[perl #127333]|https://rt.perl.org/Public/Bug/Display.html?id=127333> 3025 3026=item * 3027 3028socket() now leaves the error code returned by the system in C<$!> on 3029failure. 3030L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316> 3031 3032=item * 3033 3034Assignment variants of any bitwise ops under the C<bitwise> feature would 3035crash if the left-hand side was an array or hash. 3036L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204> 3037 3038=item * 3039 3040C<require> followed by a single colon (as in C<foo() ? require : ...> is 3041now parsed correctly as C<require> with implicit C<$_>, rather than 3042C<require "">. 3043L<[perl #128307]|https://rt.perl.org/Public/Bug/Display.html?id=128307> 3044 3045=item * 3046 3047Scalar C<keys %hash> can now be assigned to consistently in all scalar 3048lvalue contexts. Previously it worked for some contexts but not others. 3049 3050=item * 3051 3052List assignment to C<vec> or C<substr> with an array or hash for its first 3053argument used to result in crashes or "Can't coerce" error messages at run 3054time, unlike scalar assignment, which would give an error at compile time. 3055List assignment now gives a compile-time error, too. 3056L<[perl #128260]|https://rt.perl.org/Public/Bug/Display.html?id=128260> 3057 3058=item * 3059 3060Expressions containing an C<&&> or C<||> operator (or their synonyms C<and> 3061and C<or>) were being compiled incorrectly in some cases. If the left-hand 3062side consisted of either a negated bareword constant or a negated C<do {}> 3063block containing a constant expression, and the right-hand side consisted of 3064a negated non-foldable expression, one of the negations was effectively 3065ignored. The same was true of C<if> and C<unless> statement modifiers, 3066though with the left-hand and right-hand sides swapped. This long-standing 3067bug has now been fixed. 3068L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952> 3069 3070=item * 3071 3072C<reset> with an argument no longer crashes when encountering stash entries 3073other than globs. 3074L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106> 3075 3076=item * 3077 3078Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no 3079longer causes crashes. 3080L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086> 3081 3082=item * 3083 3084Perl wasn't correctly handling true/false values in the LHS of a list 3085assign; specifically the truth values returned by boolean operators. 3086This could trigger an assertion failure in something like the following: 3087 3088 for ($x > $y) { 3089 ($_, ...) = (...); # here $_ is aliased to a truth value 3090 } 3091 3092This was a regression from v5.24. 3093L<[perl #129991]|https://rt.perl.org/Public/Bug/Display.html?id=129991> 3094 3095=item * 3096 3097Assertion failure with user-defined Unicode-like properties. 3098L<[perl #130010]|https://rt.perl.org/Public/Bug/Display.html?id=130010> 3099 3100=item * 3101 3102Fix error message for unclosed C<\N{> in a regex. An unclosed C<\N{> 3103could give the wrong error message: 3104C<"\N{NAME} must be resolved by the lexer">. 3105 3106=item * 3107 3108List assignment in list context where the LHS contained aggregates and 3109where there were not enough RHS elements, used to skip scalar lvalues. 3110Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now 3111it returns C<($a,$b,$d)>. C<(($a,$b,$c) = (1))> is unchanged: it still 3112returns C<($a,$b,$c)>. This can be seen in the following: 3113 3114 sub inc { $_++ for @_ } 3115 inc(($a,$b,@c,$d) = (10)) 3116 3117Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>; 3118now they are C<(11,1,1)>. 3119 3120=item * 3121 3122Code like this: C</(?{ s!!! })/> could trigger infinite recursion on the C 3123stack (not the normal perl stack) when the last successful pattern in 3124scope is itself. We avoid the segfault by simply forbidding the use of 3125the empty pattern when it would resolve to the currently executing 3126pattern. 3127L<[perl #129903]|https://rt.perl.org/Public/Bug/Display.html?id=129903> 3128 3129=item * 3130 3131Avoid reading beyond the end of the line buffer in perl's lexer when 3132there's a short UTF-8 character at the end. 3133L<[perl #128997]|https://rt.perl.org/Public/Bug/Display.html?id=128997> 3134 3135=item * 3136 3137Alternations in regular expressions were sometimes failing to match 3138a utf8 string against a utf8 alternate. 3139L<[perl #129950]|https://rt.perl.org/Public/Bug/Display.html?id=129950> 3140 3141=item * 3142 3143Make C<do "a\0b"> fail silently (and return C<undef> and set C<$!>) 3144instead of throwing an error. 3145L<[perl #129928]|https://rt.perl.org/Public/Bug/Display.html?id=129928> 3146 3147=item * 3148 3149C<chdir> with no argument didn't ensure that there was stack space 3150available for returning its result. 3151L<[perl #129130]|https://rt.perl.org/Public/Bug/Display.html?id=129130> 3152 3153=item * 3154 3155All error messages related to C<do> now refer to C<do>; some formerly 3156claimed to be from C<require> instead. 3157 3158=item * 3159 3160Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly 3161blames the variable for an uninitialized-value warning encountered by the 3162tied/magical code. 3163 3164=item * 3165 3166Code like C<$x = $x . "a"> was incorrectly failing to yield a 3167L<use of uninitialized value|perldiag/"Use of uninitialized value%s"> 3168warning when C<$x> was a lexical variable with an undefined value. That has 3169now been fixed. 3170L<[perl #127877]|https://rt.perl.org/Public/Bug/Display.html?id=127877> 3171 3172=item * 3173 3174C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no 3175argument to C<shift> or C<pop>, began crashing in Perl 5.14, but has now 3176been fixed. 3177 3178=item * 3179 3180C<< "string$scalar-E<gt>$*" >> now correctly prefers concatenation 3181overloading to string overloading if C<< $scalar-E<gt>$* >> returns an 3182overloaded object, bringing it into consistency with C<$$scalar>. 3183 3184=item * 3185 3186C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer 3187do, but merely produce a syntax error. 3188L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171> 3189 3190=item * 3191 3192C<do> or C<require> with an argument which is a reference or typeglob 3193which, when stringified, 3194contains a null character, started crashing in Perl 5.20, but has now been 3195fixed. 3196L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182> 3197 3198=item * 3199 3200Improve the error message for a missing C<tie()> package/method. This 3201brings the error messages in line with the ones used for normal method 3202calls. 3203 3204=item * 3205 3206Parsing bad POSIX charclasses no longer leaks memory. 3207L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313> 3208 3209=back 3210 3211=head1 Known Problems 3212 3213=over 4 3214 3215=item * 3216 3217G++ 6 handles subnormal (denormal) floating point values differently 3218than gcc 6 or g++ 5 resulting in "flush-to-zero". The end result is 3219that if you specify very small values using the hexadecimal floating 3220point format, like C<0x1.fffffffffffffp-1022>, they become zeros. 3221L<[perl #131388]|https://rt.perl.org/Ticket/Display.html?id=131388> 3222 3223=back 3224 3225=head1 Errata From Previous Releases 3226 3227=over 4 3228 3229=item * 3230 3231Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24. 3232L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182> 3233 3234=back 3235 3236=head1 Obituary 3237 3238Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo community 3239member, has passed away on August 10, 2016. He will be remembered and 3240missed by all those who he came in contact with, and enriched with his 3241intellect, wit, and spirit. 3242 3243It is with great sadness that we also note Kip Hampton's passing. Probably 3244best known as the author of the Perl & XML column on XML.com, he was a 3245core contributor to AxKit, an XML server platform that became an Apache 3246Foundation project. He was a frequent speaker in the early days at 3247OSCON, and most recently at YAPC::NA in Madison. He was frequently on 3248irc.perl.org as ubu, generally in the #axkit-dahut community, the 3249group responsible for YAPC::NA Asheville in 2011. 3250 3251Kip and his constant contributions to the community will be greatly 3252missed. 3253 3254=head1 Acknowledgements 3255 3256Perl 5.26.0 represents approximately 13 months of development since Perl 5.24.0 3257and contains approximately 360,000 lines of changes across 2,600 files from 86 3258authors. 3259 3260Excluding auto-generated files, documentation and release tools, there were 3261approximately 230,000 lines of changes to 1,800 .pm, .t, .c and .h files. 3262 3263Perl continues to flourish into its third decade thanks to a vibrant community 3264of users and developers. The following people are known to have contributed the 3265improvements that became Perl 5.26.0: 3266 3267Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alex Vandiver, Andreas 3268König, Andreas Voegele, Andrew Fresh, Andy Lester, Aristotle Pagaltzis, Chad 3269Granum, Chase Whitener, Chris 'BinGOs' Williams, Chris Lamb, Christian Hansen, 3270Christian Millour, Colin Newell, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan 3271Collins, Daniel Dragan, Dave Cross, Dave Rolsky, David Golden, David H. 3272Gutteridge, David Mitchell, Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis, 3273Father Chrysostomos, François Perrad, Hauke D, H.Merijn Brand, Hugo van der 3274Sanden, Ivan Pozdeev, James E Keenan, James Raspass, Jarkko Hietaniemi, Jerry 3275D. Hedden, Jim Cromie, J. Nick Koston, John Lightsey, Karen Etheridge, Karl 3276Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Maxwell Carey, Misty 3277De Meo, Neil Bowers, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul 3278Marquess, Peter Avalos, Petr Písař, Pino Toscano, Rafael Garcia-Suarez, Reini 3279Urban, Renee Baecker, Ricardo Signes, Richard Levitte, Rick Delaney, Salvador 3280Fandiño, Samuel Thibault, Sawyer X, Sébastien Aperghis-Tramoni, Sergey 3281Aleynikov, Shlomi Fish, Smylers, Stefan Seifert, Steffen Müller, Stevan 3282Little, Steve Hay, Steven Humphrey, Sullivan Beck, Theo Buehler, Thomas Sibley, 3283Todd Rinaldo, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yaroslav Kuzmin, 3284Yves Orton, Zefram. 3285 3286The list above is almost certainly incomplete as it is automatically generated 3287from version control history. In particular, it does not include the names of 3288the (very much appreciated) contributors who reported issues to the Perl bug 3289tracker. 3290 3291Many of the changes included in this version originated in the CPAN modules 3292included in Perl's core. We're grateful to the entire CPAN community for 3293helping Perl to flourish. 3294 3295For a more complete list of all of Perl's historical contributors, please see 3296the F<AUTHORS> file in the Perl source distribution. 3297 3298=head1 Reporting Bugs 3299 3300If you find what you think is a bug, you might check the perl bug database at 3301L<https://rt.perl.org/>. There may also be information at 3302L<http://www.perl.org/>, the Perl Home Page. 3303 3304If you believe you have an unreported bug, please run the L<perlbug> program 3305included with your release. Be sure to trim your bug down to a tiny but 3306sufficient test case. Your bug report, along with the output of C<perl -V>, 3307will be sent off to C<perlbug@perl.org> to be analysed by the Perl porting team. 3308 3309If the bug you are reporting has security implications which make it 3310inappropriate to send to a publicly archived mailing list, then see 3311L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> 3312for details of how to report the issue. 3313 3314=head1 Give Thanks 3315 3316If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, 3317you can do so by running the C<perlthanks> program: 3318 3319 perlthanks 3320 3321This will send an email to the Perl 5 Porters list with your show of thanks. 3322 3323=head1 SEE ALSO 3324 3325The F<Changes> file for an explanation of how to view exhaustive details on 3326what changed. 3327 3328The F<INSTALL> file for how to build Perl. 3329 3330The F<README> file for general stuff. 3331 3332The F<Artistic> and F<Copying> files for copyright information. 3333 3334=cut 3335