In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/26fc922ea7af4f13e213f3cc21eca8c18ea88db6?hp=db5fc40ad7d6da4fbefa4e5d97b5d964fea172d9>
- Log ----------------------------------------------------------------- commit 26fc922ea7af4f13e213f3cc21eca8c18ea88db6 Merge: db5fc40ad7 8bb33ba630 Author: Sawyer X <[email protected]> Date: Thu May 11 19:22:49 2017 +0200 Merge branch 'release/5.26.0-RC1' into blead commit 8bb33ba6307a695fab9acbf283002425ac1a1398 Author: Sawyer X <[email protected]> Date: Thu May 11 19:07:23 2017 +0200 disarm RCnnn bump M patchlevel.h commit c2948cede0ea855128028a060fd05ca82187b290 Author: Sawyer X <[email protected]> Date: Thu May 11 17:20:16 2017 +0200 Regenerate last-second acknowledgements M pod/perldelta.pod commit 93df3445d2fd56674a2fa6b74e41d6bb2f41a484 Author: David H. Gutteridge <[email protected]> Date: Thu May 11 09:01:52 2017 -0600 Add missing commas to perlfunc M AUTHORS M pod/perlfunc.pod commit 54ffa6b04e7c773f76c2c0ebb69e864c6222e358 Author: Karl Williamson <[email protected]> Date: Tue May 9 22:28:15 2017 -0600 perldeprecation: Add imminent XS deprecations The deprecated XS functions that have been scheduled to be removed did not make it into this pod. M pod/perldeprecation.pod commit 1321976324309857fccd768d0a2ccf69ca2cdf73 Author: Sawyer X <[email protected]> Date: Thu May 11 15:03:58 2017 +0200 Update META files M META.json commit f23d5d4a4c0d8f1710a7267455eebb609106ce68 Author: Sawyer X <[email protected]> Date: Thu May 11 15:03:12 2017 +0200 bump version to RCnnn M patchlevel.h commit 7cc8a67f9fa7687a79639ec6025cf697cbdef1ab Author: Sawyer X <[email protected]> Date: Thu May 11 15:00:42 2017 +0200 add new release to perlhist M pod/perlhist.pod commit 601d9a87c1b2e45bb177a3c7103977821ba7f619 Author: Sawyer X <[email protected]> Date: Thu May 11 14:52:31 2017 +0200 Fix link M pod/perldelta.pod commit e6abae1cbb4538f15169837d4d9fa049f9a3348b Author: Sawyer X <[email protected]> Date: Thu May 11 14:36:27 2017 +0200 Pod fixes M pod/perldelta.pod commit 0cc8c7463a5e366c4e8cdcef0f9ac0eb505473ce Author: Sawyer X <[email protected]> Date: Thu May 11 14:33:54 2017 +0200 Finalize perldelta with acknowledgements and updated modules M pod/perldelta.pod commit ddb03b72f46eae3c278f28e8758e87b9c98c66a1 Author: David Mitchell <[email protected]> Date: Mon May 8 21:06:38 2017 +0100 avoid a memory wrap in sv_vcatpvfn_flags() RT #131260 When calculating the new size of PL_efloatbuf, avoid wrapping 'need'. M sv.c commit 5262b86e37a551bf040a8337652cd53a13cae2cd Author: Sawyer X <[email protected]> Date: Thu May 11 13:28:59 2017 +0200 reorder M win32/pod.mak commit 4f73c567abe24db2d525a302ca136a247d448092 Author: Sawyer X <[email protected]> Date: Thu May 11 13:28:51 2017 +0200 Correct links M pod/perldelta.pod commit f48549ebaf292e9219673c56fec459e8191033dc Author: Sawyer X <[email protected]> Date: Thu May 11 13:01:16 2017 +0200 Sorted with cool trickery help by arc M win32/pod.mak commit 41f10909dc88756f00b3e8e5cd8b9da69548292f Author: Sawyer X <[email protected]> Date: Thu May 11 12:59:11 2017 +0200 Manually replace 52513 with 5260 perldelta filename M Makefile.SH M pod/.gitignore M vms/descrip_mms.template M win32/GNUmakefile M win32/Makefile M win32/makefile.mk M win32/pod.mak commit 2c8edc250e4a89982c8afe0e6a0789ce1d3b4f66 Author: Sawyer X <[email protected]> Date: Thu May 11 12:40:10 2017 +0200 For now it's just perldelta.pod D pod/perl5260delta.pod M pod/perldelta.pod commit 3e890f485f24167a822bd830877c4c826ce8316f Author: Sawyer X <[email protected]> Date: Thu May 11 12:35:57 2017 +0200 Cleanups M pod/perl5260delta.pod commit 7b4e5e3d295a283afe006a33ff9cfd2abb64d1f6 Author: Sawyer X <[email protected]> Date: Thu May 11 00:06:13 2017 +0200 Reorder section M pod/perl5260delta.pod commit d5d1c84a59453a6f4d264641d72223c433461d26 Author: Sawyer X <[email protected]> Date: Wed May 10 23:55:27 2017 +0200 Merge perl52512delta.pod M pod/perl5260delta.pod commit bab278fd4afa57d5779aab3f650186f8793e0c65 Author: Sawyer X <[email protected]> Date: Wed May 10 23:54:26 2017 +0200 Merge perl52511delta.pod M pod/perl5260delta.pod commit d731f5142c5014c5a171e7c9392beb30b9efe2b0 Author: Sawyer X <[email protected]> Date: Wed May 10 16:01:08 2017 +0200 Merge perl52510delta.pod M pod/perl5260delta.pod commit 92a139375e61b85e375e0406cbd46df1f887ae27 Author: Sawyer X <[email protected]> Date: Wed May 10 15:58:40 2017 +0200 Merge perl5259delta.pod M pod/perl5260delta.pod commit 56e718982b69faf5273784c9313926cc464a87cf Author: Sawyer X <[email protected]> Date: Wed May 10 15:48:23 2017 +0200 Merge perl5258delta.pod M pod/perl5260delta.pod commit b7de773230e7f686eeb4007d8b5675c8f2f27600 Author: Sawyer X <[email protected]> Date: Wed May 10 14:59:33 2017 +0200 Merge perl5257delta.pod M pod/perl5260delta.pod commit 439a85d1606c70158e8d4b6cb67d21a786087522 Author: Sawyer X <[email protected]> Date: Wed May 10 14:20:38 2017 +0200 Merge perl5256delta.pod M pod/perl5260delta.pod commit da433f509cc50915c64dbe4a927cb33ed5e00ef0 Author: Sawyer X <[email protected]> Date: Wed May 10 14:16:17 2017 +0200 Merge perl5255delta.pod M pod/perl5260delta.pod commit 92bb567d2c88fc5e83d135a869f4eec649076b68 Author: Sawyer X <[email protected]> Date: Wed May 10 14:13:10 2017 +0200 Merge perl5254delta.pod M pod/perl5260delta.pod commit e092f94d57b4235033a8bdfdd74a920de87446c5 Author: Sawyer X <[email protected]> Date: Wed May 10 14:09:30 2017 +0200 Merge perl5253delta.pod M pod/perl5260delta.pod commit c59b6f48a7e18911a63e6bd42fcf1f8e224643b3 Author: Sawyer X <[email protected]> Date: Wed May 10 13:58:55 2017 +0200 Merge perl5252delta.pod M pod/perl5260delta.pod commit 18013bd117fb42703264c2bef220bb3539c8fe55 Author: Sawyer X <[email protected]> Date: Wed May 10 13:52:57 2017 +0200 Merge perl5251delta.pod M pod/perl5260delta.pod commit 0a541aca6cedf39f6295a2fd2528dbcf66a09521 Author: Sawyer X <[email protected]> Date: Wed May 10 13:48:22 2017 +0200 Creating perl5260delta.pod from perl5250delta.pod A pod/perl5260delta.pod ----------------------------------------------------------------------- Summary of changes: META.json | 2 +- Makefile.SH | 8 +- pod/.gitignore | 2 +- pod/perldelta.pod | 2916 +++++++++++++++++++++++++++++++++++++++++++--- pod/perlhist.pod | 6 +- vms/descrip_mms.template | 2 +- win32/GNUmakefile | 4 +- win32/Makefile | 4 +- win32/makefile.mk | 4 +- win32/pod.mak | 9 +- 10 files changed, 2743 insertions(+), 214 deletions(-) diff --git a/META.json b/META.json index 8e5a6d2965..afd5c76987 100644 --- a/META.json +++ b/META.json @@ -113,7 +113,7 @@ "vxs.inc" ] }, - "release_status" : "stable", + "release_status" : "testing", "resources" : { "bugtracker" : { "web" : "https://rt.perl.org/" diff --git a/Makefile.SH b/Makefile.SH index 4f381087bb..75b506cd71 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -570,7 +570,7 @@ esac $spitshell >>$Makefile <<'!NO!SUBS!' -perltoc_pod_prereqs = extra.pods pod/perl52513delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5260delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -1120,9 +1120,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl52513delta.pod: pod/perldelta.pod - $(RMS) pod/perl52513delta.pod - $(LNS) perldelta.pod pod/perl52513delta.pod +pod/perl5260delta.pod: pod/perldelta.pod + $(RMS) pod/perl5260delta.pod + $(LNS) perldelta.pod pod/perl5260delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/pod/.gitignore b/pod/.gitignore index a06b7f758f..65c3d4d9e7 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -50,7 +50,7 @@ /roffitall # generated -/perl52513delta.pod +/perl5260delta.pod /perlapi.pod /perlintern.pod /perlmodlib.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index d0c5bf6af5..ed13834024 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,359 +2,2829 @@ =head1 NAME -[ this is a template for a new perldelta file. Any text flagged as XXX needs -to be processed before release. ] +perldelta - what is new for perl v5.26.0 -perldelta - what is new for perl v5.25.13 +=head1 DESCRIPTION + +This document describes the differences between the 5.24.0 release and the +5.26.0 release. + +=head1 Core Enhancements + +=head2 New regular expression modifier C</xx> + +Specifying two C<x> characters to modify a regular expression pattern +does everything that a single one does, but additionally TAB and SPACE +characters within a bracketed character class are generally ignored and +can be added to improve readability, like +S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at +L<perlre/E<sol>x and E<sol>xx>. + +=head2 New Hash Function For 64-bit Builds + +We have switched to a hybrid hash function to better balance +performance for short and long keys. + +For short keys, 16 bytes and under, we use an optimised variant of +One At A Time Hard, and for longer keys we use Siphash 1-3. For very +long keys this is a big improvement in performance. For shorter keys +there is a modest improvement. + +=head2 Indented Here-documents + +This adds a new modifier '~' to here-docs that tells the parser +that it should look for /^\s*$DELIM\n/ as the closing delimiter. + +These syntaxes are all supported: + + <<~EOF; + <<~\EOF; + <<~'EOF'; + <<~"EOF"; + <<~`EOF`; + <<~ 'EOF'; + <<~ "EOF"; + <<~ `EOF`; + +The '~' modifier will strip, from each line in the here-doc, the +same whitespace that appears before the delimiter. + +Newlines will be copied as is, and lines that don't include the +proper beginning whitespace will cause perl to croak. + +For example: + + if (1) { + print <<~EOF; + Hello there + EOF + } + +prints "Hello there\n" with no leading whitespace. + +=head2 '.' and @INC + +Perl now provides a way to build perl without C<.> in @INC by default. If you +want this feature, you can build with -Ddefault_inc_excludes_dot + +Because the testing / make process for perl modules do not function well with +C<.> missing from @INC, Perl now supports the environment variable +PERL_USE_UNSAFE_INC=1 which makes Perl behave as it previously did, returning +C<.> to @INC in all child processes. + +WARNING: C<PERL_USE_UNSAFE_INC> has been provided during the perl 5.25 +development cycle and is not guaranteed to function in perl 5.26. + +=head2 create a safer utf8_hop() called utf8_hop_safe() + +Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or after +the end of the supplied buffer. + +=head2 @{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL} + +C<@{^CAPTURE}> exposes the capture buffers of the last match as an +array. So C<$1> is C<${^CAPTURE}[0]>. + +C<%{^CAPTURE}> is the equivalent to C<%+> (ie named captures) + +C<%{^CAPTURE_ALL}> is the equivalent to C<%-> (ie all named captures). + +=head2 Unicode 9.0 is now supported + +A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>. +Modules that are shipped with core Perl but not maintained by p5p do not +necessarily support Unicode 9.0. L<Unicode::Normalize> does work on 9.0. + +=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property + +Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and +called it Script_Extensions (C<scx>). As of now, Perl uses this improved +version when a property is specified as just C<\p{I<script>}>. The meaning of +compound forms, like C<\p{sc=I<script>}> are unchanged. This should make +programs be more accurate when determining if a character is used in a given +script, but there is a slight chance of breakage for programs that very +specifically needed the old behavior. See L<perlunicode/Scripts>. + +=head2 Declaring a reference to a variable + +As an experimental feature, Perl now allows the referencing operator to come +after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>, +L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>. This syntax must +be enabled with C<use feature 'declared_refs'>. It is experimental, and will +warn by default unless C<no warnings 'experimental::refaliasing'> is in effect. +It is intended mainly for use in assignments to references. For example: + + use experimental 'refaliasing', 'declared_refs'; + my \$a = \$b; + +See L<perlref/Assigning to References> for slightly more detail. + +=head2 Perl can now do default collation in UTF-8 locales on platforms +that support it + +Some platforms natively do a reasonable job of collating and sorting in +UTF-8 locales. Perl now works with those. For portability and full +control, L<Unicode::Collate> is still recommended, but now you may +not need to do anything special to get good-enough results, depending on +your application. See +L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>. + +=head2 Better locale collation of strings containing embedded C<NUL> +characters + +In locales that have multi-level character weights, these are now +ignored at the higher priority ones. There are still some gotchas in +some strings, though. See +L<perllocale/Collation of strings containing embedded C<NUL> characters>. + +=head2 Lexical subroutines are no longer experimental + +Using the C<lexical_subs> feature no longer emits a warning. Existing +code that disables the C<experimental::lexical_subs> warning category +that the feature previously used will continue to work. The +C<lexical_subs> feature has no effect; all Perl code can use lexical +subroutines, regardless of what feature declarations are in scope. + +=head2 C<CORE> subroutines for hash and array functions callable via +reference + +The hash and array functions in the C<CORE> namespace--C<keys>, C<each>, +C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>--, can now +be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference +(C<< my $k = \&CORE::keys; $k-E<gt>(\%hash) >>). Previously they could only be +used when inlined. + +=head2 POSIX::tmpnam() has been removed + +The fundamentally unsafe C<tmpnam()> interface was deprecated in +Perl 5.22.0 and has now been removed. In its place you can use +for example the L<File::Temp> interfaces. + +=head2 require ::Foo::Bar is now illegal. + +Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any +bareword require which starts with a double colon dies instead. + +=head2 Unescaped literal C<"{"> characters in regular expression +patterns are no longer permissible + +You have to now say something like C<"\{"> or C<"[{]"> to specify to +match a LEFT CURLY BRACKET. This will allow future extensions to the +language. This restriction is not enforced, nor are there current plans +to enforce it, if the C<"{"> is the first character in the pattern. + +These have been deprecated since v5.16, with a deprecation message +displayed starting in v5.22. + +=head2 Literal control character variable names are no longer permissible + +A variable name may no longer contain a literal control character under +any circumstances. These previously were allowed in single-character +names on ASCII platforms, but have been deprecated there since Perl +v5.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal +control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the +source code. + +=head2 C<NBSP> is no longer permissible in C<\N{...}> + +The name of a character may no longer contain non-breaking spaces. It +has been deprecated to do so since Perl v5.22. + +=head1 Security + +=head2 Remove current dir (C<.>) from C<@INC> + +For security reasons, C<@INC> no longer contains the default directory +(C<.>). + +=head2 "Escaped" colons and relative paths in PATH + +On Unix systems, Perl treats any relative paths in the PATH environment +variable as tainted when starting a new process. Previously, it was +allowing a backslash to escape a colon (unlike the OS), consequently +allowing relative paths to be considered safe if the PATH was set to +something like C</\:.>. The check has been fixed to treat C<.> as tainted +in that example. + +=head2 C<-Di> switch is now required for PerlIO debugging output + +Previously PerlIO debugging output would be sent to the file specified +by the C<PERLIO_DEBUG> environment variable if perl wasn't running +setuid and the C<-T> or C<-t> switches hadn't been parsed yet. + +If perl performed output at a point where it hadn't yet parsed its +switches this could result in perl creating or overwriting the file +named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied. + +Perl now requires the C<-Di> switch to produce PerlIO debugging +output. By default this is written to C<stderr>, but can optionally +be redirected to a file by setting the C<PERLIO_DEBUG> environment +variable. + +If perl is running setuid or the C<-T> switch has supplied +C<PERLIO_DEBUG> is ignored and the debugging output is sent to +C<stderr> as for any other C<-D> switch. + +=head1 Incompatible Changes + +=head2 C<${^ENCODING}> has been removed + +Consequently, the L<encoding> pragma's default mode is no longer supported. If +you still need to write your source code in encodings other than UTF-8, use a +source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter> +option. + +=head2 C<scalar(%hash)> return signature changed + +The value returned for C<scalar(%hash)> will no longer show information about +the buckets allocated in the hash. It will simply return the count of used +keys. It is thus equivalent to C<0+keys(%hash)>. + +A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()> +which provides the same behavior as C<scalar(%hash)> provided prior to Perl +5.25. + +=head2 C<keys> returned from an lvalue subroutine + +C<keys> returned from an lvalue subroutine can no longer be assigned +to in list context. + + sub foo : lvalue { keys(%INC) } + (foo) = 3; # death + sub bar : lvalue { keys(@_) } + (bar) = 3; # also an error + +This makes the lvalue sub case consistent with C<(keys %hash) = ...> and +C<(keys @_) = ...>, which are also errors. [perl #128187] + +=head1 Deprecations + +=head2 String delimiters that aren't stand-alone graphemes are now deprecated + +In order for Perl to eventually allow string delimiters to be Unicode +grapheme clusters (which look like a single character, but may be +a sequence of several ones), we have to stop allowing a single char +delimiter that isn't a grapheme by itself. These are unlikely to exist +in actual code, as they would typically display as attached to the +character in front of them. + +=head1 Performance Enhancements + +=over 4 + +=item * + +A hash in boolean context is now sometimes faster, e.g. + + if (!%h) { ... } + +This was already special-cased, but some cases were missed, and even the +ones which weren't have been improved. + +=item * + +Several other ops may now also be faster in boolean context. + +=item * New Faster Hash Function on 64 bit builds + +We use a different hash function for short and long keys. This should +improve performance and security, especially for long keys. + +=item * readline is faster + +Reading from a file line-by-line with C<readline()> or C<< E<lt>E<gt> >> should +now typically be faster due to a better implementation of the code that +searches for the next newline character. + +=item * + +Reduce cost of SvVALID(). + +=item * + +C<$ref1 = $ref2> has been optimized. + +=item * + +Array and hash assignment are now faster, e.g. + + (..., @a) = (...); + (..., %h) = (...); + +especially when the RHS is empty. + +=item * + +Reduce the number of odd special cases for the C<SvSCREAM> flag. + +=item * + +Avoid sv_catpvn() in do_vop() when unneeded. + +=item * + +Enhancements in Regex concat COW implementation. + +=item * + +Speed up C<AV> and C<HV> clearing/undeffing. + +=item * + +Better optimise array and hash assignment + +=item * + +Converting a single-digit string to a number is now substantially faster. + +=item * + +The internal op implementing the C<split> builtin has been simplified and +sped up. Firstly, it no longer requires a subsidiary internal C<pushre> op +to do its work. Secondly, code of the form C<my @x = split(...)> is now +optimised in the same way as C<@x = split(...)>, and is therefore a few +percent faster. + +=item * + +The rather slow implementation for the experimental subroutine signatures +feature has been made much faster; it is now comparable in speed with the +old-style C<my ($a, $b, @c) = @_>. + +=item * + +Bareword constant strings are now permitted to take part in constant +folding. They were originally exempted from constant folding in August 1999, +during the development of Perl 5.6, to ensure that C<use strict "subs"> +would still apply to bareword constants. That has now been accomplished a +different way, so barewords, like other constants, now gain the performance +benefits of constant folding. + +This also means that void-context warnings on constant expressions of +barewords now report the folded constant operand, rather than the operation; +this matches the behaviour for non-bareword constants. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<Archive::Tar> has been upgraded from version 2.04 to 2.24. + +=item * + +L<arybase> has been upgraded from version 0.11 to 0.12. + +=item * + +L<attributes> has been upgraded from version 0.27 to 0.29. + +The deprecation message for the C<:unique> and C<:locked> attributes +now mention they will disappear in Perl 5.28. + +=item * + +L<B> has been upgraded from version 1.62 to 1.68. + +=item * + +L<B::Concise> has been upgraded from version 0.996 to 0.999. + +Its output is now more descriptive for C<op_private> flags. + +=item * + +L<B::Debug> has been upgraded from version 1.23 to 1.24. + +=item * + +L<B::Deparse> has been upgraded from version 1.37 to 1.40. + +=item * + +L<B::Xref> has been upgraded from version 1.05 to 1.06. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<base> has been upgraded from version 2.23 to 2.25. + +=item * + +L<bignum> has been upgraded from version 0.42 to 0.47. + +=item * + +L<Carp> has been upgraded from version 1.40 to 1.42. + +=item * + +L<charnames> has been upgraded from version 1.43 to 1.44. + +=item * + +L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.074. + +=item * + +L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.074. + +=item * + +L<Config::Perl::V> has been upgraded from version 0.25 to 0.28. + +=item * + +L<CPAN> has been upgraded from version 2.11 to 2.18. + +=item * + +L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010. + +=item * + +L<Data::Dumper> has been upgraded from version 2.160 to 2.167. + +The XS implementation now supports Deparse. + +This fixes a stack management bug. [perl #130487]. + +=item * + +L<DB_File> has been upgraded from version 1.835 to 1.840. + +=item * + +L<Devel::Peek> has been upgraded from version 1.23 to 1.26. + +=item * + +L<Devel::PPPort> has been upgraded from version 3.32 to 3.35. + +=item * + +L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<diagnostics> has been upgraded from version 1.34 to 1.36. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<Digest> has been upgraded from version 1.17 to 1.17_01. + +=item * + +L<Digest::MD5> has been upgraded from version 2.54 to 2.55. + +=item * + +L<Digest::SHA> has been upgraded from version 5.95 to 5.96. + +=item * + +L<DynaLoader> has been upgraded from version 1.38 to 1.42. + +=item * + +L<Encode> has been upgraded from version 2.80 to 2.88. + +=item * + +L<encoding> has been upgraded from version 2.17 to 2.19. + +This module's default mode is no longer supported as of Perl 5.25.3. It now +dies when imported, unless the C<Filter> option is being used. + +=item * + +L<encoding::warnings> has been upgraded from version 0.12 to 0.13. + +This module is no longer supported as of Perl 5.25.3. It emits a warning to +that effect and then does nothing. + +=item * + +L<Errno> has been upgraded from version 1.25 to 1.28. + +Document that using C<%!> loads Errno for you. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.24. + +=item * + +L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06. + +=item * + +L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.34. + +=item * + +L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.34. + +=item * + +L<feature> has been upgraded from version 1.42 to 1.47. + +Fixes the Unicode Bug in the range operator. + +=item * + +L<File::Copy> has been upgraded from version 2.31 to 2.32. + +=item * + +L<File::Fetch> has been upgraded from version 0.48 to 0.52. + +=item * + +L<File::Glob> has been upgraded from version 1.26 to 1.28. + +Issue a deprecation message for C<File::Glob::glob()>. + +=item * + +L<File::Spec> has been upgraded from version 3.63 to 3.67. + +=item * + +L<FileHandle> has been upgraded from version 2.02 to 2.03. + +=item * + +L<Filter::Simple> has been upgraded from version 0.92 to 0.93. + +It no longer treats C<no MyFilter> immediately following C<use MyFilter> as +end-of-file. [perl #107726] + +=item * + +L<Getopt::Long> has been upgraded from version 2.48 to 2.49. + +=item * + +L<Getopt::Std> has been upgraded from version 1.11 to 1.12. + +=item * + +L<Hash::Util> has been upgraded from version 0.19 to 0.22. + +=item * + +L<HTTP::Tiny> has been upgraded from version 0.056 to 0.070. + +Internal 599-series errors now include the redirect history. + +=item * + +L<I18N::LangTags> has been upgraded from version 0.40 to 0.42. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<IO> has been upgraded from version 1.36 to 1.38. + +=item * + +IO-Compress has been upgraded from version 2.069 to 2.074. + +=item * + +L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38. + +=item * + +L<IPC::Cmd> has been upgraded from version 0.92 to 0.96. + +=item * + +L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07. + +=item * + +L<JSON::PP> has been upgraded from version 2.27300 to 2.27400_02. + +=item * + +L<lib> has been upgraded from version 0.63 to 0.64. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<List::Util> has been upgraded from version 1.42_02 to 1.46_02. + +=item * + +L<Locale::Codes> has been upgraded from version 3.37 to 3.42. + +=item * + +L<Locale::Maketext> has been upgraded from version 1.26 to 1.28. + +=item * + +L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01. + +=item * + +L<Math::BigInt> has been upgraded from version 1.999715 to 1.999806. + +There have also been some core customizations. + +=item * + +L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.5005. + +=item * + +L<Math::BigRat> has been upgraded from version 0.260802 to 0.2611. + +=item * + +L<Math::Complex> has been upgraded from version 1.59 to 1.5901. + +=item * + +L<Memoize> has been upgraded from version 1.03 to 1.03_01. + +=item * + +L<Module::CoreList> has been upgraded from version 5.20170420 to 5.20170520. + +=item * + +L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68. + +=item * + +L<Module::Metadata> has been upgraded from version 1.000031 to 1.000033. + +=item * + +L<mro> has been upgraded from version 1.18 to 1.20. + +=item * + +L<Net::Ping> has been upgraded from version 2.43 to 2.55. + +IPv6 addresses and C<AF_INET6> sockets are now supported, along with several +other enhancements. + +Remove sudo from 500_ping_icmp.t. + +Avoid stderr noise in tests + +Check for echo in new Net::Ping tests. + +=item * + +L<NEXT> has been upgraded from version 0.65 to 0.67. + +=item * + +L<Opcode> has been upgraded from version 1.34 to 1.39. + +=item * + +L<open> has been upgraded from version 1.10 to 1.11. + +=item * + +L<OS2::Process> has been upgraded from version 1.11 to 1.12. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<overload> has been upgraded from version 1.26 to 1.28. + +Its compilation speed has been improved slightly. + +=item * + +L<parent> has been upgraded from version 0.234 to 0.236. + +=item * + +L<perl5db.pl> has been upgraded from version 1.50 to 1.51. + +Ignore F</dev/tty> on non-Unix systems. [perl #113960] + +=item * + +L<Perl::OSType> has been upgraded from version 1.009 to 1.010. + +=item * + +L<perlfaq> has been upgraded from version 5.021010 to 5.021011. + +=item * + +L<PerlIO> has been upgraded from version 1.09 to 1.10. + +=item * + +L<PerlIO::encoding> has been upgraded from version 0.24 to 0.25. + +=item * + +L<PerlIO::scalar> has been upgraded from version 0.24 to 0.26. + +=item * + +L<Pod::Checker> has been upgraded from version 1.60 to 1.73. + +=item * + +L<Pod::Functions> has been upgraded from version 1.10 to 1.11. + +=item * + +L<Pod::Html> has been upgraded from version 1.22 to 1.2202. + +=item * + +L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.28. + +=item * + +L<Pod::Simple> has been upgraded from version 3.32 to 3.35. + +=item * + +L<Pod::Usage> has been upgraded from version 1.68 to 1.69. + +=item * + +L<POSIX> has been upgraded from version 1.65 to 1.76. This remedies several +defects in making its symbols exportable. [perl #127821] +The C<POSIX::tmpnam()> interface has been removed, +see L</"POSIX::tmpnam() has been removed">. +Trying to import POSIX subs that have no real implementations +(like C<POSIX::atend()>) now fails at import time, instead of +waiting until runtime. + +=item * + +L<re> has been upgraded from version 0.32 to 0.34 + +This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx> +regular expression pattern modifier, and a change to the L<S<C<use re +'strict'>>|re/'strict' mode> experimental feature. When S<C<re +'strict'>> is enabled, a warning now will be generated for all +unescaped uses of the two characters C<}> and C<]> in regular +expression patterns (outside bracketed character classes) that are taken +literally. This brings them more in line with the C<)> character which +is always a metacharacter unless escaped. Being a metacharacter only +sometimes, depending on action at a distance, can lead to silently +having the pattern mean something quite different than was intended, +which the S<C<re 'strict'>> mode is intended to minimize. + +=item * + +L<Safe> has been upgraded from version 2.39 to 2.40. + +=item * + +L<Scalar::Util> has been upgraded from version 1.42_02 to 1.46_02. + +=item * + +L<Storable> has been upgraded from version 2.56 to 2.62. + +Fixes [perl #130098]. + +=item * + +L<Symbol> has been upgraded from version 1.07 to 1.08. + +=item * + +L<Sys::Syslog> has been upgraded from version 0.33 to 0.35. + +=item * + +L<Term::ANSIColor> has been upgraded from version 4.04 to 4.06. + +=item * + +L<Term::ReadLine> has been upgraded from version 1.15 to 1.16. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<Test> has been upgraded from version 1.28 to 1.30. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<Test::Harness> has been upgraded from version 3.36 to 3.38. + +=item * + +L<Test::Simple> has been upgraded from version 1.001014 to 1.302073. + +=item * + +L<Thread::Queue> has been upgraded from version 3.09 to 3.12. + +=item * + +L<Thread::Semaphore> has been upgraded from 2.12 to 2.13. + +Added the C<down_timed> method. + +=item * + +L<threads> has been upgraded from version 2.07 to 2.15. + +Compatibility with 5.8 has been restored. + +Fixes [perl #130469]. + +=item * + +L<threads::shared> has been upgraded from version 1.51 to 1.56. + +This fixes [cpan #119529], [perl #130457] + +=item * + +L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10. + +=item * + +L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741. + +It now builds on systems with C++11 compilers (such as G++ 6 and Clang++ +3.9). + +Now uses C<clockid_t>. + +=item * + +L<Time::Local> has been upgraded from version 1.2300 to 1.25. + +=item * + +L<Unicode::Collate> has been upgraded from version 1.14 to 1.19. + +=item * + +L<Unicode::UCD> has been upgraded from version 0.64 to 0.68. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<version> has been upgraded from version 0.9916 to 0.9917. + +=item * + +L<VMS::DCLsym> has been upgraded from version 1.06 to 1.08. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=item * + +L<warnings> has been upgraded from version 1.36 to 1.37. + +=item * + +L<XS::Typemap> has been upgraded from version 0.14 to 0.15. + +=item * + +L<XSLoader> has been upgraded from version 0.21 to 0.27. + +Fixed a security hole in which binary files could be loaded from a path +outside of L<C<@INC>|perlvar/@INC>. + +It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122] + +=back + +=head1 Documentation + +=head2 New Documentation + +=head3 L<perldeprecation> + +This file documents all upcoming deprecations, and some of the deprecations +which already have been removed. The purpose of this documentation is +two-fold: document what will disappear, and by which version, and serve +as a guide for people dealing with code which has features that no longer +work after an upgrade of their perl. + +=head2 Changes to Existing Documentation + +=head3 L<perlcall> + +=over 4 + +=item * + +Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30 + +This was changed to drop a leading C<v> in C<v5.30>, so it uses the same +style as other deprecation messages. + +=item * + +"\c%c" is more clearly written simply as "%s". + +It was decided to undeprecate the use of C<\c%c>, see L<http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html> + +=item * + +Removed redundant C<dSP> from an example. + +=back + +=head3 L<perlcommunity> + +=over 4 + +=item * + +All references to Usenet have been removed. + +=back + +=head3 L<perldata> + +=over 4 + +=item * + +Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return +signature changed> above. + +=item * + +Use of single character variables, with the variable name a non printable +character in the range C<\x80>-C<\xFF> is no longer allowed. Update the docs to +reflect this. + +=back + +=head3 L<perldelta> + +=over 4 + +=item * + +All references to Usenet have been removed. + +=back + +=head3 L<perldiag> + +=over 4 + +=item * + +Deprecations are to be marked with a D. +C<"%s() is deprecated on :utf8 handles"> use a deprecation message, and as +such, such be marked C<"(D deprecated)"> and not C<"(W deprecated)">. + +=back + +=head3 L<perlexperiment> + +=over 4 + +=item * + +Documented new feature: See L</Declaring a reference to a variable> above. + +=back + +=head3 L<perlfunc> + +=over 4 + +=item * + +Defined on aggregates is no longer allowed. Perlfunc was still reporting it as +deprecated, and that it will be deleted in the future. + +=item * + +Clarified documentation of L<C<seek()>|perlfunc/seek>, +L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>. +L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607> + +=item * + +Removed obsolete documentation of L<C<study()>|perlfunc/study>. + +=back + +=head3 L<perlguts> + +=over 4 + +=item * + +Add C<pTHX_> to magic method examples. + +=back + +=head3 L<perlhack> + +=over 4 + +=item * + +Document Tab VS Space. + +=back + +=head3 L<perlinterp> + +=over 4 + +=item * + +L<perlinterp> has been expanded to give a more detailed example of how to +hunt around in the parser for how a given operator is handled. + +=back + +=head3 L<perllocale> + +=over 4 + +=item * + +Document C<NUL> collation handling. + +=item * + +Some locales aren't compatible with Perl. Note the potential bad +consequences of using them. + +=back + +=head3 L<perlmodinstall> + +=over 4 + +=item * + +All references to Usenet have been removed. + +=back + +=head3 L<perlmodlib> + +=over 4 + +=item * + +Updated the mirror list. + +=item * + +All references to Usenet have been removed. + +=back + +=head3 L<perlnewmod> + +=over 4 + +=item * + +All references to Usenet have been removed. + +=back + +=head3 L<perlobj> + +=over 4 + +=item * + +Added a section on calling methods using their fully qualified names. + +=item * + +Do not discourage manual @ISA. + +=back + +=head3 L<perlootut> + +=over 4 + +=item * + +Tidy the document. + +=item * + +Mention C<Moo> more. + +=back + +=head3 L<perlop> + +=over 4 + +=item * + +Clarify behavior single quote regexps. + +=back + +=head3 L<perlre> + +=over 4 + +=item * + +Several minor enhancements to the documentation. + +=back + +=head3 L<perlsec> + +=over 4 + +=item * + +Fixed link to Crosby paper on hash complexity attack. + +=back + +=head3 L<perlref> + +=over 4 + +=item * + +Documented new feature: See L</Declaring a reference to a variable> above. + +=back + +=head3 L<perltie> + +=over 4 + +=item * + +Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return +signature changed> above. + +=back + +=head3 L<perlunicode> + +=over 4 + +=item * + +Documented change to C<\p{I<script>}> to now use the improved Script_Extensions +property. See L</Use of \p{script} uses the improved Script_Extensions +property> above. + +=item * + +Updated the text to correspond with changes in Unicode UTS#18, concerning +regular expressions, and Perl compatibility with what it says. + +=back + +=head3 L<perlvar> + +=over 4 + +=item * + +Removed obsolete documentation of C<${^ENCODING}>. See L</${^ENCODING} has +been removed> above. + +=item * + +Document C<@ISA>. Was documented other places, not not in L<perlvar>. + +=back + +=head1 Diagnostics + +=head2 New Diagnostics + +=head3 New Errors + +=over 4 + +=item * + +Since C<.> is now removed from C<@INC> by default, C<do> will now trigger +a warning recommending to fix the C<do> statement: + +L<do "%s" failed, '.' is no longer in @INC|perldiag/do "%s" failed, '.' is no longer in @INC; did you mean do ".E<sol>%s"?> + +=item * + +Using the empty pattern (which re-executes the last successfully-matched +pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has +always previously yielded a segfault. It now produces an error: +L<Infinite recursion in regex|perldiag/"Infinite recursion in regex">. + +=item * + +L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled"> + +(F) To declare references to variables, as in C<my \%x>, you must first enable +the feature: + + no warnings "experimental::declared_refs"; + use feature "declared_refs"; + +=item * + +L<Version control conflict marker|perldiag/"Version control conflict marker"> + +(F) The parser found a line starting with C<E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>>, +C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a +version control system to mark conflicts after a failed merge operation. + +=item * + +L<%s: command not found|perldiag/"%s: command not found"> + +(A) You've accidentally run your script through B<bash> or another shell +instead of Perl. Check the #! line, or manually feed your script into +Perl yourself. The #! line at the top of your file could look like: + + #!/usr/bin/perl + +=item * + +L<%s: command not found: %s|perldiag/"%s: command not found: %s"> + +(A) You've accidentally run your script through B<zsh> or another shell +instead of Perl. Check the #! line, or manually feed your script into +Perl yourself. The #! line at the top of your file could look like: + + #!/usr/bin/perl + +=item * + +L<Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is d ... [106 chars truncated] + +Unescaped left braces are already illegal in some contexts in regular +expression patterns, but, due to an oversight, no deprecation warning +was raised in other contexts where they are intended to become illegal. +This warning is now raised in these contexts. + +=item * + +L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s""> + +=item * + +L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename"> + +=item * + +L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s""> + +=item * + +L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s""> + +=back + +=head3 New Warnings + +=over 4 + +=item * + +L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter ... [46 chars truncated] + +See L</Deprecations> + +=item * + +L<Declaring references is experimental|perldiag/"Declaring references is experimental"> + +(S experimental::declared_refs) This warning is emitted if you use a reference +constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or +C<local()>. Simply suppress the warning if you want to use the feature, but +know that in doing so you are taking the risk of using an experimental feature +which may change or be removed in a future Perl version: + + no warnings "experimental::declared_refs"; + use feature "declared_refs"; + $fooref = my \$foo; + +=item * + +L<C<${^ENCODING}> is no longer supported. Its use will be fatal in Perl 5.28|perldiag/"${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28"> + +(D deprecated) The special variable C<${^ENCODING}>, formerly used to implement +the C<encoding> pragma, is no longer supported as of Perl 5.26.0. + +=back + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +When a C<require> fails, we now do not provide C<@INC> when the C<require> +is for a file instead of a module. + +=item * + +When C<@INC> is not scanned for a C<require> call, we no longer display +C<@INC> to avoid confusion. + +=item * + +Attribute "locked" is deprecated, and will disappear in Perl 5.28 + +=item * + +Attribute "unique" is deprecated, and will disappear in Perl 5.28 + +=item * + +Constants from lexical variables potentially modified elsewhere are +deprecated. This will not be allowed in Perl 5.32 + +=item * + +Deprecated use of my() in false conditional. This will be a fatal error +in Perl 5.30 + +=item * + +dump() better written as CORE::dump(). dump() will no longer be available +in Perl 5.30 + +=item * + +${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28 + +=item * + +File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob() +instead. + +=item * + +%s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30 + +=item * + +$* is no longer supported. Its use will be fatal in Perl 5.30 + +=item * + +$* is no longer supported. Its use will be fatal in Perl 5.30 + +=item * + +Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28 + +=item * + +Opening filehandle %s also as a directory. This will be a fatal +error in Perl 5.28 + +=item * + +Setting $/ to a reference to %s as a form of slurp is deprecated, +treating as undef. This will be fatal in Perl 5.28 + +=item * + +Unescaped left brace in regex is deprecated here (and will be fatal +in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in m/%s/ + +=item * + +Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 + +=item * + +Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28 + +=item * + +Use of code point 0x%s is deprecated; the permissible max is 0x%s. +This will be fatal in Perl 5.28 + +=item * + +Use of comma-less variable list is deprecated. Its use will be fatal +in Perl 5.28 + +=item * + +Use of inherited AUTOLOAD for non-method %s() is deprecated. This +will be fatal in Perl 5.28 + +=item * + +Use of strings with code points over 0xFF as arguments to %s operator +is deprecated. This will be a fatal error in Perl 5.28 + +=item * + +Improve error for missing tie() package/method. This brings the error messages +in line with the ones used for normal method calls, despite not using +call_method(). + +=item * + +Make the sysread()/syswrite/() etc :utf8 handle warnings default. These +warnings were under 'deprecated' previously. + +=item * + +'do' errors now refer to 'do' (not 'require'). + +=item * + +Details as to the exact problem have been added to the diagnostics that +occur when malformed UTF-8 is encountered when trying to convert to a +code point. + +=item * + +Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly +blames the variable for an uninitialized-value warning encountered by the +tied/magical code. + +=item * + +L<Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in m/%s/ ... [2 chars truncated] + +The word "here" has been added to the message that was raised in +v5.25.1. This is to indicate that there are contexts in which unescaped +left braces are not (yet) illegal. + +=item * + +Code like C<$x = $x . "a"> was incorrectly failing to yield a +L<use of uninitialized value|perldiag/"Use of uninitialized value%s"> +warning when C<$x> was a lexical variable with an undefined value. That has +now been fixed. [perl #127877] + +=item * + +When the error "Experimental push on scalar is now forbidden" is raised for +the hash functions C<keys>, C<each>, and C<values>, it is now followed by +the more helpful message, "Type of arg 1 to whatever must be hash or +array". [perl #127976] + +=item * + +C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no +argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now +been fixed. + +=item * + +C<< "string$scalar-E<gt>$*" >> now correctly prefers concat overloading to +string overloading if C<< $scalar-E<gt>$* >> returns an overloaded object, +bringing it into consistency with C<$$scalar>. + +=item * + +C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer +do, but merely produce a syntax error. [perl #128171] + +=item * + +C<do> or C<require> with a reference or typeglob which, when stringified, +contains a null character started crashing in Perl 5.20.0, but has now been +fixed. [perl #128182] + +=back + +=head1 Utility Changes + +=head2 F<c2ph> and F<pstruct> + +=over 4 + +=item * + +These old utilities have long since superceded by L<h2xs>, and are +now gone from the distribution. + +=back + +=head2 F<Porting/pod_lib.pl> + +=over 4 + +=item * + +Removed spurious executable bit. + +=item * + +Account for possibility of DOS file endings. + +=back + +=head2 F<Porting/sync-with-cpan> + +=over 4 + +=item * + +Many improvements + +=back + +=head2 F<perf/benchmarks> + +=over 4 + +=item * + +Tidy file, rename some symbols. + +=back + +=head2 F<Porting/checkAUTHORS.pl> + +=over 4 + +=item * + +Replace obscure character range with \w. + +=back + +=head2 F<t/porting/regen.t> + +=over 4 + +=item * + +try to be more helpful when tests fail. + +=back + +=head2 F<utils/h2xs.PL> + +=over 4 + +=item * + +Avoid infinite loop for enums. + +=back + +=head2 L<perlbug> + +=over 4 + +=item * + +Long lines in the message body are now wrapped at 900 characters, to stay +well within the 1000-character limit imposed by SMTP mail transfer agents. +This is particularly likely to be important for the list of arguments to +C<Configure>, which can readily exceed the limit if, for example, it names +several non-default installation paths. This change also adds the first unit +tests for perlbug. [perl #128020] + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +C<DEFAULT_INC_EXCLUDES_DOT> has been turned on as default. + +=item * + +The C<dtrace> build process has further changes: + +=over + +=item * + +If the C<-xnolibs> is available, use that so a F<dtrace> perl can be +built within a FreeBSD jail. + +=item * + +On systems that build a dtrace object file (FreeBSD, Solaris and +SystemTap's dtrace emulation), copy the input objects to a separate +directory and process them there, and use those objects in the link, +since C<dtrace -G> also modifies these objects. + +=item * + +Add libelf to the build on FreeBSD 10.x, since dtrace adds references +to libelf symbols. + +=item * + +Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A +default build on Solaris generates probes from the unused inline +functions, while they don't on FreeBSD, which causes C<dtrace -G> to +fail. + +=back + +[perl #130108] + +=item * + +You can now disable perl's use of the PERL_HASH_SEED and +PERL_PERTURB_KEYS environment variables by configuring perl with +C<-Accflags=NO_PERL_HASH_ENV>. + +=item * + +You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment +variable by configuring perl with +C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>. + +=item * + +Zero out the alignment bytes when calculating the bytes for 80-bit C<NaN> +and C<Inf> to make builds more reproducible. [perl #130133] + +=item * + +Since 5.18 for testing purposes we have included support for +building perl with a variety of non-standard, and non-recommended +hash functions. Since we do not recommend the use of these functions +we have removed them and their corresponding build options. Specifically +this includes the following build options: + + PERL_HASH_FUNC_SDBM + PERL_HASH_FUNC_DJB2 + PERL_HASH_FUNC_SUPERFAST + PERL_HASH_FUNC_MURMUR3 + PERL_HASH_FUNC_ONE_AT_A_TIME + PERL_HASH_FUNC_ONE_AT_A_TIME_OLD + PERL_HASH_FUNC_MURMUR_HASH_64A + PERL_HASH_FUNC_MURMUR_HASH_64B + +=item * + +Remove "Warning: perl appears in your path" + +This install warning is more or less obsolete, since most platforms already +*will* have a /usr/bin/perl or similar provided by the OS. + +=item * + +Reduce verbosity of "make install.man" + +Previously, two progress messages were emitted for each manpage: one by +installman itself, and one by the function in install_lib.pl that it calls to +actually install the file. Disabling the second of those in each case saves +over 750 lines of unhelpful output. + +=item * + +Cleanup for clang -Weverything support. [perl 129961] + +=item * + +Configure: signbit scan was assuming too much, stop assuming negative 0. + +=item * + +Various compiler warnings have been silenced. + +=item * + +Several smaller changes have been made to remove impediments to compiling under +C++11. + +=item * + +Builds using C<USE_PAD_RESET> now work again; this configuration had +bit-rotted. + +=item * + +A probe for C<gai_strerror> was added to F<Configure> that checks if the +the gai_strerror() routine is available and can be used to +translate error codes returned by getaddrinfo() into human +readable strings. + +=item * + +F<Configure> now aborts if both "-Duselongdouble" and "-Dusequadmath" are +requested. +L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203> + +=item * + +Fixed a bug in which F<Configure> could append "-quadmath" to the archname even +if it was already present. +L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538> + +=item * + +Clang builds with "-DPERL_GLOBAL_STRUCT" or "-DPERL_GLOBAL_STRUCT_PRIVATE" have +been fixed (by disabling Thread Safety Analysis for these configurations). + +=item * + +F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no +files require updates. This could cause dependencies, F<perlmain.c> +in particular, to be rebuilt unnecessarily. [perl #126710] + +=item * + +The output of C<perl -V> has been reformatted so that each configuration +and compile-time option is now listed one per line, to improve +readability. + +=item * + +C<Configure> now builds C<miniperl> and C<generate_uudmap> if you +invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>. +This means you can supply your target platform C<config.sh>, generate +the headers and proceed to build your cross-target perl. [perl #127234] + +=item * + +Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator +counts when the environment variable C<PERL_TRACE_OPS> to be set to a +non-zero integer. This allows C<make test> to pass on such a build. + +=item * + +When building with GCC 6 and link-time optimization (the C<-flto> option to +C<gcc>), C<Configure> was treating all probed symbols as present on the +system, regardless of whether they actually exist. This has been fixed. +[perl #128131] + +=item * + +The F<t/test.pl> library is used for internal testing of Perl itself, and +also copied by several CPAN modules. Some of those modules must work on +older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl +features. Compatibility with Perl 5.8 was inadvertently removed some time +ago; it has now been restored. [perl #128052] + +=item * + +The build process no longer emits an extra blank line before building each +"simple" extension (those with only F<*.pm> and F<*.pod> files). + +=back + +=head1 Testing + +=over 4 + +=item * + +F<XS-APItest/t/utf8.t>: Several small fixes and enhancements. + +=item * + +Tests for locales were erroneously using locales incompatible with Perl. + +=item * + +Some parts of the test suite that try to exhaustively test edge cases in the +regex implementation have been restricted to running for a maximum of five +minutes. On slow systems they could otherwise take several hours, without +significantly improving our understanding of the correctness of the code +under test. + +In addition, some of those test cases have been split into more files, to +allow them to be run in parallel on suitable systems. + +=item * + +A new internal facility allows analysing the time taken by the individual +tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>. + +=item * + +F<t/re/regexp_nonull.t> has been added to test that the regular expression +engine can handle scalars that do not have a null byte just past the end of +the string. + +=item * + +A new test script, F<t/op/decl-refs.t>, has been added to test the new feature, +"Declaring a reference to a variable". + +=item * + +A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes +generated by bracketed character classes are as expected. + +=item * + +F<t/harness> now tries really hard not to run tests outside of the Perl +source tree. [perl #124050] + +=back + +=head1 Platform Support + +=head2 New Platforms + +=over 4 + +=item NetBSD/VAX + +Perl now compiles under NetBSD on VAX machines. However, it's not +possible for that platform to implement floating-point infinities and +NaNs compatibly with most modern systems, which implement the IEEE-754 +floating point standard. The hexadecimal floating point (C<0x...p[+-]n> +literals, C<printf %a>) is not implemented, either. +The C<make test> passes 98% of tests. + +=over 4 + +=item * + +Test fixes and minor updates. + +=item * + +Account for lack of C<inf>, C<nan>, and C<-0.0> support. + +=back + +=back + +=head2 Platform-Specific Notes + +=over 4 + +=item Darwin + +don't treat -Dprefix=/usr as special, instead require an extra option +-Ddarwin_distribution to produce the same results. + +=item POSIX + +Finish removing POSIX deprecated functions. + +=item OS X + +OS X El Capitan doesn't implement the clock_gettime() or clock_getres() APIs, +emulate them as necessary. + +=item macOS + +Deprecated syscall(2) on macOS 10.12. + +=item EBCDIC + +Several tests have been updated to work (or be skipped) on EBCDIC platforms. + +=item HP-UX + +L<Net::Ping> UDP test is skipped on HP-UX. + +=item Hurd + +The hints for Hurd have been improved enabling malloc wrap and reporting the +GNU libc used (previously it was an empty string when reported). + +=item VAX + +VAX floating point formats are now supported. + +=item VMS + +=over 4 + +=item * + +The path separator for the C<PERL5LIB> and C<PERLLIB> environment entries is **** PATCH TRUNCATED AT 2000 LINES -- 1337 NOT SHOWN **** -- Perl5 Master Repository
