1=pod 2 3=encoding utf8 4 5=head1 NAME 6 7perl5320delta - what is new for perl v5.32.0 8 9=head1 DESCRIPTION 10 11This document describes differences between the 5.30.0 release and the 5.32.0 12release. 13 14If you are upgrading from an earlier release such as 5.28.0, first read 15L<perl5300delta>, which describes differences between 5.28.0 and 5.30.0. 16 17=head1 Core Enhancements 18 19=head2 The isa Operator 20 21A new experimental infix operator called C<isa> tests whether a given object 22is an instance of a given class or a class derived from it: 23 24 if( $obj isa Package::Name ) { ... } 25 26For more detail see L<perlop/Class Instance Operator>. 27 28=head2 Unicode 13.0 is supported 29 30See L<https://www.unicode.org/versions/Unicode13.0.0/> for details. 31 32=head2 Chained comparisons capability 33 34Some comparison operators, as their associativity, I<chain> with some 35operators of the same precedence (but never with operators of different 36precedence). 37 38 if ( $x < $y <= $z ) {...} 39 40behaves exactly like: 41 42 if ( $x < $y && $y <= $z ) {...} 43 44(assuming that C<"$y"> is as simple a scalar as it looks.) 45 46You can read more about this in L<perlop> under 47L<perlop/Operator Precedence and Associativity>. 48 49=head2 New Unicode properties C<Identifier_Status> and C<Identifier_Type> supported 50 51Unicode has revised its regular expression requirements: 52L<https://www.unicode.org/reports/tr18/tr18-21.html>. 53As part of that they are wanting more properties to be exposed, ones 54that aren't part of the strict UCD (Unicode character database). These 55two are used for examining inputs for security purposes. Details on 56their usage is at L<https://www.unicode.org/reports/tr39/>. 57 58=head2 It is now possible to write C<qr/\p{Name=...}/>, or 59C<qr!\p{na=/(SMILING|GRINNING) FACE/}!> 60 61The Unicode Name property is now accessible in regular expression 62patterns, as an alternative to C<\N{...}>. 63A comparison of the two methods is given in 64L<perlunicode/Comparison of \N{...} and \p{name=...}>. 65 66The second example above shows that wildcard subpatterns are also usable 67in this property. See L<perlunicode/Wildcards in Property Values>. 68 69=head2 Improvement of C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> 70 71The C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> functions now 72work on shift state locales and are thread-safe on C99 and above 73compilers when executed on a platform that has locale thread-safety; the 74length parameters are now optional. 75 76These functions are always executed under the current C language locale. 77(See L<perllocale>.) Most locales are stateless, but a few, notably the 78very rarely encountered ISO 2022, maintain a state between calls to 79these functions. Previously the state was cleared on every call, but 80now the state is not reset unless the appropriate parameter is C<undef>. 81 82On threaded perls, the C99 functions L<mbrlen(3)>, L<mbrtowc(3)>, and 83L<wcrtomb(3)>, when available, are substituted for the plain functions. 84This makes these functions thread-safe when executing on a locale 85thread-safe platform. 86 87The string length parameters in C<mblen> and C<mbtowc> are now optional; 88useful only if you wish to restrict the length parsed in the source 89string to less than the actual length. 90 91=head2 Alpha assertions are no longer experimental 92 93See L<perlre/(*pla:pattern)>, L<perlre/(*plb:pattern)>, 94L<perlre/(*nla:pattern)>>, and L<perlre/(*nlb:pattern)>. 95Use of these no longer generates a warning; existing code that disables 96the warning category C<experimental::alpha_assertions> will continue to work 97without any changes needed. Enabling the category has no effect. 98 99=head2 Script runs are no longer experimental 100 101See L<perlre/Script Runs>. Use of these no longer generates a warning; 102existing code that disables the warning category 103C<experimental::script_run> will continue to work without any 104changes needed. Enabling the category has no effect. 105 106=head2 Feature checks are now faster 107 108Previously feature checks in the parser required a hash lookup when 109features were set outside of a feature bundle, this has been optimized 110to a bit mask check. [L<GH #17229|https://github.com/Perl/perl5/issues/17229>] 111 112=head2 Perl is now developed on GitHub 113 114Perl is now developed on GitHub. You can find us at 115L<https://github.com/Perl/perl5>. 116 117Non-security bugs should now be reported via GitHub. Security issues should 118continue to be reported as documented in L<perlsec>. 119 120=head2 Compiled patterns can now be dumped before optimization 121 122This is primarily useful for tracking down bugs in the regular 123expression compiler. This dump happens on C<-DDEBUGGING> perls, if you 124specify C<-Drv> on the command line; or on any perl if the pattern is 125compiled within the scope of S<C<use re qw(Debug DUMP_PRE_OPTIMIZE)>> or 126S<C<use re qw(Debug COMPILE EXTRA)>>. (All but the second case display 127other information as well.) 128 129=head1 Security 130 131=head2 [CVE-2020-10543] Buffer overflow caused by a crafted regular expression 132 133A signed C<size_t> integer overflow in the storage space calculations for 134nested regular expression quantifiers could cause a heap buffer overflow in 135Perl's regular expression compiler that overwrites memory allocated after the 136regular expression storage space with attacker supplied data. 137 138The target system needs a sufficient amount of memory to allocate partial 139expansions of the nested quantifiers prior to the overflow occurring. This 140requirement is unlikely to be met on 64-bit systems. 141 142Discovered by: ManhND of The Tarantula Team, VinCSS (a member of Vingroup). 143 144=head2 [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression 145 146Integer overflows in the calculation of offsets between instructions for the 147regular expression engine could cause corruption of the intermediate language 148state of a compiled regular expression. An attacker could abuse this behaviour 149to insert instructions into the compiled form of a Perl regular expression. 150 151Discovered by: Hugo van der Sanden and Slaven Rezic. 152 153=head2 [CVE-2020-12723] Buffer overflow caused by a crafted regular expression 154 155Recursive calls to C<S_study_chunk()> by Perl's regular expression compiler to 156optimize the intermediate language representation of a regular expression could 157cause corruption of the intermediate language state of a compiled regular 158expression. 159 160Discovered by: Sergey Aleynikov. 161 162=head2 Additional Note 163 164An application written in Perl would only be vulnerable to any of the above 165flaws if it evaluates regular expressions supplied by the attacker. Evaluating 166regular expressions in this fashion is known to be dangerous since the regular 167expression engine does not protect against denial of service attacks in this 168usage scenario. 169 170=head1 Incompatible Changes 171 172=head2 Certain pattern matching features are now prohibited in compiling 173Unicode property value wildcard subpatterns 174 175These few features are either inappropriate or interfere with the 176algorithm used to accomplish this task. The complete list is in 177L<perlunicode/Wildcards in Property Values>. 178 179=head2 Unused functions C<POSIX::mbstowcs> and C<POSIX::wcstombs> are removed 180 181These functions could never have worked due to a defective interface 182specification. There is clearly no demand for them, given that no one 183has ever complained in the many years the functions were claimed to be 184available, hence so-called "support" for them is now dropped. 185 186=head2 A bug fix for C<(?[...])> may have caused some patterns to no 187longer compile 188 189See L</Selected Bug Fixes>. The heuristics previously used may have let 190some constructs compile (perhaps not with the programmer's intended 191effect) that should have been errors. None are known, but it is 192possible that some erroneous constructs no longer compile. 193 194=head2 C<\p{I<user-defined>}> properties now always override official 195Unicode ones 196 197Previously, if and only if a user-defined property was declared prior to 198the compilation of the regular expression pattern that contains it, its 199definition was used instead of any official Unicode property with the 200same name. Now, it always overrides the official property. This 201change could break existing code that relied (likely unwittingly) on the 202previous behavior. Without this fix, if Unicode released a new version 203with a new property that happens to have the same name as the one you 204had long been using, your program would break when you upgraded to a 205perl that used that new Unicode version. See L<perlunicode/User-Defined 206Character Properties>. [L<GH #17205|https://github.com/Perl/perl5/issues/17205>] 207 208=head2 Modifiable variables are no longer permitted in constants 209 210Code like: 211 212 my $var; 213 $sub = sub () { $var }; 214 215where C<$var> is referenced elsewhere in some sort of modifiable context now 216produces an exception when the sub is defined. 217 218This error can be avoided by adding a return to the sub definition: 219 220 $sub = sub () { return $var }; 221 222This has been deprecated since Perl 5.22. 223L<[GH #17020]|https://github.com/Perl/perl5/issues/17020> 224 225=head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is forbidden 226 227Such strings are represented internally in UTF-8, and C<vec> is a 228bit-oriented operation that will likely give unexpected results on those 229strings. This was deprecated in perl 5.28.0. 230 231=head2 Use of code points over 0xFF in string bitwise operators 232 233Some uses of these were already illegal after a previous deprecation 234cycle. The remaining uses are now prohibited, having been deprecated in perl 2355.28.0. See L<perldeprecation>. 236 237=head2 C<Sys::Hostname::hostname()> does not accept arguments 238 239This usage was deprecated in perl 5.28.0 and is now fatal. 240 241=head2 Plain "0" string now treated as a number for range operator 242 243Previously a range C<"0" .. "-1"> would produce a range of numeric 244strings from "0" through "99"; this now produces an empty list, just 245as C<0 .. -1> does. This also means that C<"0" .. "9"> now produces a 246list of integers, where previously it would produce a list of strings. 247 248This was due to a special case that treated strings starting with "0" 249as strings so ranges like C<"00" .. "03"> produced C<"00", "01", "02", "03">, 250but didn't specially handle the string C<"0">. 251L<[GH #16770]|https://github.com/Perl/perl5/issues/16770> 252 253=head2 C<\K> now disallowed in look-ahead and look-behind assertions 254 255This was disallowed because it causes unexpected behaviour, and no-one 256could define what the desired behaviour should be. 257L<[GH #14638]|https://github.com/Perl/perl5/issues/14638> 258 259=head1 Performance Enhancements 260 261=over 4 262 263=item * 264 265C<my_strnlen> has been sped up for systems that don't have their own 266C<strnlen> implementation. 267 268=item * 269 270C<grok_bin_oct_hex> (and so, C<grok_bin>, C<grok_oct>, and C<grok_hex>) 271have been sped up. 272 273=item * 274 275C<grok_number_flags> has been sped up. 276 277=item * 278 279C<sort> is now noticeably faster in cases such as C<< sort {$a <=> $b} >> or 280C<< sort {$b <=> $a} >>. [L<GH #17608|https://github.com/Perl/perl5/pull/17608>] 281 282=back 283 284=head1 Modules and Pragmata 285 286=head2 Updated Modules and Pragmata 287 288=over 4 289 290=item * 291 292L<Archive::Tar> has been upgraded from version 2.32 to 2.36. 293 294=item * 295 296L<autodie> has been upgraded from version 2.29 to 2.32. 297 298=item * 299 300L<B> has been upgraded from version 1.76 to 1.80. 301 302=item * 303 304L<B::Deparse> has been upgraded from version 1.49 to 1.54. 305 306=item * 307 308L<Benchmark> has been upgraded from version 1.22 to 1.23. 309 310=item * 311 312L<charnames> has been upgraded from version 1.45 to 1.48. 313 314=item * 315 316L<Class::Struct> has been upgraded from version 0.65 to 0.66. 317 318=item * 319 320L<Compress::Raw::Bzip2> has been upgraded from version 2.084 to 2.093. 321 322=item * 323 324L<Compress::Raw::Zlib> has been upgraded from version 2.084 to 2.093. 325 326=item * 327 328L<CPAN> has been upgraded from version 2.22 to 2.27. 329 330=item * 331 332L<DB_File> has been upgraded from version 1.843 to 1.853. 333 334=item * 335 336L<Devel::PPPort> has been upgraded from version 3.52 to 3.57. 337 338The test files generated on Win32 are now identical to when they are 339generated on POSIX-like systems. 340 341=item * 342 343L<diagnostics> has been upgraded from version 1.36 to 1.37. 344 345=item * 346 347L<Digest::MD5> has been upgraded from version 2.55 to 2.55_01. 348 349=item * 350 351L<Dumpvalue> has been upgraded from version 1.18 to 1.21. 352 353Previously, when dumping elements of an array and encountering an undefined 354value, the string printed would have been C<empty array>. This has been 355changed to what was apparently originally intended: C<empty slot>. 356 357=item * 358 359L<DynaLoader> has been upgraded from version 1.45 to 1.47. 360 361=item * 362 363L<Encode> has been upgraded from version 3.01 to 3.06. 364 365=item * 366 367L<encoding> has been upgraded from version 2.22 to 3.00. 368 369=item * 370 371L<English> has been upgraded from version 1.10 to 1.11. 372 373=item * 374 375L<Exporter> has been upgraded from version 5.73 to 5.74. 376 377=item * 378 379L<ExtUtils::CBuilder> has been upgraded from version 0.280231 to 0.280234. 380 381=item * 382 383L<ExtUtils::MakeMaker> has been upgraded from version 7.34 to 7.44. 384 385=item * 386 387L<feature> has been upgraded from version 1.54 to 1.58. 388 389A new C<indirect> feature has been added, which is enabled by default 390but allows turning off L<indirect object syntax|perlobj/Indirect 391Object Syntax>. 392 393=item * 394 395L<File::Find> has been upgraded from version 1.36 to 1.37. 396 397On Win32, the tests no longer require either a file in the drive root 398directory, or a writable root directory. 399 400=item * 401 402L<File::Glob> has been upgraded from version 1.32 to 1.33. 403 404=item * 405 406L<File::stat> has been upgraded from version 1.08 to 1.09. 407 408=item * 409 410L<Filter::Simple> has been upgraded from version 0.95 to 0.96. 411 412=item * 413 414L<Getopt::Long> has been upgraded from version 2.5 to 2.51. 415 416=item * 417 418L<Hash::Util> has been upgraded from version 0.22 to 0.23. 419 420The Synopsis has been updated as the example code stopped working with 421newer perls. 422[L<GH #17399|https://github.com/Perl/perl5/issues/17399>] 423 424=item * 425 426L<I18N::Langinfo> has been upgraded from version 0.18 to 0.19. 427 428=item * 429 430L<I18N::LangTags> has been upgraded from version 0.43 to 0.44. 431 432Document the C<IGNORE_WIN32_LOCALE> environment variable. 433 434=item * 435 436L<IO> has been upgraded from version 1.40 to 1.43. 437 438L<IO::Socket> no longer caches a zero protocol value, since this 439indicates that the implementation will select a protocol. This means 440that on platforms that don't implement C<SO_PROTOCOL> for a given 441socket type the protocol method may return C<undef>. 442 443The supplied I<TO> is now always honoured on calls to the C<send()> 444method. L<[GH #16891]|https://github.com/Perl/perl5/issues/16891> 445 446=item * 447 448IO-Compress has been upgraded from version 2.084 to 2.093. 449 450=item * 451 452L<IPC::Cmd> has been upgraded from version 1.02 to 1.04. 453 454=item * 455 456L<IPC::Open3> has been upgraded from version 1.20 to 1.21. 457 458=item * 459 460L<JSON::PP> has been upgraded from version 4.02 to 4.04. 461 462=item * 463 464L<Math::BigInt> has been upgraded from version 1.999816 to 1.999818. 465 466=item * 467 468L<Math::BigInt::FastCalc> has been upgraded from version 0.5008 to 0.5009. 469 470=item * 471 472L<Module::CoreList> has been upgraded from version 5.20190522 to 5.20200620. 473 474=item * 475 476L<Module::Load::Conditional> has been upgraded from version 0.68 to 0.70. 477 478=item * 479 480L<Module::Metadata> has been upgraded from version 1.000036 to 1.000037. 481 482=item * 483 484L<mro> has been upgraded from version 1.22 to 1.23. 485 486=item * 487 488L<Net::Ping> has been upgraded from version 2.71 to 2.72. 489 490=item * 491 492L<Opcode> has been upgraded from version 1.43 to 1.47. 493 494=item * 495 496L<open> has been upgraded from version 1.11 to 1.12. 497 498=item * 499 500L<overload> has been upgraded from version 1.30 to 1.31. 501 502=item * 503 504L<parent> has been upgraded from version 0.237 to 0.238. 505 506=item * 507 508L<perlfaq> has been upgraded from version 5.20190126 to 5.20200523. 509 510=item * 511 512L<PerlIO> has been upgraded from version 1.10 to 1.11. 513 514=item * 515 516L<PerlIO::encoding> has been upgraded from version 0.27 to 0.28. 517 518=item * 519 520L<PerlIO::via> has been upgraded from version 0.17 to 0.18. 521 522=item * 523 524L<Pod::Html> has been upgraded from version 1.24 to 1.25. 525 526=item * 527 528L<Pod::Simple> has been upgraded from version 3.35 to 3.40. 529 530=item * 531 532L<podlators> has been upgraded from version 4.11 to 4.14. 533 534=item * 535 536L<POSIX> has been upgraded from version 1.88 to 1.94. 537 538=item * 539 540L<re> has been upgraded from version 0.37 to 0.40. 541 542=item * 543 544L<Safe> has been upgraded from version 2.40 to 2.41. 545 546=item * 547 548L<Scalar::Util> has been upgraded from version 1.50 to 1.55. 549 550=item * 551 552L<SelfLoader> has been upgraded from version 1.25 to 1.26. 553 554=item * 555 556L<Socket> has been upgraded from version 2.027 to 2.029. 557 558=item * 559 560L<Storable> has been upgraded from version 3.15 to 3.21. 561 562Use of C<note()> from L<Test::More> is now optional in tests. This works 563around a circular dependency with L<Test::More> when installing on very 564old perls from CPAN. 565 566Vstring magic strings over 2GB are now disallowed. 567 568Regular expressions objects weren't properly counted for object id 569purposes on retrieve. This would corrupt the resulting structure, or 570cause a runtime error in some cases. L<[GH #17037]|https://github.com/Perl/perl5/issues/17037> 571 572=item * 573 574L<Sys::Hostname> has been upgraded from version 1.22 to 1.23. 575 576=item * 577 578L<Sys::Syslog> has been upgraded from version 0.35 to 0.36. 579 580=item * 581 582L<Term::ANSIColor> has been upgraded from version 4.06 to 5.01. 583 584=item * 585 586L<Test::Simple> has been upgraded from version 1.302162 to 1.302175. 587 588=item * 589 590L<Thread> has been upgraded from version 3.04 to 3.05. 591 592=item * 593 594L<Thread::Queue> has been upgraded from version 3.13 to 3.14. 595 596=item * 597 598L<threads> has been upgraded from version 2.22 to 2.25. 599 600=item * 601 602L<threads::shared> has been upgraded from version 1.60 to 1.61. 603 604=item * 605 606L<Tie::File> has been upgraded from version 1.02 to 1.06. 607 608=item * 609 610L<Tie::Hash::NamedCapture> has been upgraded from version 0.10 to 0.13. 611 612=item * 613 614L<Tie::Scalar> has been upgraded from version 1.04 to 1.05. 615 616=item * 617 618L<Tie::StdHandle> has been upgraded from version 4.5 to 4.6. 619 620=item * 621 622L<Time::HiRes> has been upgraded from version 1.9760 to 1.9764. 623 624Removed obsolete code such as support for pre-5.6 perl and classic 625MacOS. L<[GH #17096]|https://github.com/Perl/perl5/issues/17096> 626 627=item * 628 629L<Time::Piece> has been upgraded from version 1.33 to 1.3401. 630 631=item * 632 633L<Unicode::Normalize> has been upgraded from version 1.26 to 1.27. 634 635=item * 636 637L<Unicode::UCD> has been upgraded from version 0.72 to 0.75. 638 639=item * 640 641L<VMS::Stdio> has been upgraded from version 2.44 to 2.45. 642 643=item * 644 645L<warnings> has been upgraded from version 1.44 to 1.47. 646 647=item * 648 649L<Win32> has been upgraded from version 0.52 to 0.53. 650 651=item * 652 653L<Win32API::File> has been upgraded from version 0.1203 to 0.1203_01. 654 655=item * 656 657L<XS::APItest> has been upgraded from version 1.00 to 1.09. 658 659=back 660 661=head2 Removed Modules and Pragmata 662 663=over 4 664 665=item * 666 667Pod::Parser has been removed from the core distribution. 668It still is available for download from CPAN. This resolves 669[L<#13194|https://github.com/Perl/perl5/issues/13194>]. 670 671=back 672 673=head1 Documentation 674 675=head2 Changes to Existing Documentation 676 677We have attempted to update the documentation to reflect the changes 678listed in this document. If you find any we have missed, open an issue 679at L<https://github.com/Perl/perl5/issues>. 680 681Additionally, the following selected changes have been made: 682 683=head3 L<perldebguts> 684 685=over 4 686 687=item * 688 689Simplify a few regnode definitions 690 691Update C<BOUND> and C<NBOUND> definitions. 692 693=item * 694 695Add ANYOFHs regnode 696 697This node is like C<ANYOFHb>, but is used when more than one leading byte 698is the same in all the matched code points. 699 700C<ANYOFHb> is used to avoid having to convert from UTF-8 to code point for 701something that won't match. It checks that the first byte in the UTF-8 702encoded target is the desired one, thus ruling out most of the possible 703code points. 704 705=back 706 707=head3 L<perlapi> 708 709=over 4 710 711=item * 712 713C<sv_2pvbyte> updated to mention it will croak if the SV cannot be 714downgraded. 715 716=item * 717 718C<sv_setpvn> updated to mention that the UTF-8 flag will not be changed by 719this function, and a terminating NUL byte is guaranteed. 720 721=item * 722 723Documentation for C<PL_phase> has been added. 724 725=item * 726 727The documentation for C<grok_bin>, C<grok_oct>, and C<grok_hex> has been 728updated and clarified. 729 730=back 731 732=head3 L<perldiag> 733 734=over 4 735 736=item * 737 738Add documentation for experimental 'isa' operator 739 740(S experimental::isa) This warning is emitted if you use the (C<isa>) 741operator. This operator is currently experimental and its behaviour may 742change in future releases of Perl. 743 744=back 745 746=head3 L<perlfunc> 747 748=over 4 749 750=item C<caller> 751 752Like L<C<__FILE__>|/__FILE__> and L<C<__LINE__>|/__LINE__>, the filename and 753line number returned here may be altered by the mechanism described at 754L<perlsyn/"Plain Old Comments (Not!)">. 755 756=item C<__FILE__> 757 758It can be altered by the mechanism described at 759L<perlsyn/"Plain Old Comments (Not!)">. 760 761=item C<__LINE__> 762 763It can be altered by the mechanism described at 764L<perlsyn/"Plain Old Comments (Not!)">. 765 766=item C<return> 767 768Now mentions that you cannot return from C<do BLOCK>. 769 770=item C<open> 771 772The C<open()> section had been renovated significantly. 773 774=back 775 776=head3 L<perlguts> 777 778=over 4 779 780=item * 781 782No longer suggesting using perl's C<malloc>. Modern system C<malloc> is 783assumed to be much better than perl's implementation now. 784 785=item * 786 787Documentation about F<embed.fnc> flags has been removed. F<embed.fnc> now has 788sufficient comments within it. Anyone changing that file will see those 789comments first, so entries here are now redundant. 790 791=item * 792 793Updated documentation for C<UTF8f> 794 795=item * 796 797Added missing C<=for apidoc> lines 798 799=back 800 801=head3 L<perlhacktips> 802 803=over 4 804 805=item * 806 807The differences between Perl strings and C strings are now detailed. 808 809=back 810 811=head3 L<perlintro> 812 813=over 4 814 815=item * 816 817The documentation for the repetition operator C<x> have been clarified. 818[L<GH #17335|https://github.com/Perl/perl5/issues/17335>] 819 820=back 821 822=head3 L<perlipc> 823 824=over 4 825 826=item * 827 828The documentation surrounding C<open> and handle usage has been modernized 829to prefer 3-arg open and lexical variables instead of barewords. 830 831=item * 832 833Various updates and fixes including making all examples strict-safe and 834replacing C<-w> with C<use warnings>. 835 836=back 837 838=head3 L<perlop> 839 840=over 4 841 842=item * 843 844'isa' operator is experimental 845 846This is an experimental feature and is available when enabled 847by C<use feature 'isa'>. It emits a warning in the C<experimental::isa> 848category. 849 850=back 851 852=head3 L<perlpod> 853 854=over 4 855 856=item * 857 858Details of the various stacks within the perl interpreter are now explained 859here. 860 861=item * 862 863Advice has been added regarding the usage of C<< ZE<lt>E<gt> >>. 864 865=back 866 867=head3 L<perlport> 868 869=over 4 870 871=item * 872 873Update C<timegm> example to use the correct year format I<1970> instead of I<70>. 874[L<GH #16431|https://github.com/Perl/perl5/issues/16431>] 875 876=back 877 878=head3 L<perlreref> 879 880=over 4 881 882=item * 883 884Fix some typos. 885 886=back 887 888=head3 L<perlvar> 889 890=over 4 891 892=item * 893 894Now recommends stringifying C<$]> and comparing it numerically. 895 896=back 897 898=head3 L<perlapi>, L<perlintern> 899 900=over 4 901 902=item * 903 904Documentation has been added for several functions that were 905lacking it before. 906 907=back 908 909=head3 L<perlxs> 910 911=over 4 912 913=item * 914 915Suggest using C<libffi> for simple library bindings via CPAN modules 916like L<FFI::Platypus> or L<FFI::Raw>. 917 918=back 919 920=head3 L<POSIX> 921 922=over 4 923 924=item * 925 926C<setlocale> warning about threaded builds updated to note it does not 927apply on Perl 5.28.X and later. 928 929=item * 930 931C<< Posix::SigSet->new(...) >> updated to state it throws an error if any of 932the supplied signals cannot be added to the set. 933 934=back 935 936Additionally, the following selected changes have been made: 937 938=head3 Updating of links 939 940=over 4 941 942=item * 943 944Links to the now defunct L<https://search.cpan.org> site now point at 945the equivalent L<https://metacpan.org> URL. [L<GH #17393|https://github.com/Perl/perl5/issues/17393>] 946 947=item * 948 949The man page for L<ExtUtils::XSSymSet> is now only installed on VMS, 950which is the only platform the module is installed on. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>] 951 952=item * 953 954URLs have been changed to C<https://> and stale links have been updated. 955 956Where applicable, the URLs in the documentation have been moved from using the 957C<http://> protocol to C<https://>. This also affects the location of the bug 958tracker at L<https://rt.perl.org>. 959 960=item * 961 962Some links to OS/2 libraries, Address Sanitizer and other system tools had gone 963stale. These have been updated with working links. 964 965=item * 966 967Some links to old email addresses on perl5-porters had gone stale. These have been 968updated with working links. 969 970=back 971 972=head1 Diagnostics 973 974The following additions or changes have been made to diagnostic output, 975including warnings and fatal error messages. For the complete list of 976diagnostic messages, see L<perldiag>. 977 978=head2 New Diagnostics 979 980=head3 New Errors 981 982=over 4 983 984=item * 985 986L<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol> 987|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>"> 988 989This is a replacement for several error messages listed under 990L</Changes to Existing Diagnostics>. 991 992=item * 993 994C<L<No digits found for %s literal|perldiag/"No digits found for %s literal">> 995 996(F) No hexadecimal digits were found following C<0x> or no binary digits were 997found following C<0b>. 998 999=back 1000 1001=head3 New Warnings 1002 1003=over 4 1004 1005=item * 1006 1007L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable"> 1008 1009This is actually not a new message, but it is now output when the 1010warnings category C<portable> is enabled. 1011 1012When raised during regular expression pattern compilation, the warning 1013has extra text added at the end marking where precisely in the pattern 1014it occurred. 1015 1016=item * 1017 1018L<Non-hex character '%c' terminates \x early. Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early. Resolved as "%s""> 1019 1020This replaces a warning that was much less specific, and which gave 1021false information. This new warning parallels the similar 1022already-existing one raised for C<\o{}>. 1023 1024=back 1025 1026=head2 Changes to Existing Diagnostics 1027 1028=over 4 1029 1030=item * 1031 1032L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII"> 1033 1034...now has extra text added at the end, when raised during regular 1035expression pattern compilation, marking where precisely in the pattern 1036it occurred. 1037 1038=item * 1039 1040L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s""> 1041 1042...now has extra text added at the end, when raised during regular 1043expression pattern compilation, marking where precisely in the pattern 1044it occurred. 1045 1046=item * 1047 1048L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid"> 1049 1050...now has extra text added at the end, when raised during regular 1051expression pattern compilation, marking where precisely in the pattern 1052it occurred. 1053 1054=item * 1055 1056L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s""> 1057 1058...now has extra text added at the end, when raised during regular 1059expression pattern compilation, marking where precisely in the pattern 1060it occurred. 1061 1062=item * 1063 1064L<Non-octal character '%c' terminates \o early. Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early. Resolved as "%s""> 1065 1066...now includes the phrase "terminates \o early", and has extra text added 1067at the end, when raised during regular expression pattern compilation, 1068marking where precisely in the pattern it occurred. In some instances 1069the text of the resolution has been clarified. 1070 1071=item * 1072 1073L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'> 1074 1075As of Perl 5.32, this message is no longer generated. Instead, 1076L<perldiag/Non-octal character '%c' terminates \o early. Resolved as "%s"> 1077is used instead. 1078 1079=item * 1080 1081L<Use of code point 0x%s is not allowed; the permissible max is 0x%X|perldiag/"Use of code point 0x%s is not allowed; the permissible max is 0x%X"> 1082 1083Some instances of this message previously output the hex digits C<A>, 1084C<B>, C<C>, C<D>, C<E>, and C<F> in lower case. Now they are all 1085consistently upper case. 1086 1087=item * 1088 1089The following three diagnostics have been removed, and replaced by 1090L<C<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>> 1091|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">: 1092C<Expecting close paren for nested extended charclass in regex; marked 1093by <-- HERE in mE<sol>%sE<sol>>, 1094C<Expecting close paren for wrapper for nested extended charclass in 1095regex; marked by <-- HERE in mE<sol>%sE<sol>>, 1096and 1097C<Expecting '(?flags:(?[...' in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>>. 1098 1099=item * 1100 1101The C<Code point 0x%X is not Unicode, and not portable> warning removed 1102the line C<Code points above 0xFFFF_FFFF require larger than a 32 bit word.> 1103as code points that large are no longer legal on 32-bit platforms. 1104 1105=item * 1106 1107L<Can't use global %s in %s|perldiag/"Can't use global %s in %s"> 1108 1109This error message has been slightly reformatted from the original C<Can't use 1110global %s in "%s">, and in particular misleading error messages like C<Can't 1111use global $_ in "my"> are now rendered as C<Can't use global $_ in subroutine 1112signature>. 1113 1114=item * 1115 1116L<Constants from lexical variables potentially modified elsewhere are no longer permitted|perldiag/"Constants from lexical variables potentially modified elsewhere are no longer permitted"> 1117 1118This error message replaces the former C<Constants from lexical variables 1119potentially modified elsewhere are deprecated. This will not be allowed in Perl 11205.32> to reflect the fact that this previously deprecated usage has now been 1121transformed into an exception. The message's classification has also been 1122updated from D (deprecated) to F (fatal). 1123 1124See also L</Incompatible Changes>. 1125 1126=item * 1127 1128C<\N{} here is restricted to one character> is now emitted in the same 1129circumstances where previously C<\N{} in inverted character class or as a range 1130end-point is restricted to one character> was. 1131 1132This is due to new circumstances having been added in Perl 5.30 that weren't 1133covered by the earlier wording. 1134 1135=back 1136 1137=head1 Utility Changes 1138 1139=head2 L<perlbug> 1140 1141=over 4 1142 1143=item * The bug tracker homepage URL now points to GitHub. 1144 1145=back 1146 1147=head2 L<streamzip> 1148 1149=over 4 1150 1151=item * 1152 1153This is a new utility, included as part of an 1154L<IO::Compress::Base> upgrade. 1155 1156L<streamzip> creates a zip file from stdin. The program will read data 1157from stdin, compress it into a zip container and, by default, write a 1158streamed zip file to stdout. 1159 1160=back 1161 1162=head1 Configuration and Compilation 1163 1164=head2 F<Configure> 1165 1166=over 4 1167 1168=item * 1169 1170For clang++, add C<< #include <stdlib.h> >> to Configure's probes for 1171C<futimes>, C<strtoll>, C<strtoul>, C<strtoull>, C<strtouq>, otherwise the 1172probes would fail to compile. 1173 1174=item * 1175 1176Use a compile and run test for C<lchown> to satisfy clang++ which should 1177more reliably detect it. 1178 1179=item * 1180 1181For C++ compilers, add C<< #include <stdio.h> >> to Configure's probes for 1182C<getpgrp> and C<setpgrp> as they use printf and C++ compilers may fail 1183compilation instead of just warning. 1184 1185=item * 1186 1187Check if the compiler can handle inline attribute. 1188 1189=item * 1190 1191Check for character data alignment. 1192 1193=item * 1194 1195F<Configure> now correctly handles gcc-10. Previously it was interpreting it 1196as gcc-1 and turned on C<-fpcc-struct-return>. 1197 1198=item * 1199 1200Perl now no longer probes for C<d_u32align>, defaulting to C<define> on all 1201platforms. This check was error-prone when it was done, which was on 32-bit 1202platforms only. 1203L<[GH #16680]|https://github.com/Perl/perl5/issues/16680> 1204 1205=item * 1206 1207Documentation and hints for building perl on Z/OS (native EBCDIC) have been 1208updated. This is still a work in progress. 1209 1210=item * 1211 1212A new probe for C<malloc_usable_size> has been added. 1213 1214=item * 1215 1216Improvements in F<Configure> to detection in C++ and clang++. Work ongoing by 1217Andy Dougherty. L<[GH #17033]|https://github.com/Perl/perl5/issues/17033> 1218 1219=item * 1220 1221F<autodoc.pl> 1222 1223This tool that regenerates L<perlintern> and L<perlapi> has been overhauled 1224significantly, restoring consistency in flags used in F<embed.fnc> and 1225L<Devel::PPPort> and allowing removal of many redundant C<=for apidoc> 1226entries in code. 1227 1228=item * 1229 1230The C<ECHO> macro is now defined. This is used in a C<dtrace> rule that was 1231originally changed for FreeBSD, and the FreeBSD make apparently predefines it. 1232The Solaris make does not predefine C<ECHO> which broke this rule on Solaris. 1233L<[GH #17057]|https://github.com/Perl/perl5/issues/17057> 1234 1235=item * 1236 1237Bison versions 3.1 through 3.4 are now supported. 1238 1239=back 1240 1241=head1 Testing 1242 1243Tests were added and changed to reflect the other additions and 1244changes in this release. Furthermore, these significant changes were 1245made: 1246 1247=over 4 1248 1249=item * 1250 1251F<t/run/switches.t> no longer uses (and re-uses) the F<tmpinplace/> 1252directory under F<t/>. This may prevent spurious failures. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>] 1253 1254=item * 1255 1256Various bugs in C<POSIX::mbtowc> were fixed. Potential races with 1257other threads are now avoided, and previously the returned wide 1258character could well be garbage. 1259 1260=item * 1261 1262Various bugs in C<POSIX::wctomb> were fixed. Potential races with other 1263threads are now avoided, and previously it would segfault if the string 1264parameter was shared or hadn't been pre-allocated with a string of 1265sufficient length to hold the result. 1266 1267=item * 1268 1269Certain test output of scalars containing control characters and Unicode 1270has been fixed on EBCDIC. 1271 1272=item * 1273 1274F<t/charset_tools.pl>: Avoid some work on ASCII platforms. 1275 1276=item * 1277 1278F<t/re/regexp.t>: Speed up many regex tests on ASCII platform 1279 1280=item * 1281 1282F<t/re/pat.t>: Skip tests that don't work on EBCDIC. 1283 1284=back 1285 1286=head1 Platform Support 1287 1288=head2 Discontinued Platforms 1289 1290=over 4 1291 1292=item Windows CE 1293 1294Support for building perl on Windows CE has now been removed. 1295 1296=back 1297 1298=head2 Platform-Specific Notes 1299 1300=over 4 1301 1302=item Linux 1303 1304C<cc> will be used to populate C<plibpth> if C<cc> is C<clang>. 1305L<[GH #17043]|https://github.com/Perl/perl5/issues/17043> 1306 1307=item NetBSD 8.0 1308 1309Fix compilation of Perl on NetBSD 8.0 with g++. 1310[L<GH #17381|https://github.com/Perl/perl5/issues/17381>] 1311 1312=item Windows 1313 1314=over 4 1315 1316=item * 1317 1318The configuration for C<ccflags> and C<optimize> are now separate, as 1319with POSIX platforms. [L<GH #17156|https://github.com/Perl/perl5/issues/17156>] 1320 1321=item * 1322 1323Support for building perl with Visual C++ 6.0 has now been removed. 1324 1325=item * 1326 1327The locale tests could crash on Win32 due to a Windows bug, and 1328separately due to the CRT throwing an exception if the locale name 1329wasn't validly encoded in the current code page. 1330 1331For the second we now decode the locale name ourselves, and always 1332decode it as UTF-8. L<[GH #16922]|https://github.com/Perl/perl5/issues/16922> 1333 1334=item * 1335 1336F<t/op/magic.t> could fail if environment variables starting with 1337C<FOO> already existed. 1338 1339=item * 1340 1341MYMALLOC (PERL_MALLOC) build has been fixed. 1342 1343=back 1344 1345=item Solaris 1346 1347=over 4 1348 1349=item * 1350 1351C<Configure> will now find recent versions of the Oracle Developer Studio 1352compiler, which are found under C</opt/developerstudio*>. 1353 1354=item * 1355 1356C<Configure> now uses the detected types for C<gethostby*> functions, allowing 1357Perl to once again compile on certain configurations of Solaris. 1358 1359=back 1360 1361=item VMS 1362 1363=over 4 1364 1365=item * 1366 1367With the release of the patch kit C99 V2.0, VSI has provided support for a 1368number of previously-missing C99 features. On systems with that patch kit 1369installed, Perl's configuration process will now detect the presence of the 1370header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>, 1371C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>, 1372and C<scalbnl>. 1373 1374=item * 1375 1376C<-Duse64bitint> is now the default on VMS. 1377 1378=back 1379 1380=item z/OS 1381 1382Perl 5.32 has been tested on z/OS 2.4, with the following caveats: 1383 1384=over 4 1385 1386=item * 1387 1388Only static builds (the default) build reliably 1389 1390=item * 1391 1392When using locales, z/OS does not handle the C<LC_MESSAGES> category 1393properly, so when compiling perl, you should add the following to your 1394F<Configure> options 1395 1396 ./Configure <other options> -Accflags=-DNO_LOCALE_MESSAGES 1397 1398=item * 1399 1400z/OS does not support locales with threads, so when compiling a threaded 1401perl, you should add the following to your F<Configure> options 1402 1403 ./Configure <other Configure options> -Accflags=-DNO_LOCALE 1404 1405=item * 1406 1407Some CPAN modules that are shipped with perl fail at least one of their 1408self-tests. These are: 1409Archive::Tar, 1410Config::Perl::V, 1411CPAN::Meta, 1412CPAN::Meta::YAML, 1413Digest::MD5, 1414Digest::SHA, 1415Encode, 1416ExtUtils::MakeMaker, 1417ExtUtils::Manifest, 1418HTTP::Tiny, 1419IO::Compress, 1420IPC::Cmd, 1421JSON::PP, 1422libnet, 1423MIME::Base64, 1424Module::Metadata, 1425PerlIO::via-QuotedPrint, 1426Pod::Checker, 1427podlators, 1428Pod::Simple, 1429Socket, 1430and Test::Harness. 1431 1432The causes of the failures range from the self-test itself is flawed, 1433and the module actually works fine, up to the module doesn't work at all 1434on EBCDIC platforms. 1435 1436=back 1437 1438=back 1439 1440=head1 Internal Changes 1441 1442=over 4 1443 1444=item * 1445 1446C<savepvn>'s len parameter is now a C<Size_t> instead of an C<I32> since we 1447can handle longer strings than 31 bits. 1448 1449=item * 1450 1451The lexer (C<Perl_yylex()> in F<toke.c>) was previously a single 4100-line 1452function, relying heavily on C<goto> and a lot of widely-scoped local variables 1453to do its work. It has now been pulled apart into a few dozen smaller static 1454functions; the largest remaining chunk (C<yyl_word_or_keyword()>) is a little 1455over 900 lines, and consists of a single C<switch> statement, all of whose 1456C<case> groups are independent. This should be much easier to understand and 1457maintain. 1458 1459=item * 1460 1461The OS-level signal handlers and type (Sighandler_t) used by the perl core 1462were declared as having three parameters, but the OS was always told to 1463call them with one argument. This has been fixed by declaring them to have 1464one parameter. See the merge commit C<v5.31.5-346-g116e19abbf> for full 1465details. 1466 1467=item * 1468 1469The code that handles C<tr///> has been extensively revised, fixing 1470various bugs, especially when the source and/or replacement strings 1471contain characters whose code points are above 255. Some of the bugs 1472were undocumented, one being that under some circumstances (but not all) 1473with C</s>, the squeezing was done based on the source, rather than the 1474replacement. A documented bug that got fixed was 1475L<[GH #14777]|https://github.com/Perl/perl5/issues/14777>. 1476 1477=item * 1478 1479A new macro for XS writers dealing with UTF-8-encoded Unicode strings 1480has been created L<perlapi/C<UTF8_CHK_SKIP>> that is safer in the face 1481of malformed UTF-8 input than L<perlapi/C<UTF8_SKIP>> (but not as safe 1482as L<perlapi/C<UTF8_SAFE_SKIP>>). It won't read past a NUL character. 1483It has been backported in L<Devel::PPPort> 3.55 and later. 1484 1485=item * 1486 1487Added the C<< PL_curstackinfo->si_cxsubix >> field. This records the stack index 1488of the most recently pushed sub/format/eval context. It is set and restored 1489automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would need to be 1490manually managed if you do any unusual manipulation of the context stack. 1491 1492=item * 1493 1494Various macros dealing with character type classification and changing case 1495where the input is encoded in UTF-8 now require an extra parameter to prevent 1496potential reads beyond the end of the buffer. Use of these has generated a 1497deprecation warning since Perl 5.26. Details are in 1498L<perldeprecation/In XS code, use of various macros dealing with UTF-8.> 1499 1500=item * 1501 1502A new parser function L<parse_subsignature()|perlapi/parse_subsignature> 1503allows a keyword plugin to parse a subroutine signature while C<use feature 1504'signatures'> is in effect. This allows custom keywords to implement 1505semantics similar to regular C<sub> declarations that include signatures. 1506L<[GH #16261]|https://github.com/Perl/perl5/issues/16261> 1507 1508=item * 1509 1510Since on some platforms we need to hold a mutex when temporarily 1511switching locales, new macros (C<STORE_LC_NUMERIC_SET_TO_NEEDED_IN>, 1512C<WITH_LC_NUMERIC_SET_TO_NEEDED> and C<WITH_LC_NUMERIC_SET_TO_NEEDED_IN>) 1513have been added to make it easier to do this safely and efficiently 1514as part of L<[GH #17034]|https://github.com/Perl/perl5/issues/17034>. 1515 1516=item * 1517 1518The memory bookkeeping overhead for allocating an OP structure has been 1519reduced by 8 bytes per OP on 64-bit systems. 1520 1521=item * 1522 1523L<eval_pv()|perlapi/eval_pv> no longer stringifies the exception when 1524C<[GH #17035]|https://github.com/Perl/perl5/issues/17035>] 1525 1526=item * 1527 1528The PERL_DESTRUCT_LEVEL environment variable was formerly only honoured on perl 1529binaries built with DEBUGGING support. It is now checked on all perl builds. 1530Its normal use is to force perl to individually free every block of memory 1531which it has allocated before exiting, which is useful when using automated 1532leak detection tools such as valgrind. 1533 1534=item * 1535 1536The API eval_sv() now accepts a C<G_RETHROW> flag. If this flag is set and an 1537exception is thrown while compiling or executing the supplied code, it will be 1538rethrown, and eval_sv() will not return. 1539L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> 1540 1541=item * 1542 1543As part of the fix for 1544L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> perl_parse() 1545now returns non-zero if exit(0) is called in a C<BEGIN>, C<UNITCHECK> or 1546C<CHECK> block. 1547 1548=item * 1549 1550Most functions which recursively walked an op tree during compilation have been 1551made non-recursive. This avoids SEGVs from stack overflow when the op tree is 1552deeply nested, such as C<$n == 1 ? "one" : $n == 2 ? "two" : ....> (especially 1553in code which is auto-generated). 1554 1555This is particularly noticeable where the code is compiled within a separate 1556thread, as threads tend to have small stacks by default. 1557 1558=back 1559 1560=head1 Selected Bug Fixes 1561 1562=over 4 1563 1564=item * 1565 1566Previously L<perlfunc/require> would only treat the special built-in 1567SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require> 1568has failed, treating other undefined SVs as if the previous C<require> 1569has succeeded. This could cause unexpected success from C<require> 1570e.g., on C<local %INC = %INC;>. This has been fixed. [L<GH #17428|https://github.com/Perl/perl5/issues/17428>] 1571 1572=item * 1573 1574C<(?{...})> eval groups in regular expressions no longer unintentionally 1575trigger "EVAL without pos change exceeded limit in regex" [L<GH #17490|https://github.com/Perl/perl5/issues/17490>]. 1576 1577=item * 1578 1579C<(?[...])> extended bracketed character classes do not wrongly raise an 1580error on some cases where a previously-compiled such class is 1581interpolated into another. The heuristics previously used have been 1582replaced by a reliable method, and hence the diagnostics generated have 1583changed. See L</Diagnostics>. 1584 1585=item * 1586 1587The debug display (say by specifying C<-Dr> or S<C<use re>> (with 1588appropriate options) of compiled Unicode property wildcard subpatterns no 1589longer has extraneous output. 1590 1591=item * 1592 1593Fix an assertion failure in the regular expression engine. 1594[L<GH #17372|https://github.com/Perl/perl5/issues/17372>] 1595 1596=item * 1597 1598Fix coredump in pp_hot.c after C<B::UNOP_AUX::aux_list()>. 1599[L<GH #17301|https://github.com/Perl/perl5/issues/17301>] 1600 1601=item * 1602 1603Loading IO is now threadsafe. 1604[L<GH #14816|https://github.com/Perl/perl5/issues/14816>] 1605 1606=item * 1607 1608C<\p{user-defined}> overrides official Unicode [L<GH #17025|https://github.com/Perl/perl5/issues/17025>] 1609 1610Prior to this patch, the override was only sometimes in effect. 1611 1612=item * 1613 1614Properly handle filled C</il> regnodes and multi-char folds 1615 1616=item * 1617 1618Compilation error during make minitest [L<GH #17293|https://github.com/Perl/perl5/issues/17293>] 1619 1620=item * 1621 1622Move the implementation of C<%->, C<%+> into core. 1623 1624=item * 1625 1626Read beyond buffer in C<grok_inf_nan> [L<GH #17370|https://github.com/Perl/perl5/issues/17370>] 1627 1628=item * 1629 1630Workaround glibc bug with C<LC_MESSAGES> [L<GH #17081|https://github.com/Perl/perl5/issues/17081>] 1631 1632=item * 1633 1634C<printf()> or C<sprintf()> with the C<%n> format could cause a panic on 1635debugging builds, or report an incorrectly cached length value when 1636producing C<SVfUTF8> flagged strings. [L<GH #17221|https://github.com/Perl/perl5/issues/17221>] 1637 1638=item * 1639 1640The tokenizer has been extensively refactored. 1641[L<GH #17241|https://github.com/Perl/perl5/issues/17241>] 1642[L<GH #17189|https://github.com/Perl/perl5/issues/17189>] 1643 1644=item * 1645 1646C<use strict "subs"> is now enforced for bareword constants optimized 1647into a C<multiconcat> operator. [L<GH #17254|https://github.com/Perl/perl5/issues/17254>] 1648 1649=item * 1650 1651A memory leak in regular expression patterns has been fixed. [L<GH #17218|https://github.com/Perl/perl5/issues/17218>] 1652 1653=item * 1654 1655Perl no longer treats strings starting with "0x" or "0b" as hex or 1656binary numbers respectively when converting a string to a number. 1657This reverts a change in behaviour inadvertently introduced in perl 16585.30.0 intended to improve precision when converting a string to a 1659floating point number. L<[GH #17062]|https://github.com/Perl/perl5/issues/17062> 1660 1661=item * 1662 1663Matching a non-C<SVf_UTF8> string against a regular expression 1664containing unicode literals could leak a SV on each match attempt. 1665L<[GH #17140]|https://github.com/Perl/perl5/issues/17140> 1666 1667=item * 1668 1669Overloads for octal and binary floating point literals were always 1670passed a string with a C<0x> prefix instead of the appropriate C<0> or 1671C<[GH #14791]|https://github.com/Perl/perl5/issues/14791>] 1672 1673=item * 1674 1675C<< $@ = 100; die; >> now correctly propagates the 100 as an exception 1676instead of ignoring it. L<[GH #17098]|https://github.com/Perl/perl5/issues/17098> 1677 1678=item * 1679 1680C<[GH #17108]|https://github.com/Perl/perl5/issues/17108>] 1681 1682=item * 1683 1684Exceptions thrown while C<$@> is read-only could result in infinite 1685recursion as perl tried to update C<$@>, which throws another 1686exception, resulting in a stack overflow. Perl now replaces C<$@> 1687with a copy if it's not a simple writable SV. L<[GH #17083]|https://github.com/Perl/perl5/issues/17083> 1688 1689=item * 1690 1691Setting C<$)> now properly sets supplementary group ids if you have 1692the necessary privileges. L<[GH #17031]|https://github.com/Perl/perl5/issues/17031> 1693 1694=item * 1695 1696close() on a pipe now preemptively clears the PerlIO object from the 1697IO SV. This prevents a second attempt to close the already closed 1698PerlIO object if a signal handler calls die() or exit() while close() 1699is waiting for the child process to complete. L<[GH #13929]|https://github.com/Perl/perl5/issues/13929> 1700 1701=item * 1702 1703C<< sprintf("%.*a", -10000, $x) >> would cause a buffer overflow due 1704to mishandling of the negative precision value. L<[GH #16942]|https://github.com/Perl/perl5/issues/16942> 1705 1706=item * 1707 1708scalar() on a reference could cause an erroneous assertion failure 1709during compilation. L<[GH #16969]|https://github.com/Perl/perl5/issues/16969> 1710 1711=item * 1712 1713C<%{^CAPTURE_ALL}> is now an alias to C<%-> as documented, rather than 1714incorrectly an alias for C<[GH #16105]|https://github.com/Perl/perl5/issues/16105>] 1715 1716=item * 1717 1718C<%{^CAPTURE}> didn't work if C<@{^CAPTURE}> was mentioned first. 1719Similarly for C<%{^CAPTURE_ALL}> and C<@{^CAPTURE_ALL}>, though 1720C<[GH #17045]|https://github.com/Perl/perl5/issues/17045>] 1721 1722=item * 1723 1724Extraordinarily large (over 2GB) floating point format widths could 1725cause an integer overflow in the underlying call to snprintf(), 1726resulting in an assertion. Formatted floating point widths are now 1727limited to the range of int, the return value of snprintf(). 1728[L<#16881|https://github.com/Perl/perl5/issues/16881>] 1729 1730=item * 1731 1732Parsing the following constructs within a sub-parse (such as with 1733C<"${code here}"> or C<s/.../code here/e>) has changed to match how 1734they're parsed normally: 1735 1736=over 1737 1738=item * 1739 1740C<print $fh ...> no longer produces a syntax error. 1741 1742=item * 1743 1744Code like C<s/.../ ${time} /e> now properly produces an "Ambiguous use 1745of ${time} resolved to $time at ..." warning when warnings are enabled. 1746 1747=item * 1748 1749C<@x {"a"}> (with the space) in a sub-parse now properly produces a 1750"better written as" warning when warnings are enabled. 1751 1752=item * 1753 1754Attributes can now be used in a sub-parse. 1755L<[GH #16847]|https://github.com/Perl/perl5/issues/16847> 1756 1757=back 1758 1759=item * 1760 1761Incomplete hex and binary literals like C<0x> and C<0b> are now 1762treated as if the C<x> or C<b> is part of the next token. 1763[L<#17010|https://github.com/Perl/perl5/issues/17010>] 1764 1765=item * 1766 1767A spurious C<)> in a subparse, such as in C<s/.../code here/e> or 1768C<"...${code here}">, no longer confuses the parser. 1769 1770Previously a subparse was bracketed with generated C<(> and C<)> 1771tokens, so a spurious C<)> would close the construct without doing the 1772normal subparse clean up, confusing the parser and possible causing an 1773assertion failure. 1774 1775Such constructs are now surrounded by artificial tokens that can't be 1776included in the source. L<[GH #15814]|https://github.com/Perl/perl5/issues/15814> 1777 1778=item * 1779 1780Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did 1781nothing in the C<[GH #16987]|https://github.com/Perl/perl5/issues/16987>] 1782 1783=item * 1784 1785sv_gets() now recovers better if the target SV is modified by a signal 1786handler. L<[GH #16960]|https://github.com/Perl/perl5/issues/16960> 1787 1788=item * 1789 1790C<readline @foo> now evaluates C<@foo> in scalar context. Previously 1791it would be evaluated in list context, and since readline() pops only 1792one argument from the stack, the stack could underflow, or be left 1793with unexpected values on the stack. L<[GH #16929]|https://github.com/Perl/perl5/issues/16929> 1794 1795=item * 1796 1797Parsing incomplete hex or binary literals was changed in 5.31.1 to treat such a 1798literal as just the 0, leaving the following C<x> or C<b> to be parsed as part 1799of the next token. This could lead to some silent changes in behaviour, so now 1800incomplete hex or binary literals produce a fatal error. 1801L<[GH #17010]|https://github.com/Perl/perl5/issues/17010> 1802 1803=item * 1804 1805eval_pv()'s I<croak_on_error> flag will now throw even if the exception is a 1806false overloaded value. 1807L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> 1808 1809=item * 1810 1811C<INIT> blocks and the program itself are no longer run if exit(0) is called 1812within a C<BEGIN>, C<UNITCHECK> or C<CHECK> block. 1813L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> 1814 1815=item * 1816 1817C<< open my $fh, ">>+", undef >> now opens the temporary file in append mode: 1818writes will seek to the end of file before writing. 1819L<[GH #17058]|https://github.com/Perl/perl5/issues/17058> 1820 1821=item * 1822 1823Fixed a SEGV when searching for the source of an uninitialized value warning on 1824an op whose subtree includes an OP_MULTIDEREF. 1825L<[GH #17088]|https://github.com/Perl/perl5/issues/17088> 1826 1827=back 1828 1829=head1 Obituary 1830 1831Jeff Goff (JGOFF or DrForr), an integral part of the Perl and Raku 1832communities and a dear friend to all of us, has passed away on March 183313th, 2020. DrForr was a prominent member of the communities, attending 1834and speaking at countless events, contributing to numerous projects, 1835and assisting and helping in any way he could. 1836 1837His passing leaves a hole in our hearts and in our communities and he 1838will be sorely missed. 1839 1840=head1 Acknowledgements 1841 1842Perl 5.32.0 represents approximately 13 months of development since Perl 18435.30.0 and contains approximately 220,000 lines of changes across 1,800 1844files from 89 authors. 1845 1846Excluding auto-generated files, documentation and release tools, there were 1847approximately 140,000 lines of changes to 880 .pm, .t, .c and .h files. 1848 1849Perl continues to flourish into its fourth decade thanks to a vibrant 1850community of users and developers. The following people are known to have 1851contributed the improvements that became Perl 5.32.0: 1852 1853Aaron Crane, Alberto Simões, Alexandr Savca, Andreas König, Andrew Fresh, 1854Andy Dougherty, Ask Bjørn Hansen, Atsushi Sugawara, Bernhard M. Wiedemann, 1855brian d foy, Bryan Stenson, Chad Granum, Chase Whitener, Chris 'BinGOs' 1856Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel 1857Dragan, Dan Kogai, Dave Cross, Dave Rolsky, David Cantrell, David Mitchell, 1858Dominic Hargreaves, E. Choroba, Felipe Gasper, Florian Weimer, Graham Knop, 1859Håkon Hægland, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ichinose 1860Shogo, James E Keenan, Jason McIntosh, Jerome Duval, Johan Vromans, John 1861Lightsey, John Paul Adrian Glaubitz, Kang-min Liu, Karen Etheridge, Karl 1862Williamson, Leon Timmermans, Manuel Mausz, Marc Green, Matthew Horsfall, 1863Matt Turner, Max Maischein, Michael Haardt, Nicholas Clark, Nicolas R., Niko 1864Tyni, Pali, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter 1865John Acklam, Peter Oliver, Petr Písař, Renee Baecker, Ricardo Signes, 1866Richard Leach, Russ Allbery, Samuel Smith, Santtu Ojanperä, Sawyer X, 1867Sergey Aleynikov, Sergiy Borodych, Shirakata Kentaro, Shlomi Fish, Sisyphus, 1868Slaven Rezic, Smylers, Stefan Seifert, Steve Hay, Steve Peters, Svyatoslav, 1869Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tony Cook, 1870Unicode Consortium, VanL, Vickenty Fesunov, Vitali Peil, Yves Orton, Zefram. 1871 1872The list above is almost certainly incomplete as it is automatically 1873generated from version control history. In particular, it does not include 1874the names of the (very much appreciated) contributors who reported issues to 1875the Perl bug tracker. 1876 1877Many of the changes included in this version originated in the CPAN modules 1878included in Perl's core. We're grateful to the entire CPAN community for 1879helping Perl to flourish. 1880 1881For a more complete list of all of Perl's historical contributors, please 1882see the F<AUTHORS> file in the Perl source distribution. 1883 1884=head1 Reporting Bugs 1885 1886If you find what you think is a bug, you might check the perl bug database 1887at L<https://github.com/Perl/perl5/issues>. There may also be information at 1888L<http://www.perl.org/>, the Perl Home Page. 1889 1890If you believe you have an unreported bug, please open an issue at 1891L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a 1892tiny but sufficient test case. 1893 1894If the bug you are reporting has security implications which make it 1895inappropriate to send to a public issue tracker, then see 1896L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> 1897for details of how to report the issue. 1898 1899=head1 Give Thanks 1900 1901If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, 1902you can do so by running the C<perlthanks> program: 1903 1904 perlthanks 1905 1906This will send an email to the Perl 5 Porters list with your show of thanks. 1907 1908=head1 SEE ALSO 1909 1910The F<Changes> file for an explanation of how to view exhaustive details on 1911what changed. 1912 1913The F<INSTALL> file for how to build Perl. 1914 1915The F<README> file for general stuff. 1916 1917The F<Artistic> and F<Copying> files for copyright information. 1918 1919=cut 1920