1=encoding utf8 2 3=head1 NAME 4 5perl5200delta - what is new for perl v5.20.0 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.18.0 release and the 105.20.0 release. 11 12If you are upgrading from an earlier release such as 5.16.0, first read 13L<perl5180delta>, which describes differences between 5.16.0 and 5.18.0. 14 15=head1 Core Enhancements 16 17=head2 Experimental Subroutine signatures 18 19Declarative syntax to unwrap argument list into lexical variables. 20C<sub foo ($a,$b) {...}> checks the number of arguments and puts the 21arguments into lexical variables. Signatures are not equivalent to 22the existing idiom of C<sub foo { my($a,$b) = @_; ... }>. Signatures 23are only available by enabling a non-default feature, and generate 24warnings about being experimental. The syntactic clash with 25prototypes is managed by disabling the short prototype syntax when 26signatures are enabled. 27 28See L<perlsub/Signatures> for details. 29 30=head2 C<sub>s now take a C<prototype> attribute 31 32When declaring or defining a C<sub>, the prototype can now be specified inside 33of a C<prototype> attribute instead of in parens following the name. 34 35For example, C<sub foo($$){}> could be rewritten as 36C<sub foo : prototype($$){}>. 37 38=head2 More consistent prototype parsing 39 40Multiple semicolons in subroutine prototypes have long been tolerated and 41treated as a single semicolon. There was one case where this did not 42happen. A subroutine whose prototype begins with "*" or ";*" can affect 43whether a bareword is considered a method name or sub call. This now 44applies also to ";;;*". 45 46Whitespace has long been allowed inside subroutine prototypes, so 47C<sub( $ $ )> is equivalent to C<sub($$)>, but until now it was stripped 48when the subroutine was parsed. Hence, whitespace was I<not> allowed in 49prototypes set by C<Scalar::Util::set_prototype>. Now it is permitted, 50and the parser no longer strips whitespace. This means 51C<prototype &mysub> returns the original prototype, whitespace and all. 52 53=head2 C<rand> now uses a consistent random number generator 54 55Previously perl would use a platform specific random number generator, varying 56between the libc rand(), random() or drand48(). 57 58This meant that the quality of perl's random numbers would vary from platform 59to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX 60platforms such as Linux with drand48(). 61 62Perl now uses its own internal drand48() implementation on all platforms. This 63does not make perl's C<rand> cryptographically secure. [perl #115928] 64 65=head2 New slice syntax 66 67The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or 68index/value) pairs. See L<perldata/"Key/Value Hash Slices">. 69 70=head2 Experimental Postfix Dereferencing 71 72When the C<postderef> feature is in effect, the following syntactical 73equivalencies are set up: 74 75 $sref->$*; # same as ${ $sref } # interpolates 76 $aref->@*; # same as @{ $aref } # interpolates 77 $href->%*; # same as %{ $href } 78 $cref->&*; # same as &{ $cref } 79 $gref->**; # same as *{ $gref } 80 81 $aref->$#*; # same as $#{ $aref } 82 83 $gref->*{ $slot }; # same as *{ $gref }{ $slot } 84 85 $aref->@[ ... ]; # same as @$aref[ ... ] # interpolates 86 $href->@{ ... }; # same as @$href{ ... } # interpolates 87 $aref->%[ ... ]; # same as %$aref[ ... ] 88 $href->%{ ... }; # same as %$href{ ... } 89 90Those marked as interpolating only interpolate if the associated 91C<postderef_qq> feature is also enabled. This feature is B<experimental> and 92will trigger C<experimental::postderef>-category warnings when used, unless 93they are suppressed. 94 95For more information, consult L<the Postfix Dereference Syntax section of 96perlref|perlref/Postfix Dereference Syntax>. 97 98=head2 Unicode 6.3 now supported 99 100Perl now supports and is shipped with Unicode 6.3 (though Perl may be 101recompiled with any previous Unicode release as well). A detailed list of 102Unicode 6.3 changes is at L<http://www.unicode.org/versions/Unicode6.3.0/>. 103 104=head2 New C<\p{Unicode}> regular expression pattern property 105 106This is a synonym for C<\p{Any}> and matches the set of Unicode-defined 107code points 0 - 0x10FFFF. 108 109=head2 Better 64-bit support 110 111On 64-bit platforms, the internal array functions now use 64-bit offsets, 112allowing Perl arrays to hold more than 2**31 elements, if you have the memory 113available. 114 115The regular expression engine now supports strings longer than 2**31 116characters. [perl #112790, #116907] 117 118The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and 119PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and 120parameters. 121 122=head2 C<S<use locale>> now works on UTF-8 locales 123 124Until this release, only single-byte locales, such as the ISO 8859 125series were supported. Now, the increasingly common multi-byte UTF-8 126locales are also supported. A UTF-8 locale is one in which the 127character set is Unicode and the encoding is UTF-8. The POSIX 128C<LC_CTYPE> category operations (case changing (like C<lc()>, C<"\U">), 129and character classification (C<\w>, C<\D>, C<qr/[[:punct:]]/>)) under 130such a locale work just as if not under locale, but instead as if under 131C<S<use feature 'unicode_strings'>>, except taint rules are followed. 132Sorting remains by code point order in this release. [perl #56820]. 133 134=head2 C<S<use locale>> now compiles on systems without locale ability 135 136Previously doing this caused the program to not compile. Within its 137scope the program behaves as if in the "C" locale. Thus programs 138written for platforms that support locales can run on locale-less 139platforms without change. Attempts to change the locale away from the 140"C" locale will, of course, fail. 141 142=head2 More locale initialization fallback options 143 144If there was an error with locales during Perl start-up, it immediately 145gave up and tried to use the C<"C"> locale. Now it first tries using 146other locales given by the environment variables, as detailed in 147L<perllocale/ENVIRONMENT>. For example, if C<LC_ALL> and C<LANG> are 148both set, and using the C<LC_ALL> locale fails, Perl will now try the 149C<LANG> locale, and only if that fails, will it fall back to C<"C">. On 150Windows machines, Perl will try, ahead of using C<"C">, the system 151default locale if all the locales given by environment variables fail. 152 153=head2 C<-DL> runtime option now added for tracing locale setting 154 155This is designed for Perl core developers to aid in field debugging bugs 156regarding locales. 157 158=head2 B<-F> now implies B<-a> and B<-a> implies B<-n> 159 160Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p> 161was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n> 162are implied and if you supply B<-a> then B<-n> is implied. 163 164You can still use B<-p> for its extra behaviour. [perl #116190] 165 166=head2 $a and $b warnings exemption 167 168The special variables $a and $b, used in C<sort>, are now exempt from "used 169once" warnings, even where C<sort> is not used. This makes it easier for 170CPAN modules to provide functions using $a and $b for similar purposes. 171[perl #120462] 172 173=head1 Security 174 175=head2 Avoid possible read of free()d memory during parsing 176 177It was possible that free()d memory could be read during parsing in the unusual 178circumstance of the Perl program ending with a heredoc and the last line of the 179file on disk having no terminating newline character. This has now been fixed. 180 181=head1 Incompatible Changes 182 183=head2 C<do> can no longer be used to call subroutines 184 185The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning 186since Perl v5.0.0, and is now a syntax error. 187 188=head2 Quote-like escape changes 189 190The character after C<\c> in a double-quoted string ("..." or qq(...)) 191or regular expression must now be a printable character and may not be 192C<{>. 193 194A literal C<{> after C<\B> or C<\b> is now fatal. 195 196These were deprecated in perl v5.14.0. 197 198=head2 Tainting happens under more circumstances; now conforms to documentation 199 200This affects regular expression matching and changing the case of a 201string (C<lc>, C<"\U">, I<etc>.) within the scope of C<use locale>. 202The result is now tainted based on the operation, no matter what the 203contents of the string were, as the documentation (L<perlsec>, 204L<perllocale/SECURITY>) indicates it should. Previously, for the case 205change operation, if the string contained no characters whose case 206change could be affected by the locale, the result would not be tainted. 207For example, the result of C<uc()> on an empty string or one containing 208only above-Latin1 code points is now tainted, and wasn't before. This 209leads to more consistent tainting results. Regular expression patterns 210taint their non-binary results (like C<$&>, C<$2>) if and only if the 211pattern contains elements whose matching depends on the current 212(potentially tainted) locale. Like the case changing functions, the 213actual contents of the string being matched now do not matter, whereas 214formerly it did. For example, if the pattern contains a C<\w>, the 215results will be tainted even if the match did not have to use that 216portion of the pattern to succeed or fail, because what a C<\w> matches 217depends on locale. However, for example, a C<.> in a pattern will not 218enable tainting, because the dot matches any single character, and what 219the current locale is doesn't change in any way what matches and what 220doesn't. 221 222=head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code 223points. 224 225C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code 226points (C<U+0000> through C<U+10FFFF>). Their behavior on matching 227these legal Unicode code points is unchanged, but there are changes for 228code points C<0x110000> and above. Previously, Perl treated the result 229of matching C<\p{}> and C<\P{}> against these as C<undef>, which 230translates into "false". For C<\P{}>, this was then complemented into 231"true". A warning was supposed to be raised when this happened. 232However, various optimizations could prevent the warning, and the 233results were often counter-intuitive, with both a match and its seeming 234complement being false. Now all non-Unicode code points are treated as 235typical unassigned Unicode code points. This generally is more 236Do-What-I-Mean. A warning is raised only if the results are arguably 237different from a strict Unicode approach, and from what Perl used to do. 238Code that needs to be strictly Unicode compliant can make this warning 239fatal, and then Perl always raises the warning. 240 241Details are in L<perlunicode/Beyond Unicode code points>. 242 243=head2 C<\p{All}> has been expanded to match all possible code points 244 245The Perl-defined regular expression pattern element C<\p{All}>, unused 246on CPAN, used to match just the Unicode code points; now it matches all 247possible code points; that is, it is equivalent to C<qr/./s>. Thus 248C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to 249match just the Unicode code points, as Unicode says it should. 250 251=head2 Data::Dumper's output may change 252 253Depending on the data structures dumped and the settings set for 254Data::Dumper, the dumped output may have changed from previous 255versions. 256 257If you have tests that depend on the exact output of Data::Dumper, 258they may fail. 259 260To avoid this problem in your code, test against the data structure 261from evaluating the dumped structure, instead of the dump itself. 262 263=head2 Locale decimal point character no longer leaks outside of S<C<use locale>> scope 264 265This is actually a bug fix, but some code has come to rely on the bug 266being present, so this change is listed here. The current locale that 267the program is running under is not supposed to be visible to Perl code 268except within the scope of a S<C<use locale>>. However, until now under 269certain circumstances, the character used for a decimal point (often a 270comma) leaked outside the scope. If your code is affected by this 271change, simply add a S<C<use locale>>. 272 273=head2 Assignments of Windows sockets error codes to $! now prefer F<errno.h> values over WSAGetLastError() values 274 275In previous versions of Perl, Windows sockets error codes as returned by 276WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED, 277not in F<errno.h> in VC++ (or the various Windows ports of gcc) were defined to 278corresponding WSAE* values to allow $! to be tested against the E* constants 279exported by L<Errno> and L<POSIX>. 280 281This worked well until VC++ 2010 and later, which introduced new E* constants 282with values E<gt> 100 into F<errno.h>, including some being (re)defined by perl 283to WSAE* values. That caused problems when linking XS code against other 284libraries which used the original definitions of F<errno.h> constants. 285 286To avoid this incompatibility, perl now maps WSAE* error codes to E* values 287where possible, and assigns those values to $!. The E* constants exported by 288L<Errno> and L<POSIX> are updated to match so that testing $! against them, 289wherever previously possible, will continue to work as expected, and all E* 290constants found in F<errno.h> are now exported from those modules with their 291original F<errno.h> values. 292 293In order to avoid breakage in existing Perl code which assigns WSAE* values to 294$!, perl now intercepts the assignment and performs the same mapping to E* 295values as it uses internally when assigning to $! itself. 296 297However, one backwards-incompatibility remains: existing Perl code which 298compares $! against the numeric values of the WSAE* error codes that were 299previously assigned to $! will now be broken in those cases where a 300corresponding E* value has been assigned instead. This is only an issue for 301those E* values E<lt> 100, which were always exported from L<Errno> and 302L<POSIX> with their original F<errno.h> values, and therefore could not be used 303for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding 304EINVAL is 22). (E* values E<gt> 100, if present, were redefined to WSAE* 305values anyway, so compatibility can be achieved by using the E* constants, 306which will work both before and after this change, albeit using different 307numeric values under the hood.) 308 309=head2 Functions C<PerlIO_vsprintf> and C<PerlIO_sprintf> have been removed 310 311These two functions, undocumented, unused in CPAN, and problematic, have been 312removed. 313 314=head1 Deprecations 315 316=head2 The C</\C/> character class 317 318The C</\C/> regular expression character class is deprecated. From perl 3195.22 onwards it will generate a warning, and from perl 5.24 onwards it 320will be a regular expression compiler error. If you need to examine the 321individual bytes that make up a UTF8-encoded character, then use 322C<utf8::encode()> on the string (or a copy) first. 323 324=head2 Literal control characters in variable names 325 326This deprecation affects things like $\cT, where \cT is a literal control (such 327as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in 328the source code. Surprisingly, it appears that originally this was intended as 329the canonical way of accessing variables like $^T, with the caret form only 330being added as an alternative. 331 332The literal control form is being deprecated for two main reasons. It has what 333are likely unfixable bugs, such as $\cI not working as an alias for $^I, and 334their usage not being portable to non-ASCII platforms: While $^T will work 335everywhere, \cT is whitespace in EBCDIC. [perl #119123] 336 337=head2 References to non-integers and non-positive integers in C<$/> 338 339Setting C<$/> to a reference to zero or a reference to a negative integer is 340now deprecated, and will behave B<exactly> as though it was set to C<undef>. 341If you want slurp behavior set C<$/> to C<undef> explicitly. 342 343Setting C<$/> to a reference to a non integer is now forbidden and will 344throw an error. Perl has never documented what would happen in this 345context and while it used to behave the same as setting C<$/> to 346the address of the references in future it may behave differently, so we 347have forbidden this usage. 348 349=head2 Character matching routines in POSIX 350 351Use of any of these functions in the C<POSIX> module is now deprecated: 352C<isalnum>, C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, 353C<isprint>, C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>. The 354functions are buggy and don't work on UTF-8 encoded strings. See their 355entries in L<POSIX> for more information. 356 357A warning is raised on the first call to any of them from each place in 358the code that they are called. (Hence a repeated statement in a loop 359will raise just the one warning.) 360 361=head2 Interpreter-based threads are now I<discouraged> 362 363The "interpreter-based threads" provided by Perl are not the fast, lightweight 364system for multitasking that one might expect or hope for. Threads are 365implemented in a way that make them easy to misuse. Few people know how to 366use them correctly or will be able to provide help. 367 368The use of interpreter-based threads in perl is officially 369L<discouraged|perlpolicy/discouraged>. 370 371=head2 Module removals 372 373The following modules will be removed from the core distribution in a 374future release, and will at that time need to be installed from CPAN. 375Distributions on CPAN which require these modules will need to list them as 376prerequisites. 377 378The core versions of these modules will now issue C<"deprecated">-category 379warnings to alert you to this fact. To silence these deprecation warnings, 380install the modules in question from CPAN. 381 382Note that the planned removal of these modules from core does not reflect a 383judgement about the quality of the code and should not be taken as a suggestion 384that their use be halted. Their disinclusion from core primarily hinges on 385their necessity to bootstrapping a fully functional, CPAN-capable Perl 386installation, not on concerns over their design. 387 388=over 389 390=item L<CGI> and its associated CGI:: packages 391 392=item L<inc::latest> 393 394=item L<Package::Constants> 395 396=item L<Module::Build> and its associated Module::Build:: packages 397 398=back 399 400=head2 Utility removals 401 402The following utilities will be removed from the core distribution in a 403future release, and will at that time need to be installed from CPAN. 404 405=over 4 406 407=item L<find2perl> 408 409=item L<s2p> 410 411=item L<a2p> 412 413=back 414 415=head1 Performance Enhancements 416 417=over 4 418 419=item * 420 421Perl has a new copy-on-write mechanism that avoids the need to copy the 422internal string buffer when assigning from one scalar to another. This 423makes copying large strings appear much faster. Modifying one of the two 424(or more) strings after an assignment will force a copy internally. This 425makes it unnecessary to pass strings by reference for efficiency. 426 427This feature was already available in 5.18.0, but wasn't enabled by 428default. It is the default now, and so you no longer need build perl with 429the F<Configure> argument: 430 431 -Accflags=-DPERL_NEW_COPY_ON_WRITE 432 433It can be disabled (for now) in a perl build with: 434 435 -Accflags=-DPERL_NO_COW 436 437On some operating systems Perl can be compiled in such a way that any 438attempt to modify string buffers shared by multiple SVs will crash. This 439way XS authors can test that their modules handle copy-on-write scalars 440correctly. See L<perlguts/"Copy on Write"> for detail. 441 442=item * 443 444Perl has an optimizer for regular expression patterns. It analyzes the pattern 445to find things such as the minimum length a string has to be to match, etc. It 446now better handles code points that are above the Latin1 range. 447 448=item * 449 450Executing a regex that contains the C<^> anchor (or its variant under the 451C</m> flag) has been made much faster in several situations. 452 453=item * 454 455Precomputed hash values are now used in more places during method lookup. 456 457=item * 458 459Constant hash key lookups (C<$hash{key}> as opposed to C<$hash{$key}>) have 460long had the internal hash value computed at compile time, to speed up 461lookup. This optimisation has only now been applied to hash slices as 462well. 463 464=item * 465 466Combined C<and> and C<or> operators in void context, like those 467generated for C<< unless ($a && $b) >> and C<< if ($a || b) >> now 468short circuit directly to the end of the statement. [perl #120128] 469 470=item * 471 472In certain situations, when C<return> is the last statement in a subroutine's 473main scope, it will be optimized out. This means code like: 474 475 sub baz { return $cat; } 476 477will now behave like: 478 479 sub baz { $cat; } 480 481which is notably faster. 482 483[perl #120765] 484 485=item * 486 487Code like: 488 489 my $x; # or @x, %x 490 my $y; 491 492is now optimized to: 493 494 my ($x, $y); 495 496In combination with the L<padrange optimization introduced in 497v5.18.0|perl5180delta/Internal Changes>, this means longer uninitialized my 498variable statements are also optimized, so: 499 500 my $x; my @y; my %z; 501 502becomes: 503 504 my ($x, @y, %z); 505 506[perl #121077] 507 508=item * 509 510The creation of certain sorts of lists, including array and hash slices, is now 511faster. 512 513=item * 514 515The optimisation for arrays indexed with a small constant integer is now 516applied for integers in the range -128..127, rather than 0..255. This should 517speed up Perl code using expressions like C<$x[-1]>, at the expense of 518(presumably much rarer) code using expressions like C<$x[200]>. 519 520=item * 521 522The first iteration over a large hash (using C<keys> or C<each>) is now 523faster. This is achieved by preallocating the hash's internal iterator 524state, rather than lazily creating it when the hash is first iterated. (For 525small hashes, the iterator is still created only when first needed. The 526assumption is that small hashes are more likely to be used as objects, and 527therefore never allocated. For large hashes, that's less likely to be true, 528and the cost of allocating the iterator is swamped by the cost of allocating 529space for the hash itself.) 530 531=item * 532 533When doing a global regex match on a string that came from the C<readline> 534or C<E<lt>E<gt>> operator, the data is no longer copied unnecessarily. 535[perl #121259] 536 537=item * 538 539Dereferencing (as in C<$obj-E<gt>[0]> or C<$obj-E<gt>{k}>) is now faster 540when C<$obj> is an instance of a class that has overloaded methods, but 541doesn't overload any of the dereferencing methods C<@{}>, C<%{}>, and so on. 542 543=item * 544 545Perl's optimiser no longer skips optimising code that follows certain 546C<eval {}> expressions (including those with an apparent infinite loop). 547 548=item * 549 550The implementation now does a better job of avoiding meaningless work at 551runtime. Internal effect-free "null" operations (created as a side-effect of 552parsing Perl programs) are normally deleted during compilation. That 553deletion is now applied in some situations that weren't previously handled. 554 555=item * 556 557Perl now does less disk I/O when dealing with Unicode properties that cover 558up to three ranges of consecutive code points. 559 560=back 561 562=head1 Modules and Pragmata 563 564=head2 New Modules and Pragmata 565 566=over 4 567 568=item * 569 570L<experimental> 0.007 has been added to the Perl core. 571 572=item * 573 574L<IO::Socket::IP> 0.29 has been added to the Perl core. 575 576=back 577 578=head2 Updated Modules and Pragmata 579 580=over 4 581 582=item * 583 584L<Archive::Tar> has been upgraded from version 1.90 to 1.96. 585 586=item * 587 588L<arybase> has been upgraded from version 0.06 to 0.07. 589 590=item * 591 592L<Attribute::Handlers> has been upgraded from version 0.94 to 0.96. 593 594=item * 595 596L<attributes> has been upgraded from version 0.21 to 0.22. 597 598=item * 599 600L<autodie> has been upgraded from version 2.13 to 2.23. 601 602=item * 603 604L<AutoLoader> has been upgraded from version 5.73 to 5.74. 605 606=item * 607 608L<autouse> has been upgraded from version 1.07 to 1.08. 609 610=item * 611 612L<B> has been upgraded from version 1.42 to 1.48. 613 614=item * 615 616L<B::Concise> has been upgraded from version 0.95 to 0.992. 617 618=item * 619 620L<B::Debug> has been upgraded from version 1.18 to 1.19. 621 622=item * 623 624L<B::Deparse> has been upgraded from version 1.20 to 1.26. 625 626=item * 627 628L<base> has been upgraded from version 2.18 to 2.22. 629 630=item * 631 632L<Benchmark> has been upgraded from version 1.15 to 1.18. 633 634=item * 635 636L<bignum> has been upgraded from version 0.33 to 0.37. 637 638=item * 639 640L<Carp> has been upgraded from version 1.29 to 1.3301. 641 642=item * 643 644L<CGI> has been upgraded from version 3.63 to 3.65. 645NOTE: L<CGI> is deprecated and may be removed from a future version of Perl. 646 647=item * 648 649L<charnames> has been upgraded from version 1.36 to 1.40. 650 651=item * 652 653L<Class::Struct> has been upgraded from version 0.64 to 0.65. 654 655=item * 656 657L<Compress::Raw::Bzip2> has been upgraded from version 2.060 to 2.064. 658 659=item * 660 661L<Compress::Raw::Zlib> has been upgraded from version 2.060 to 2.065. 662 663=item * 664 665L<Config::Perl::V> has been upgraded from version 0.17 to 0.20. 666 667=item * 668 669L<constant> has been upgraded from version 1.27 to 1.31. 670 671=item * 672 673L<CPAN> has been upgraded from version 2.00 to 2.05. 674 675=item * 676 677L<CPAN::Meta> has been upgraded from version 2.120921 to 2.140640. 678 679=item * 680 681L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.125. 682 683=item * 684 685L<CPAN::Meta::YAML> has been upgraded from version 0.008 to 0.012. 686 687=item * 688 689L<Data::Dumper> has been upgraded from version 2.145 to 2.151. 690 691=item * 692 693L<DB> has been upgraded from version 1.04 to 1.07. 694 695=item * 696 697L<DB_File> has been upgraded from version 1.827 to 1.831. 698 699=item * 700 701L<DBM_Filter> has been upgraded from version 0.05 to 0.06. 702 703=item * 704 705L<deprecate> has been upgraded from version 0.02 to 0.03. 706 707=item * 708 709L<Devel::Peek> has been upgraded from version 1.11 to 1.16. 710 711=item * 712 713L<Devel::PPPort> has been upgraded from version 3.20 to 3.21. 714 715=item * 716 717L<diagnostics> has been upgraded from version 1.31 to 1.34. 718 719=item * 720 721L<Digest::MD5> has been upgraded from version 2.52 to 2.53. 722 723=item * 724 725L<Digest::SHA> has been upgraded from version 5.84 to 5.88. 726 727=item * 728 729L<DynaLoader> has been upgraded from version 1.18 to 1.25. 730 731=item * 732 733L<Encode> has been upgraded from version 2.49 to 2.60. 734 735=item * 736 737L<encoding> has been upgraded from version 2.6_01 to 2.12. 738 739=item * 740 741L<English> has been upgraded from version 1.06 to 1.09. 742 743C<$OLD_PERL_VERSION> was added as an alias of C<$]>. 744 745=item * 746 747L<Errno> has been upgraded from version 1.18 to 1.20_03. 748 749=item * 750 751L<Exporter> has been upgraded from version 5.68 to 5.70. 752 753=item * 754 755L<ExtUtils::CBuilder> has been upgraded from version 0.280210 to 0.280216. 756 757=item * 758 759L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18. 760 761=item * 762 763L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.32. 764 765=item * 766 767L<ExtUtils::Install> has been upgraded from version 1.59 to 1.67. 768 769=item * 770 771L<ExtUtils::MakeMaker> has been upgraded from version 6.66 to 6.98. 772 773=item * 774 775L<ExtUtils::Miniperl> has been upgraded from version to 1.01. 776 777=item * 778 779L<ExtUtils::ParseXS> has been upgraded from version 3.18 to 3.24. 780 781=item * 782 783L<ExtUtils::Typemaps> has been upgraded from version 3.19 to 3.24. 784 785=item * 786 787L<ExtUtils::XSSymSet> has been upgraded from version 1.2 to 1.3. 788 789=item * 790 791L<feature> has been upgraded from version 1.32 to 1.36. 792 793=item * 794 795L<fields> has been upgraded from version 2.16 to 2.17. 796 797=item * 798 799L<File::Basename> has been upgraded from version 2.84 to 2.85. 800 801=item * 802 803L<File::Copy> has been upgraded from version 2.26 to 2.29. 804 805=item * 806 807L<File::DosGlob> has been upgraded from version 1.10 to 1.12. 808 809=item * 810 811L<File::Fetch> has been upgraded from version 0.38 to 0.48. 812 813=item * 814 815L<File::Find> has been upgraded from version 1.23 to 1.27. 816 817=item * 818 819L<File::Glob> has been upgraded from version 1.20 to 1.23. 820 821=item * 822 823L<File::Spec> has been upgraded from version 3.40 to 3.47. 824 825=item * 826 827L<File::Temp> has been upgraded from version 0.23 to 0.2304. 828 829=item * 830 831L<FileCache> has been upgraded from version 1.08 to 1.09. 832 833=item * 834 835L<Filter::Simple> has been upgraded from version 0.89 to 0.91. 836 837=item * 838 839L<Filter::Util::Call> has been upgraded from version 1.45 to 1.49. 840 841=item * 842 843L<Getopt::Long> has been upgraded from version 2.39 to 2.42. 844 845=item * 846 847L<Getopt::Std> has been upgraded from version 1.07 to 1.10. 848 849=item * 850 851L<Hash::Util::FieldHash> has been upgraded from version 1.10 to 1.15. 852 853=item * 854 855L<HTTP::Tiny> has been upgraded from version 0.025 to 0.043. 856 857=item * 858 859L<I18N::Langinfo> has been upgraded from version 0.10 to 0.11. 860 861=item * 862 863L<I18N::LangTags> has been upgraded from version 0.39 to 0.40. 864 865=item * 866 867L<if> has been upgraded from version 0.0602 to 0.0603. 868 869=item * 870 871L<inc::latest> has been upgraded from version 0.4003 to 0.4205. 872NOTE: L<inc::latest> is deprecated and may be removed from a future version of Perl. 873 874=item * 875 876L<integer> has been upgraded from version 1.00 to 1.01. 877 878=item * 879 880L<IO> has been upgraded from version 1.28 to 1.31. 881 882=item * 883 884L<IO::Compress::Gzip> and friends have been upgraded from version 2.060 to 8852.064. 886 887=item * 888 889L<IPC::Cmd> has been upgraded from version 0.80 to 0.92. 890 891=item * 892 893L<IPC::Open3> has been upgraded from version 1.13 to 1.16. 894 895=item * 896 897L<IPC::SysV> has been upgraded from version 2.03 to 2.04. 898 899=item * 900 901L<JSON::PP> has been upgraded from version 2.27202 to 2.27203. 902 903=item * 904 905L<List::Util> has been upgraded from version 1.27 to 1.38. 906 907=item * 908 909L<locale> has been upgraded from version 1.02 to 1.03. 910 911=item * 912 913L<Locale::Codes> has been upgraded from version 3.25 to 3.30. 914 915=item * 916 917L<Locale::Maketext> has been upgraded from version 1.23 to 1.25. 918 919=item * 920 921L<Math::BigInt> has been upgraded from version 1.9991 to 1.9993. 922 923=item * 924 925L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31. 926 927=item * 928 929L<Math::BigRat> has been upgraded from version 0.2604 to 0.2606. 930 931=item * 932 933L<MIME::Base64> has been upgraded from version 3.13 to 3.14. 934 935=item * 936 937L<Module::Build> has been upgraded from version 0.4003 to 0.4205. 938NOTE: L<Module::Build> is deprecated and may be removed from a future version of Perl. 939 940=item * 941 942L<Module::CoreList> has been upgraded from version 2.89 to 3.10. 943 944=item * 945 946L<Module::Load> has been upgraded from version 0.24 to 0.32. 947 948=item * 949 950L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.62. 951 952=item * 953 954L<Module::Metadata> has been upgraded from version 1.000011 to 1.000019. 955 956=item * 957 958L<mro> has been upgraded from version 1.11 to 1.16. 959 960=item * 961 962L<Net::Ping> has been upgraded from version 2.41 to 2.43. 963 964=item * 965 966L<Opcode> has been upgraded from version 1.25 to 1.27. 967 968=item * 969 970L<Package::Constants> has been upgraded from version 0.02 to 0.04. 971NOTE: L<Package::Constants> is deprecated and may be removed from a future version of Perl. 972 973=item * 974 975L<Params::Check> has been upgraded from version 0.36 to 0.38. 976 977=item * 978 979L<parent> has been upgraded from version 0.225 to 0.228. 980 981=item * 982 983L<Parse::CPAN::Meta> has been upgraded from version 1.4404 to 1.4414. 984 985=item * 986 987L<Perl::OSType> has been upgraded from version 1.003 to 1.007. 988 989=item * 990 991L<perlfaq> has been upgraded from version 5.0150042 to 5.0150044. 992 993=item * 994 995L<PerlIO> has been upgraded from version 1.07 to 1.09. 996 997=item * 998 999L<PerlIO::encoding> has been upgraded from version 0.16 to 0.18. 1000 1001=item * 1002 1003L<PerlIO::scalar> has been upgraded from version 0.16 to 0.18. 1004 1005=item * 1006 1007L<PerlIO::via> has been upgraded from version 0.12 to 0.14. 1008 1009=item * 1010 1011L<Pod::Escapes> has been upgraded from version 1.04 to 1.06. 1012 1013=item * 1014 1015L<Pod::Functions> has been upgraded from version 1.06 to 1.08. 1016 1017=item * 1018 1019L<Pod::Html> has been upgraded from version 1.18 to 1.21. 1020 1021=item * 1022 1023L<Pod::Parser> has been upgraded from version 1.60 to 1.62. 1024 1025=item * 1026 1027L<Pod::Perldoc> has been upgraded from version 3.19 to 3.23. 1028 1029=item * 1030 1031L<Pod::Usage> has been upgraded from version 1.61 to 1.63. 1032 1033=item * 1034 1035L<POSIX> has been upgraded from version 1.32 to 1.38_03. 1036 1037=item * 1038 1039L<re> has been upgraded from version 0.23 to 0.26. 1040 1041=item * 1042 1043L<Safe> has been upgraded from version 2.35 to 2.37. 1044 1045=item * 1046 1047L<Scalar::Util> has been upgraded from version 1.27 to 1.38. 1048 1049=item * 1050 1051L<SDBM_File> has been upgraded from version 1.09 to 1.11. 1052 1053=item * 1054 1055L<Socket> has been upgraded from version 2.009 to 2.013. 1056 1057=item * 1058 1059L<Storable> has been upgraded from version 2.41 to 2.49. 1060 1061=item * 1062 1063L<strict> has been upgraded from version 1.07 to 1.08. 1064 1065=item * 1066 1067L<subs> has been upgraded from version 1.01 to 1.02. 1068 1069=item * 1070 1071L<Sys::Hostname> has been upgraded from version 1.17 to 1.18. 1072 1073=item * 1074 1075L<Sys::Syslog> has been upgraded from version 0.32 to 0.33. 1076 1077=item * 1078 1079L<Term::Cap> has been upgraded from version 1.13 to 1.15. 1080 1081=item * 1082 1083L<Term::ReadLine> has been upgraded from version 1.12 to 1.14. 1084 1085=item * 1086 1087L<Test::Harness> has been upgraded from version 3.26 to 3.30. 1088 1089=item * 1090 1091L<Test::Simple> has been upgraded from version 0.98 to 1.001002. 1092 1093=item * 1094 1095L<Text::ParseWords> has been upgraded from version 3.28 to 3.29. 1096 1097=item * 1098 1099L<Text::Tabs> has been upgraded from version 2012.0818 to 2013.0523. 1100 1101=item * 1102 1103L<Text::Wrap> has been upgraded from version 2012.0818 to 2013.0523. 1104 1105=item * 1106 1107L<Thread> has been upgraded from version 3.02 to 3.04. 1108 1109=item * 1110 1111L<Thread::Queue> has been upgraded from version 3.02 to 3.05. 1112 1113=item * 1114 1115L<threads> has been upgraded from version 1.86 to 1.93. 1116 1117=item * 1118 1119L<threads::shared> has been upgraded from version 1.43 to 1.46. 1120 1121=item * 1122 1123L<Tie::Array> has been upgraded from version 1.05 to 1.06. 1124 1125=item * 1126 1127L<Tie::File> has been upgraded from version 0.99 to 1.00. 1128 1129=item * 1130 1131L<Tie::Hash> has been upgraded from version 1.04 to 1.05. 1132 1133=item * 1134 1135L<Tie::Scalar> has been upgraded from version 1.02 to 1.03. 1136 1137=item * 1138 1139L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4. 1140 1141=item * 1142 1143L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726. 1144 1145=item * 1146 1147L<Time::Piece> has been upgraded from version 1.20_01 to 1.27. 1148 1149=item * 1150 1151L<Unicode::Collate> has been upgraded from version 0.97 to 1.04. 1152 1153=item * 1154 1155L<Unicode::Normalize> has been upgraded from version 1.16 to 1.17. 1156 1157=item * 1158 1159L<Unicode::UCD> has been upgraded from version 0.51 to 0.57. 1160 1161=item * 1162 1163L<utf8> has been upgraded from version 1.10 to 1.13. 1164 1165=item * 1166 1167L<version> has been upgraded from version 0.9902 to 0.9908. 1168 1169=item * 1170 1171L<vmsish> has been upgraded from version 1.03 to 1.04. 1172 1173=item * 1174 1175L<warnings> has been upgraded from version 1.18 to 1.23. 1176 1177=item * 1178 1179L<Win32> has been upgraded from version 0.47 to 0.49. 1180 1181=item * 1182 1183L<XS::Typemap> has been upgraded from version 0.10 to 0.13. 1184 1185=item * 1186 1187L<XSLoader> has been upgraded from version 0.16 to 0.17. 1188 1189=back 1190 1191=head1 Documentation 1192 1193=head2 New Documentation 1194 1195=head3 L<perlrepository> 1196 1197This document was removed (actually, renamed L<perlgit> and given a major 1198overhaul) in Perl v5.14, causing Perl documentation websites to show the now 1199out of date version in Perl v5.12 as the latest version. It has now been 1200restored in stub form, directing readers to current information. 1201 1202=head2 Changes to Existing Documentation 1203 1204=head3 L<perldata> 1205 1206=over 4 1207 1208=item * 1209 1210New sections have been added to document the new index/value array slice and 1211key/value hash slice syntax. 1212 1213=back 1214 1215=head3 L<perldebguts> 1216 1217=over 4 1218 1219=item * 1220 1221The C<DB::goto> and C<DB::lsub> debugger subroutines are now documented. [perl 1222#77680] 1223 1224=back 1225 1226=head3 L<perlexperiment> 1227 1228=over 1229 1230=item * 1231 1232C<\s> matching C<\cK> is marked experimental. 1233 1234=item * 1235 1236ithreads were accepted in v5.8.0 (but are discouraged as of v5.20.0). 1237 1238=item * 1239 1240Long doubles are not considered experimental. 1241 1242=item * 1243 1244Code in regular expressions, regular expression backtracking verbs, 1245and lvalue subroutines are no longer listed as experimental. (This 1246also affects L<perlre> and L<perlsub>.) 1247 1248=back 1249 1250=head3 L<perlfunc> 1251 1252=over 1253 1254=item * 1255 1256C<chop> and C<chomp> now note that they can reset the hash iterator. 1257 1258=item * 1259 1260C<exec>'s handling of arguments is now more clearly documented. 1261 1262=item * 1263 1264C<eval EXPR> now has caveats about expanding floating point numbers in some 1265locales. 1266 1267=item * 1268 1269C<goto EXPR> is now documented to handle an expression that evalutes to a 1270code reference as if it was C<goto &$coderef>. This behavior is at least ten 1271years old. 1272 1273=item * 1274 1275Since Perl v5.10, it has been possible for subroutines in C<@INC> to return 1276a reference to a scalar holding initial source code to prepend to the file. 1277This is now documented. 1278 1279=item * 1280 1281The documentation of C<ref> has been updated to recommend the use of 1282C<blessed>, C<isa> and C<reftype> when dealing with references to blessed 1283objects. 1284 1285=back 1286 1287=head3 L<perlguts> 1288 1289=over 4 1290 1291=item * 1292 1293Numerous minor changes have been made to reflect changes made to the perl 1294internals in this release. 1295 1296=item * 1297 1298New sections on L<Read-Only Values|perlguts/"Read-Only Values"> and 1299L<Copy on Write|perlguts/"Copy on Write"> have been added. 1300 1301=back 1302 1303=head3 L<perlhack> 1304 1305=over 4 1306 1307=item * 1308 1309The L<Super Quick Patch Guide|perlhack/SUPER QUICK PATCH GUIDE> section has 1310been updated. 1311 1312=back 1313 1314=head3 L<perlhacktips> 1315 1316=over 4 1317 1318=item * 1319 1320The documentation has been updated to include some more examples of C<gdb> 1321usage. 1322 1323=back 1324 1325=head3 L<perllexwarn> 1326 1327=over 4 1328 1329=item * 1330 1331The L<perllexwarn> documentation used to describe the hierarchy of warning 1332categories understood by the L<warnings> pragma. That description has now 1333been moved to the L<warnings> documentation itself, leaving L<perllexwarn> 1334as a stub that points to it. This change consolidates all documentation for 1335lexical warnings in a single place. 1336 1337=back 1338 1339=head3 L<perllocale> 1340 1341=over 1342 1343=item * 1344 1345The documentation now mentions F<fc()> and C<\F>, and includes many 1346clarifications and corrections in general. 1347 1348=back 1349 1350=head3 L<perlop> 1351 1352=over 4 1353 1354=item * 1355 1356The language design of Perl has always called for monomorphic operators. 1357This is now mentioned explicitly. 1358 1359=back 1360 1361=head3 L<perlopentut> 1362 1363=over 4 1364 1365=item * 1366 1367The C<open> tutorial has been completely rewritten by Tom Christiansen, and now 1368focuses on covering only the basics, rather than providing a comprehensive 1369reference to all things openable. This rewrite came as the result of a 1370vigorous discussion on perl5-porters kicked off by a set of improvements 1371written by Alexander Hartmaier to the existing L<perlopentut>. A "more than 1372you ever wanted to know about C<open>" document may follow in subsequent 1373versions of perl. 1374 1375=back 1376 1377=head3 L<perlre> 1378 1379=over 4 1380 1381=item * 1382 1383The fact that the regexp engine makes no effort to call (?{}) and (??{}) 1384constructs any specified number of times (although it will basically DWIM 1385in case of a successful match) has been documented. 1386 1387=item * 1388 1389The C</r> modifier (for non-destructive substitution) is now documented. [perl 1390#119151] 1391 1392=item * 1393 1394The documentation for C</x> and C<(?# comment)> has been expanded and clarified. 1395 1396=back 1397 1398=head3 L<perlreguts> 1399 1400=over 4 1401 1402=item * 1403 1404The documentation has been updated in the light of recent changes to 1405F<regcomp.c>. 1406 1407=back 1408 1409=head3 L<perlsub> 1410 1411=over 4 1412 1413=item * 1414 1415The need to predeclare recursive functions with prototypes in order for the 1416prototype to be honoured in the recursive call is now documented. [perl #2726] 1417 1418=item * 1419 1420A list of subroutine names used by the perl implementation is now included. 1421[perl #77680] 1422 1423=back 1424 1425=head3 L<perltrap> 1426 1427=over 4 1428 1429=item * 1430 1431There is now a L<JavaScript|perltrap/JavaScript Traps> section. 1432 1433=back 1434 1435=head3 L<perlunicode> 1436 1437=over 4 1438 1439=item * 1440 1441The documentation has been updated to reflect C<Bidi_Class> changes in 1442Unicode 6.3. 1443 1444=back 1445 1446=head3 L<perlvar> 1447 1448=over 4 1449 1450=item * 1451 1452A new section explaining the performance issues of $`, $& and $', including 1453workarounds and changes in different versions of Perl, has been added. 1454 1455=item * 1456 1457Three L<English> variable names which have long been documented but do not 1458actually exist have been removed from the documentation. These were 1459C<$OLD_PERL_VERSION>, C<$OFMT>, and C<$ARRAY_BASE>. 1460 1461(Actually, C<OLD_PERL_VERSION> I<does> exist, starting with this revision, but 1462remained undocumented until perl 5.22.0.) 1463 1464=back 1465 1466=head3 L<perlxs> 1467 1468=over 4 1469 1470=item * 1471 1472Several problems in the C<MY_CXT> example have been fixed. 1473 1474=back 1475 1476=head1 Diagnostics 1477 1478The following additions or changes have been made to diagnostic output, 1479including warnings and fatal error messages. For the complete list of 1480diagnostic messages, see L<perldiag>. 1481 1482=head2 New Diagnostics 1483 1484=head3 New Errors 1485 1486=over 4 1487 1488=item * 1489 1490L<delete argument is indexE<sol>value array slice, use array slice|perldiag/"delete argument is index/value array slice, use array slice"> 1491 1492(F) You used index/value array slice syntax (C<%array[...]>) as the argument to 1493C<delete>. You probably meant C<@array[...]> with an @ symbol instead. 1494 1495=item * 1496 1497L<delete argument is keyE<sol>value hash slice, use hash slice|perldiag/"delete argument is key/value hash slice, use hash slice"> 1498 1499(F) You used key/value hash slice syntax (C<%hash{...}>) as the argument to 1500C<delete>. You probably meant C<@hash{...}> with an @ symbol instead. 1501 1502=item * 1503 1504L<Magical list constants are not supported|perldiag/"Magical list constants are 1505not supported"> 1506 1507(F) You assigned a magical array to a stash element, and then tried to use the 1508subroutine from the same slot. You are asking Perl to do something it cannot 1509do, details subject to change between Perl versions. 1510 1511=item * 1512 1513Added L<Setting $E<sol> to a %s reference is forbidden|perldiag/"Setting $E<sol> to %s reference is forbidden"> 1514 1515=back 1516 1517=head3 New Warnings 1518 1519=over 4 1520 1521=item * 1522 1523L<%s on reference is experimental|perldiag/"push on reference is experimental">: 1524 1525The "auto-deref" feature is experimental. 1526 1527Starting in v5.14.0, it was possible to use push, pop, keys, and other 1528built-in functions not only on aggregate types, but on references to 1529them. The feature was not deployed to its original intended 1530specification, and now may become redundant to postfix dereferencing. 1531It has always been categorized as an experimental feature, and in 1532v5.20.0 is carries a warning as such. 1533 1534Warnings will now be issued at compile time when these operations are 1535detected. 1536 1537 no if $] >= 5.01908, warnings => "experimental::autoderef"; 1538 1539Consider, though, replacing the use of these features, as they may 1540change behavior again before becoming stable. 1541 1542=item * 1543 1544L<A sequence of multiple spaces in a charnames alias definition is deprecated|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated"> 1545 1546L<Trailing white-space in a charnames alias definition is deprecated|perldiag/"Trailing white-space in a charnames alias definition is deprecated"> 1547 1548These two deprecation warnings involving C<\N{...}> were incorrectly 1549implemented. They did not warn by default (now they do) and could not be 1550made fatal via C<< use warnings FATAL => 'deprecated' >> (now they can). 1551 1552=item * 1553 1554L<Attribute prototype(%s) discards earlier prototype attribute in same sub|perldiag/"Attribute prototype(%s) discards earlier prototype attribute in same sub"> 1555 1556(W misc) A sub was declared as C<sub foo : prototype(A) : prototype(B) {}>, for 1557example. Since each sub can only have one prototype, the earlier 1558declaration(s) are discarded while the last one is applied. 1559 1560=item * 1561 1562L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s"> 1563 1564(W syscalls) Embedded \0 characters in pathnames or other system call arguments 1565produce a warning as of 5.20. The parts after the \0 were formerly ignored by 1566system calls. 1567 1568=item * 1569 1570L<Matched non-Unicode code point 0x%X against Unicode property; may not be portable|perldiag/"Matched non-Unicode code point 0x%X against Unicode property; may not be portable">. 1571 1572This replaces the message "Code point 0x%X is not Unicode, all \p{} matches 1573fail; all \P{} matches succeed". 1574 1575=item * 1576 1577L<Missing ']' in prototype for %s : %s|perldiag/"Missing ']' in prototype for %s : %s"> 1578 1579(W illegalproto) A grouping was started with C<[> but never closed with C<]>. 1580 1581=item * 1582 1583L<Possible precedence issue with control flow operator|perldiag/"Possible precedence issue with control flow operator"> 1584 1585(W syntax) There is a possible problem with the mixing of a control flow 1586operator (e.g. C<return>) and a low-precedence operator like C<or>. Consider: 1587 1588 sub { return $a or $b; } 1589 1590This is parsed as: 1591 1592 sub { (return $a) or $b; } 1593 1594Which is effectively just: 1595 1596 sub { return $a; } 1597 1598Either use parentheses or the high-precedence variant of the operator. 1599 1600Note this may be also triggered for constructs like: 1601 1602 sub { 1 if die; } 1603 1604=item * 1605 1606L<Postfix dereference is experimental|perldiag/"Postfix dereference is experimental"> 1607 1608(S experimental::postderef) This warning is emitted if you use the experimental 1609postfix dereference syntax. Simply suppress the warning if you want to use the 1610feature, but know that in doing so you are taking the risk of using an 1611experimental feature which may change or be removed in a future Perl version: 1612 1613 no warnings "experimental::postderef"; 1614 use feature "postderef", "postderef_qq"; 1615 $ref->$*; 1616 $aref->@*; 1617 $aref->@[@indices]; 1618 ... etc ... 1619 1620=item * 1621 1622L<Prototype '%s' overridden by attribute 'prototype(%s)' in %s|perldiag/"Prototype '%s' overridden by attribute 'prototype(%s)' in %s"> 1623 1624(W prototype) A prototype was declared in both the parentheses after the sub 1625name and via the prototype attribute. The prototype in parentheses is useless, 1626since it will be replaced by the prototype from the attribute before it's ever 1627used. 1628 1629=item * 1630 1631L<Scalar value @%s[%s] better written as $%s[%s]|perldiag/"Scalar value @%s[%s] better written as $%s[%s]"> 1632 1633(W syntax) In scalar context, you've used an array index/value slice (indicated 1634by %) to select a single element of an array. Generally it's better to ask for 1635a scalar value (indicated by $). The difference is that C<$foo[&bar]> always 1636behaves like a scalar, both in the value it returns and when evaluating its 1637argument, while C<%foo[&bar]> provides a list context to its subscript, which 1638can do weird things if you're expecting only one subscript. When called in 1639list context, it also returns the index (what C<&bar> returns) in addition to 1640the value. 1641 1642=item * 1643 1644L<Scalar value @%s{%s} better written as $%s{%s}|perldiag/"Scalar value @%s{%s} better written as $%s{%s}"> 1645 1646(W syntax) In scalar context, you've used a hash key/value slice (indicated by 1647%) to select a single element of a hash. Generally it's better to ask for a 1648scalar value (indicated by $). The difference is that C<$foo{&bar}> always 1649behaves like a scalar, both in the value it returns and when evaluating its 1650argument, while C<@foo{&bar}> and provides a list context to its subscript, 1651which can do weird things if you're expecting only one subscript. When called 1652in list context, it also returns the key in addition to the value. 1653 1654=item * 1655 1656L<Setting $E<sol> to a reference to %s as a form of slurp is deprecated, treating as undef|perldiag/"Setting $E<sol> to a reference to %s as a form of slurp is deprecated, treating as undef"> 1657 1658=item * 1659 1660L<Unexpected exit %u|perldiag/"Unexpected exit %u"> 1661 1662(S) exit() was called or the script otherwise finished gracefully when 1663C<PERL_EXIT_WARN> was set in C<PL_exit_flags>. 1664 1665=item * 1666 1667L<Unexpected exit failure %d|perldiag/"Unexpected exit failure %d"> 1668 1669(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in 1670C<PL_exit_flags>. 1671 1672=item * 1673 1674L<Use of literal control characters in variable names is deprecated|perldiag/"Use of literal control characters in variable names is deprecated"> 1675 1676(D deprecated) Using literal control characters in the source to refer to the 1677^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated. This only 1678affects code like $\cT, where \cT is a control (like a C<SOH>) in the 1679source code: ${"\cT"} and $^T remain valid. 1680 1681=item * 1682 1683L<Useless use of greediness modifier|perldiag/"Useless use of greediness modifier '%c' in regex; marked by <-- HERE in m/%s/"> 1684 1685This fixes [Perl #42957]. 1686 1687=back 1688 1689=head2 Changes to Existing Diagnostics 1690 1691=over 4 1692 1693=item * 1694 1695Warnings and errors from the regexp engine are now UTF-8 clean. 1696 1697=item * 1698 1699The "Unknown switch condition" error message has some slight changes. This 1700error triggers when there is an unknown condition in a C<(?(foo))> conditional. 1701The error message used to read: 1702 1703 Unknown switch condition (?(%s in regex; 1704 1705But what %s could be was mostly up to luck. For C<(?(foobar))>, you might have 1706seen "fo" or "f". For Unicode characters, you would generally get a corrupted 1707string. The message has been changed to read: 1708 1709 Unknown switch condition (?(...)) in regex; 1710 1711Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the 1712correct spot in the regex. 1713 1714=item * 1715 1716The "%s "\x%X" does not map to Unicode" warning is now correctly listed as a 1717severe warning rather than as a fatal error. 1718 1719=item * 1720 1721Under rare circumstances, one could get a "Can't coerce readonly REF to 1722string" instead of the customary "Modification of a read-only value". This 1723alternate error message has been removed. 1724 1725=item * 1726 1727"Ambiguous use of * resolved as operator *": This and similar warnings 1728about "%" and "&" used to occur in some circumstances where there was no 1729operator of the type cited, so the warning was completely wrong. This has 1730been fixed [perl #117535, #76910]. 1731 1732=item * 1733 1734Warnings about malformed subroutine prototypes are now more consistent in 1735how the prototypes are rendered. Some of these warnings would truncate 1736prototypes containing nulls. In other cases one warning would suppress 1737another. The warning about illegal characters in prototypes no longer says 1738"after '_'" if the bad character came before the underscore. 1739 1740=item * 1741 1742L<Perl folding rules are not up-to-date for 0x%X; please use the perlbug 1743utility to report; in regex; marked by <-- HERE in 1744mE<sol>%sE<sol>|perldiag/"Perl folding rules are not up-to-date for 0x%X; 1745please use the perlbug utility to report; in regex; marked by <-- HERE in 1746m/%s/"> 1747 1748This message is now only in the regexp category, and not in the deprecated 1749category. It is still a default (i.e., severe) warning [perl #89648]. 1750 1751=item * 1752 1753L<%%s[%s] in scalar context better written as $%s[%s]|perldiag/"%%s[%s] in scalar context better written as $%s[%s]"> 1754 1755This warning now occurs for any C<%array[$index]> or C<%hash{key}> known to 1756be in scalar context at compile time. Previously it was worded "Scalar 1757value %%s[%s] better written as $%s[%s]". 1758 1759=item * 1760 1761L<Switch condition not recognized in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Switch condition not recognized in regex; marked by <-- HERE in m/%s/">: 1762 1763The description for this diagnostic has been extended to cover all cases where the warning may occur. 1764Issues with the positioning of the arrow indicator have also been resolved. 1765 1766=item * 1767 1768The error messages for C<my($a?$b$c)> and C<my(do{})> now mention "conditional 1769expression" and "do block", respectively, instead of reading 'Can't declare 1770null operation in "my"'. 1771 1772=item * 1773 1774When C<use re "debug"> executes a regex containing a backreference, the 1775debugging output now shows what string is being matched. 1776 1777=item * 1778 1779The now fatal error message C<Character following "\c" must be ASCII> has been 1780reworded as C<Character following "\c" must be printable ASCII> to emphasize 1781that in C<\cI<X>>, I<X> must be a I<printable (non-control)> ASCII character. 1782 1783=back 1784 1785=head1 Utility Changes 1786 1787=head3 L<a2p> 1788 1789=over 4 1790 1791=item * 1792 1793A possible crash from an off-by-one error when trying to access before the 1794beginning of a buffer has been fixed. [perl #120244] 1795 1796=back 1797 1798=head3 F<bisect.pl> 1799 1800The git bisection tool F<Porting/bisect.pl> has had many enhancements. 1801 1802It is provided as part of the source distribution but not installed because 1803it is not self-contained as it relies on being run from within a git 1804checkout. Note also that it makes no attempt to fix tests, correct runtime 1805bugs or make something useful to install - its purpose is to make minimal 1806changes to get any historical revision of interest to build and run as close 1807as possible to "as-was", and thereby make C<git bisect> easy to use. 1808 1809=over 4 1810 1811=item * 1812 1813Can optionally run the test case with a timeout. 1814 1815=item * 1816 1817Can now run in-place in a clean git checkout. 1818 1819=item * 1820 1821Can run the test case under C<valgrind>. 1822 1823=item * 1824 1825Can apply user supplied patches and fixes to the source checkout before 1826building. 1827 1828=item * 1829 1830Now has fixups to enable building several more historical ranges of bleadperl, 1831which can be useful for pinpointing the origins of bugs or behaviour changes. 1832 1833=back 1834 1835=head3 L<find2perl> 1836 1837=over 4 1838 1839=item * 1840 1841L<find2perl> now handles C<?> wildcards correctly. [perl #113054] 1842 1843=back 1844 1845=head3 L<perlbug> 1846 1847=over 4 1848 1849=item * 1850 1851F<perlbug> now has a C<-p> option for attaching patches with a bug report. 1852 1853=item * 1854 1855L<perlbug> has been modified to supply the report template with CRLF line 1856endings on Windows. 1857L<[GH #13612]|https://github.com/Perl/perl5/issues/13612> 1858 1859=item * 1860 1861L<perlbug> now makes as few assumptions as possible about the encoding of the 1862report. This will likely change in the future to assume UTF-8 by default but 1863allow a user override. 1864 1865=back 1866 1867=head1 Configuration and Compilation 1868 1869=over 4 1870 1871=item * 1872 1873The F<Makefile.PL> for L<SDBM_File> now generates a better F<Makefile>, which 1874avoids a race condition during parallel makes, which could cause the build to 1875fail. This is the last known parallel make problem (on *nix platforms), and 1876therefore we believe that a parallel make should now always be error free. 1877 1878=item * 1879 1880F<installperl> and F<installman>'s option handling has been refactored to use 1881L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and 1882are not installed, so these changes are only likely to affect custom 1883installation scripts. 1884 1885=over 4 1886 1887=item * 1888 1889Single letter options now also have long names. 1890 1891=item * 1892 1893Invalid options are now rejected. 1894 1895=item * 1896 1897Command line arguments that are not options are now rejected. 1898 1899=item * 1900 1901Each now has a C<--help> option to display the usage message. 1902 1903=back 1904 1905The behaviour for all valid documented invocations is unchanged. 1906 1907=item * 1908 1909Where possible, the build now avoids recursive invocations of F<make> when 1910building pure-Perl extensions, without removing any parallelism from the 1911build. Currently around 80 extensions can be processed directly by the 1912F<make_ext.pl> tool, meaning that 80 invocations of F<make> and 160 1913invocations of F<miniperl> are no longer made. 1914 1915=item * 1916 1917The build system now works correctly when compiling under GCC or Clang with 1918link-time optimization enabled (the C<-flto> option). [perl #113022] 1919 1920=item * 1921 1922Distinct library basenames with C<d_libname_unique>. 1923 1924When compiling perl with this option, the library files for XS modules are 1925named something "unique" -- for example, Hash/Util/Util.so becomes 1926Hash/Util/PL_Hash__Util.so. This behavior is similar to what currently 1927happens on VMS, and serves as groundwork for the Android port. 1928 1929=item * 1930 1931C<sysroot> option to indicate the logical root directory under gcc and clang. 1932 1933When building with this option set, both Configure and the compilers search 1934for all headers and libraries under this new sysroot, instead of /. 1935 1936This is a huge time saver if cross-compiling, but can also help 1937on native builds if your toolchain's files have non-standard locations. 1938 1939=item * 1940 1941The cross-compilation model has been renovated. 1942There's several new options, and some backwards-incompatible changes: 1943 1944We now build binaries for miniperl and generate_uudmap to be used on the host, 1945rather than running every miniperl call on the target; this means that, short 1946of 'make test', we no longer need access to the target system once Configure is 1947done. You can provide already-built binaries through the C<hostperl> and 1948C<hostgenerate> options to Configure. 1949 1950Additionally, if targeting an EBCDIC platform from an ASCII host, 1951or viceversa, you'll need to run Configure with C<-Uhostgenerate>, to 1952indicate that generate_uudmap should be run on the target. 1953 1954Finally, there's also a way of having Configure end early, right after 1955building the host binaries, by cross-compiling without specifying a 1956C<targethost>. 1957 1958The incompatible changes include no longer using xconfig.h, xlib, or 1959Cross.pm, so canned config files and Makefiles will have to be updated. 1960 1961=item * 1962 1963Related to the above, there is now a way of specifying the location of sh 1964(or equivalent) on the target system: C<targetsh>. 1965 1966For example, Android has its sh in /system/bin/sh, so if cross-compiling 1967from a more normal Unixy system with sh in /bin/sh, "targetsh" would end 1968up as /system/bin/sh, and "sh" as /bin/sh. 1969 1970=item * 1971 1972By default, B<gcc> 4.9 does some optimizations that break perl. The B<-fwrapv> 1973option disables those optimizations (and probably others), so for B<gcc> 4.3 1974and later (since the there might be similar problems lurking on older versions 1975too, but B<-fwrapv> was broken before 4.3, and the optimizations probably won't 1976go away), F<Configure> now adds B<-fwrapv> unless the user requests 1977B<-fno-wrapv>, which disables B<-fwrapv>, or B<-fsanitize=undefined>, which 1978turns the overflows B<-fwrapv> ignores into runtime errors. 1979L<[GH #13690]|https://github.com/Perl/perl5/issues/13690> 1980 1981=back 1982 1983=head1 Testing 1984 1985=over 4 1986 1987=item * 1988 1989The C<test.valgrind> make target now allows tests to be run in parallel. 1990This target allows Perl's test suite to be run under Valgrind, which detects 1991certain sorts of C programming errors, though at significant cost in running 1992time. On suitable hardware, allowing parallel execution claws back a lot of 1993that additional cost. [perl #121431] 1994 1995=item * 1996 1997Various tests in F<t/porting/> are no longer skipped when the perl 1998F<.git> directory is outside the perl tree and pointed to by 1999C<$GIT_DIR>. [perl #120505] 2000 2001=item * 2002 2003The test suite no longer fails when the user's interactive shell maintains a 2004C<$PWD> environment variable, but the F</bin/sh> used for running tests 2005doesn't. 2006 2007=back 2008 2009=head1 Platform Support 2010 2011=head2 New Platforms 2012 2013=over 4 2014 2015=item Android 2016 2017Perl can now be built for Android, either natively or through 2018cross-compilation, for all three currently available architectures (ARM, 2019MIPS, and x86), on a wide range of versions. 2020 2021=item Bitrig 2022 2023Compile support has been added for Bitrig, a fork of OpenBSD. 2024 2025=item FreeMiNT 2026 2027Support has been added for FreeMiNT, a free open-source OS for the Atari ST 2028system and its successors, based on the original MiNT that was officially 2029adopted by Atari. 2030 2031=item Synology 2032 2033Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative 2034cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ 2035P1022 ppc - e500v2) not meant for workstations or development. These boxes 2036should build now. The basic problems are the non-standard location for tools. 2037 2038=back 2039 2040=head2 Discontinued Platforms 2041 2042=over 4 2043 2044=item C<sfio> 2045 2046Code related to supporting the C<sfio> I/O system has been removed. 2047 2048Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast 2049I/O library. This code still built with v5.8.0, albeit with many regression 2050tests failing, but was inadvertently broken before the v5.8.1 release, 2051meaning that it has not worked on any version of Perl released since then. 2052In over a decade we have received no bug reports about this, hence it is clear 2053that no-one is using this functionality on any version of Perl that is still 2054supported to any degree. 2055 2056=item AT&T 3b1 2057 2058Configure support for the 3b1, also known as the AT&T Unix PC (and the similar 2059AT&T 7300), has been removed. 2060 2061=item DG/UX 2062 2063DG/UX was a Unix sold by Data General. The last release was in April 2001. 2064It only runs on Data General's own hardware. 2065 2066=item EBCDIC 2067 2068In the absence of a regular source of smoke reports, code intended to support 2069native EBCDIC platforms will be removed from perl before 5.22.0. 2070 2071=back 2072 2073=head2 Platform-Specific Notes 2074 2075=over 4 2076 2077=item Cygwin 2078 2079=over 4 2080 2081=item * 2082 2083recv() on a connected handle would populate the returned sender 2084address with whatever happened to be in the working buffer. recv() 2085now uses a workaround similar to the Win32 recv() wrapper and returns 2086an empty string when recvfrom(2) doesn't modify the supplied address 2087length. [perl #118843] 2088 2089=item * 2090 2091Fixed a build error in cygwin.c on Cygwin 1.7.28. 2092 2093Tests now handle the errors that occur when C<cygserver> isn't 2094running. 2095 2096=back 2097 2098=item GNU/Hurd 2099 2100The BSD compatibility library C<libbsd> is no longer required for builds. 2101 2102=item Linux 2103 2104The hints file now looks for C<libgdbm_compat> only if C<libgdbm> itself is 2105also wanted. The former is never useful without the latter, and in some 2106circumstances, including it could actually prevent building. 2107 2108=item Mac OS 2109 2110The build system now honors an C<ld> setting supplied by the user running 2111F<Configure>. 2112 2113=item MidnightBSD 2114 2115C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been 2116deprecated on earlier versions. This caused the build environment to be 2117erroneously configured for C<a.out> rather than C<elf>. This has been now 2118been corrected. 2119 2120=item Mixed-endian platforms 2121 2122The code supporting C<pack> and C<unpack> operations on mixed endian 2123platforms has been removed. We believe that Perl has long been unable to 2124build on mixed endian architectures (such as PDP-11s), so we don't think 2125that this change will affect any platforms which were able to build v5.18.0. 2126 2127=item VMS 2128 2129=over 4 2130 2131=item * 2132 2133The C<PERL_ENV_TABLES> feature to control the population of %ENV at perl 2134start-up was broken in Perl 5.16.0 but has now been fixed. 2135 2136=item * 2137 2138Skip access checks on remotes in opendir(). [perl #121002] 2139 2140=item * 2141 2142A check for glob metacharacters in a path returned by the 2143L<C<glob()>|perlfunc/glob> operator has been replaced with a check for VMS 2144wildcard characters. This saves a significant number of unnecessary 2145L<C<lstat()>|perlfunc/lstat> calls such that some simple glob operations become 214660-80% faster. 2147 2148=back 2149 2150=item Win32 2151 2152=over 4 2153 2154=item * 2155 2156C<rename> and C<link> on Win32 now set $! to ENOSPC and EDQUOT when 2157appropriate. [perl #119857] 2158 2159=item * 2160 2161The BUILD_STATIC and ALL_STATIC makefile options for linking some or (nearly) 2162all extensions statically (into perl520.dll, and into a separate 2163perl-static.exe too) were broken for MinGW builds. This has now been fixed. 2164 2165The ALL_STATIC option has also been improved to include the Encode and Win32 2166extensions (for both VC++ and MinGW builds). 2167 2168=item * 2169 2170Support for building with Visual C++ 2013 has been added. There are currently 2171two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which 2172will hopefully be resolved soon. 2173 2174=item * 2175 2176Experimental support for building with Intel C++ Compiler has been added. The 2177nmake makefile (win32/Makefile) and the dmake makefile (win32/makefile.mk) can 2178be used. A "nmake test" will not pass at this time due to F<cpan/CGI/t/url.t>. 2179 2180=item * 2181 2182Killing a process tree with L<perlfunc/kill> and a negative signal, was broken 2183starting in 5.18.0. In this bug, C<kill> always returned 0 for a negative 2184signal even for valid PIDs, and no processes were terminated. This has been 2185fixed [perl #121230]. 2186 2187=item * 2188 2189The time taken to build perl on Windows has been reduced quite significantly 2190(time savings in the region of 30-40% are typically seen) by reducing the 2191number of, usually failing, I/O calls for each L<C<require()>|perlfunc/require> 2192(for B<miniperl.exe> only). 2193L<[GH #13566]|https://github.com/Perl/perl5/issues/13566> 2194 2195=item * 2196 2197About 15 minutes of idle sleeping was removed from running C<make test> due to 2198a bug in which the timeout monitor used for tests could not be cancelled once 2199the test completes, and the full timeout period elapsed before running the next 2200test file. 2201L<[GH #13647]|https://github.com/Perl/perl5/issues/13647> 2202 2203=item * 2204 2205On a perl built without pseudo-fork (pseudo-fork builds were not affected by 2206this bug), killing a process tree with L<C<kill()>|perlfunc/kill> and a negative 2207signal resulted in C<kill()> inverting the returned value. For example, if 2208C<kill()> killed 1 process tree PID then it returned 0 instead of 1, and if 2209C<kill()> was passed 2 invalid PIDs then it returned 2 instead of 0. This has 2210probably been the case since the process tree kill feature was implemented on 2211Win32. It has now been corrected to follow the documented behaviour. 2212L<[GH #13595]|https://github.com/Perl/perl5/issues/13595> 2213 2214=item * 2215 2216When building a 64-bit perl, an uninitialized memory read in B<miniperl.exe>, 2217used during the build process, could lead to a 4GB B<wperl.exe> being created. 2218This has now been fixed. (Note that B<perl.exe> itself was unaffected, but 2219obviously B<wperl.exe> would have been completely broken.) 2220L<[GH #13677]|https://github.com/Perl/perl5/issues/13677> 2221 2222=item * 2223 2224Perl can now be built with B<gcc> version 4.8.1 from L<http://www.mingw.org>. 2225This was previously broken due to an incorrect definition of DllMain() in one 2226of perl's source files. Earlier B<gcc> versions were also affected when using 2227version 4 of the w32api package. Versions of B<gcc> available from 2228L<http://mingw-w64.sourceforge.net/> were not affected. 2229L<[GH #13733]|https://github.com/Perl/perl5/issues/13733> 2230 2231=item * 2232 2233The test harness now has no failures when perl is built on a FAT drive with the 2234Windows OS on an NTFS drive. 2235L<[GH #6348]|https://github.com/Perl/perl5/issues/6348> 2236 2237=item * 2238 2239When cloning the context stack in fork() emulation, Perl_cx_dup() 2240would crash accessing parameter information for context stack entries 2241that included no parameters, as with C<&foo;>. 2242L<[GH #13763]|https://github.com/Perl/perl5/issues/13763> 2243 2244=item * 2245 2246Introduced by 2247L<[GH #12161]|https://github.com/Perl/perl5/issues/12161>, a memory 2248leak on every call to C<system> and backticks (C< `` >), on most Win32 Perls 2249starting from 5.18.0 has been fixed. The memory leak only occurred if you 2250enabled pseudo-fork in your build of Win32 Perl, and were running that build on 2251Server 2003 R2 or newer OS. The leak does not appear on WinXP SP3. 2252L<[GH #13741]|https://github.com/Perl/perl5/issues/13741> 2253 2254=back 2255 2256=item WinCE 2257 2258=over 4 2259 2260=item * 2261 2262The building of XS modules has largely been restored. Several still cannot 2263(yet) be built but it is now possible to build Perl on WinCE with only a couple 2264of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be 2265incorporated soon. 2266 2267=item * 2268 2269Perl can now be built in one shot with no user intervention on WinCE by running 2270C<nmake -f Makefile.ce all>. 2271 2272Support for building with EVC (Embedded Visual C++) 4 has been restored. Perl 2273can also be built using Smart Devices for Visual C++ 2005 or 2008. 2274 2275=back 2276 2277=back 2278 2279=head1 Internal Changes 2280 2281=over 4 2282 2283=item * 2284 2285The internal representation has changed for the match variables $1, $2 etc., 2286$`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It uses slightly less 2287memory, avoids string comparisons and numeric conversions during lookup, and 2288uses 23 fewer lines of C. This change should not affect any external code. 2289 2290=item * 2291 2292Arrays now use NULL internally to represent unused slots, instead of 2293&PL_sv_undef. &PL_sv_undef is no longer treated as a special value, so 2294av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a 2295read-only undefined scalar. C<$array[0] = anything> will croak and 2296C<\$array[0]> will compare equal to C<\undef>. 2297 2298=item * 2299 2300The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the 2301underlying hash key when that key is not stored as a SV. [perl #79074] 2302 2303=item * 2304 2305Certain rarely used functions and macros available to XS code are now 2306deprecated. These are: 2307C<utf8_to_uvuni_buf> (use C<utf8_to_uvchr_buf> instead), 2308C<valid_utf8_to_uvuni> (use C<utf8_to_uvchr_buf> instead), 2309C<NATIVE_TO_NEED> (this did not work properly anyway), 2310and C<ASCII_TO_NEED> (this did not work properly anyway). 2311 2312Starting in this release, almost never does application code need to 2313distinguish between the platform's character set and Latin1, on which the 2314lowest 256 characters of Unicode are based. New code should not use 2315C<utf8n_to_uvuni> (use C<utf8_to_uvchr_buf> instead), 2316nor 2317C<uvuni_to_utf8> (use C<uvchr_to_utf8> instead), 2318 2319=item * 2320 2321The Makefile shortcut targets for many rarely (or never) used testing and 2322profiling targets have been removed, or merged into the only other Makefile 2323target that uses them. Specifically, these targets are gone, along with 2324documentation that referenced them or explained how to use them: 2325 2326 check.third check.utf16 check.utf8 coretest minitest.prep 2327 minitest.utf16 perl.config.dashg perl.config.dashpg 2328 perl.config.gcov perl.gcov perl.gprof perl.gprof.config 2329 perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix 2330 perl.third perl.third.config perl.valgrind.config purecovperl 2331 pureperl quantperl test.deparse test.taintwarn test.third 2332 test.torture test.utf16 test.utf8 test_notty.deparse 2333 test_notty.third test_notty.valgrind test_prep.third 2334 test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16 2335 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind 2336 2337It's still possible to run the relevant commands by "hand" - no underlying 2338functionality has been removed. 2339 2340=item * 2341 2342It is now possible to keep Perl from initializing locale handling. 2343For the most part, Perl doesn't pay attention to locale. (See 2344L<perllocale>.) Nonetheless, until now, on startup, it has always 2345initialized locale handling to the system default, just in case the 2346program being executed ends up using locales. (This is one of the first 2347things a locale-aware program should do, long before Perl knows if it 2348will actually be needed or not.) This works well except when Perl is 2349embedded in another application which wants a locale that isn't the 2350system default. Now, if the environment variable 2351C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this 2352initialization step is skipped. Prior to this, on Windows platforms, 2353the only workaround for this deficiency was to use a hacked-up copy of 2354internal Perl code. Applications that need to use older Perls can 2355discover if the embedded Perl they are using needs the workaround by 2356testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not 2357defined. [RT #38193] 2358 2359=item * 2360 2361C<BmRARE> and C<BmPREVIOUS> have been removed. They were not used anywhere 2362and are not part of the API. For XS modules, they are now #defined as 0. 2363 2364=item * 2365 2366C<sv_force_normal>, which usually croaks on read-only values, used to allow 2367read-only values to be modified at compile time. This has been changed to 2368croak on read-only values regardless. This change uncovered several core 2369bugs. 2370 2371=item * 2372 2373Perl's new copy-on-write mechanism (which is now enabled by default), 2374allows any C<SvPOK> scalar to be automatically upgraded to a copy-on-write 2375scalar when copied. A reference count on the string buffer is stored in 2376the string buffer itself. 2377 2378For example: 2379 2380 $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b' 2381 SV = PV(0x260cd80) at 0x2620ad8 2382 REFCNT = 1 2383 FLAGS = (POK,IsCOW,pPOK) 2384 PV = 0x2619bc0 "abc"\0 2385 CUR = 3 2386 LEN = 16 2387 COW_REFCNT = 1 2388 SV = PV(0x260ce30) at 0x2620b20 2389 REFCNT = 1 2390 FLAGS = (POK,IsCOW,pPOK) 2391 PV = 0x2619bc0 "abc"\0 2392 CUR = 3 2393 LEN = 16 2394 COW_REFCNT = 1 2395 2396Note that both scalars share the same PV buffer and have a COW_REFCNT 2397greater than zero. 2398 2399This means that XS code which wishes to modify the C<SvPVX()> buffer of an 2400SV should call C<SvPV_force()> or similar first, to ensure a valid (and 2401unshared) buffer, and to call C<SvSETMAGIC()> afterwards. This in fact has 2402always been the case (for example hash keys were already copy-on-write); 2403this change just spreads the COW behaviour to a wider variety of SVs. 2404 2405One important difference is that before 5.18.0, shared hash-key scalars 2406used to have the C<SvREADONLY> flag set; this is no longer the case. 2407 2408This new behaviour can still be disabled by running F<Configure> with 2409B<-Accflags=-DPERL_NO_COW>. This option will probably be removed in Perl 24105.22. 2411 2412=item * 2413 2414C<PL_sawampersand> is now a constant. The switch this variable provided 2415(to enable/disable the pre-match copy depending on whether C<$&> had been 2416seen) has been removed and replaced with copy-on-write, eliminating a few 2417bugs. 2418 2419The previous behaviour can still be enabled by running F<Configure> with 2420B<-Accflags=-DPERL_SAWAMPERSAND>. 2421 2422=item * 2423 2424The functions C<my_swap>, C<my_htonl> and C<my_ntohl> have been removed. 2425It is unclear why these functions were ever marked as I<A>, part of the 2426API. XS code can't call them directly, as it can't rely on them being 2427compiled. Unsurprisingly, no code on CPAN references them. 2428 2429=item * 2430 2431The signature of the C<Perl_re_intuit_start()> regex function has changed; 2432the function pointer C<intuit> in the regex engine plugin structure 2433has also changed accordingly. A new parameter, C<strbeg> has been added; 2434this has the same meaning as the same-named parameter in 2435C<Perl_regexec_flags>. Previously intuit would try to guess the start of 2436the string from the passed SV (if any), and would sometimes get it wrong 2437(e.g. with an overloaded SV). 2438 2439=item * 2440 2441The signature of the C<Perl_regexec_flags()> regex function has 2442changed; the function pointer C<exec> in the regex engine plugin 2443structure has also changed to match. The C<minend> parameter now has 2444type C<SSize_t> to better support 64-bit systems. 2445 2446=item * 2447 2448XS code may use various macros to change the case of a character or code 2449point (for example C<toLOWER_utf8()>). Only a couple of these were 2450documented until now; 2451and now they should be used in preference to calling the underlying 2452functions. See L<perlapi/Character case changing>. 2453 2454=item * 2455 2456The code dealt rather inconsistently with uids and gids. Some 2457places assumed that they could be safely stored in UVs, others 2458in IVs, others in ints. Four new macros are introduced: 2459SvUID(), sv_setuid(), SvGID(), and sv_setgid() 2460 2461=item * 2462 2463C<sv_pos_b2u_flags> has been added to the API. It is similar to C<sv_pos_b2u>, 2464but supports long strings on 64-bit platforms. 2465 2466=item * 2467 2468C<PL_exit_flags> can now be used by perl embedders or other XS code to have 2469perl C<warn> or C<abort> on an attempted exit. [perl #52000] 2470 2471=item * 2472 2473Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++ 2474compilers to emulate the aliasing of C<bool> to C<char> that perl does for 2475C89 compilers. [perl #120314] 2476 2477=item * 2478 2479The C<sv> argument in L<perlapi/sv_2pv_flags>, L<perlapi/sv_2iv_flags>, 2480L<perlapi/sv_2uv_flags>, and L<perlapi/sv_2nv_flags> and their older wrappers 2481sv_2pv, sv_2iv, sv_2uv, sv_2nv, is now non-NULL. Passing NULL now will crash. 2482When the non-NULL marker was introduced en masse in 5.9.3 the functions 2483were marked non-NULL, but since the creation of the SV API in 5.0 alpha 2, if 2484NULL was passed, the functions returned 0 or false-type values. The code that 2485supports C<sv> argument being non-NULL dates to 5.0 alpha 2 directly, and 2486indirectly to Perl 1.0 (pre 5.0 api). The lack of documentation that the 2487functions accepted a NULL C<sv> was corrected in 5.11.0 and between 5.11.0 2488and 5.19.5 the functions were marked NULLOK. As an optimization the NULLOK code 2489has now been removed, and the functions became non-NULL marked again, because 2490core getter-type macros never pass NULL to these functions and would crash 2491before ever passing NULL. 2492 2493The only way a NULL C<sv> can be passed to sv_2*v* functions is if XS code 2494directly calls sv_2*v*. This is unlikely as XS code uses Sv*V* macros to get 2495the underlying value out of the SV. One possible situation which leads to 2496a NULL C<sv> being passed to sv_2*v* functions, is if XS code defines its own 2497getter type Sv*V* macros, which check for NULL B<before> dereferencing and 2498checking the SV's flags through public API Sv*OK* macros or directly using 2499private API C<SvFLAGS>, and if C<sv> is NULL, then calling the sv_2*v functions 2500with a NULL literal or passing the C<sv> containing a NULL value. 2501 2502=item * 2503 2504newATTRSUB is now a macro 2505 2506The public API newATTRSUB was previously a macro to the private 2507function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB 2508is now macro to a different internal function. 2509 2510=item * 2511 2512Changes in warnings raised by C<utf8n_to_uvchr()> 2513 2514This bottom level function decodes the first character of a UTF-8 string 2515into a code point. It is accessible to C<XS> level code, but it's 2516discouraged from using it directly. There are higher level functions 2517that call this that should be used instead, such as 2518L<perlapi/utf8_to_uvchr_buf>. For completeness though, this documents 2519some changes to it. Now, tests for malformations are done before any 2520tests for other potential issues. One of those issues involves code 2521points so large that they have never appeared in any official standard 2522(the current standard has scaled back the highest acceptable code point 2523from earlier versions). It is possible (though not done in CPAN) to 2524warn and/or forbid these code points, while accepting smaller code 2525points that are still above the legal Unicode maximum. The warning 2526message for this now includes the code point if representable on the 2527machine. Previously it always displayed raw bytes, which is what it 2528still does for non-representable code points. 2529 2530=item * 2531 2532Regexp engine changes that affect the pluggable regex engine interface 2533 2534Many flags that used to be exposed via regexp.h and used to populate the 2535extflags member of struct regexp have been removed. These fields were 2536technically private to Perl's own regexp engine and should not have been 2537exposed there in the first place. 2538 2539The affected flags are: 2540 2541 RXf_NOSCAN 2542 RXf_CANY_SEEN 2543 RXf_GPOS_SEEN 2544 RXf_GPOS_FLOAT 2545 RXf_ANCH_BOL 2546 RXf_ANCH_MBOL 2547 RXf_ANCH_SBOL 2548 RXf_ANCH_GPOS 2549 2550As well as the follow flag masks: 2551 2552 RXf_ANCH_SINGLE 2553 RXf_ANCH 2554 2555All have been renamed to PREGf_ equivalents and moved to regcomp.h. 2556 2557The behavior previously achieved by setting one or more of the RXf_ANCH_ 2558flags (via the RXf_ANCH mask) have now been replaced by a *single* flag bit 2559in extflags: 2560 2561 RXf_IS_ANCHORED 2562 2563pluggable regex engines which previously used to set these flags should 2564now set this flag ALONE. 2565 2566=item * 2567 2568The Perl core now consistently uses C<av_tindex()> ("the top index of an 2569array") as a more clearly-named synonym for C<av_len()>. 2570 2571=item * 2572 2573The obscure interpreter variable C<PL_timesbuf> is expected to be removed 2574early in the 5.21.x development series, so that Perl 5.22.0 will not provide 2575it to XS authors. While the variable still exists in 5.20.0, we hope that 2576this advance warning of the deprecation will help anyone who is using that 2577variable. 2578 2579=back 2580 2581=head1 Selected Bug Fixes 2582 2583=head2 Regular Expressions 2584 2585=over 4 2586 2587=item * 2588 2589Fixed a small number of regexp constructions that could either fail to 2590match or crash perl when the string being matched against was 2591allocated above the 2GB line on 32-bit systems. [RT #118175] 2592 2593=item * 2594 2595Various memory leaks involving the parsing of the C<(?[...])> regular 2596expression construct have been fixed. 2597 2598=item * 2599 2600C<(?[...])> now allows interpolation of precompiled patterns consisting of 2601C<(?[...])> with bracketed character classes inside (C<$pat = 2602S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>). Formerly, the brackets would 2603confuse the regular expression parser. 2604 2605=item * 2606 2607The "Quantifier unexpected on zero-length expression" warning message could 2608appear twice starting in Perl v5.10 for a regular expression also 2609containing alternations (e.g., "a|b") triggering the trie optimisation. 2610 2611=item * 2612 2613Perl v5.18 inadvertently introduced a bug whereby interpolating mixed up- 2614and down-graded UTF-8 strings in a regex could result in malformed UTF-8 2615in the pattern: specifically if a downgraded character in the range 2616C<\x80..\xff> followed a UTF-8 string, e.g. 2617 2618 utf8::upgrade( my $u = "\x{e5}"); 2619 utf8::downgrade(my $d = "\x{e5}"); 2620 /$u$d/ 2621 2622[RT #118297] 2623 2624=item * 2625 2626In regular expressions containing multiple code blocks, the values of 2627C<$1>, C<$2>, etc., set by nested regular expression calls would leak from 2628one block to the next. Now these variables always refer to the outer 2629regular expression at the start of an embedded block [perl #117917]. 2630 2631=item * 2632 2633C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has been 2634fixed. [perl #118213] 2635 2636=item * 2637 2638Starting in Perl 5.18.0, a construct like C</[#](?{})/x> would have its C<#> 2639incorrectly interpreted as a comment. The code block would be skipped, 2640unparsed. This has been corrected. 2641 2642=item * 2643 2644Starting in Perl 5.001, a regular expression like C</[#$a]/x> or C</[#]$a/x> 2645would have its C<#> incorrectly interpreted as a comment, so the variable would 2646not interpolate. This has been corrected. [perl #45667] 2647 2648=item * 2649 2650Perl 5.18.0 inadvertently made dereferenced regular expressions 2651S<(C<${ qr// }>)> false as booleans. This has been fixed. 2652 2653=item * 2654 2655The use of C<\G> in regular expressions, where it's not at the start of the 2656pattern, is now slightly less buggy (although it is still somewhat 2657problematic). 2658 2659=item * 2660 2661Where a regular expression included code blocks (C</(?{...})/>), and where the 2662use of constant overloading triggered a re-compilation of the code block, the 2663second compilation didn't see its outer lexical scope. This was a regression 2664in Perl 5.18.0. 2665 2666=item * 2667 2668The string position set by C<pos> could shift if the string changed 2669representation internally to or from utf8. This could happen, e.g., with 2670references to objects with string overloading. 2671 2672=item * 2673 2674Taking references to the return values of two C<pos> calls with the same 2675argument, and then assigning a reference to one and C<undef> to the other, 2676could result in assertion failures or memory leaks. 2677 2678=item * 2679 2680Elements of @- and @+ now update correctly when they refer to non-existent 2681captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to 2682the wrong match after subsequent matches. 2683 2684=item * 2685 2686The code that parses regex backrefs (or ambiguous backref/octals) such as \123 2687did a simple atoi(), which could wrap round to negative values on long digit 2688strings and cause segmentation faults. This has now been fixed. [perl 2689#119505] 2690 2691=item * 2692 2693Assigning another typeglob to C<*^R> no longer makes the regular expression 2694engine crash. 2695 2696=item * 2697 2698The C<\N> regular expression escape, when used without the curly braces (to 2699mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace 2700under /x. It had been this way since C<\N> to mean C<[^\n]> was introduced 2701in 5.12.0. 2702 2703=item * 2704 2705C<s///>, C<tr///> and C<y///> now work when a wide character is used as the 2706delimiter. [perl #120463] 2707 2708=item * 2709 2710Some cases of unterminated (?...) sequences in regular expressions (e.g., 2711C</(?</>) have been fixed to produce the proper error message instead of 2712"panic: memory wrap". Other cases (e.g., C</(?(/>) have yet to be fixed. 2713 2714=item * 2715 2716When a reference to a reference to an overloaded object was returned from 2717a regular expression C<(??{...})> code block, an incorrect implicit 2718dereference could take place if the inner reference had been returned by 2719a code block previously. 2720 2721=item * 2722 2723A tied variable returned from C<(??{...})> sees the inner values of match 2724variables (i.e., the $1 etc. from any matches inside the block) in its 2725FETCH method. This was not the case if a reference to an overloaded object 2726was the last thing assigned to the tied variable. Instead, the match 2727variables referred to the outer pattern during the FETCH call. 2728 2729=item * 2730 2731Fix unexpected tainting via regexp using locale. Previously, under certain 2732conditions, the use of character classes could cause tainting when it 2733shouldn't. Some character classes are locale-dependent, but before this 2734patch, sometimes tainting was happening even for character classes that 2735don't depend on the locale. [perl #120675] 2736 2737=item * 2738 2739Under certain conditions, Perl would throw an error if in a lookbehind 2740assertion in a regexp, the assertion referred to a named subpattern, 2741complaining the lookbehind was variable when it wasn't. This has been 2742fixed. [perl #120600], [perl #120618]. The current fix may be improved 2743on in the future. 2744 2745=item * 2746 2747C<$^R> wasn't available outside of the regular expression that 2748initialized it. [perl #121070] 2749 2750=item * 2751 2752A large set of fixes and refactoring for re_intuit_start() was merged, 2753the highlights are: 2754 2755=over 2756 2757=item * 2758 2759Fixed a panic when compiling the regular expression 2760C</\x{100}[xy]\x{100}{2}/>. 2761 2762=item * 2763 2764Fixed a performance regression when performing a global pattern match 2765against a UTF-8 string. [perl #120692] 2766 2767=item * 2768 2769Fixed another performance issue where matching a regular expression 2770like C</ab.{1,2}x/> against a long UTF-8 string would unnecessarily 2771calculate byte offsets for a large portion of the string. [perl 2772#120692] 2773 2774=back 2775 2776=item * 2777 2778Fixed an alignment error when compiling regular expressions when built 2779with GCC on HP-UX 64-bit. 2780 2781=item * 2782 2783On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1. 2784[perl #72766] 2785 2786=back 2787 2788=head2 Perl 5 Debugger and -d 2789 2790=over 4 2791 2792=item * 2793 2794The debugger's C<man> command been fixed. It was broken in the v5.18.0 2795release. The C<man> command is aliased to the names C<doc> and C<perldoc> - 2796all now work again. 2797 2798=item * 2799 2800C<@_> is now correctly visible in the debugger, fixing a regression 2801introduced in v5.18.0's debugger. [RT #118169] 2802 2803=item * 2804 2805Under copy-on-write builds (the default as of 5.20.0) C<< ${'_<-e'}[0] >> 2806no longer gets mangled. This is the first line of input saved for the 2807debugger's use for one-liners [perl #118627]. 2808 2809=item * 2810 2811On non-threaded builds, setting C<${"_E<lt>filename"}> to a reference or 2812typeglob no longer causes C<__FILE__> and some error messages to produce a 2813corrupt string, and no longer prevents C<#line> directives in string evals from 2814providing the source lines to the debugger. Threaded builds were unaffected. 2815 2816=item * 2817 2818Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was 2819used on the #! line. Now they are correct. 2820 2821=item * 2822 2823C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding 2824C<DB::DB> subs declared thereafter. 2825 2826=item * 2827 2828C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}> 2829rather than whichever array C<@DB::dbline> is aliased to. [perl #119799] 2830 2831=item * 2832 2833Call set-magic when setting $DB::sub. [perl #121255] 2834 2835=item * 2836 2837The debugger's "n" command now respects lvalue subroutines and steps over 2838them [perl #118839]. 2839 2840=back 2841 2842=head2 Lexical Subroutines 2843 2844=over 4 2845 2846=item * 2847 2848Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined. 2849 2850=item * 2851 2852Parameter prototypes attached to lexical subroutines are now respected when 2853compiling sub calls without parentheses. Previously, the prototypes were 2854honoured only for calls I<with> parentheses. [RT #116735] 2855 2856=item * 2857 2858Syntax errors in lexical subroutines in combination with calls to the same 2859subroutines no longer cause crashes at compile time. 2860 2861=item * 2862 2863Deep recursion warnings no longer crash lexical subroutines. [RT #118521] 2864 2865=item * 2866 2867The dtrace sub-entry probe now works with lexical subs, instead of 2868crashing [perl #118305]. 2869 2870=item * 2871 2872Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef 2873&foo>) would result in a crash if warnings were turned on. 2874 2875=item * 2876 2877An undefined lexical sub used as an inherited method no longer crashes. 2878 2879=item * 2880 2881The presence of a lexical sub named "CORE" no longer stops the CORE:: 2882prefix from working. 2883 2884=back 2885 2886=head2 Everything Else 2887 2888=over 4 2889 2890=item * 2891 2892The OP allocation code now returns correctly aligned memory in all cases 2893for C<struct pmop>. Previously it could return memory only aligned to a 28944-byte boundary, which is not correct for an ithreads build with 64 bit IVs 2895on some 32 bit platforms. Notably, this caused the build to fail completely 2896on sparc GNU/Linux. [RT #118055] 2897 2898=item * 2899 2900Evaluating large hashes in scalar context is now much faster, as the number 2901of used chains in the hash is now cached for larger hashes. Smaller hashes 2902continue not to store it and calculate it when needed, as this saves one IV. 2903That would be 1 IV overhead for every object built from a hash. [RT #114576] 2904 2905=item * 2906 2907Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were 2908not visible at compile time were treated as lvalues and could be assigned 2909to, even when the subroutine was not an lvalue sub. This has been fixed. 2910[RT #117947] 2911 2912=item * 2913 2914In Perl v5.18.0 dualvars that had an empty string for the string part but a 2915non-zero number for the number part starting being treated as true. In 2916previous versions they were treated as false, the string representation 2917taking precedence. The old behaviour has been restored. [RT #118159] 2918 2919=item * 2920 2921Since Perl v5.12, inlining of constants that override built-in keywords of 2922the same name had countermanded C<use subs>, causing subsequent mentions of 2923the constant to use the built-in keyword instead. This has been fixed. 2924 2925=item * 2926 2927The warning produced by C<-l $handle> now applies to IO refs and globs, not 2928just to glob refs. That warning is also now UTF8-clean. [RT #117595] 2929 2930=item * 2931 2932C<delete local $ENV{nonexistent_env_var}> no longer leaks memory. 2933 2934=item * 2935 2936C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now 2937treat it as a keyword, and not as a subroutine or module name. [RT #24482] 2938 2939=item * 2940 2941Through certain conundrums, it is possible to cause the current package to 2942be freed. Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could 2943not cope and would crash. They have been made more resilient. [RT #117941] 2944 2945=item * 2946 2947Aliasing filehandles through glob-to-glob assignment would not update 2948internal method caches properly if a package of the same name as the 2949filehandle existed, resulting in filehandle method calls going to the 2950package instead. This has been fixed. 2951 2952=item * 2953 2954C<./Configure -de -Dusevendorprefix> didn't default. [RT #64126] 2955 2956=item * 2957 2958The C<Statement unlikely to be reached> warning was listed in 2959L<perldiag> as an C<exec>-category warning, but was enabled and disabled 2960by the C<syntax> category. On the other hand, the C<exec> category 2961controlled its fatal-ness. It is now entirely handled by the C<exec> 2962category. 2963 2964=item * 2965 2966The "Replacement list is longer that search list" warning for C<tr///> and 2967C<y///> no longer occurs in the presence of the C</c> flag. [RT #118047] 2968 2969=item * 2970 2971Stringification of NVs are not cached so that the lexical locale controls 2972stringification of the decimal point. [perl #108378] [perl #115800] 2973 2974=item * 2975 2976There have been several fixes related to Perl's handling of locales. perl 2977#38193 was described above in L</Internal Changes>. 2978Also fixed is 2979#118197, where the radix (decimal point) character had to be an ASCII 2980character (which doesn't work for some non-Western languages); 2981and #115808, in which C<POSIX::setlocale()> on failure returned an 2982C<undef> which didn't warn about not being defined even if those 2983warnings were enabled. 2984 2985=item * 2986 2987Compiling a C<split> operator whose third argument is a named constant 2988evaluating to 0 no longer causes the constant's value to change. 2989 2990=item * 2991 2992A named constant used as the second argument to C<index> no longer gets 2993coerced to a string if it is a reference, regular expression, dualvar, etc. 2994 2995=item * 2996 2997A named constant evaluating to the undefined value used as the second 2998argument to C<index> no longer produces "uninitialized" warnings at compile 2999time. It will still produce them at run time. 3000 3001=item * 3002 3003When a scalar was returned from a subroutine in @INC, the referenced scalar 3004was magically converted into an IO thingy, possibly resulting in "Bizarre 3005copy" errors if that scalar continued to be used elsewhere. Now Perl uses 3006an internal copy of the scalar instead. 3007 3008=item * 3009 3010Certain uses of the C<sort> operator are optimised to modify an array in 3011place, such as C<@a = sort @a>. During the sorting, the array is made 3012read-only. If a sort block should happen to die, then the array remained 3013read-only even outside the C<sort>. This has been fixed. 3014 3015=item * 3016 3017C<$a> and C<$b> inside a sort block are aliased to the actual arguments to 3018C<sort>, so they can be modified through those two variables. This did not 3019always work, e.g., for lvalue subs and C<$#ary>, and probably many other 3020operators. It works now. 3021 3022=item * 3023 3024The arguments to C<sort> are now all in list context. If the C<sort> 3025itself were called in void or scalar context, then I<some>, but not all, of 3026the arguments used to be in void or scalar context. 3027 3028=item * 3029 3030Subroutine prototypes with Unicode characters above U+00FF were getting 3031mangled during closure cloning. This would happen with subroutines closing 3032over lexical variables declared outside, and with lexical subs. 3033 3034=item * 3035 3036C<UNIVERSAL::can> now treats its first argument the same way that method 3037calls do: Typeglobs and glob references with non-empty IO slots are treated 3038as handles, and strings are treated as filehandles, rather than packages, 3039if a handle with that name exists [perl #113932]. 3040 3041=item * 3042 3043Method calls on typeglobs (e.g., C<< *ARGV->getline >>) used to stringify 3044the typeglob and then look it up again. Combined with changes in Perl 30455.18.0, this allowed C<< *foo->bar >> to call methods on the "foo" package 3046(like C<< foo->bar >>). In some cases it could cause the method to be 3047called on the wrong handle. Now a typeglob argument is treated as a 3048handle (just like C<< (\*foo)->bar >>), or, if its IO slot is empty, an 3049error is raised. 3050 3051=item * 3052 3053Assigning a vstring to a tied variable or to a subroutine argument aliased 3054to a nonexistent hash or array element now works, without flattening the 3055vstring into a regular string. 3056 3057=item * 3058 3059C<pos>, C<tie>, C<tied> and C<untie> did not work 3060properly on subroutine arguments aliased to nonexistent 3061hash and array elements [perl #77814, #27010]. 3062 3063=item * 3064 3065The C<< => >> fat arrow operator can now quote built-in keywords even if it 3066occurs on the next line, making it consistent with how it treats other 3067barewords. 3068 3069=item * 3070 3071Autovivifying a subroutine stub via C<\&$glob> started causing crashes in Perl 30725.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar that had 3073had a glob assigned to it. This has been fixed. [perl #119051] 3074 3075=item * 3076 3077Perl used to leak an implementation detail when it came to referencing the 3078return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }> used 3079to display two different memory addresses, because the C<\> operator was 3080copying the variable. Under threaded builds, it would also happen for 3081constants (C<for(1) { ... }>). This has been fixed. [perl #21979, #78194, 3082#89188, #109746, #114838, #115388] 3083 3084=item * 3085 3086The range operator C<..> was returning the same modifiable scalars with each 3087call, unless it was the only thing in a C<foreach> loop header. This meant 3088that changes to values within the list returned would be visible the next time 3089the operator was executed. [perl #3105] 3090 3091=item * 3092 3093Constant folding and subroutine inlining no longer cause operations that would 3094normally return new modifiable scalars to return read-only values instead. 3095 3096=item * 3097 3098Closures of the form C<sub () { $some_variable }> are no longer inlined, 3099causing changes to the variable to be ignored by callers of the subroutine. 3100[perl #79908] 3101 3102=item * 3103 3104Return values of certain operators such as C<ref> would sometimes be shared 3105between recursive calls to the same subroutine, causing the inner call to 3106modify the value returned by C<ref> in the outer call. This has been fixed. 3107 3108=item * 3109 3110C<__PACKAGE__> and constants returning a package name or hash key are now 3111consistently read-only. In various previous Perl releases, they have become 3112mutable under certain circumstances. 3113 3114=item * 3115 3116Enabling "used once" warnings no longer causes crashes on stash circularities 3117created at compile time (C<*Foo::Bar::Foo:: = *Foo::>). 3118 3119=item * 3120 3121Undef constants used in hash keys (C<use constant u =E<gt> undef; $h{+u}>) no 3122longer produce "uninitialized" warnings at compile time. 3123 3124=item * 3125 3126Modifying a substitution target inside the substitution replacement no longer 3127causes crashes. 3128 3129=item * 3130 3131The first statement inside a string eval used to use the wrong pragma setting 3132sometimes during constant folding. C<eval 'uc chr 0xe0'> would randomly choose 3133between Unicode, byte, and locale semantics. This has been fixed. 3134 3135=item * 3136 3137The handling of return values of @INC filters (subroutines returned by 3138subroutines in @INC) has been fixed in various ways. Previously tied variables 3139were mishandled, and setting $_ to a reference or typeglob could result in 3140crashes. 3141 3142=item * 3143 3144The C<SvPVbyte> XS function has been fixed to work with tied scalars returning 3145something other than a string. It used to return utf8 in those cases where 3146C<SvPV> would. 3147 3148=item * 3149 3150Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular 3151expressions, and stopped C<++> from flattening vstrings. 3152 3153=item * 3154 3155C<bless> no longer dies with "Can't bless non-reference value" if its first 3156argument is a tied reference. 3157 3158=item * 3159 3160C<reset> with an argument no longer skips copy-on-write scalars, regular 3161expressions, typeglob copies, and vstrings. Also, when encountering those or 3162read-only values, it no longer skips any array or hash with the same name. 3163 3164=item * 3165 3166C<reset> with an argument now skips scalars aliased to typeglobs 3167(C<for $z (*foo) { reset "z" }>). Previously it would corrupt memory or crash. 3168 3169=item * 3170 3171C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a 3172regression from Perl 5.12. [perl #117355] 3173 3174=item * 3175 3176Changes to C<UNIVERSAL::DESTROY> now update DESTROY caches in all classes, 3177instead of causing classes that have already had objects destroyed to continue 3178using the old sub. This was a regression in Perl 5.18. [perl #114864] 3179 3180=item * 3181 3182All known false-positive occurrences of the deprecation warning "Useless use of 3183'\'; doesn't escape metacharacter '%c'", added in Perl 5.18.0, have been 3184removed. [perl #119101] 3185 3186=item * 3187 3188The value of $^E is now saved across signal handlers on Windows. [perl #85104] 3189 3190=item * 3191 3192A lexical filehandle (as in C<open my $fh...>) is usually given a name based on 3193the current package and the name of the variable, e.g. "main::$fh". Under 3194recursion, the filehandle was losing the "$fh" part of the name. This has been 3195fixed. 3196 3197=item * 3198 3199Uninitialized values returned by XSUBs are no longer exempt from uninitialized 3200warnings. [perl #118693] 3201 3202=item * 3203 3204C<elsif ("")> no longer erroneously produces a warning about void context. 3205[perl #118753] 3206 3207=item * 3208 3209Passing C<undef> to a subroutine now causes @_ to contain the same read-only 3210undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now 3211return true if C<undef> was the first argument. [perl #7508, #109726] 3212 3213=item * 3214 3215Passing a non-existent array element to a subroutine does not usually 3216autovivify it unless the subroutine modifies its argument. This did not work 3217correctly with negative indices and with non-existent elements within the 3218array. The element would be vivified immediately. The delayed vivification 3219has been extended to work with those. [perl #118691] 3220 3221=item * 3222 3223Assigning references or globs to the scalar returned by $#foo after the @foo 3224array has been freed no longer causes assertion failures on debugging builds 3225and memory leaks on regular builds. 3226 3227=item * 3228 3229On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but 3230eat up all your memory instead. [perl #119161] 3231 3232=item * 3233 3234C<__DATA__> now puts the C<DATA> handle in the right package, even if the 3235current package has been renamed through glob assignment. 3236 3237=item * 3238 3239When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope, 3240it is possible for C<DESTROY> recursively to call a subroutine or format that 3241is currently being exited. It that case, sometimes the lexical variables 3242inside the sub would start out having values from the outer call, instead of 3243being undefined as they should. This has been fixed. [perl #119311] 3244 3245=item * 3246 3247${^MPEN} is no longer treated as a synonym for ${^MATCH}. 3248 3249=item * 3250 3251Perl now tries a little harder to return the correct line number in 3252C<(caller)[2]>. [perl #115768] 3253 3254=item * 3255 3256Line numbers inside multiline quote-like operators are now reported correctly. 3257[perl #3643] 3258 3259=item * 3260 3261C<#line> directives inside code embedded in quote-like operators are now 3262respected. 3263 3264=item * 3265 3266Line numbers are now correct inside the second here-doc when two here-doc 3267markers occur on the same line. 3268 3269=item * 3270 3271An optimization in Perl 5.18 made incorrect assumptions causing a bad 3272interaction with the L<Devel::CallParser> CPAN module. If the module was 3273loaded then lexical variables declared in separate statements following a 3274C<my(...)> list might fail to be cleared on scope exit. 3275 3276=item * 3277 3278C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify 3279elements of @_. 3280 3281=item * 3282 3283C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no 3284ARRAY entry (i.e. @_ does not exist). 3285 3286=item * 3287 3288C<&xsub> and C<goto &xsub> now work with tied @_. 3289 3290=item * 3291 3292Overlong identifiers no longer cause a buffer overflow (and a crash). They 3293started doing so in Perl 5.18. 3294 3295=item * 3296 3297The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces 3298far fewer false positives. In particular, C<@hash{+function_returning_a_list}> 3299and C<@hash{ qw "foo bar baz" }> no longer warn. The same applies to array 3300slices. [perl #28380, #114024] 3301 3302=item * 3303 3304C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite 3305loop. [perl #85228] 3306 3307=item * 3308 3309A possible segmentation fault in filehandle duplication has been fixed. 3310 3311=item * 3312 3313A subroutine in @INC can return a reference to a scalar containing the initial 3314contents of the file. However, that scalar was freed prematurely if not 3315referenced elsewhere, giving random results. 3316 3317=item * 3318 3319C<last> no longer returns values that the same statement has accumulated so 3320far, fixing amongst other things the long-standing bug that C<push @a, last> 3321would try to return the @a, copying it like a scalar in the process and 3322resulting in the error, "Bizarre copy of ARRAY in last." [perl #3112] 3323 3324=item * 3325 3326In some cases, closing file handles opened to pipe to or from a process, which 3327had been duplicated into a standard handle, would call perl's internal waitpid 3328wrapper with a pid of zero. With the fix for [perl #85228] this zero pid was 3329passed to C<waitpid>, possibly blocking the process. This wait for process 3330zero no longer occurs. [perl #119893] 3331 3332=item * 3333 3334C<select> used to ignore magic on the fourth (timeout) argument, leading to 3335effects such as C<select> blocking indefinitely rather than the expected sleep 3336time. This has now been fixed. [perl #120102] 3337 3338=item * 3339 3340The class name in C<for my class $foo> is now parsed correctly. In the case of 3341the second character of the class name being followed by a digit (e.g. 'a1b') 3342this used to give the error "Missing $ on loop variable". [perl #120112] 3343 3344=item * 3345 3346Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and 3347C<use integer>. This has been fixed. [perl #120288] 3348 3349=item * 3350 3351C<-a> at the start of a line (or a hyphen with any single letter that is 3352not a filetest operator) no longer produces an erroneous 'Use of "-a" 3353without parentheses is ambiguous' warning. [perl #120288] 3354 3355=item * 3356 3357Lvalue context is now properly propagated into bare blocks and C<if> and 3358C<else> blocks in lvalue subroutines. Previously, arrays and hashes would 3359sometimes incorrectly be flattened when returned in lvalue list context, or 3360"Bizarre copy" errors could occur. [perl #119797] 3361 3362=item * 3363 3364Lvalue context is now propagated to the branches of C<||> and C<&&> (and 3365their alphabetic equivalents, C<or> and C<and>). This means 3366C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified 3367through $_. 3368 3369=item * 3370 3371C<stat> and C<readline> remember the last handle used; the former 3372for the special C<_> filehandle, the latter for C<${^LAST_FH}>. 3373C<eval "*foo if 0"> where *foo was the last handle passed to C<stat> 3374or C<readline> could cause that handle to be forgotten if the 3375handle were not opened yet. This has been fixed. 3376 3377=item * 3378 3379Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash 3380have been fixed. [perl #54044] 3381 3382=item * 3383 3384Setting C<$!> to EACCESS before calling C<require> could affect 3385C<require>'s behaviour. This has been fixed. 3386 3387=item * 3388 3389The "Can't use \1 to mean $1 in expression" warning message now only occurs 3390on the right-hand (replacement) part of a substitution. Formerly it could 3391happen in code embedded in the left-hand side, or in any other quote-like 3392operator. 3393 3394=item * 3395 3396Blessing into a reference (C<bless $thisref, $thatref>) has long been 3397disallowed, but magical scalars for the second like C<$/> and those tied 3398were exempt. They no longer are. [perl #119809] 3399 3400=item * 3401 3402Blessing into a reference was accidentally allowed in 5.18 if the class 3403argument were a blessed reference with stale method caches (i.e., whose 3404class had had subs defined since the last method call). They are 3405disallowed once more, as in 5.16. 3406 3407=item * 3408 3409C<< $x->{key} >> where $x was declared as C<my Class $x> no longer crashes 3410if a Class::FIELDS subroutine stub has been declared. 3411 3412=item * 3413 3414C<@$obj{'key'}> and C<${$obj}{key}> used to be exempt from compile-time 3415field checking ("No such class field"; see L<fields>) but no longer are. 3416 3417=item * 3418 3419A nonexistent array element with a large index passed to a subroutine that 3420ties the array and then tries to access the element no longer results in a 3421crash. 3422 3423=item * 3424 3425Declaring a subroutine stub named NEGATIVE_INDICES no longer makes negative 3426array indices crash when the current package is a tied array class. 3427 3428=item * 3429 3430Declaring a C<require>, C<glob>, or C<do> subroutine stub in the 3431CORE::GLOBAL:: package no longer makes compilation of calls to the 3432corresponding functions crash. 3433 3434=item * 3435 3436Aliasing CORE::GLOBAL:: functions to constants stopped working in Perl 5.10 3437but has now been fixed. 3438 3439=item * 3440 3441When C<`...`> or C<qx/.../> calls a C<readpipe> override, double-quotish 3442interpolation now happens, as is the case when there is no override. 3443Previously, the presence of an override would make these quote-like 3444operators act like C<q{}>, suppressing interpolation. [perl #115330] 3445 3446=item * 3447 3448C<<<<`...`> here-docs (with backticks as the delimiters) now call 3449C<readpipe> overrides. [perl #119827] 3450 3451=item * 3452 3453C<&CORE::exit()> and C<&CORE::die()> now respect L<vmsish> hints. 3454 3455=item * 3456 3457Undefining a glob that triggers a DESTROY method that undefines the same 3458glob is now safe. It used to produce "Attempt to free unreferenced glob 3459pointer" warnings and leak memory. 3460 3461=item * 3462 3463If subroutine redefinition (C<eval 'sub foo{}'> or C<newXS> for XS code) 3464triggers a DESTROY method on the sub that is being redefined, and that 3465method assigns a subroutine to the same slot (C<*foo = sub {}>), C<$_[0]> 3466is no longer left pointing to a freed scalar. Now DESTROY is delayed until 3467the new subroutine has been installed. 3468 3469=item * 3470 3471On Windows, perl no longer calls CloseHandle() on a socket handle. This makes 3472debugging easier on Windows by removing certain irrelevant bad handle 3473exceptions. It also fixes a race condition that made socket functions randomly 3474fail in a Perl process with multiple OS threads, and possible test failures in 3475F<dist/IO/t/cachepropagate-tcp.t>. [perl #120091/118059] 3476 3477=item * 3478 3479Formats involving UTF-8 encoded strings, or strange vars like ties, 3480overloads, or stringified refs (and in recent 3481perls, pure NOK vars) would generally do the wrong thing in formats 3482when the var is treated as a string and repeatedly chopped, as in 3483C<< ^<<<~~ >> and similar. This has now been resolved. 3484[perl #33832/45325/113868/119847/119849/119851] 3485 3486=item * 3487 3488C<< semctl(..., SETVAL, ...) >> would set the semaphore to the top 348932-bits of the supplied integer instead of the bottom 32-bits on 349064-bit big-endian systems. [perl #120635] 3491 3492=item * 3493 3494C<< readdir() >> now only sets C<$!> on error. C<$!> is no longer set 3495to C<EBADF> when then terminating C<undef> is read from the directory 3496unless the system call sets C<$!>. [perl #118651] 3497 3498=item * 3499 3500C<&CORE::glob> no longer causes an intermittent crash due to perl's stack 3501getting corrupted. [perl #119993] 3502 3503=item * 3504 3505C<open> with layers that load modules (e.g., "<:encoding(utf8)") no longer 3506runs the risk of crashing due to stack corruption. 3507 3508=item * 3509 3510Perl 5.18 broke autoloading via C<< ->SUPER::foo >> method calls by looking 3511up AUTOLOAD from the current package rather than the current package's 3512superclass. This has been fixed. [perl #120694] 3513 3514=item * 3515 3516A longstanding bug causing C<do {} until CONSTANT>, where the constant 3517holds a true value, to read unallocated memory has been resolved. This 3518would usually happen after a syntax error. In past versions of Perl it has 3519crashed intermittently. [perl #72406] 3520 3521=item * 3522 3523Fix HP-UX C<$!> failure. HP-UX strerror() returns an empty string for an 3524unknown error code. This caused an assertion to fail under DEBUGGING 3525builds. Now instead, the returned string for C<"$!"> contains text 3526indicating the code is for an unknown error. 3527 3528=item * 3529 3530Individually-tied elements of @INC (as in C<tie $INC[0]...>) are now 3531handled correctly. Formerly, whether a sub returned by such a tied element 3532would be treated as a sub depended on whether a FETCH had occurred 3533previously. 3534 3535=item * 3536 3537C<getc> on a byte-sized handle after the same C<getc> operator had been 3538used on a utf8 handle used to treat the bytes as utf8, resulting in erratic 3539behavior (e.g., malformed UTF-8 warnings). 3540 3541=item * 3542 3543An initial C<{> at the beginning of a format argument line was always 3544interpreted as the beginning of a block prior to v5.18. In Perl v5.18, it 3545started being treated as an ambiguous token. The parser would guess 3546whether it was supposed to be an anonymous hash constructor or a block 3547based on the contents. Now the previous behaviour has been restored. 3548[perl #119973] 3549 3550=item * 3551 3552In Perl v5.18 C<undef *_; goto &sub> and C<local *_; goto &sub> started 3553crashing. This has been fixed. [perl #119949] 3554 3555=item * 3556 3557Backticks (C< `` > or C< qx// >) combined with multiple threads on 3558Win32 could result in output sent to stdout on one thread being 3559captured by backticks of an external command in another thread. 3560 3561This could occur for pseudo-forked processes too, as Win32's 3562pseudo-fork is implemented in terms of threads. [perl #77672] 3563 3564=item * 3565 3566C<< open $fh, ">+", undef >> no longer leaks memory when TMPDIR is set 3567but points to a directory a temporary file cannot be created in. [perl 3568#120951] 3569 3570=item * 3571 3572C< for ( $h{k} || '' ) > no longer auto-vivifies C<$h{k}>. [perl 3573#120374] 3574 3575=item * 3576 3577On Windows machines, Perl now emulates the POSIX use of the environment 3578for locale initialization. Previously, the environment was ignored. 3579See L<perllocale/ENVIRONMENT>. 3580 3581=item * 3582 3583Fixed a crash when destroying a self-referencing GLOB. [perl #121242] 3584 3585=back 3586 3587=head1 Known Problems 3588 3589=over 4 3590 3591=item * 3592 3593L<IO::Socket> is known to fail tests on AIX 5.3. There is 3594L<a patch|https://github.com/Perl/perl5/issues/13484> in the request 3595tracker, #120835, which may be applied to future releases. 3596 3597=item * 3598 3599The following modules are known to have test failures with this version of 3600Perl. Patches have been submitted, so there will hopefully be new releases 3601soon: 3602 3603=over 3604 3605=item * 3606 3607L<Data::Structure::Util> version 0.15 3608 3609=item * 3610 3611L<HTML::StripScripts> version 1.05 3612 3613=item * 3614 3615L<List::Gather> version 0.08. 3616 3617=back 3618 3619=back 3620 3621=head1 Obituary 3622 3623Diana Rosa, 27, of Rio de Janeiro, went to her long rest on May 10, 36242014, along with the plush camel she kept hanging on her computer screen 3625all the time. She was a passionate Perl hacker who loved the language and its 3626community, and who never missed a Rio.pm event. She was a true artist, an 3627enthusiast about writing code, singing arias and graffiting walls. We'll never 3628forget you. 3629 3630Greg McCarroll died on August 28, 2013. 3631 3632Greg was well known for many good reasons. He was one of the organisers of 3633the first YAPC::Europe, which concluded with an unscheduled auction where he 3634frantically tried to raise extra money to avoid the conference making a 3635loss. It was Greg who mistakenly arrived for a london.pm meeting a week 3636late; some years later he was the one who sold the choice of official 3637meeting date at a YAPC::Europe auction, and eventually as glorious leader of 3638london.pm he got to inherit the irreverent confusion that he had created. 3639 3640Always helpful, friendly and cheerfully optimistic, you will be missed, but 3641never forgotten. 3642 3643=head1 Acknowledgements 3644 3645Perl 5.20.0 represents approximately 12 months of development since Perl 5.18.0 3646and contains approximately 470,000 lines of changes across 2,900 files from 124 3647authors. 3648 3649Excluding auto-generated files, documentation and release tools, there were 3650approximately 280,000 lines of changes to 1,800 .pm, .t, .c and .h files. 3651 3652Perl continues to flourish into its third decade thanks to a vibrant community 3653of users and developers. The following people are known to have contributed the 3654improvements that became Perl 5.20.0: 3655 3656Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan 3657Hourihane, Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno Siegel, 3658Aristotle Pagaltzis, Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, 3659Brian Childs, Brian Fraser, Brian Gottreu, Chris 'BinGOs' Williams, Christian 3660Millour, Colin Kuskie, Craig A. Berry, Dabrien 'Dabe' Murphy, Dagfinn Ilmari 3661Mannsåker, Daniel Dragan, Darin McBride, David Golden, David Leadbeater, David 3662Mitchell, David Nicol, David Steinbrunner, Dennis Kaarsemaker, Dominic 3663Hargreaves, Ed Avis, Eric Brine, Evan Zacks, Father Chrysostomos, Florian 3664Ragwitz, François Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, 3665Graham Knop, H.Merijn Brand, Hauke D, Heiko Eissfeldt, Hiroo Hayashi, Hojung 3666Youn, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jess Robinson, Jesse 3667Luehrs, Johan Vromans, John Gardiner Myers, John Goodyear, John P. Linderman, 3668John Peacock, kafka, Kang-min Liu, Karen Etheridge, Karl Williamson, Keedi Kim, 3669Kent Fredric, kevin dawson, Kevin Falcone, Kevin Ryde, Leon Timmermans, Lukas 3670Mai, Marc Simpson, Marcel Grünauer, Marco Peereboom, Marcus Holland-Moritz, 3671Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein, Mike 3672Doherty, Moritz Lenz, Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil 3673Williams, Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengué, Owain G. 3674Ainsworth, Paul Green, Paul Johnson, Peter John Acklam, Peter Martini, Peter 3675Rabbitson, Petr Písař, Philip Boulain, Philip Guenther, Piotr Roszatycki, 3676Rafael Garcia-Suarez, Reini Urban, Reuben Thomas, Ricardo Signes, Ruslan 3677Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish, Slaven Rezic, 3678Smylers, Steffen Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Tobias 3679Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom Hukins, Tony Cook, 3680Victor Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, 3681Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason. 3682 3683The list above is almost certainly incomplete as it is automatically generated 3684from version control history. In particular, it does not include the names of 3685the (very much appreciated) contributors who reported issues to the Perl bug 3686tracker. 3687 3688Many of the changes included in this version originated in the CPAN modules 3689included in Perl's core. We're grateful to the entire CPAN community for 3690helping Perl to flourish. 3691 3692For a more complete list of all of Perl's historical contributors, please see 3693the F<AUTHORS> file in the Perl source distribution. 3694 3695=head1 Reporting Bugs 3696 3697If you find what you think is a bug, you might check the articles recently 3698posted to the comp.lang.perl.misc newsgroup and the perl bug database at 3699http://rt.perl.org/perlbug/ . There may also be information at 3700http://www.perl.org/ , the Perl Home Page. 3701 3702If you believe you have an unreported bug, please run the L<perlbug> program 3703included with your release. Be sure to trim your bug down to a tiny but 3704sufficient test case. Your bug report, along with the output of C<perl -V>, 3705will be sent off to perlbug@perl.org to be analysed by the Perl porting team. 3706 3707If the bug you are reporting has security implications, which make it 3708inappropriate to send to a publicly archived mailing list, then please send it 3709to perl5-security-report@perl.org. This points to a closed subscription 3710unarchived mailing list, which includes all the core committers, who will be 3711able to help assess the impact of issues, figure out a resolution, and help 3712co-ordinate the release of patches to mitigate or fix the problem across all 3713platforms on which Perl is supported. Please only use this address for 3714security issues in the Perl core, not for modules independently distributed on 3715CPAN. 3716 3717=head1 SEE ALSO 3718 3719The F<Changes> file for an explanation of how to view exhaustive details on 3720what changed. 3721 3722The F<INSTALL> file for how to build Perl. 3723 3724The F<README> file for general stuff. 3725 3726The F<Artistic> and F<Copying> files for copyright information. 3727 3728=cut 3729