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