1=encoding utf8 2 3=head1 NAME 4 5perl5300delta - what is new for perl v5.30.0 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.28.0 release and the 5.30.0 10release. 11 12If you are upgrading from an earlier release such as 5.26.0, first read 13L<perl5280delta>, which describes differences between 5.26.0 and 5.28.0. 14 15=head1 Notice 16 17sv_utf8_(downgrade|decode) are no longer marked as experimental. 18L<[GH #16822]|https://github.com/Perl/perl5/issues/16822>. 19 20=head1 Core Enhancements 21 22=head2 Limited variable length lookbehind in regular expression pattern matching is now experimentally supported 23 24Using a lookbehind assertion (like C<(?<=foo?)> or C<(?<!ba{1,9}r)> previously 25would generate an error and refuse to compile. Now it compiles (if the 26maximum lookbehind is at most 255 characters), but raises a warning in 27the new C<experimental::vlb> warnings category. This is to caution you 28that the precise behavior is subject to change based on feedback from 29use in the field. 30 31See L<perlre/(?<=pattern)> and L<perlre/(?<!pattern)>. 32 33=head2 The upper limit C<"n"> specifiable in a regular expression quantifier of the form C<"{m,n}"> has been doubled to 65534 34 35The meaning of an unbounded upper quantifier C<"{m,}"> remains unchanged. 36It matches 2**31 - 1 times on most platforms, and more on ones where a C 37language short variable is more than 4 bytes long. 38 39=head2 Unicode 12.1 is supported 40 41Because of a change in Unicode release cycles, Perl jumps from Unicode 4210.0 in Perl 5.28 to Unicode 12.1 in Perl 5.30. 43 44For details on the Unicode changes, see 45L<https://www.unicode.org/versions/Unicode11.0.0/> for 11.0; 46L<https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; 47and 48L<https://www.unicode.org/versions/Unicode12.1.0/> for 12.1. 49(Unicode 12.1 differs from 12.0 only in the addition of a single 50character, that for the new Japanese era name.) 51 52The Word_Break property, as in past Perl releases, remains tailored to 53behave more in line with expectations of Perl users. This means that 54sequential runs of horizontal white space characters are not broken 55apart, but kept as a single run. Unicode 11 changed from past versions 56to be more in line with Perl, but it left several white space characters 57as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007). We 58have decided to continue to use the previous Perl tailoring with regards 59to these. 60 61=head2 Wildcards in Unicode property value specifications are now partially supported 62 63You can now do something like this in a regular expression pattern 64 65 qr! \p{nv= /(?x) \A [0-5] \z / }! 66 67which matches all Unicode code points whose numeric value is 68between 0 and 5 inclusive. So, it could match the Thai or Bengali 69digits whose numeric values are 0, 1, 2, 3, 4, or 5. 70 71This marks another step in implementing the regular expression features 72the Unicode Consortium suggests. 73 74Most properties are supported, with the remainder planned for 5.32. 75Details are in L<perlunicode/Wildcards in Property Values>. 76 77=head2 qr'\N{name}' is now supported 78 79Previously it was an error to evaluate a named character C<\N{...}> 80within a single quoted regular expression pattern (whose evaluation is 81deferred from the normal place). This restriction is now removed. 82 83=head2 Turkic UTF-8 locales are now seamlessly supported 84 85Turkic languages have different casing rules than other languages for 86the characters C<"i"> and C<"I">. The uppercase of C<"i"> is LATIN 87CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of C<"I"> is LATIN 88SMALL LETTER DOTLESS I (U+0131). Unicode furnishes alternate casing 89rules for use with Turkic languages. Previously, Perl ignored these, 90but now, it uses them when it detects that it is operating under a 91Turkic UTF-8 locale. 92 93=head2 It is now possible to compile perl to always use thread-safe locale operations 94 95Previously, these calls were only used when the perl was compiled to be 96multi-threaded. To always enable them, add 97 98 -Accflags='-DUSE_THREAD_SAFE_LOCALE' 99 100to your F<Configure> flags. 101 102=head2 Eliminate opASSIGN macro usage from core 103 104This macro is still defined but no longer used in core 105 106=head2 C<-Drv> now means something on C<-DDEBUGGING> builds 107 108Now, adding the verbose flag (C<-Dv>) to the C<-Dr> flag turns on all 109possible regular expression debugging. 110 111=head1 Incompatible Changes 112 113=head2 Assigning non-zero to C<$[> is fatal 114 115Setting L<< C<$[>|perlvar/$[ >> to a non-zero value has been deprecated since 116Perl 5.12 and now throws a fatal error. 117See L<<< perldeprecation/Assigning non-zero to C<< $[ >> is fatal >>>. 118 119=head2 Delimiters must now be graphemes 120 121See L<perldeprecation/Use of unassigned code point or non-standalone grapheme 122for a delimiter.> 123 124=head2 Some formerly deprecated uses of an unescaped left brace C<"{"> in 125regular expression patterns are now illegal 126 127But to avoid breaking code unnecessarily, most instances that issued a 128deprecation warning, remain legal and now have a non-deprecation warning 129raised. See L<perldeprecation/Unescaped left braces in regular expressions>. 130 131=head2 Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal 132 133Calling sysread(), syswrite(), send() or recv() on a C<:utf8> handle, 134whether applied explicitly or implicitly, is now fatal. This was 135deprecated in perl 5.24. 136 137There were two problems with calling these functions on C<:utf8> 138handles: 139 140=over 141 142=item * 143 144All four functions only paid attention to the C<:utf8> flag. Other 145layers were completely ignored, so a handle with 146C<:encoding(UTF-16LE)> layer would be treated as UTF-8. Other layers, 147such as compression are completely ignored with or without the 148C<:utf8> flag. 149 150=item * 151 152sysread() and recv() would read from the handle, skipping any 153validation by the layers, and do no validation of their own. This 154could lead to invalidly encoded perl scalars. 155 156=back 157 158L<[GH #14839]|https://github.com/Perl/perl5/issues/14839>. 159 160=head2 my() in false conditional prohibited 161 162Declarations such as C<my $x if 0> are no longer permitted. 163 164L<[GH #16702]|https://github.com/Perl/perl5/issues/16702>. 165 166=head2 Fatalize $* and $# 167 168These special variables, long deprecated, now throw exceptions when used. 169 170L<[GH #16718]|https://github.com/Perl/perl5/issues/16718>. 171 172=head2 Fatalize unqualified use of dump() 173 174The C<dump()> function, long discouraged, may no longer be used unless it is 175fully qualified, I<i.e.>, C<CORE::dump()>. 176 177L<[GH #16719]|https://github.com/Perl/perl5/issues/16719>. 178 179=head2 Remove File::Glob::glob() 180 181The C<File::Glob::glob()> function, long deprecated, has been removed and now 182throws an exception which advises use of C<File::Glob::bsd_glob()> instead. 183 184L<[GH #16721]|https://github.com/Perl/perl5/issues/16721>. 185 186=head2 C<pack()> no longer can return malformed UTF-8 187 188It croaks if it would otherwise return a UTF-8 string that contains 189malformed UTF-8. This protects against potential security threats. This 190is considered a bug fix as well. 191L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>. 192 193=head2 Any set of digits in the Common script are legal in a script run of another script 194 195There are several sets of digits in the Common script. C<[0-9]> is the 196most familiar. But there are also C<[\x{FF10}-\x{FF19}]> (FULLWIDTH 197DIGIT ZERO - FULLWIDTH DIGIT NINE), and several sets for use in 198mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs. 199Any of these sets should be able to appear in script runs of, say, 200Greek. But the design of 5.30 overlooked all but the ASCII digits 201C<[0-9]>, so the design was flawed. This has been fixed, so is both a 202bug fix and an incompatibility. 203L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>. 204 205All digits in a run still have to come from the same set of ten digits. 206 207=head2 JSON::PP enables allow_nonref by default 208 209As JSON::XS 4.0 changed its policy and enabled allow_nonref 210by default, JSON::PP also enabled allow_nonref by default. 211 212=head1 Deprecations 213 214=head2 In XS code, use of various macros dealing with UTF-8 215 216This deprecation was scheduled to become fatal in 5.30, but has been 217delayed to 5.32 due to problems that showed up with some CPAN modules. 218For details of what's affected, see L<perldeprecation| 219perldeprecation/In XS code, use of various macros dealing with UTF-8.>. 220 221=head1 Performance Enhancements 222 223=over 4 224 225=item * 226 227Translating from UTF-8 into the code point it represents now is done via a 228deterministic finite automaton, speeding it up. As a typical example, 229C<ord("\x7fff")> now requires 12% fewer instructions than before. The 230performance of checking that a sequence of bytes is valid UTF-8 is similarly 231improved, again by using a DFA. 232 233=item * 234 235Eliminate recursion from finalize_op(). 236L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>. 237 238=item * 239 240A handful of small optimizations related to character folding 241and character classes in regular expressions. 242 243=item * 244 245Optimization of C<IV> to C<UV> conversions. 246L<[GH #16761]|https://github.com/Perl/perl5/issues/16761>. 247 248=item * 249 250Speed up of the integer stringification algorithm by processing 251two digits at a time instead of one. 252L<[GH #16769]|https://github.com/Perl/perl5/issues/16769>. 253 254=item * 255 256Improvements based on LGTM analysis and recommendation. 257(L<https://lgtm.com/projects/g/Perl/perl5/alerts/?mode=tree>). 258L<[GH #16765]|https://github.com/Perl/perl5/issues/16765>. 259L<[GH #16773]|https://github.com/Perl/perl5/issues/16773>. 260 261=item * 262 263Code optimizations in F<regcomp.c>, F<regcomp.h>, F<regexec.c>. 264 265=item * 266 267Regular expression pattern matching of things like C<qr/[^I<a>]/> is 268significantly sped up, where I<a> is any ASCII character. Other classes 269can get this speed up, but which ones is complicated and depends on the 270underlying bit patterns of those characters, so differs between ASCII 271and EBCDIC platforms, but all case pairs, like C<qr/[Gg]/> are included, 272as is C<[^01]>. 273 274=back 275 276=head1 Modules and Pragmata 277 278=head2 Updated Modules and Pragmata 279 280=over 4 281 282=item * 283 284L<Archive::Tar> has been upgraded from version 2.30 to 2.32. 285 286=item * 287 288L<B> has been upgraded from version 1.74 to 1.76. 289 290=item * 291 292L<B::Concise> has been upgraded from version 1.003 to 1.004. 293 294=item * 295 296L<B::Deparse> has been upgraded from version 1.48 to 1.49. 297 298=item * 299 300L<bignum> has been upgraded from version 0.49 to 0.51. 301 302=item * 303 304L<bytes> has been upgraded from version 1.06 to 1.07. 305 306=item * 307 308L<Carp> has been upgraded from version 1.38 to 1.50 309 310=item * 311 312L<Compress::Raw::Bzip2> has been upgraded from version 2.074 to 2.084. 313 314=item * 315 316L<Compress::Raw::Zlib> has been upgraded from version 2.076 to 2.084. 317 318=item * 319 320L<Config::Extensions> has been upgraded from version 0.02 to 0.03. 321 322=item * 323 324L<Config::Perl::V>. has been upgraded from version 0.29 to 0.32. This was due 325to a new configuration variable that has influence on binary compatibility: 326C<USE_THREAD_SAFE_LOCALE>. 327 328=item * 329 330L<CPAN> has been upgraded from version 2.20 to 2.22. 331 332=item * 333 334L<Data::Dumper> has been upgraded from version 2.170 to 2.174 335 336L<Data::Dumper> now avoids leaking when C<croak>ing. 337 338=item * 339 340L<DB_File> has been upgraded from version 1.840 to 1.843. 341 342=item * 343 344L<deprecate> has been upgraded from version 0.03 to 0.04. 345 346=item * 347 348L<Devel::Peek> has been upgraded from version 1.27 to 1.28. 349 350=item * 351 352L<Devel::PPPort> has been upgraded from version 3.40 to 3.52. 353 354=item * 355 356L<Digest::SHA> has been upgraded from version 6.01 to 6.02. 357 358=item * 359 360L<Encode> has been upgraded from version 2.97 to 3.01. 361 362=item * 363 364L<Errno> has been upgraded from version 1.29 to 1.30. 365 366=item * 367 368L<experimental> has been upgraded from version 0.019 to 0.020. 369 370=item * 371 372L<ExtUtils::CBuilder> has been upgraded from version 0.280230 to 0.280231. 373 374=item * 375 376L<ExtUtils::Manifest> has been upgraded from version 1.70 to 1.72. 377 378=item * 379 380L<ExtUtils::Miniperl> has been upgraded from version 1.08 to 1.09. 381 382=item * 383 384L<ExtUtils::ParseXS> has been upgraded from version 3.39 to 3.40. 385C<OUTLIST> parameters are no longer incorrectly included in the 386automatically generated function prototype. 387L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>. 388 389=item * 390 391L<feature> has been upgraded from version 1.52 to 1.54. 392 393=item * 394 395L<File::Copy> has been upgraded from version 2.33 to 2.34. 396 397=item * 398 399L<File::Find> has been upgraded from version 1.34 to 1.36. 400 401C<$File::Find::dont_use_nlink> now defaults to 1 on all 402platforms. 403L<[GH #16759]|https://github.com/Perl/perl5/issues/16759>. 404 405Variables C<< $Is_Win32 >> and C<< $Is_VMS >> are being initialized. 406 407=item * 408 409L<File::Glob> has been upgraded from version 1.31 to 1.32. 410 411=item * 412 413L<File::Path> has been upgraded from version 2.15 to 2.16. 414 415=item * 416 417L<File::Spec> has been upgraded from version 3.74 to 3.78. 418 419Silence L<Cwd> warning on Android builds if C<targetsh> is not defined. 420 421=item * 422 423L<File::Temp> has been upgraded from version 0.2304 to 0.2309. 424 425=item * 426 427L<Filter::Util::Call> has been upgraded from version 1.58 to 1.59. 428 429=item * 430 431L<GDBM_File> has been upgraded from version 1.17 to 1.18. 432 433=item * 434 435L<HTTP::Tiny> has been upgraded from version 0.070 to 0.076. 436 437=item * 438 439L<I18N::Langinfo> has been upgraded from version 0.17 to 0.18. 440 441=item * 442 443L<IO> has been upgraded from version 1.39 to 1.40. 444 445=item * 446 447IO-Compress has been upgraded from version 2.074 to 2.084. 448 449Adds support for C<< IO::Uncompress::Zstd >> and 450C<< IO::Uncompress::UnLzip >>. 451 452The C<< BinModeIn >> and C<< BinModeOut >> options are now no-ops. 453ALL files will be read/written in binmode. 454 455=item * 456 457L<IPC::Cmd> has been upgraded from version 1.00 to 1.02. 458 459=item * 460 461L<JSON::PP> has been upgraded from version 2.97001 to 4.02. 462 463L<JSON::PP> as JSON::XS 4.0 enables C<allow_nonref> by default. 464 465=item * 466 467L<lib> has been upgraded from version 0.64 to 0.65. 468 469=item * 470 471L<Locale::Codes> has been upgraded from version 3.56 to 3.57. 472 473=item * 474 475L<Math::BigInt> has been upgraded from version 1.999811 to 1.999816. 476 477C<< bnok() >> now supports the full Kronenburg extension. 478L<[cpan #95628]|https://rt.cpan.org/Ticket/Display.html?id=95628>. 479 480=item * 481 482L<Math::BigInt::FastCalc> has been upgraded from version 0.5006 to 0.5008. 483 484=item * 485 486L<Math::BigRat> has been upgraded from version 0.2613 to 0.2614. 487 488=item * 489 490L<Module::CoreList> has been upgraded from version 5.20180622 to 5.20190520. 491 492Changes to B::Op_private and Config 493 494=item * 495 496L<Module::Load> has been upgraded from version 0.32 to 0.34. 497 498=item * 499 500L<Module::Metadata> has been upgraded from version 1.000033 to 1.000036. 501 502Properly clean up temporary directories after testing. 503 504=item * 505 506L<NDBM_File> has been upgraded from version 1.14 to 1.15. 507 508=item * 509 510L<Net::Ping> has been upgraded from version 2.62 to 2.71. 511 512=item * 513 514L<ODBM_File> has been upgraded from version 1.15 to 1.16. 515 516=item * 517 518PathTools has been upgraded from version 3.74 to 3.78. 519 520=item * 521 522L<parent> has been upgraded from version 0.236 to 0.237. 523 524=item * 525 526L<perl5db.pl> has been upgraded from version 1.54 to 1.55. 527 528Debugging threaded code no longer deadlocks in C<DB::sub> nor 529C<DB::lsub>. 530 531=item * 532 533L<perlfaq> has been upgraded from version 5.021011 to 5.20190126. 534 535=item * 536 537L<PerlIO::encoding> has been upgraded from version 0.26 to 0.27. 538 539Warnings enabled by setting the C<WARN_ON_ERR> flag in 540C<$PerlIO::encoding::fallback> are now only produced if warnings are 541enabled with C<use warnings "utf8";> or setting C<$^W>. 542 543=item * 544 545L<PerlIO::scalar> has been upgraded from version 0.29 to 0.30. 546 547=item * 548 549podlators has been upgraded from version 4.10 to 4.11. 550 551=item * 552 553L<POSIX> has been upgraded from version 1.84 to 1.88. 554 555=item * 556 557L<re> has been upgraded from version 0.36 to 0.37. 558 559=item * 560 561L<SDBM_File> has been upgraded from version 1.14 to 1.15. 562 563=item * 564 565L<sigtrap> has been upgraded from version 1.08 to 1.09. 566 567=item * 568 569L<Storable> has been upgraded from version 3.08 to 3.15. 570 571Storable no longer probes for recursion limits at build time. 572L<[GH #16780]|https://github.com/Perl/perl5/issues/16780> 573and others. 574 575Metasploit exploit code was included to test for CVE-2015-1592 576detection, this caused anti-virus detections on at least one AV suite. 577The exploit code has been removed and replaced with a simple 578functional test. 579L<[GH #16778]|https://github.com/Perl/perl5/issues/16778> 580 581=item * 582 583L<Test::Simple> has been upgraded from version 1.302133 to 1.302162. 584 585=item * 586 587L<Thread::Queue> has been upgraded from version 3.12 to 3.13. 588 589=item * 590 591L<threads::shared> has been upgraded from version 1.58 to 1.60. 592 593Added support for extra tracing of locking, this requires a 594C<-DDEBUGGING> and extra compilation flags. 595 596=item * 597 598L<Time::HiRes> has been upgraded from version 1.9759 to 1.9760. 599 600=item * 601 602L<Time::Local> has been upgraded from version 1.25 to 1.28. 603 604=item * 605 606L<Time::Piece> has been upgraded from version 1.3204 to 1.33. 607 608=item * 609 610L<Unicode::Collate> has been upgraded from version 1.25 to 1.27. 611 612=item * 613 614L<Unicode::UCD> has been upgraded from version 0.70 to 0.72. 615 616=item * 617 618L<User::grent> has been upgraded from version 1.02 to 1.03. 619 620=item * 621 622L<utf8> has been upgraded from version 1.21 to 1.22. 623 624=item * 625 626L<vars> has been upgraded from version 1.04 to 1.05. 627 628C<vars.pm> no longer disables non-vars strict when checking if strict 629vars is enabled. 630L<[GH #15851]|https://github.com/Perl/perl5/issues/15851>. 631 632=item * 633 634L<version> has been upgraded from version 0.9923 to 0.9924. 635 636=item * 637 638L<warnings> has been upgraded from version 1.42 to 1.44. 639 640=item * 641 642L<XS::APItest> has been upgraded from version 0.98 to 1.00. 643 644=item * 645 646L<XS::Typemap> has been upgraded from version 0.16 to 0.17. 647 648=back 649 650=head2 Removed Modules and Pragmata 651 652The following modules will be removed from the core distribution in a 653future release, and will at that time need to be installed from CPAN. 654Distributions on CPAN which require these modules will need to list them as 655prerequisites. 656 657The core versions of these modules will now issue C<"deprecated">-category 658warnings to alert you to this fact. To silence these deprecation warnings, 659install the modules in question from CPAN. 660 661Note that these are (with rare exceptions) fine modules that you are encouraged 662to continue to use. Their disinclusion from core primarily hinges on their 663necessity to bootstrapping a fully functional, CPAN-capable Perl installation, 664not usually on concerns over their design. 665 666=over 4 667 668=item * 669 670arybase has been removed. It used to provide the implementation of the C<$[> 671variable (also known as the C<array_base> feature), letting array and string 672indices start at a non-zero value. As the feature has been removed (see 673L</Assigning non-zero to C<$[> is fatal>), this internal module is gone as 674well. 675 676=item * 677 678B::Debug is no longer distributed with the core distribution. It 679continues to be available on CPAN as 680C<< L<B::Debug|https://metacpan.org/pod/B::Debug> >>. 681 682=item * 683 684Locale::Codes has been removed at the request of its author. It 685continues to be available on CPAN as 686C<< L<Locale::Codes|https://metacpan.org/pod/Locale::Codes> >> 687L<[GH #16660]|https://github.com/Perl/perl5/issues/16660>. 688 689=back 690 691=head1 Documentation 692 693=head2 Changes to Existing Documentation 694 695We have attempted to update the documentation to reflect the changes 696listed in this document. If you find any we have missed, send email 697to L<perlbug@perl.org|mailto:perlbug@perl.org>. 698 699=head3 L<perlapi> 700 701=over 4 702 703=item * 704 705C<AvFILL()> was wrongly listed as deprecated. This has been corrected. 706L<[GH #16586]|https://github.com/Perl/perl5/issues/16586> 707 708=back 709 710=head3 L<perlop> 711 712=over 4 713 714=item * 715 716We no longer have null (empty line) here doc terminators, so 717L<perlop> should not refer to them. 718 719=item * 720 721The behaviour of C<tr> when the delimiter is an apostrophe has been clarified. 722In particular, hyphens aren't special, and C<\x{}> isn't interpolated. 723L<[GH #15853]|https://github.com/Perl/perl5/issues/15853> 724 725=back 726 727=head3 L<perlreapi>, L<perlvar> 728 729=over 4 730 731=item * 732 733Improve docs for lastparen, lastcloseparen. 734 735=back 736 737=head3 L<perlfunc> 738 739=over 4 740 741=item * 742 743The entry for L<perlfunc/-X> has been clarified to indicate that symbolic 744links are followed for most tests. 745 746=item * 747 748Clarification of behaviour of C<reset EXPR>. 749 750=item * 751 752Try to clarify that C<< ref(qr/xx/) >> returns C<Regexp> rather than 753C<REGEXP> and why. 754L<[GH #16801]|https://github.com/Perl/perl5/issues/16801>. 755 756=back 757 758=head3 L<perlreref> 759 760=over 4 761 762=item * 763 764Clarification of the syntax of /(?(cond)yes)/. 765 766=back 767 768=head3 L<perllocale> 769 770=over 4 771 772=item * 773 774There are actually two slightly different types of UTF-8 locales: one for Turkic 775languages and one for everything else. Starting in Perl v5.30, Perl seamlessly 776handles both types. 777 778=back 779 780=head3 L<perlrecharclass> 781 782=over 4 783 784=item * 785 786Added a note for the ::xdigit:: character class. 787 788=back 789 790=head3 L<perlvar> 791 792=over 4 793 794=item * 795 796More specific documentation of paragraph mode. 797L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>. 798 799=back 800 801=head1 Diagnostics 802 803The following additions or changes have been made to diagnostic output, 804including warnings and fatal error messages. For the complete list of 805diagnostic messages, see L<perldiag>. 806 807=head2 Changes to Existing Diagnostics 808 809=over 4 810 811=item * 812 813As noted under L<Incompatible Changes> above, the deprecation warning 814"Unescaped left brace in regex is deprecated here (and will be fatal in Perl 8155.30), passed through in regex; marked by S<<-- HERE> in m/%s/" has been 816changed to the non-deprecation warning "Unescaped left brace in regex is passed 817through in regex; marked by S<<-- HERE> in m/%s/". 818 819=item * 820 821Specifying C<\o{}> without anything between the braces now yields the 822fatal error message "Empty \o{}". Previously it was "Number with no 823digits". This means the same wording is used for this kind of error as 824with similar constructs such as C<\p{}>. 825 826=item * 827 828Within the scope of the experimental feature C<use re 'strict'>, 829specifying C<\x{}> without anything between the braces now yields the 830fatal error message "Empty \x{}". Previously it was "Number with no 831digits". This means the same wording is used for this kind of error as 832with similar constructs such as C<\p{}>. It is legal, though not wise 833to have an empty C<\x> outside of C<re 'strict'>; it silently generates 834a NUL character. 835 836=item * 837 838L<Type of arg %d to %s must be %s (not %s)|perldiag/"Type of arg %d to %s must be %s (not %s)"> 839 840Attempts to push, pop, etc on a hash or glob now produce this message 841rather than complaining that they no longer work on scalars. 842L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>. 843 844=item * 845 846L<Prototype not terminated|perldiag/"Prototype not terminated"> 847 848The file and line number is now reported for this error. 849L<[GH #16697]|https://github.com/Perl/perl5/issues/16697> 850 851=item * 852 853Under C<< -Dr >> (or C<< use re 'Debug' >>) the compiled regex engine 854program is displayed. It used to use two different spellings for I<< 855infinity >>, 856C<< INFINITY >>, and C<< INFTY >>. It now uses the latter exclusively, 857as that spelling has been around the longest. 858 859=back 860 861=head1 Utility Changes 862 863=head2 L<xsubpp> 864 865=over 4 866 867=item * 868 869The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include 870C<< OUTLIST >> parameters, but these aren't arguments to the perl function. 871This has been rectified. 872L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>. 873 874=back 875 876=head1 Configuration and Compilation 877 878=over 4 879 880=item * 881 882Normally the thread-safe locale functions are used only on threaded 883builds. It is now possible to force their use on unthreaded builds on 884systems that have them available, by including the 885C<-Accflags='-DUSE_THREAD_SAFE_LOCALE'> option to F<Configure>. 886 887=item * 888 889Improve detection of memrchr, strlcat, and strlcpy 890 891=item * 892 893Improve Configure detection of memmem(). 894L<[GH #16807]|https://github.com/Perl/perl5/issues/16807>. 895 896=item * 897 898Multiple improvements and fixes for -DPERL_GLOBAL_STRUCT build option. 899 900=item * 901 902Fix -DPERL_GLOBAL_STRUCT_PRIVATE build option. 903 904=back 905 906=head1 Testing 907 908=over 4 909 910=item * 911 912F<t/lib/croak/op> 913L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>. 914 915separate error for C<push>, etc. on hash/glob. 916 917=item * 918 919F<t/op/svleak.t> 920L<[GH #16749]|https://github.com/Perl/perl5/issues/16749>. 921 922Add test for C<goto &sub> in overload leaking. 923 924=item * 925 926Split F<t/re/fold_grind.t> into multiple test files. 927 928=item * 929 930Fix intermittent tests which failed due to race conditions which 931surface during parallel testing. 932L<[GH #16795]|https://github.com/Perl/perl5/issues/16795>. 933 934=item * 935 936Thoroughly test paragraph mode, using a new test file, 937F<t/io/paragraph_mode.t>. 938L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>. 939 940=item * 941 942Some tests in F<< t/io/eintr.t >> caused the process to hang on 943pre-16 Darwin. These tests are skipped for those version of Darwin. 944 945=back 946 947=head1 Platform Support 948 949=head2 Platform-Specific Notes 950 951=over 4 952 953=item HP-UX 11.11 954 955An obscure problem in C<pack()> when compiling with HP C-ANSI-C has been fixed 956by disabling optimizations in F<pp_pack.c>. 957 958=item Mac OS X 959 960Perl's build and testing process on Mac OS X for C<-Duseshrplib> 961builds is now compatible with Mac OS X System Integrity Protection 962(SIP). 963 964SIP prevents binaries in F</bin> (and a few other places) being passed 965the C<DYLD_LIBRARY_PATH> environment variable. For our purposes this 966prevents C<DYLD_LIBRARY_PATH> from being passed to the shell, which 967prevents that variable being passed to the testing or build process, 968so running C<perl> couldn't find F<libperl.dylib>. 969 970To work around that, the initial build of the F<perl> executable 971expects to find F<libperl.dylib> in the build directory, and the 972library path is then adjusted during installation to point to the 973installed library. 974 975L<[GH #15057]|https://github.com/Perl/perl5/issues/15057>. 976 977=item Minix3 978 979Some support for Minix3 has been re-added. 980 981=item Cygwin 982 983Cygwin doesn't make C<< cuserid >> visible. 984 985=item Win32 Mingw 986 987C99 math functions are now available. 988 989=item Windows 990 991=over 4 992 993=item * 994 995The C<USE_CPLUSPLUS> build option which has long been available in 996F<win32/Makefile> (for B<nmake>) and F<win32/makefile.mk> (for B<dmake>) is now 997also available in F<win32/GNUmakefile> (for B<gmake>). 998 999=item * 1000 1001The B<nmake> makefile no longer defaults to Visual C++ 6.0 (a very old version 1002which is unlikely to be widely used today). As a result, it is now a 1003requirement to specify the C<CCTYPE> since there is no obvious choice of which 1004modern version to default to instead. Failure to specify C<CCTYPE> will result 1005in an error being output and the build will stop. 1006 1007(The B<dmake> and B<gmake> makefiles will automatically detect which compiler 1008is being used, so do not require C<CCTYPE> to be set. This feature has not yet 1009been added to the B<nmake> makefile.) 1010 1011=item * 1012 1013C<sleep()> with warnings enabled for a C<USE_IMP_SYS> build no longer 1014warns about the sleep timeout being too large. 1015L<[GH #16631]|https://github.com/Perl/perl5/issues/16631>. 1016 1017=item * 1018 1019Support for compiling perl on Windows using Microsoft Visual Studio 2019 1020(containing Visual C++ 14.2) has been added. 1021 1022=item * 1023 1024socket() now sets C<$!> if the protocol, address family and socket 1025type combination is not found. 1026L<[GH #16849]|https://github.com/Perl/perl5/issues/16849>. 1027 1028=item * 1029 1030The Windows Server 2003 SP1 Platform SDK build, with its early x64 compiler and 1031tools, was accidentally broken in Perl 5.27.9. This has now been fixed. 1032 1033=back 1034 1035=back 1036 1037=head1 Internal Changes 1038 1039=over 4 1040 1041=item * 1042 1043The sizing pass has been eliminated from the regular expression 1044compiler. An extra pass may instead be needed in some cases to count 1045the number of parenthetical capture groups. 1046 1047=item * 1048 1049A new function L<perlapi/C<my_strtod>> or its synonym, Strtod(), is 1050now available with the same signature as the libc strtod(). It provides 1051strotod() equivalent behavior on all platforms, using the best available 1052precision, depending on platform capabilities and F<Configure> options, 1053while handling locale-related issues, such as if the radix character 1054should be a dot or comma. 1055 1056=item * 1057 1058Added C<newSVsv_nomg()> to copy a SV without processing get magic on 1059the source. 1060L<[GH #16461]|https://github.com/Perl/perl5/issues/16461>. 1061 1062=item * 1063 1064It is now forbidden to malloc more than C<PTRDIFF_T_MAX> bytes. Much 1065code (including C optimizers) assumes that all data structures will not 1066be larger than this, so this catches such attempts before overflow 1067happens. 1068 1069=item * 1070 1071Two new regnodes have been introduced C<< EXACT_ONLY8 >>, and 1072C<< EXACTFU_ONLY8 >>. They're equivalent to C<< EXACT >> and C<< EXACTFU >>, 1073except that they contain a code point which requires UTF-8 to 1074represent/match. Hence, if the target string isn't UTF-8, we know 1075it can't possibly match, without needing to try. 1076 1077=item * 1078 1079C<< print_bytes_for_locale() >> is now defined if C<< DEBUGGING >>, 1080Prior, it didn't get defined unless C<< LC_COLLATE >> was defined 1081on the platform. 1082 1083=back 1084 1085=head1 Selected Bug Fixes 1086 1087=over 4 1088 1089=item * 1090 1091Compilation under C<-DPERL_MEM_LOG> and C<-DNO_LOCALE> have been fixed. 1092 1093=item * 1094 1095Perl 5.28 introduced an C<index()> optimization when comparing to -1 (or 1096indirectly, e.g. >= 0). When this optimization was triggered inside a C<when> 1097clause it caused a warning ("Argument %s isn't numeric in smart match"). This 1098has now been fixed. 1099L<[GH #16626]|https://github.com/Perl/perl5/issues/16626> 1100 1101=item * 1102 1103The new in-place editing code no longer leaks directory handles. 1104L<[GH #16602]|https://github.com/Perl/perl5/issues/16602>. 1105 1106=item * 1107 1108Warnings produced from constant folding operations on overloaded 1109values no longer produce spurious "Use of uninitialized value" 1110warnings. 1111L<[GH #16349]|https://github.com/Perl/perl5/issues/16349>. 1112 1113=item * 1114 1115Fix for "mutator not seen in (lex = ...) .= ..." 1116L<[GH #16655]|https://github.com/Perl/perl5/issues/16655>. 1117 1118=item * 1119 1120C<pack "u", "invalid uuencoding"> now properly NUL terminates the 1121zero-length SV produced. 1122L<[GH #16343]|https://github.com/Perl/perl5/issues/16343>. 1123 1124=item * 1125 1126Improve the debugging output for calloc() calls with C<-Dm>. 1127L<[GH #16653]|https://github.com/Perl/perl5/issues/16653>. 1128 1129=item * 1130 1131Regexp script runs were failing to permit ASCII digits in some cases. 1132L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>. 1133 1134=item * 1135 1136On Unix-like systems supporting a platform-specific technique for 1137determining L<< C<$^X>|perlvar/$^X >>, Perl failed to fall back to the 1138generic technique when the platform-specific one fails (for example, a Linux 1139system with /proc not mounted). This was a regression in Perl 5.28.0. 1140L<[GH #16715]|https://github.com/Perl/perl5/issues/16715>. 1141 1142=item * 1143 1144L<SDBM_File> is now more robust with corrupt database files. The 1145improvements do not make SDBM files suitable as an interchange format. 1146L<[GH #16164]|https://github.com/Perl/perl5/issues/16164>. 1147 1148=item * 1149 1150C<binmode($fh);> or C<binmode($fh, ':raw');> now properly removes the 1151C<:utf8> flag from the default C<:crlf> I/O layer on Win32. 1152L<[GH #16730]|https://github.com/Perl/perl5/issues/16730>. 1153 1154=item * 1155 1156The experimental reference aliasing feature was misinterpreting array and 1157hash slice assignment as being localised, e.g. 1158 1159 \(@a[3,5,7]) = \(....); 1160 1161was being interpreted as: 1162 1163 local \(@a[3,5,7]) = \(....); 1164 1165L<[GH #16701]|https://github.com/Perl/perl5/issues/16701>. 1166 1167=item * 1168 1169C<sort SUBNAME> within an C<eval EXPR> when C<EXPR> was UTF-8 upgraded 1170could panic if the C<SUBNAME> was non-ASCII. 1171L<[GH #16979]|https://github.com/Perl/perl5/issues/16979>. 1172 1173=item * 1174 1175Correctly handle realloc() modifying C<errno> on success so that the 1176modification isn't visible to the perl user, since realloc() is called 1177implicitly by the interpreter. This modification is permitted by the 1178C standard, but has only been observed on FreeBSD 13.0-CURRENT. 1179L<[GH #16907]|https://github.com/Perl/perl5/issues/16907>. 1180 1181=item * 1182 1183Perl now exposes POSIX C<getcwd> as C<Internals::getcwd()> if 1184available. This is intended for use by C<Cwd.pm> during bootstrapping 1185and may be removed or changed without notice. This fixes some 1186bootstrapping issues while building perl in a directory where some 1187ancestor directory isn't readable. 1188L<[GH #16903]|https://github.com/Perl/perl5/issues/16903>. 1189 1190=item * 1191 1192C<pack()> no longer can return malformed UTF-8. It croaks if it would 1193otherwise return a UTF-8 string that contains malformed UTF-8. This 1194protects against potential security threats. 1195L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>. 1196 1197=item * 1198 1199See L</Any set of digits in the Common script are legal in a script run 1200of another script>. 1201 1202=item * 1203 1204Regular expression matching no longer leaves stale UTF-8 length magic 1205when updating C<$^R>. This could result in C<length($^R)> returning 1206an incorrect value. 1207 1208=item * 1209 1210Reduce recursion on ops 1211L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>. 1212 1213This can prevent stack overflow when processing extremely deep op 1214trees. 1215 1216=item * 1217 1218Avoid leak in multiconcat with overloading. 1219L<[GH #16823]|https://github.com/Perl/perl5/issues/16823>. 1220 1221=item * 1222 1223The handling of user-defined C<\p{}> properties (see 1224L<perlunicode/User-Defined Character Properties>) has been rewritten to 1225be in C (instead of Perl). This speeds things up, but in the process 1226several inconsistencies and bug fixes are made. 1227 1228=over 4 1229 1230=item 1 1231 1232A few error messages have minor wording changes. This is essentially 1233because the new way is integrated into the regex error handling 1234mechanism that marks the position in the input at which the error 1235occurred. That was not possible previously. The messages now also 1236contain additional back-trace-like information in case the error occurs 1237deep in nested calls. 1238 1239=item 2 1240 1241A user-defined property is implemented as a perl subroutine with certain 1242highly constrained naming conventions. It was documented previously 1243that the sub would be in the current package if the package was 1244unspecified. This turned out not to be true in all cases, but now it 1245is. 1246 1247=item 3 1248 1249All recursive calls are treated as infinite recursion. Previously they 1250would cause the interpreter to panic. Now, they cause the regex pattern 1251to fail to compile. 1252 1253=item 4 1254 1255Similarly, any other error likely would lead to a panic; now to just the 1256pattern failing to compile. 1257 1258=item 5 1259 1260The old mechanism did not detect illegal ranges in the definition of the 1261property. Now, the range max must not be smaller than the range min. 1262Otherwise, the pattern fails to compile. 1263 1264=item 6 1265 1266The intention was to have each sub called only once during the lifetime 1267of the program, so that a property's definition is immutable. This was 1268relaxed so that it could be called once for all /i compilations, and 1269potentially a second time for non-/i (the sub is passed a parameter 1270indicating which). However, in practice there were instances when this 1271was broken, and multiple calls were possible. Those have been fixed. 1272Now (besides the /i,non-/i cases) the only way a sub can be called 1273multiple times is if some component of it has not been defined yet. For 1274example, suppose we have sub IsA() whose definition is known at compile 1275time, and it in turn calls isB() whose definition is not yet known. 1276isA() will be called each time a pattern it appears in is compiled. If 1277isA() also calls isC() and that definition is known, isC() will be 1278called just once. 1279 1280=item 7 1281 1282There were some races and very long hangs should one thread be compiling 1283the same property as another simultaneously. These have now been fixed. 1284 1285=back 1286 1287=item * 1288 1289Fixed a failure to match properly. 1290 1291An EXACTFish regnode has a finite length it can hold for the string 1292being matched. If that length is exceeded, a second node is used for 1293the next segment of the string, for as many regnodes as are needed. 1294Care has to be taken where to break the string, in order to deal 1295multi-character folds in Unicode correctly. If we want to break a 1296string at a place which could potentially be in the middle of a 1297multi-character fold, we back off one (or more) characters, leaving 1298a shorter EXACTFish regnode. This backing off mechanism contained 1299an off-by-one error. 1300L<[GH #16806]|https://github.com/Perl/perl5/issues/16806>. 1301 1302=item * 1303 1304A bare C<eof> call with no previous file handle now returns true. 1305L<[GH #16786]|https://github.com/Perl/perl5/issues/16786> 1306 1307=item * 1308 1309Failing to compile a format now aborts compilation. Like other errors 1310in sub-parses this could leave the parser in a strange state, possibly 1311crashing perl if compilation continued. 1312L<[GH #16169]|https://github.com/Perl/perl5/issues/16169> 1313 1314=item * 1315 1316If an in-place edit is still in progress during global destruction and 1317the process exit code (as stored in C<$?>) is zero, perl will now 1318treat the in-place edit as successful, replacing the input file with 1319any output produced. 1320 1321This allows code like: 1322 1323 perl -i -ne 'print "Foo"; last' 1324 1325to replace the input file, while code like: 1326 1327 perl -i -ne 'print "Foo"; die' 1328 1329will not. Partly resolves 1330L<[GH #16748]|https://github.com/Perl/perl5/issues/16748>. 1331 1332=item * 1333 1334A regression in 5.28 caused the following code to fail 1335 1336 close(STDIN); open(CHILD, "|wc -l")' 1337 1338because the child's stdin would be closed on exec. This has now been fixed. 1339 1340=item * 1341 1342Fixed an issue where compiling a regexp containing both compile-time 1343and run-time code blocks could lead to trying to compile something 1344which is invalid syntax. 1345 1346=item * 1347 1348Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and 1349C<< -DNO_LOCALE_COLLATE >>. 1350L<[GH #16771]|https://github.com/Perl/perl5/issues/16771>. 1351 1352=item * 1353 1354Prevent the tests in F<< ext/B/t/strict.t >> from being skipped. 1355L<[GH #16783]|https://github.com/Perl/perl5/issues/16783>. 1356 1357=item * 1358 1359C<< /di >> nodes ending or beginning in I<s> are now C<< EXACTF >>. We do not 1360want two C<< EXACTFU >> to be joined together during optimization, 1361and to form a C<< ss >>, C<< sS >>, C<< Ss >> or C<< SS >> sequence; 1362they are the only multi-character sequences which may match differently 1363under C<< /ui >> and C<< /di >>. 1364 1365=back 1366 1367=head1 Acknowledgements 1368 1369Perl 5.30.0 represents approximately 11 months of development since Perl 13705.28.0 and contains approximately 620,000 lines of changes across 1,300 1371files from 58 authors. 1372 1373Excluding auto-generated files, documentation and release tools, there were 1374approximately 510,000 lines of changes to 750 .pm, .t, .c and .h files. 1375 1376Perl continues to flourish into its fourth decade thanks to a vibrant 1377community of users and developers. The following people are known to have 1378contributed the improvements that became Perl 5.30.0: 1379 1380Aaron Crane, Abigail, Alberto Simões, Alexandr Savca, Andreas König, Andy 1381Dougherty, Aristotle Pagaltzis, Brian Greenfield, Chad Granum, Chris 1382'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan 1383Dedrick, Daniel Dragan, Dan Kogai, David Cantrell, David Mitchell, Dominic 1384Hargreaves, E. Choroba, Ed J, Eugen Konkov, François Perrad, Graham Knop, 1385Hauke D, H.Merijn Brand, Hugo van der Sanden, Jakub Wilk, James Clarke, 1386James E Keenan, Jerry D. Hedden, Jim Cromie, John SJ Anderson, Karen 1387Etheridge, Karl Williamson, Leon Timmermans, Matthias Bethke, Nicholas 1388Clark, Nicolas R., Niko Tyni, Pali, Petr Písař, Phil Pearl (Lobbes), 1389Richard Leach, Ryan Voots, Sawyer X, Shlomi Fish, Sisyphus, Slaven Rezic, 1390Steve Hay, Sullivan Beck, Tina Müller, Tomasz Konojacki, Tom Wyant, Tony 1391Cook, Unicode Consortium, Yves Orton, Zak B. Elep. 1392 1393The list above is almost certainly incomplete as it is automatically 1394generated from version control history. In particular, it does not include 1395the names of most of the (very much appreciated) contributors who reported 1396issues to the Perl bug tracker. Noteworthy in this release were the large 1397number of bug fixes made possible by Sergey Aleynikov's high quality perlbug 1398reports for issues he discovered by fuzzing with AFL. 1399 1400Many of the changes included in this version originated in the CPAN modules 1401included in Perl's core. We're grateful to the entire CPAN community for 1402helping Perl to flourish. 1403 1404For a more complete list of all of Perl's historical contributors, please 1405see the F<AUTHORS> file in the Perl source distribution. 1406 1407=head1 Reporting Bugs 1408 1409If you find what you think is a bug, you might check the perl bug database 1410at L<https://rt.perl.org/>. There may also be information at 1411L<http://www.perl.org/>, the Perl Home Page. 1412 1413If you believe you have an unreported bug, please run the L<perlbug> program 1414included with your release. Be sure to trim your bug down to a tiny but 1415sufficient test case. Your bug report, along with the output of C<perl -V>, 1416will be sent off to perlbug@perl.org to be analysed by the Perl porting team. 1417 1418If the bug you are reporting has security implications which make it 1419inappropriate to send to a publicly archived mailing list, then see 1420L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> 1421for details of how to report the issue. 1422 1423=head1 Give Thanks 1424 1425If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, 1426you can do so by running the C<perlthanks> program: 1427 1428 perlthanks 1429 1430This will send an email to the Perl 5 Porters list with your show of thanks. 1431 1432=head1 SEE ALSO 1433 1434The F<Changes> file for an explanation of how to view exhaustive details on 1435what changed. 1436 1437The F<INSTALL> file for how to build Perl. 1438 1439The F<README> file for general stuff. 1440 1441The F<Artistic> and F<Copying> files for copyright information. 1442 1443=cut 1444