1=encoding utf8 2 3=head1 NAME 4 5perl5280delta - what is new for perl v5.28.0 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.26.0 release and the 5.28.0 10release. 11 12If you are upgrading from an earlier release such as 5.24.0, first read 13L<perl5260delta>, which describes differences between 5.24.0 and 5.26.0. 14 15=head1 Core Enhancements 16 17=head2 Unicode 10.0 is supported 18 19A list of changes is at 20L<http://www.unicode.org/versions/Unicode10.0.0>. 21 22=head2 L<C<delete>|perlfunc/delete EXPR> on key/value hash slices 23 24L<C<delete>|perlfunc/delete EXPR> can now be used on 25L<keyE<sol>value hash slices|perldata/KeyE<sol>Value Hash Slices>, 26returning the keys along with the deleted values. 27L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328> 28 29=head2 Experimentally, there are now alphabetic synonyms for some regular expression assertions 30 31If you find it difficult to remember how to write certain of the pattern 32assertions, there are now alphabetic synonyms. 33 34 CURRENT NEW SYNONYMS 35 ------ ------------ 36 (?=...) (*pla:...) or (*positive_lookahead:...) 37 (?!...) (*nla:...) or (*negative_lookahead:...) 38 (?<=...) (*plb:...) or (*positive_lookbehind:...) 39 (?<!...) (*nlb:...) or (*negative_lookbehind:...) 40 (?>...) (*atomic:...) 41 42These are considered experimental, so using any of these will raise 43(unless turned off) a warning in the C<experimental::alpha_assertions> 44category. 45 46=head2 Mixed Unicode scripts are now detectable 47 48A mixture of scripts, such as Cyrillic and Latin, in a string is often 49the sign of a spoofing attack. A new regular expression construct 50now allows for easy detection of these. For example, you can say 51 52 qr/(*script_run: \d+ \b )/x 53 54And the digits matched will all be from the same set of 10. You won't 55get a look-alike digit from a different script that has a different 56value than what it appears to be. 57 58Or: 59 60 qr/(*sr: \b \w+ \b )/x 61 62makes sure that all the characters come from the same script. 63 64You can also combine script runs with C<(?E<gt>...)> (or 65C<*atomic:...)>). 66 67Instead of writing: 68 69 (*sr:(?<...)) 70 71you can now run: 72 73 (*asr:...) 74 # or 75 (*atomic_script_run:...) 76 77This is considered experimental, so using it will raise (unless turned 78off) a warning in the C<experimental::script_run> category. 79 80See L<perlre/Script Runs>. 81 82=head2 In-place editing with C<perl -i> is now safer 83 84Previously in-place editing (C<perl -i>) would delete or rename the 85input file as soon as you started working on a new file. 86 87Without backups this would result in loss of data if there was an 88error, such as a full disk, when writing to the output file. 89 90This has changed so that the input file isn't replaced until the 91output file has been completely written and successfully closed. 92 93This works by creating a work file in the same directory, which is 94renamed over the input file once the output file is complete. 95 96Incompatibilities: 97 98=over 99 100=item * 101 102Since this renaming needs to only happen once, if you create a thread 103or child process, that renaming will only happen in the original 104thread or process. 105 106=item * 107 108If you change directories while processing a file, and your operating 109system doesn't provide the C<unlinkat()>, C<renameat()> and C<fchmodat()> 110functions, the final rename step may fail. 111 112=back 113 114L<[perl #127663]|https://rt.perl.org/Public/Bug/Display.html?id=127663> 115 116=head2 Initialisation of aggregate state variables 117 118A persistent lexical array or hash variable can now be initialized, 119by an expression such as C<state @a = qw(x y z)>. Initialization of a 120list of persistent lexical variables is still not possible. 121 122=head2 Full-size inode numbers 123 124On platforms where inode numbers are of a type larger than perl's native 125integer numerical types, L<stat|perlfunc/stat> will preserve the full 126content of large inode numbers by returning them in the form of strings of 127decimal digits. Exact comparison of inode numbers can thus be achieved by 128comparing with C<eq> rather than C<==>. Comparison with C<==>, and other 129numerical operations (which are usually meaningless on inode numbers), 130work as well as they did before, which is to say they fall back to 131floating point, and ultimately operate on a fairly useless rounded inode 132number if the real inode number is too big for the floating point format. 133 134=head2 The C<sprintf> C<%j> format size modifier is now available with pre-C99 compilers 135 136The actual size used depends on the platform, so remains unportable. 137 138=head2 Close-on-exec flag set atomically 139 140When opening a file descriptor, perl now generally opens it with its 141close-on-exec flag already set, on platforms that support doing so. 142This improves thread safety, because it means that an C<exec> initiated 143by one thread can no longer cause a file descriptor in the process 144of being opened by another thread to be accidentally passed to the 145executed program. 146 147Additionally, perl now sets the close-on-exec flag more reliably, whether 148it does so atomically or not. Most file descriptors were getting the 149flag set, but some were being missed. 150 151=head2 String- and number-specific bitwise ops are no longer experimental 152 153The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>) 154bitwise operators introduced in Perl 5.22 that are available within the 155scope of C<use feature 'bitwise'> are no longer experimental. 156Because the number-specific ops are spelled the same way as the existing 157operators that choose their behaviour based on their operands, these 158operators must still be enabled via the "bitwise" feature, in either of 159these two ways: 160 161 use feature "bitwise"; 162 163 use v5.28; # "bitwise" now included 164 165They are also now enabled by the B<-E> command-line switch. 166 167The "bitwise" feature no longer emits a warning. Existing code that 168disables the "experimental::bitwise" warning category that the feature 169previously used will continue to work. 170 171One caveat that module authors ought to be aware of is that the numeric 172operators now pass a fifth TRUE argument to overload methods. Any methods 173that check the number of operands may croak if they do not expect so many. 174XS authors in particular should be aware that this: 175 176 SV * 177 bitop_handler (lobj, robj, swap) 178 179may need to be changed to this: 180 181 SV * 182 bitop_handler (lobj, robj, swap, ...) 183 184=head2 Locales are now thread-safe on systems that support them 185 186These systems include Windows starting with Visual Studio 2005, and in 187POSIX 2008 systems. 188 189The implication is that you are now free to use locales and change them 190in a threaded environment. Your changes affect only your thread. 191See L<perllocale/Multi-threaded operation> 192 193=head2 New read-only predefined variable C<${^SAFE_LOCALES}> 194 195This variable is 1 if the Perl interpreter is operating in an 196environment where it is safe to use and change locales (see 197L<perllocale>.) This variable is true when the perl is 198unthreaded, or compiled in a platform that supports thread-safe locale 199operation (see previous item). 200 201=head1 Security 202 203=head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler 204 205Compiling certain regular expression patterns with the case-insensitive 206modifier could cause a heap buffer overflow and crash perl. This has now been 207fixed. 208L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582> 209 210=head2 [CVE-2017-12883] Buffer over-read in regular expression parser 211 212For certain types of syntax error in a regular expression pattern, the error 213message could either contain the contents of a random, possibly large, chunk of 214memory, or could crash perl. This has now been fixed. 215L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598> 216 217=head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows 218 219A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed 220by removing the buffer completely since it was superfluous anyway. 221L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665> 222 223=head2 Default Hash Function Change 224 225Perl 5.28.0 retires various older hash functions which are not viewed as 226sufficiently secure for use in Perl. We now support four general purpose 227hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX 228hash. In addition we support SBOX32 (a form of tabular hashing) for hashing 229short strings, in conjunction with any of the other hash functions provided. 230 231By default Perl is configured to support SBOX hashing of strings up to 24 232characters, in conjunction with StadtX hashing on 64 bit builds, and 233Zaphod32 hashing for 32 bit builds. 234 235You may control these settings with the following options to Configure: 236 237 -DPERL_HASH_FUNC_SIPHASH 238 -DPERL_HASH_FUNC_SIPHASH13 239 -DPERL_HASH_FUNC_STADTX 240 -DPERL_HASH_FUNC_ZAPHOD32 241 242To disable SBOX hashing you can use 243 244 -DPERL_HASH_USE_SBOX32_ALSO=0 245 246And to set the maximum length to use SBOX32 hashing on with: 247 248 -DSBOX32_MAX_LEN=16 249 250The maximum length allowed is 256. There probably isn't much point 251in setting it higher than the default. 252 253=head1 Incompatible Changes 254 255=head2 Subroutine attribute and signature order 256 257The experimental subroutine signatures feature has been changed so that 258subroutine attributes must now come before the signature rather than 259after. This is because attributes like C<:lvalue> can affect the 260compilation of code within the signature, for example: 261 262 sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) { ...} 263 264Note that this the second time they have been flipped: 265 266 sub f :lvalue ($a, $b) { ... }; # 5.20; 5.28 onwards 267 sub f ($a, $b) :lvalue { ... }; # 5.22 - 5.26 268 269=head2 Comma-less variable lists in formats are no longer allowed 270 271Omitting the commas between variables passed to formats is no longer 272allowed. This has been deprecated since Perl 5.000. 273 274=head2 The C<:locked> and C<:unique> attributes have been removed 275 276These have been no-ops and deprecated since Perl 5.12 and 5.10, 277respectively. 278 279=head2 C<\N{}> with nothing between the braces is now illegal 280 281This has been deprecated since Perl 5.24. 282 283=head2 Opening the same symbol as both a file and directory handle is no longer allowed 284 285Using C<open()> and C<opendir()> to associate both a filehandle and a dirhandle 286to the same symbol (glob or scalar) has been deprecated since Perl 5.10. 287 288=head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed 289 290Use of a bare terminator has been deprecated since Perl 5.000. 291 292=head2 Setting $/ to a reference to a non-positive integer no longer allowed 293 294This used to work like setting it to C<undef>, but has been deprecated 295since Perl 5.20. 296 297=head2 Unicode code points with values exceeding C<IV_MAX> are now fatal 298 299This was deprecated since Perl 5.24. 300 301=head2 The C<B::OP::terse> method has been removed 302 303Use C<B::Concise::b_terse> instead. 304 305=head2 Use of inherited AUTOLOAD for non-methods is no longer allowed 306 307This was deprecated in Perl 5.004. 308 309=head2 Use of strings with code points over 0xFF is not allowed for bitwise string operators 310 311Code points over C<0xFF> do not make sense for bitwise operators and such 312an operation will now croak, except for a few remaining cases. See 313L<perldeprecation>. 314 315This was deprecated in Perl 5.24. 316 317=head2 Setting C<${^ENCODING}> to a defined value is now illegal 318 319This has been deprecated since Perl 5.22 and a no-op since Perl 5.26. 320 321=head2 Backslash no longer escapes colon in PATH for the C<-S> switch 322 323Previously the C<-S> switch incorrectly treated backslash ("\") as an 324escape for colon when traversing the C<PATH> environment variable. 325L<[perl #129183]|https://rt.perl.org/Ticket/Display.html?id=129183> 326 327=head2 the -DH (DEBUG_H) misfeature has been removed 328 329On a perl built with debugging support, the C<H> flag to the C<-D> 330debugging option has been removed. This was supposed to dump hash values, 331but has been broken for many years. 332 333=head2 Yada-yada is now strictly a statement 334 335By the time of its initial stable release in Perl 5.12, the C<...> 336(yada-yada) operator was explicitly intended to serve as a statement, 337not an expression. However, the original implementation was confused 338on this point, leading to inconsistent parsing. The operator was 339accidentally accepted in a few situations where it did not serve as a 340complete statement, such as 341 342 ... . "foo"; 343 ... if $a < $b; 344 345The parsing has now been made consistent, permitting yada-yada only as 346a statement. Affected code can use C<do{...}> to put a yada-yada into 347an arbitrary expression context. 348 349=head2 Sort algorithm can no longer be specified 350 351Since Perl 5.8, the L<sort> pragma has had subpragmata C<_mergesort>, 352C<_quicksort>, and C<_qsort> that can be used to specify which algorithm 353perl should use to implement the L<sort|perlfunc/sort> builtin. 354This was always considered a dubious feature that might not last, 355hence the underscore spellings, and they were documented as not being 356portable beyond Perl 5.8. These subpragmata have now been deleted, 357and any attempt to use them is an error. The L<sort> pragma otherwise 358remains, and the algorithm-neutral C<stable> subpragma can be used to 359control sorting behaviour. 360L<[perl #119635]|https://rt.perl.org/Ticket/Display.html?id=119635> 361 362=head2 Over-radix digits in floating point literals 363 364Octal and binary floating point literals used to permit any hexadecimal 365digit to appear after the radix point. The digits are now restricted 366to those appropriate for the radix, as digits before the radix point 367always were. 368 369=head2 Return type of C<unpackstring()> 370 371The return types of the C API functions C<unpackstring()> and 372C<unpack_str()> have changed from C<I32> to C<SSize_t>, in order to 373accommodate datasets of more than two billion items. 374 375=head1 Deprecations 376 377=head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is deprecated 378 379Such strings are represented internally in UTF-8, and C<vec> is a 380bit-oriented operation that will likely give unexpected results on those 381strings. 382 383=head2 Some uses of unescaped C<"{"> in regexes are no longer fatal 384 385Perl 5.26.0 fatalized some uses of an unescaped left brace, but an 386exception was made at the last minute, specifically crafted to be a 387minimal change to allow GNU Autoconf to work. That tool is heavily 388depended upon, and continues to use the deprecated usage. Its use of an 389unescaped left brace is one where we have no intention of repurposing 390C<"{"> to be something other than itself. 391 392That exception is now generalized to include various other such cases 393where the C<"{"> will not be repurposed. 394 395Note that these uses continue to raise a deprecation message. 396 397=head2 Use of unescaped C<"{"> immediately after a C<"("> in regular expression patterns is deprecated 398 399Using unescaped left braces is officially deprecated everywhere, but it 400is not enforced in contexts where their use does not interfere with 401expected extensions to the language. A deprecation is added in this 402release when the brace appears immediately after an opening parenthesis. 403Before this, even if the brace was part of a legal quantifier, it was 404not interpreted as such, but as the literal characters, unlike other 405quantifiers that follow a C<"("> which are considered errors. Now, 406their use will raise a deprecation message, unless turned off. 407 408=head2 Assignment to C<$[> will be fatal in Perl 5.30 409 410Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated 411since Perl 5.12, but was never given a deadline for removal. This has 412now been scheduled for Perl 5.30. 413 414=head2 hostname() won't accept arguments in Perl 5.32 415 416Passing arguments to C<Sys::Hostname::hostname()> was already deprecated, 417but didn't have a removal date. This has now been scheduled for Perl 4185.32. L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> 419 420=head2 Module removals 421 422The following modules will be removed from the core distribution in a 423future release, and will at that time need to be installed from CPAN. 424Distributions on CPAN which require these modules will need to list them as 425prerequisites. 426 427The core versions of these modules will now issue C<"deprecated">-category 428warnings to alert you to this fact. To silence these deprecation warnings, 429install the modules in question from CPAN. 430 431Note that these are (with rare exceptions) fine modules that you are encouraged 432to continue to use. Their disinclusion from core primarily hinges on their 433necessity to bootstrapping a fully functional, CPAN-capable Perl installation, 434not usually on concerns over their design. 435 436=over 437 438=item B::Debug 439 440=item L<Locale::Codes> and its associated Country, Currency and Language modules 441 442=back 443 444=head1 Performance Enhancements 445 446=over 4 447 448=item * 449 450The start up overhead for creating regular expression patterns with 451Unicode properties (C<\p{...}>) has been greatly reduced in most cases. 452 453=item * 454 455Many string concatenation expressions are now considerably faster, due 456to the introduction internally of a C<multiconcat> opcode which combines 457multiple concatenations, and optionally a C<=> or C<.=>, into a single 458action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this 459whole expression is now handled as a single op: 460 461 $s .= "a=$a b=$b\n" 462 463As a special case, if the LHS of an assignment is a lexical variable or 464C<my $s>, the op itself handles retrieving the lexical variable, which 465is faster. 466 467In general, the more the expression includes a mix of constant strings and 468variable expressions, the longer the expression, and the more it mixes 469together non-utf8 and utf8 strings, the more marked the performance 470improvement. For example on a C<x86_64> system, this code has been 471benchmarked running four times faster: 472 473 my $s; 474 my $a = "ab\x{100}cde"; 475 my $b = "fghij"; 476 my $c = "\x{101}klmn"; 477 478 for my $i (1..10_000_000) { 479 $s = "\x{100}wxyz"; 480 $s .= "foo=$a bar=$b baz=$c"; 481 } 482 483In addition, C<sprintf> expressions which have a constant format 484containing only C<%s> and C<%%> format elements, and which have a fixed 485number of arguments, are now also optimised into a C<multiconcat> op. 486 487=item * 488 489The C<ref()> builtin is now much faster in boolean context, since it no 490longer bothers to construct a temporary string like C<Foo=ARRAY(0x134af48)>. 491 492=item * 493 494C<keys()> in void and scalar contexts is now more efficient. 495 496=item * 497 498The common idiom of comparing the result of index() with -1 is now 499specifically optimised, e.g. 500 501 if (index(...) != -1) { ... } 502 503=item * 504 505C<for()> loops and similar constructs are now more efficient in most cases. 506 507=item * 508 509L<File::Glob> has been modified to remove unnecessary backtracking and 510recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob> 511for more details. 512 513=item * 514 515The XS-level C<SvTRUE()> API function is now more efficient. 516 517=item * 518 519Various integer-returning ops are now more efficient in scalar/boolean context. 520 521=item * 522 523Slightly improved performance when parsing stash names. 524L<[perl #129990]|https://rt.perl.org/Public/Bug/Display.html?id=129990> 525 526=item * 527 528Calls to C<require> for an already loaded module are now slightly faster. 529L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171> 530 531=item * 532 533The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]> 534has been improved significantly except on EBCDIC platforms. 535 536=item * 537 538Various optimizations have been applied to matching regular expression 539patterns, so under the right circumstances, significant performance 540gains may be noticed. But in an application with many varied patterns, 541little overall improvement likely will be seen. 542 543=item * 544 545Other optimizations have been applied to UTF-8 handling, but these are 546not typically a major factor in most applications. 547 548=back 549 550=head1 Modules and Pragmata 551 552Key highlights in this release across several modules: 553 554=head2 Removal of use vars 555 556The usage of C<use vars> has been discouraged since the introduction of 557C<our> in Perl 5.6.0. Where possible the usage of this pragma has now been 558removed from the Perl source code. 559 560This had a slight effect (for the better) on the output of WARNING_BITS in 561L<B::Deparse>. 562 563=head2 Use of DynaLoader changed to XSLoader in many modules 564 565XSLoader is more modern, and most modules already require perl 5.6 or 566greater, so no functionality is lost by switching. In some cases, we have 567also made changes to the local implementation that may not be reflected in 568the version on CPAN due to a desire to maintain more backwards 569compatibility. 570 571=head2 Updated Modules and Pragmata 572 573=over 4 574 575=item * 576 577L<Archive::Tar> has been upgraded from version 2.24 to 2.30. 578 579This update also handled CVE-2018-12015: directory traversal 580vulnerability. 581L<[cpan #125523]|https://rt.cpan.org/Ticket/Display.html?id=125523> 582 583=item * 584 585L<arybase> has been upgraded from version 0.12 to 0.15. 586 587=item * 588 589L<Attribute::Handlers> has been upgraded from version 0.99 to 1.01. 590 591=item * 592 593L<attributes> has been upgraded from version 0.29 to 0.33. 594 595=item * 596 597L<B> has been upgraded from version 1.68 to 1.74. 598 599=item * 600 601L<B::Concise> has been upgraded from version 0.999 to 1.003. 602 603=item * 604 605L<B::Debug> has been upgraded from version 1.24 to 1.26. 606 607NOTE: L<B::Debug> is deprecated and may be removed from a future version 608of Perl. 609 610=item * 611 612L<B::Deparse> has been upgraded from version 1.40 to 1.48. 613 614It includes many bug fixes, and in particular, it now deparses variable 615attributes correctly: 616 617 my $x :foo; # used to deparse as 618 # 'attributes'->import('main', \$x, 'foo'), my $x; 619 620=item * 621 622L<base> has been upgraded from version 2.25 to 2.27. 623 624=item * 625 626L<bignum> has been upgraded from version 0.47 to 0.49. 627 628=item * 629 630L<blib> has been upgraded from version 1.06 to 1.07. 631 632=item * 633 634L<bytes> has been upgraded from version 1.05 to 1.06. 635 636=item * 637 638L<Carp> has been upgraded from version 1.42 to 1.50. 639 640If a package on the call stack contains a constant named C<ISA>, Carp no 641longer throws a "Not a GLOB reference" error. 642 643L<Carp>, when generating stack traces, now attempts to work around 644longstanding bugs resulting from Perl's non-reference-counted stack. 645L<[perl #52610]|https://rt.perl.org/Ticket/Display.html?id=52610> 646 647Carp has been modified to avoid assuming that objects cannot be 648overloaded without the L<overload> module loaded (this can happen with 649objects created by XS modules). Previously, infinite recursion would 650result if an XS-defined overload method itself called Carp. 651L<[perl #132828]|https://rt.perl.org/Ticket/Display.html?id=132828> 652 653Carp now avoids using C<overload::StrVal>, partly because older versions 654of L<overload> (included with perl 5.14 and earlier) load L<Scalar::Util> 655at run time, which will fail if Carp has been invoked after a syntax error. 656 657=item * 658 659L<charnames> has been upgraded from version 1.44 to 1.45. 660 661=item * 662 663L<Compress::Raw::Zlib> has been upgraded from version 2.074 to 2.076. 664 665This addresses a security vulnerability in older versions of the 'zlib' library 666(which is bundled with Compress-Raw-Zlib). 667 668=item * 669 670L<Config::Extensions> has been upgraded from version 0.01 to 0.02. 671 672=item * 673 674L<Config::Perl::V> has been upgraded from version 0.28 to 0.29. 675 676=item * 677 678L<CPAN> has been upgraded from version 2.18 to 2.20. 679 680=item * 681 682L<Data::Dumper> has been upgraded from version 2.167 to 2.170. 683 684Quoting of glob names now obeys the Useqq option 685L<[perl #119831]|https://rt.perl.org/Ticket/Display.html?id=119831>. 686 687Attempts to set an option to C<undef> through a combined getter/setter 688method are no longer mistaken for getter calls 689L<[perl #113090]|https://rt.perl.org/Ticket/Display.html?id=113090>. 690 691=item * 692 693L<Devel::Peek> has been upgraded from version 1.26 to 1.27. 694 695=item * 696 697L<Devel::PPPort> has been upgraded from version 3.35 to 3.40. 698 699L<Devel::PPPort> has moved from cpan-first to perl-first maintenance 700 701Primary responsibility for the code in Devel::PPPort has moved into core perl. 702In a practical sense there should be no change except that hopefully it will 703stay more up to date with changes made to symbols in perl, rather than needing 704to be updated after the fact. 705 706=item * 707 708L<Digest::SHA> has been upgraded from version 5.96 to 6.01. 709 710=item * 711 712L<DirHandle> has been upgraded from version 1.04 to 1.05. 713 714=item * 715 716L<DynaLoader> has been upgraded from version 1.42 to 1.45. 717 718Its documentation now shows the use of C<__PACKAGE__> and direct object 719syntax 720L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. 721 722=item * 723 724L<Encode> has been upgraded from version 2.88 to 2.97. 725 726=item * 727 728L<encoding> has been upgraded from version 2.19 to 2.22. 729 730=item * 731 732L<Errno> has been upgraded from version 1.28 to 1.29. 733 734=item * 735 736L<experimental> has been upgraded from version 0.016 to 0.019. 737 738=item * 739 740L<Exporter> has been upgraded from version 5.72 to 5.73. 741 742=item * 743 744L<ExtUtils::CBuilder> has been upgraded from version 0.280225 to 0.280230. 745 746=item * 747 748L<ExtUtils::Constant> has been upgraded from version 0.23 to 0.25. 749 750=item * 751 752L<ExtUtils::Embed> has been upgraded from version 1.34 to 1.35. 753 754=item * 755 756L<ExtUtils::Install> has been upgraded from version 2.04 to 2.14. 757 758=item * 759 760L<ExtUtils::MakeMaker> has been upgraded from version 7.24 to 7.34. 761 762=item * 763 764L<ExtUtils::Miniperl> has been upgraded from version 1.06 to 1.08. 765 766=item * 767 768L<ExtUtils::ParseXS> has been upgraded from version 3.34 to 3.39. 769 770=item * 771 772L<ExtUtils::Typemaps> has been upgraded from version 3.34 to 3.38. 773 774=item * 775 776L<ExtUtils::XSSymSet> has been upgraded from version 1.3 to 1.4. 777 778=item * 779 780L<feature> has been upgraded from version 1.47 to 1.52. 781 782=item * 783 784L<fields> has been upgraded from version 2.23 to 2.24. 785 786=item * 787 788L<File::Copy> has been upgraded from version 2.32 to 2.33. 789 790It will now use the sub-second precision variant of utime() supplied by 791L<Time::HiRes> where available. 792L<[perl #132401]|https://rt.perl.org/Ticket/Display.html?id=132401>. 793 794=item * 795 796L<File::Fetch> has been upgraded from version 0.52 to 0.56. 797 798=item * 799 800L<File::Glob> has been upgraded from version 1.28 to 1.31. 801 802=item * 803 804L<File::Path> has been upgraded from version 2.12_01 to 2.15. 805 806=item * 807 808L<File::Spec> and L<Cwd> have been upgraded from version 3.67 to 3.74. 809 810=item * 811 812L<File::stat> has been upgraded from version 1.07 to 1.08. 813 814=item * 815 816L<FileCache> has been upgraded from version 1.09 to 1.10. 817 818=item * 819 820L<Filter::Simple> has been upgraded from version 0.93 to 0.95. 821 822=item * 823 824L<Filter::Util::Call> has been upgraded from version 1.55 to 1.58. 825 826=item * 827 828L<GDBM_File> has been upgraded from version 1.15 to 1.17. 829 830Its documentation now explains that C<each> and C<delete> don't mix in 831hashes tied to this module 832L<[perl #117449]|https://rt.perl.org/Ticket/Display.html?id=117449>. 833 834It will now retry opening with an acceptable block size if asking gdbm 835to default the block size failed 836L<[perl #119623]|https://rt.perl.org/Ticket/Display.html?id=119623>. 837 838=item * 839 840L<Getopt::Long> has been upgraded from version 2.49 to 2.5. 841 842=item * 843 844L<Hash::Util::FieldHash> has been upgraded from version 1.19 to 1.20. 845 846=item * 847 848L<I18N::Langinfo> has been upgraded from version 0.13 to 0.17. 849 850This module is now available on all platforms, emulating the system 851L<nl_langinfo(3)> on systems that lack it. Some caveats apply, as 852L<detailed in its documentation|I18N::Langinfo>, the most severe being 853that, except for MS Windows, the C<CODESET> item is not implemented on 854those systems, always returning C<"">. 855 856It now sets the UTF-8 flag in its returned scalar if the string contains 857legal non-ASCII UTF-8, and the locale is UTF-8 858L<[perl #127288]|https://rt.perl.org/Ticket/Display.html?id=127288>. 859 860This update also fixes a bug in which the underlying locale was ignored 861for the C<RADIXCHAR> (always was returned as a dot) and the C<THOUSEP> 862(always empty). Now the locale-appropriate values are returned. 863 864=item * 865 866L<I18N::LangTags> has been upgraded from version 0.42 to 0.43. 867 868=item * 869 870L<if> has been upgraded from version 0.0606 to 0.0608. 871 872=item * 873 874L<IO> has been upgraded from version 1.38 to 1.39. 875 876=item * 877 878L<IO::Socket::IP> has been upgraded from version 0.38 to 0.39. 879 880=item * 881 882L<IPC::Cmd> has been upgraded from version 0.96 to 1.00. 883 884=item * 885 886L<JSON::PP> has been upgraded from version 2.27400_02 to 2.97001. 887 888=item * 889 890The C<libnet> distribution has been upgraded from version 3.10 to 3.11. 891 892=item * 893 894L<List::Util> has been upgraded from version 1.46_02 to 1.49. 895 896=item * 897 898L<Locale::Codes> has been upgraded from version 3.42 to 3.56. 899 900B<NOTE>: L<Locale::Codes> scheduled to be removed from core in Perl 5.30. 901 902=item * 903 904L<Locale::Maketext> has been upgraded from version 1.28 to 1.29. 905 906=item * 907 908L<Math::BigInt> has been upgraded from version 1.999806 to 1.999811. 909 910=item * 911 912L<Math::BigInt::FastCalc> has been upgraded from version 0.5005 to 0.5006. 913 914=item * 915 916L<Math::BigRat> has been upgraded from version 0.2611 to 0.2613. 917 918=item * 919 920L<Module::CoreList> has been upgraded from version 5.20170530 to 5.20180622. 921 922=item * 923 924L<mro> has been upgraded from version 1.20 to 1.22. 925 926=item * 927 928L<Net::Ping> has been upgraded from version 2.55 to 2.62. 929 930=item * 931 932L<NEXT> has been upgraded from version 0.67 to 0.67_01. 933 934=item * 935 936L<ODBM_File> has been upgraded from version 1.14 to 1.15. 937 938=item * 939 940L<Opcode> has been upgraded from version 1.39 to 1.43. 941 942=item * 943 944L<overload> has been upgraded from version 1.28 to 1.30. 945 946=item * 947 948L<PerlIO::encoding> has been upgraded from version 0.25 to 0.26. 949 950=item * 951 952L<PerlIO::scalar> has been upgraded from version 0.26 to 0.29. 953 954=item * 955 956L<PerlIO::via> has been upgraded from version 0.16 to 0.17. 957 958=item * 959 960L<Pod::Functions> has been upgraded from version 1.11 to 1.13. 961 962=item * 963 964L<Pod::Html> has been upgraded from version 1.2202 to 1.24. 965 966A title for the HTML document will now be automatically generated by 967default from a "NAME" section in the POD document, as it used to be 968before the module was rewritten to use L<Pod::Simple::XHTML> to do the 969core of its job 970L<[perl #110520]|https://rt.perl.org/Ticket/Display.html?id=110520>. 971 972=item * 973 974L<Pod::Perldoc> has been upgraded from version 3.28 to 3.2801. 975 976=item * 977 978The C<podlators> distribution has been upgraded from version 4.09 to 4.10. 979 980Man page references and function names now follow the Linux man page 981formatting standards, instead of the Solaris standard. 982 983=item * 984 985L<POSIX> has been upgraded from version 1.76 to 1.84. 986 987Some more cautions were added about using locale-specific functions in 988threaded applications. 989 990=item * 991 992L<re> has been upgraded from version 0.34 to 0.36. 993 994=item * 995 996L<Scalar::Util> has been upgraded from version 1.46_02 to 1.50. 997 998=item * 999 1000L<SelfLoader> has been upgraded from version 1.23 to 1.25. 1001 1002=item * 1003 1004L<Socket> has been upgraded from version 2.020_03 to 2.027. 1005 1006=item * 1007 1008L<sort> has been upgraded from version 2.02 to 2.04. 1009 1010=item * 1011 1012L<Storable> has been upgraded from version 2.62 to 3.08. 1013 1014=item * 1015 1016L<Sub::Util> has been upgraded from version 1.48 to 1.49. 1017 1018=item * 1019 1020L<subs> has been upgraded from version 1.02 to 1.03. 1021 1022=item * 1023 1024L<Sys::Hostname> has been upgraded from version 1.20 to 1.22. 1025 1026=item * 1027 1028L<Term::ReadLine> has been upgraded from version 1.16 to 1.17. 1029 1030=item * 1031 1032L<Test> has been upgraded from version 1.30 to 1.31. 1033 1034=item * 1035 1036L<Test::Harness> has been upgraded from version 3.38 to 3.42. 1037 1038=item * 1039 1040L<Test::Simple> has been upgraded from version 1.302073 to 1.302133. 1041 1042=item * 1043 1044L<threads> has been upgraded from version 2.15 to 2.22. 1045 1046The documentation now better describes the problems that arise when 1047returning values from threads, and no longer warns about creating threads 1048in C<BEGIN> blocks. 1049L<[perl #96538]|https://rt.perl.org/Ticket/Display.html?id=96538> 1050 1051=item * 1052 1053L<threads::shared> has been upgraded from version 1.56 to 1.58. 1054 1055=item * 1056 1057L<Tie::Array> has been upgraded from version 1.06 to 1.07. 1058 1059=item * 1060 1061L<Tie::StdHandle> has been upgraded from version 4.4 to 4.5. 1062 1063=item * 1064 1065L<Time::gmtime> has been upgraded from version 1.03 to 1.04. 1066 1067=item * 1068 1069L<Time::HiRes> has been upgraded from version 1.9741 to 1.9759. 1070 1071=item * 1072 1073L<Time::localtime> has been upgraded from version 1.02 to 1.03. 1074 1075=item * 1076 1077L<Time::Piece> has been upgraded from version 1.31 to 1.3204. 1078 1079=item * 1080 1081L<Unicode::Collate> has been upgraded from version 1.19 to 1.25. 1082 1083=item * 1084 1085L<Unicode::Normalize> has been upgraded from version 1.25 to 1.26. 1086 1087=item * 1088 1089L<Unicode::UCD> has been upgraded from version 0.68 to 0.70. 1090 1091The function C<num> now accepts an optional parameter to help in 1092diagnosing error returns. 1093 1094=item * 1095 1096L<User::grent> has been upgraded from version 1.01 to 1.02. 1097 1098=item * 1099 1100L<User::pwent> has been upgraded from version 1.00 to 1.01. 1101 1102=item * 1103 1104L<utf8> has been upgraded from version 1.19 to 1.21. 1105 1106=item * 1107 1108L<vars> has been upgraded from version 1.03 to 1.04. 1109 1110=item * 1111 1112L<version> has been upgraded from version 0.9917 to 0.9923. 1113 1114=item * 1115 1116L<VMS::DCLsym> has been upgraded from version 1.08 to 1.09. 1117 1118=item * 1119 1120L<VMS::Stdio> has been upgraded from version 2.41 to 2.44. 1121 1122=item * 1123 1124L<warnings> has been upgraded from version 1.37 to 1.42. 1125 1126It now includes new functions with names ending in C<_at_level>, allowing 1127callers to specify the exact call frame. 1128L<[perl #132468]|https://rt.perl.org/Ticket/Display.html?id=132468> 1129 1130=item * 1131 1132L<XS::Typemap> has been upgraded from version 0.15 to 0.16. 1133 1134=item * 1135 1136L<XSLoader> has been upgraded from version 0.27 to 0.30. 1137 1138Its documentation now shows the use of C<__PACKAGE__>, and direct object 1139syntax for example C<DynaLoader> usage 1140L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. 1141 1142Platforms that use C<mod2fname> to edit the names of loadable 1143libraries now look for bootstrap (.bs) files under the correct, 1144non-edited name. 1145 1146=back 1147 1148=head2 Removed Modules and Pragmata 1149 1150=over 4 1151 1152=item * 1153 1154The C<VMS::stdio> compatibility shim has been removed. 1155 1156=back 1157 1158=head1 Documentation 1159 1160=head2 Changes to Existing Documentation 1161 1162We have attempted to update the documentation to reflect the changes 1163listed in this document. If you find any we have missed, send email 1164to L<perlbug@perl.org|mailto:perlbug@perl.org>. 1165 1166Additionally, the following selected changes have been made: 1167 1168=head3 L<perlapi> 1169 1170=over 4 1171 1172=item * 1173 1174The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()> 1175are now documented comprehensively, where previously the only 1176documentation was a reference to the L<perlembed> tutorial. 1177 1178=item * 1179 1180The documentation of C<newGIVENOP()> has been belatedly updated to 1181account for the removal of lexical C<$_>. 1182 1183=item * 1184 1185The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are 1186documented much more comprehensively than before. 1187 1188=back 1189 1190=head3 L<perldata> 1191 1192=over 4 1193 1194=item * 1195 1196The section "Truth and Falsehood" in L<perlsyn> has been moved into 1197L<perldata>. 1198 1199=back 1200 1201=head3 L<perldebguts> 1202 1203=over 4 1204 1205=item * 1206 1207The description of the conditions under which C<DB::sub()> will be called 1208has been clarified. 1209L<[perl #131672]|https://rt.perl.org/Ticket/Display.html?id=131672> 1210 1211=back 1212 1213=head3 L<perldiag> 1214 1215=over 4 1216 1217=item * L<perldiag/Variable length lookbehind not implemented in regex mE<sol>%sE<sol>> 1218 1219This now gives more ideas as to workarounds to the issue that was 1220introduced in Perl 5.18 (but not documented explicitly in its perldelta) 1221for the fact that some Unicode C</i> rules cause a few sequences such as 1222 1223 (?<!st) 1224 1225to be considered variable length, and hence disallowed. 1226 1227=item * "Use of state $_ is experimental" in L<perldiag> 1228 1229This entry has been removed, as the experimental support of this construct was 1230removed in perl 5.24.0. 1231 1232=item * 1233 1234The diagnostic C<Initialization of state variables in list context 1235currently forbidden> has changed to C<Initialization of state variables 1236in list currently forbidden>, because list-context initialization of 1237single aggregate state variables is now permitted. 1238 1239=back 1240 1241=head3 L<perlembed> 1242 1243=over 4 1244 1245=item * 1246 1247The examples in L<perlembed> have been made more portable in the way 1248they exit, and the example that gets an exit code from the embedded Perl 1249interpreter now gets it from the right place. The examples that pass 1250a constructed argv to Perl now show the mandatory null C<argv[argc]>. 1251 1252=item * 1253 1254An example in L<perlembed> used the string value of C<ERRSV> as a 1255format string when calling croak(). If that string contains format 1256codes such as C<%s> this could crash the program. 1257 1258This has been changed to a call to croak_sv(). 1259 1260An alternative could have been to supply a trivial format string: 1261 1262 croak("%s", SvPV_nolen(ERRSV)); 1263 1264or as a special case for C<ERRSV> simply: 1265 1266 croak(NULL); 1267 1268=back 1269 1270=head3 L<perlfunc> 1271 1272=over 4 1273 1274=item * 1275 1276There is now a note that warnings generated by built-in functions are 1277documented in L<perldiag> and L<warnings>. 1278L<[perl #116080]|https://rt.perl.org/Ticket/Display.html?id=116080> 1279 1280=item * 1281 1282The documentation for the C<exists> operator no longer says that 1283autovivification behaviour "may be fixed in a future release". 1284We've determined that we're not going to change the default behaviour. 1285L<[perl #127712]|https://rt.perl.org/Ticket/Display.html?id=127712> 1286 1287=item * 1288 1289A couple of small details in the documentation for the C<bless> operator 1290have been clarified. 1291L<[perl #124428]|https://rt.perl.org/Ticket/Display.html?id=124428> 1292 1293=item * 1294 1295The description of C<@INC> hooks in the documentation for C<require> 1296has been corrected to say that filter subroutines receive a useless 1297first argument. 1298L<[perl #115754]|https://rt.perl.org/Ticket/Display.html?id=115754> 1299 1300=item * 1301 1302The documentation of C<ref> has been rewritten for clarity. 1303 1304=item * 1305 1306The documentation of C<use> now explains what syntactically qualifies 1307as a version number for its module version checking feature. 1308 1309=item * 1310 1311The documentation of C<warn> has been updated to reflect that since Perl 13125.14 it has treated complex exception objects in a manner equivalent 1313to C<die>. 1314L<[perl #121372]|https://rt.perl.org/Ticket/Display.html?id=121372> 1315 1316=item * 1317 1318The documentation of C<die> and C<warn> has been revised for clarity. 1319 1320=item * 1321 1322The documentation of C<each> has been improved, with a slightly more 1323explicit description of the sharing of iterator state, and with 1324caveats regarding the fragility of while-each loops. 1325L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> 1326 1327=item * 1328 1329Clarification to C<require> was added to explain the differences between 1330 1331 require Foo::Bar; 1332 require "Foo/Bar.pm"; 1333 1334=back 1335 1336=head3 L<perlgit> 1337 1338=over 4 1339 1340=item * 1341 1342The precise rules for identifying C<smoke-me> branches are now stated. 1343 1344=back 1345 1346=head3 L<perlguts> 1347 1348=over 4 1349 1350=item * 1351 1352The section on reference counting in L<perlguts> has been heavily revised, 1353to describe references in the way a programmer needs to think about them 1354rather than in terms of the physical data structures. 1355 1356=item * 1357 1358Improve documentation related to UTF-8 multibytes. 1359 1360=back 1361 1362=head3 L<perlintern> 1363 1364=over 4 1365 1366=item * 1367 1368The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are 1369now documented. 1370 1371=back 1372 1373=head3 L<perlobj> 1374 1375=over 4 1376 1377=item * 1378 1379The documentation about C<DESTROY> methods has been corrected, updated, 1380and revised, especially in regard to how they interact with exceptions. 1381L<[perl #122753]|https://rt.perl.org/Ticket/Display.html?id=122753> 1382 1383=back 1384 1385=head3 L<perlop> 1386 1387=over 4 1388 1389=item * 1390 1391The description of the C<x> operator in L<perlop> has been clarified. 1392L<[perl #132460]|https://rt.perl.org/Ticket/Display.html?id=132460> 1393 1394=item * 1395 1396L<perlop> has been updated to note that C<qw>'s whitespace rules differ 1397from that of C<split>'s in that only ASCII whitespace is used. 1398 1399=item * 1400 1401The general explanation of operator precedence and associativity has 1402been corrected and clarified. 1403L<[perl #127391]|https://rt.perl.org/Ticket/Display.html?id=127391> 1404 1405=item * 1406 1407The documentation for the C<\> referencing operator now explains the 1408unusual context that it supplies to its operand. 1409L<[perl #131061]|https://rt.perl.org/Ticket/Display.html?id=131061> 1410 1411=back 1412 1413=head3 L<perlrequick> 1414 1415=over 4 1416 1417=item * 1418 1419Clarifications on metacharacters and character classes 1420 1421=back 1422 1423=head3 L<perlretut> 1424 1425=over 4 1426 1427=item * 1428 1429Clarify metacharacters. 1430 1431=back 1432 1433=head3 L<perlrun> 1434 1435=over 4 1436 1437=item * 1438 1439Clarify the differences between B<< -M >> and B<< -m >>. 1440L<[perl #131518]|https://rt.perl.org/Ticket/Display.html?id=131518> 1441 1442=back 1443 1444=head3 L<perlsec> 1445 1446=over 4 1447 1448=item * 1449 1450The documentation about set-id scripts has been updated and revised. 1451L<[perl #74142]|https://rt.perl.org/Ticket/Display.html?id=74142> 1452 1453=item * 1454 1455A section about using C<sudo> to run Perl scripts has been added. 1456 1457=back 1458 1459=head3 L<perlsyn> 1460 1461=over 4 1462 1463=item * 1464 1465The section "Truth and Falsehood" in L<perlsyn> has been removed from 1466that document, where it didn't belong, and merged into the existing 1467paragraph on the same topic in L<perldata>. 1468 1469=item * 1470 1471The means to disambiguate between code blocks and hash constructors, 1472already documented in L<perlref>, are now documented in L<perlsyn> too. 1473L<[perl #130958]|https://rt.perl.org/Ticket/Display.html?id=130958> 1474 1475=back 1476 1477=head3 L<perluniprops> 1478 1479=over 4 1480 1481=item * 1482 1483L<perluniprops> has been updated to note that C<\p{Word}> now includes 1484code points matching the C<\p{Join_Control}> property. The change to 1485the property was made in Perl 5.18, but not documented until now. There 1486are currently only two code points that match this property U+200C (ZERO 1487WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER). 1488 1489=item * 1490 1491For each binary table or property, the documentation now includes which 1492characters in the range C<\x00-\xFF> it matches, as well as a list of 1493the first few ranges of code points matched above that. 1494 1495=back 1496 1497=head3 L<perlvar> 1498 1499=over 4 1500 1501=item * 1502 1503The entry for C<$+> in perlvar has been expanded upon to describe handling of 1504multiply-named capturing groups. 1505 1506=back 1507 1508=head3 L<perlfunc>, L<perlop>, L<perlsyn> 1509 1510=over 4 1511 1512=item * 1513 1514In various places, improve the documentation of the special cases 1515in the condition expression of a while loop, such as implicit C<defined> 1516and assignment to C<$_>. 1517L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> 1518 1519=back 1520 1521=head1 Diagnostics 1522 1523The following additions or changes have been made to diagnostic output, 1524including warnings and fatal error messages. For the complete list of 1525diagnostic messages, see L<perldiag>. 1526 1527=head2 New Diagnostics 1528 1529=head3 New Errors 1530 1531=over 4 1532 1533=item * 1534 1535L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block"> 1536 1537(F) A "goto" statement was executed to jump into the middle of a C<given> 1538block. You can't get there from here. See L<perlfunc/goto>. 1539 1540=item * 1541 1542L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression"> 1543 1544Use of C<goto> to jump into the parameter of a binary or list operator has 1545been prohibited, to prevent crashes and stack corruption. 1546L<[perl #130936]|https://rt.perl.org/Ticket/Display.html?id=130936> 1547 1548You may only enter the I<first> argument of an operator that takes a fixed 1549number of arguments, since this is a case that will not cause stack 1550corruption. 1551L<[perl #132854]|https://rt.perl.org/Ticket/Display.html?id=132854> 1552 1553=back 1554 1555=head3 New Warnings 1556 1557=over 4 1558 1559=item * 1560 1561L<Old package separator used in string|perldiag/"Old package separator used in string"> 1562 1563(W syntax) You used the old package separator, "'", in a variable 1564named inside a double-quoted string; e.g., C<"In $name's house">. This 1565is equivalent to C<"In $name::s house">. If you meant the former, put 1566a backslash before the apostrophe (C<"In $name\'s house">). 1567 1568=item * 1569 1570L<perldiag/Locale '%s' contains (at least) the following characters which 1571have unexpected meanings: %s The Perl program will use the expected 1572meanings> 1573 1574=back 1575 1576=head2 Changes to Existing Diagnostics 1577 1578=over 4 1579 1580=item * 1581 1582A false-positive warning that was issued when using a 1583numerically-quantified sub-pattern in a recursive regex has been 1584silenced. L<[perl #131868]|https://rt.perl.org/Public/Bug/Display.html?id=131868> 1585 1586=item * 1587 1588The warning about useless use of a concatenation operator in void context 1589is now generated for expressions with multiple concatenations, such as 1590C<$a.$b.$c>, which used to mistakenly not warn. 1591L<[perl #6997]|https://rt.perl.org/Ticket/Display.html?id=6997> 1592 1593=item * 1594 1595Warnings that a variable or subroutine "masks earlier declaration in same 1596...", or that an C<our> variable has been redeclared, have been moved to a 1597new warnings category "shadow". Previously they were in category "misc". 1598 1599=item * 1600 1601The deprecation warning from C<Sys::Hostname::hostname()> saying that 1602it doesn't accept arguments now states the Perl version in which the 1603warning will be upgraded to an error. 1604L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> 1605 1606=item * 1607 1608The L<perldiag> entry for the error regarding a set-id script has been 1609expanded to make clear that the error is reporting a specific security 1610vulnerability, and to advise how to fix it. 1611 1612=item * 1613 1614The C<< Unable to flush stdout >> error message was missing a trailing 1615newline. [debian #875361] 1616 1617=back 1618 1619=head1 Utility Changes 1620 1621=head2 L<perlbug> 1622 1623=over 4 1624 1625=item * 1626 1627C<--help> and C<--version> options have been added. 1628 1629=back 1630 1631=head1 Configuration and Compilation 1632 1633=over 4 1634 1635=item * C89 requirement 1636 1637Perl has been documented as requiring a C89 compiler to build since October 16381998. A variety of simplifications have now been made to Perl's internals to 1639rely on the features specified by the C89 standard. We believe that this 1640internal change hasn't altered the set of platforms that Perl builds on, but 1641please report a bug if Perl now has new problems building on your platform. 1642 1643=item * 1644 1645On GCC, C<-Werror=pointer-arith> is now enabled by default, 1646disallowing arithmetic on void and function pointers. 1647 1648=item * 1649 1650Where an HTML version of the documentation is installed, the HTML 1651documents now use relative links to refer to each other. Links from 1652the index page of L<perlipc> to the individual section documents are 1653now correct. 1654L<[perl #110056]|https://rt.perl.org/Ticket/Display.html?id=110056> 1655 1656=item * 1657 1658F<lib/unicore/mktables> now correctly canonicalizes the names of the 1659dependencies stored in the files it generates. 1660 1661F<regen/mk_invlists.pl>, unlike the other F<regen/*.pl> scripts, used 1662C<$0> to name itself in the dependencies stored in the files it 1663generates. It now uses a literal so that the path stored in the 1664generated files doesn't depend on how F<regen/mk_invlists.pl> is 1665invoked. 1666 1667This lack of canonical names could cause test failures in F<t/porting/regen.t>. 1668L<[perl #132925]|https://rt.perl.org/Ticket/Display.html?id=132925> 1669 1670=item * New probes 1671 1672=over 2 1673 1674=item HAS_BUILTIN_ADD_OVERFLOW 1675 1676=item HAS_BUILTIN_MUL_OVERFLOW 1677 1678=item HAS_BUILTIN_SUB_OVERFLOW 1679 1680=item HAS_THREAD_SAFE_NL_LANGINFO_L 1681 1682=item HAS_LOCALECONV_L 1683 1684=item HAS_MBRLEN 1685 1686=item HAS_MBRTOWC 1687 1688=item HAS_MEMRCHR 1689 1690=item HAS_NANOSLEEP 1691 1692=item HAS_STRNLEN 1693 1694=item HAS_STRTOLD_L 1695 1696=item I_WCHAR 1697 1698=back 1699 1700=back 1701 1702=head1 Testing 1703 1704=over 4 1705 1706=item * 1707 1708Testing of the XS-APItest directory is now done in parallel, where 1709applicable. 1710 1711=item * 1712 1713Perl now includes a default F<.travis.yml> file for Travis CI testing 1714on github mirrors. 1715L<[perl #123981]|https://rt.perl.org/Ticket/Display.html?id=123981> 1716 1717=item * 1718 1719The watchdog timer count in F<re/pat_psycho.t> can now be overridden. 1720 1721This test can take a long time to run, so there is a timer to keep 1722this in check (currently, 5 minutes). This commit adds checking 1723the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set, 1724the time out setting is multiplied by its value. 1725 1726=item * 1727 1728F<harness> no longer waits for 30 seconds when running F<t/io/openpid.t>. 1729L<[perl #121028]|https://rt.perl.org/Ticket/Display.html?id=121028> 1730L<[perl #132867]|https://rt.perl.org/Ticket/Display.html?id=132867> 1731 1732=back 1733 1734=head1 Packaging 1735 1736For the past few years we have released perl using three different archive 1737formats: bzip (C<.bz2>), LZMA2 (C<.xz>) and gzip (C<.gz>). Since xz compresses 1738better and decompresses faster, and gzip is more compatible and uses less 1739memory, we have dropped the C<.bz2> archive format with this release. 1740(If this poses a problem, do let us know; see L</Reporting Bugs>, below.) 1741 1742=head1 Platform Support 1743 1744=head2 Discontinued Platforms 1745 1746=over 4 1747 1748=item PowerUX / Power MAX OS 1749 1750Compiler hints and other support for these apparently long-defunct 1751platforms has been removed. 1752 1753=back 1754 1755=head2 Platform-Specific Notes 1756 1757=over 4 1758 1759=item CentOS 1760 1761Compilation on CentOS 5 is now fixed. 1762 1763=item Cygwin 1764 1765A build with the quadmath library can now be done on Cygwin. 1766 1767=item Darwin 1768 1769Perl now correctly uses reentrant functions, like C<asctime_r>, on 1770versions of Darwin that have support for them. 1771 1772=item FreeBSD 1773 1774FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for 1775architectures other than ARM and MIPS. By default, perl is now compiled 1776with the same optimization levels. 1777 1778=item VMS 1779 1780Several fix-ups for F<configure.com>, marking function VMS has 1781(or doesn't have). 1782 1783CRTL features can now be set by embedders before invoking Perl by using 1784the C<decc$feature_set> and C<decc$feature_set_value> functions. 1785Previously any attempt to set features after image initialization were 1786ignored. 1787 1788=item Windows 1789 1790=over 4 1791 1792=item * 1793 1794Support for compiling perl on Windows using Microsoft Visual Studio 2017 1795(containing Visual C++ 14.1) has been added. 1796 1797=item * 1798 1799Visual C++ compiler version detection has been improved to work on non-English 1800language systems. 1801 1802=item * 1803 1804We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++ 1805versions earlier than 14.1. 1806 1807=back 1808 1809=back 1810 1811=head1 Internal Changes 1812 1813=over 4 1814 1815=item * 1816 1817A new optimisation phase has been added to the compiler, 1818C<optimize_optree()>, which does a top-down scan of a complete optree 1819just before the peephole optimiser is run. This phase is not currently 1820hookable. 1821 1822=item * 1823 1824An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a 1825chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an 1826C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single 1827C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array 1828contains the argument count, plus a pointer to a constant string and a set 1829of segment lengths. For example with 1830 1831 my $x = "foo=$foo, bar=$bar\n"; 1832 1833the constant string would be C<"foo=, bar=\n"> and the segment lengths 1834would be (4,6,1). If the string contains characters such as C<\x80>, whose 1835representation changes under utf8, two sets of strings plus lengths are 1836precomputed and stored. 1837 1838=item * 1839 1840Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not 1841safe in the presence of multithreading. A new 1842L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been 1843added to allow XS modules to safely define custom keywords even when 1844loaded from a thread, analogous to L<C<PL_check>|perlapi/PL_check> / 1845L<C<wrap_op_checker>|perlapi/wrap_op_checker>. 1846 1847=item * 1848 1849The C<PL_statbuf> interpreter variable has been removed. 1850 1851=item * 1852 1853The deprecated function C<to_utf8_case()>, accessible from XS code, has 1854been removed. 1855 1856=item * 1857 1858A new function 1859L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc> 1860has been added that is like 1861L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string> 1862but takes an extra pointer parameter into which is stored the location 1863of the first variant character, if any are found. 1864 1865=item * 1866 1867A new function, L<C<Perl_langinfo()>|perlapi/Perl_langinfo> has been 1868added. It is an (almost) drop-in replacement for the system 1869C<nl_langinfo(3)>, but works on platforms that lack that; as well as 1870being more thread-safe, and hiding some gotchas with locale handling 1871from the caller. Code that uses this, needn't use L<C<localeconv(3)>> 1872(and be affected by the gotchas) to find the decimal point, thousands 1873separator, or currency symbol. See L<perlapi/Perl_langinfo>. 1874 1875=item * 1876 1877A new API function L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken> has 1878been added to complement L<C<sv_rvweaken()>|perlapi/sv_rvweaken>. 1879The implementation was taken from L<Scalar::Util/unweaken>. 1880 1881=item * 1882 1883A new flag, C<SORTf_UNSTABLE>, has been added. This will allow a 1884future commit to make mergesort unstable when the user specifies ‘no 1885sort stable’, since it has been decided that mergesort should remain 1886stable by default. 1887 1888=item * 1889 1890XS modules can now automatically get reentrant versions of system 1891functions on threaded perls. 1892 1893By adding 1894 1895 #define PERL_REENTRANT 1896 1897near the beginning of an C<XS> file, it will be compiled so that 1898whatever reentrant functions perl knows about on that system will 1899automatically and invisibly be used instead of the plain, non-reentrant 1900versions. For example, if you write C<getpwnam()> in your code, on a 1901system that has C<getpwnam_r()> all calls to the former will be translated 1902invisibly into the latter. This does not happen except on threaded 1903perls, as they aren't needed otherwise. Be aware that which functions 1904have reentrant versions varies from system to system. 1905 1906=item * 1907 1908The C<PERL_NO_OP_PARENT> build define is no longer supported, which means 1909that perl is now always built with C<PERL_OP_PARENT> enabled. 1910 1911=item * 1912 1913The format and content of the non-utf8 transliteration table attached to 1914the C<op_pv> field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a 1915C<struct OPtrans_map>. 1916 1917=item * 1918 1919A new compiler C<#define>, C<dTHX_DEBUGGING>. has been added. This is 1920useful for XS or C code that only need the thread context because their 1921debugging statements that get compiled only under C<-DDEBUGGING> need 1922one. 1923 1924=item * 1925 1926A new API function L<perlapi/Perl_setlocale> has been added. 1927 1928=item * 1929 1930L<perlapi/sync_locale> has been revised to return a boolean as to 1931whether the system was using the global locale or not. 1932 1933=item * 1934 1935A new kind of magic scalar, called a "nonelem" scalar, has been introduced. 1936It is stored in an array to denote a non-existent element, whenever such an 1937element is accessed in a potential lvalue context. It replaces the 1938existing "defelem" (deferred element) magic wherever this is possible, 1939being significantly more efficient. This means that 1940C<some_sub($sparse_array[$nonelem])> no longer has to create a new magic 1941defelem scalar each time, as long as the element is within the array. 1942 1943It partially fixes the rare bug of deferred elements getting out of synch 1944with their arrays when the array is shifted or unshifted. 1945L<[perl #132729]|https://rt.perl.org/Ticket/Display.html?id=132729> 1946 1947=back 1948 1949=head1 Selected Bug Fixes 1950 1951=over 4 1952 1953=item * 1954 1955List assignment (C<aassign>) could in some rare cases allocate an 1956entry on the mortals stack and leave the entry uninitialized, leading to 1957possible crashes. 1958L<[perl #131570]|https://rt.perl.org/Ticket/Display.html?id=131570> 1959 1960=item * 1961 1962Attempting to apply an attribute to an C<our> variable where a 1963function of that name already exists could result in a NULL pointer 1964being supplied where an SV was expected, crashing perl. 1965L<[perl #131597]|https://rt.perl.org/Ticket/Display.html?id=131597> 1966 1967=item * 1968 1969C<split ' '> now correctly handles the argument being split when in the 1970scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" 1971>> feature. Previously, when a string using the single-byte internal 1972representation contained characters that are whitespace by Unicode rules but 1973not by ASCII rules, it treated those characters as part of fields rather 1974than as field separators. 1975L<[perl #130907]|https://rt.perl.org/Ticket/Display.html?id=130907> 1976 1977=item * 1978 1979Several built-in functions previously had bugs that could cause them to 1980write to the internal stack without allocating room for the item being 1981written. In rare situations, this could have led to a crash. These bugs have 1982now been fixed, and if any similar bugs are introduced in future, they will 1983be detected automatically in debugging builds. 1984 1985These internal stack usage checks introduced are also done 1986by the C<entersub> operator when calling XSUBs. This means we can 1987report which XSUB failed to allocate enough stack space. 1988L<[perl #131975]|https://rt.perl.org/Public/Bug/Display.html?id=131975> 1989 1990=item * 1991 1992Using a symbolic ref with postderef syntax as the key in a hash lookup was 1993yielding an assertion failure on debugging builds. 1994L<[perl #131627]|https://rt.perl.org/Ticket/Display.html?id=131627> 1995 1996=item * 1997 1998Array and hash variables whose names begin with a caret now admit indexing 1999inside their curlies when interpolated into strings, as in C<< 2000"${^CAPTURE[0]}" >> to index C<@{^CAPTURE}>. 2001L<[perl #131664]|https://rt.perl.org/Ticket/Display.html?id=131664> 2002 2003=item * 2004 2005Fetching the name of a glob that was previously UTF-8 but wasn't any 2006longer would return that name flagged as UTF-8. 2007L<[perl #131263]|https://rt.perl.org/Ticket/Display.html?id=131263> 2008 2009=item * 2010 2011The perl C<sprintf()> function (via the underlying C function 2012C<Perl_sv_vcatpvfn_flags()>) has been heavily reworked to fix many minor 2013bugs, including the integer wrapping of large width and precision 2014specifiers and potential buffer overruns. It has also been made faster in 2015many cases. 2016 2017=item * 2018 2019Exiting from an C<eval>, whether normally or via an exception, now always 2020frees temporary values (possibly calling destructors) I<before> setting 2021C<$@>. For example: 2022 2023 sub DESTROY { eval { die "died in DESTROY"; } } 2024 eval { bless []; }; 2025 # $@ used to be equal to "died in DESTROY" here; it's now "". 2026 2027=item * 2028 2029Fixed a duplicate symbol failure with C<-flto -mieee-fp> builds. 2030F<pp.c> defined C<_LIB_VERSION> which C<-lieee> already defines. 2031L<[perl #131786]|https://rt.perl.org/Ticket/Display.html?id=131786> 2032 2033=item * 2034 2035The tokenizer no longer consumes the exponent part of a floating 2036point number if it's incomplete. 2037L<[perl #131725]|https://rt.perl.org/Ticket/Display.html?id=131725> 2038 2039=item * 2040 2041On non-threaded builds, for C<m/$null/> where C<$null> is an empty 2042string is no longer treated as if the C</o> flag was present when the 2043previous matching match operator included the C</o> flag. The 2044rewriting used to implement this behavior could confuse the 2045interpreter. This matches the behaviour of threaded builds. 2046L<[perl #124368]|https://rt.perl.org/Ticket/Display.html?id=124368> 2047 2048=item * 2049 2050Parsing a C<sub> definition could cause a use after free if the C<sub> 2051keyword was followed by whitespace including newlines (and comments.) 2052L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836> 2053 2054=item * 2055 2056The tokenizer now correctly adjusts a parse pointer when skipping 2057whitespace in a C<< ${identifier} >> construct. 2058L<[perl #131949]|https://rt.perl.org/Public/Bug/Display.html?id=131949> 2059 2060=item * 2061 2062Accesses to C<${^LAST_FH}> no longer assert after using any of a 2063variety of I/O operations on a non-glob. 2064L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263> 2065 2066=item * 2067 2068The XS-level C<Copy()>, C<Move()>, C<Zero()> macros and their variants now 2069assert if the pointers supplied are C<NULL>. ISO C considers 2070supplying NULL pointers to the functions these macros are built upon 2071as undefined behaviour even when their count parameters are zero. 2072Based on these assertions and the original bug report three macro 2073calls were made conditional. 2074L<[perl #131746]|https://rt.perl.org/Public/Bug/Display.html?id=131746> 2075L<[perl #131892]|https://rt.perl.org/Public/Bug/Display.html?id=131892> 2076 2077=item * 2078 2079Only the C<=> operator is permitted for defining defaults for 2080parameters in subroutine signatures. Previously other assignment 2081operators, e.g. C<+=>, were also accidentally permitted. 2082L<[perl #131777]|https://rt.perl.org/Public/Bug/Display.html?id=131777> 2083 2084=item * 2085 2086Package names are now always included in C<:prototype> warnings 2087L<[perl #131833]|https://rt.perl.org/Public/Bug/Display.html?id=131833> 2088 2089=item * 2090 2091The C<je_old_stack_hwm> field, previously only found in the C<jmpenv> 2092structure on debugging builds, has been added to non-debug builds as 2093well. This fixes an issue with some CPAN modules caused by the size of 2094this structure varying between debugging and non-debugging builds. 2095L<[perl #131942]|https://rt.perl.org/Public/Bug/Display.html?id=131942> 2096 2097=item * 2098 2099The arguments to the C<ninstr()> macro are now correctly parenthesized. 2100 2101=item * 2102 2103A NULL pointer dereference in the C<S_regmatch()> function has been 2104fixed. 2105L<[perl #132017]|https://rt.perl.org/Public/Bug/Display.html?id=132017> 2106 2107=item * 2108 2109Calling L<exec PROGRAM LIST|perlfunc/exec PROGRAM LIST> with an empty C<LIST> 2110has been fixed. This should call C<execvp()> with an empty C<argv> array 2111(containing only the terminating C<NULL> pointer), but was instead just 2112returning false (and not setting L<C<$!>|perlvar/$!>). 2113L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730> 2114 2115=item * 2116 2117The C<gv_fetchmeth_sv> C function stopped working properly in Perl 5.22 when 2118fetching a constant with a UTF-8 name if that constant subroutine was stored in 2119the stash as a simple scalar reference, rather than a full typeglob. This has 2120been corrected. 2121 2122=item * 2123 2124Single-letter debugger commands followed by an argument which starts with 2125punctuation (e.g. C<p$^V> and C<x@ARGV>) now work again. They had been 2126wrongly requiring a space between the command and the argument. 2127L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174> 2128 2129=item * 2130 2131L<splice|perlfunc/splice ARRAY,OFFSET,LENGTH,LIST> now throws an exception 2132("Modification of a read-only value attempted") when modifying a read-only 2133array. Until now it had been silently modifying the array. The new behaviour 2134is consistent with the behaviour of L<push|perlfunc/push ARRAY,LIST> and 2135L<unshift|perlfunc/unshift ARRAY,LIST>. 2136L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000> 2137 2138=item * 2139 2140C<stat()>, C<lstat()>, and file test operators now fail if given a 2141filename containing a nul character, in the same way that C<open()> 2142already fails. 2143 2144=item * 2145 2146C<stat()>, C<lstat()>, and file test operators now reliably set C<$!> when 2147failing due to being applied to a closed or otherwise invalid file handle. 2148 2149=item * 2150 2151File test operators for Unix permission bits that don't exist on a 2152particular platform, such as C<-k> (sticky bit) on Windows, now check that 2153the file being tested exists before returning the blanket false result, 2154and yield the appropriate errors if the argument doesn't refer to a file. 2155 2156=item * 2157 2158Fixed a 'read before buffer' overrun when parsing a range starting with 2159C<\N{}> at the beginning of the character set for the transliteration 2160operator. 2161L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> 2162 2163=item * 2164 2165Fixed a leaked scalar when parsing an empty C<\N{}> at compile-time. 2166L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> 2167 2168=item * 2169 2170Calling C<do $path> on a directory or block device now yields a meaningful 2171error code in C<$!>. 2172L<[perl #125774]|https://rt.perl.org/Ticket/Display.html?id=125774> 2173 2174=item * 2175 2176Regexp substitution using an overloaded replacement value that provides 2177a tainted stringification now correctly taints the resulting string. 2178L<[perl #115266]|https://rt.perl.org/Ticket/Display.html?id=115266> 2179 2180=item * 2181 2182Lexical sub declarations in C<do> blocks such as C<do { my sub lex; 123 }> 2183could corrupt the stack, erasing items already on the stack in the 2184enclosing statement. This has been fixed. 2185L<[perl #132442]|https://rt.perl.org/Ticket/Display.html?id=132442> 2186 2187=item * 2188 2189C<pack> and C<unpack> can now handle repeat counts and lengths that 2190exceed two billion. 2191L<[perl #119367]|https://rt.perl.org/Ticket/Display.html?id=119367> 2192 2193=item * 2194 2195Digits past the radix point in octal and binary floating point literals 2196now have the correct weight on platforms where a floating point 2197significand doesn't fit into an integer type. 2198 2199=item * 2200 2201The canonical truth value no longer has a spurious special meaning as a 2202callable subroutine. It used to be a magic placeholder for a missing 2203C<import> or C<unimport> method, but is now treated like any other string 2204C<1>. 2205L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042> 2206 2207=item * 2208 2209C<system> now reduces its arguments to strings in the parent process, so 2210any effects of stringifying them (such as overload methods being called 2211or warnings being emitted) are visible in the way the program expects. 2212L<[perl #121105]|https://rt.perl.org/Ticket/Display.html?id=121105> 2213 2214=item * 2215 2216The C<readpipe()> built-in function now checks at compile time that 2217it has only one parameter expression, and puts it in scalar context, 2218thus ensuring that it doesn't corrupt the stack at runtime. 2219L<[perl #4574]|https://rt.perl.org/Ticket/Display.html?id=4574> 2220 2221=item * 2222 2223C<sort> now performs correct reference counting when aliasing C<$a> and 2224C<$b>, thus avoiding premature destruction and leakage of scalars if they 2225are re-aliased during execution of the sort comparator. 2226L<[perl #92264]|https://rt.perl.org/Ticket/Display.html?id=92264> 2227 2228=item * 2229 2230C<reverse> with no operand, reversing C<$_> by default, is no longer in 2231danger of corrupting the stack. 2232L<[perl #132544]|https://rt.perl.org/Ticket/Display.html?id=132544> 2233 2234=item * 2235 2236C<exec>, C<system>, et al are no longer liable to have their argument 2237lists corrupted by reentrant calls and by magic such as tied scalars. 2238L<[perl #129888]|https://rt.perl.org/Ticket/Display.html?id=129888> 2239 2240=item * 2241 2242Perl's own C<malloc> no longer gets confused by attempts to allocate 2243more than a gigabyte on a 64-bit platform. 2244L<[perl #119829]|https://rt.perl.org/Ticket/Display.html?id=119829> 2245 2246=item * 2247 2248Stacked file test operators in a sort comparator expression no longer 2249cause a crash. 2250L<[perl #129347]|https://rt.perl.org/Ticket/Display.html?id=129347> 2251 2252=item * 2253 2254An identity C<tr///> transformation on a reference is no longer mistaken 2255for that reference for the purposes of deciding whether it can be 2256assigned to. 2257L<[perl #130578]|https://rt.perl.org/Ticket/Display.html?id=130578> 2258 2259=item * 2260 2261Lengthy hexadecimal, octal, or binary floating point literals no 2262longer cause undefined behaviour when parsing digits that are of such 2263low significance that they can't affect the floating point value. 2264L<[perl #131894]|https://rt.perl.org/Ticket/Display.html?id=131894> 2265 2266=item * 2267 2268C<open $$scalarref...> and similar invocations no longer leak the file 2269handle. 2270L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> 2271 2272=item * 2273 2274Some convoluted kinds of regexp no longer cause an arithmetic overflow 2275when compiled. 2276L<[perl #131893]|https://rt.perl.org/Ticket/Display.html?id=131893> 2277 2278=item * 2279 2280The default typemap, by avoiding C<newGVgen>, now no longer leaks when 2281XSUBs return file handles (C<PerlIO *> or C<FILE *>). 2282L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> 2283 2284=item * 2285 2286Creating a C<BEGIN> block as an XS subroutine with a prototype no longer 2287crashes because of the early freeing of the subroutine. 2288 2289=item * 2290 2291The C<printf> format specifier C<%.0f> no longer rounds incorrectly 2292L<[perl #47602]|https://rt.perl.org/Ticket/Display.html?id=47602>, 2293and now shows the correct sign for a negative zero. 2294 2295=item * 2296 2297Fixed an issue where the error C<< Scalar value @arrayname[0] better 2298written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >> 2299when arrayname starts with C<< Inf >>. 2300L<[perl #132645]|https://rt.perl.org/Ticket/Display.html?id=132645> 2301 2302=item * 2303 2304The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools 2305distribution now behaves the same as XS implementation on errors: it 2306returns an error, and sets C<< $! >>. 2307L<[perl #132648]|https://rt.perl.org/Ticket/Display.html?id=132648> 2308 2309=item * 2310 2311Vivify array elements when putting them on the stack. 2312Fixes L<[perl #8910]|https://rt.perl.org/Ticket/Display.html?id=8910> 2313(reported in April 2002). 2314 2315=item * 2316 2317Fixed parsing of braced subscript after parens. Fixes 2318L<[perl #8045]|https://rt.perl.org/Ticket/Display.html?id=8045> 2319(reported in December 2001). 2320 2321=item * 2322 2323C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the 2324length of the replacement character list was greater than 0x7fff. 2325 2326=item * 2327 2328C<tr/non_utf8/non_utf8/cd> failed to add the implied 2329C<\x{100}-\x{7fffffff}> to the search character list. 2330 2331=item * 2332 2333Compilation failures within "perl-within-perl" constructs, such as with 2334string interpolation and the right part of C<s///e>, now cause 2335compilation to abort earlier. 2336 2337Previously compilation could continue in order to report other errors, 2338but the failed sub-parse could leave partly parsed constructs on the 2339parser shift-reduce stack, confusing the parser, leading to perl 2340crashes. 2341L<[perl #125351]|https://rt.perl.org/Ticket/Display.html?id=125351> 2342 2343=item * 2344 2345On threaded perls where the decimal point (radix) character is not a 2346dot, it has been possible for a race to occur between threads when one 2347needs to use the real radix character (such as with C<sprintf>). This has 2348now been fixed by use of a mutex on systems without thread-safe locales, 2349and the problem just doesn't come up on those with thread-safe locales. 2350 2351=item * 2352 2353Errors while compiling a regex character class could sometime trigger an 2354assertion failure. 2355L<[perl #132163]|https://rt.perl.org/Ticket/Display.html?id=132163> 2356 2357=back 2358 2359=head1 Acknowledgements 2360 2361Perl 5.28.0 represents approximately 13 months of development since Perl 23625.26.0 and contains approximately 730,000 lines of changes across 2,200 2363files from 77 authors. 2364 2365Excluding auto-generated files, documentation and release tools, there were 2366approximately 580,000 lines of changes to 1,300 .pm, .t, .c and .h files. 2367 2368Perl continues to flourish into its fourth decade thanks to a vibrant 2369community of users and developers. The following people are known to have 2370contributed the improvements that became Perl 5.28.0: 2371 2372Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alberto Simões, Alexandr 2373Savca, Andrew Fresh, Andy Dougherty, Andy Lester, Aristotle Pagaltzis, Ask 2374Bjørn Hansen, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari 2375Mannsåker, Dan Collins, Daniel Dragan, David Cantrell, David Mitchell, 2376Dmitry Ulanov, Dominic Hargreaves, E. Choroba, Eric Herman, Eugen Konkov, 2377Father Chrysostomos, Gene Sullivan, George Hartzell, Graham Knop, Harald 2378Jörg, H.Merijn Brand, Hugo van der Sanden, Jacques Germishuys, James E 2379Keenan, Jarkko Hietaniemi, Jerry D. Hedden, J. Nick Koston, John Lightsey, 2380John Peacock, John P. Linderman, John SJ Anderson, Karen Etheridge, Karl 2381Williamson, Ken Brown, Ken Cotterill, Leon Timmermans, Lukas Mai, Marco 2382Fontani, Marc-Philip Werner, Matthew Horsfall, Neil Bowers, Nicholas Clark, 2383Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter John Acklam, Reini Urban, 2384Renee Baecker, Ricardo Signes, Robin Barker, Sawyer X, Scott Lanning, Sergey 2385Aleynikov, Shirakata Kentaro, Shoichi Kaji, Slaven Rezic, Smylers, Steffen 2386Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tomasz 2387Konojacki, Tom Hukins, Tom Wyant, Tony Cook, Vitali Peil, Yves Orton, 2388Zefram. 2389 2390The list above is almost certainly incomplete as it is automatically 2391generated from version control history. In particular, it does not include 2392the names of the (very much appreciated) contributors who reported issues to 2393the Perl bug tracker. 2394 2395Many of the changes included in this version originated in the CPAN modules 2396included in Perl's core. We're grateful to the entire CPAN community for 2397helping Perl to flourish. 2398 2399For a more complete list of all of Perl's historical contributors, please 2400see the F<AUTHORS> file in the Perl source distribution. 2401 2402=head1 Reporting Bugs 2403 2404If you find what you think is a bug, you might check the perl bug database 2405at L<https://rt.perl.org/> . There may also be information at 2406L<http://www.perl.org/> , the Perl Home Page. 2407 2408If you believe you have an unreported bug, please run the L<perlbug> program 2409included with your release. Be sure to trim your bug down to a tiny but 2410sufficient test case. Your bug report, along with the output of C<perl -V>, 2411will be sent off to perlbug@perl.org to be analysed by the Perl porting team. 2412 2413If the bug you are reporting has security implications which make it 2414inappropriate to send to a publicly archived mailing list, then see 2415L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> 2416for details of how to report the issue. 2417 2418=head1 Give Thanks 2419 2420If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, 2421you can do so by running the C<perlthanks> program: 2422 2423 perlthanks 2424 2425This will send an email to the Perl 5 Porters list with your show of thanks. 2426 2427=head1 SEE ALSO 2428 2429The F<Changes> file for an explanation of how to view exhaustive details on 2430what changed. 2431 2432The F<INSTALL> file for how to build Perl. 2433 2434The F<README> file for general stuff. 2435 2436The F<Artistic> and F<Copying> files for copyright information. 2437 2438=cut 2439