In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/96e0fd865b4e053653239878cf2c6d22604c5806?hp=6ebc3119a0c51a99d17fe549d6a9e07d931a7634>
- Log ----------------------------------------------------------------- commit 96e0fd865b4e053653239878cf2c6d22604c5806 Author: David Mitchell <[email protected]> Date: Tue May 23 11:35:34 2017 +0100 more perldelta fixups. This is my reading from the start of the file through to the start of =head1 Documentation * the new 'do' warning isn't mandatory (but merely enabled by default) * make it clear that the -Di cmd-line switch is new * remove some optimisations that are trivial or not really optimisations. * For modules, remove descriptions of bug fixes which are obscure/trivial * I don't know how the "Compatibility with 5.8 has been restored" text for threads came about - it was added in the 5.25.1 perldelta, but no commits around that time seem to support this. So I removed it. * a few typos etc * I also added an Internals entry for OP_SPLIT/OP_PUSHRE. ----------------------------------------------------------------------- Summary of changes: pod/perldelta.pod | 107 ++++++++++++++++++------------------------------------ 1 file changed, 36 insertions(+), 71 deletions(-) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 307d1a92c2..1d974d592d 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -215,14 +215,14 @@ ease installation of CPAN modules which have not been updated to handle the lack of dot. Once again, don't use this unless you are sure that this will not reintroduce any security concerns. -=item * A new mandatory warning issued by C<do>. +=item * A new deprecation warning issued by C<do>. While it is well-known that C<use> and C<require> use C<@INC> to search for the file to load, many people don't realise that C<do "file"> also searches C<@INC> if the file is a relative path. With the removal of C<".">, a simple C<do "file.pl"> will fail to read in and execute C<file.pl> from the current directory. Since this is commonly expected behaviour, a new -mandatory warning is now issued whenever C<do> fails to load a file which +deprecation warning is now issued whenever C<do> fails to load a file which it otherwise would have found if dot had been in C<@INC>. =back @@ -357,7 +357,7 @@ 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 +=head2 New C<-Di> switch is now required for PerlIO debugging output This is used for debugging of code within PerlIO to avoid recursive calls. Previously this output would be sent to the file specified @@ -368,7 +368,8 @@ 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 +Perl now requires the C<-Di> switch to be present before it will 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. @@ -499,7 +500,7 @@ A hash in boolean context is now sometimes faster, I<e.g.> if (!%h) { ... } This was already special-cased, but some cases were missed (such as -C<grep %$_, @AoH>, and even the ones which weren't have been improved. +C<grep %$_, @AoH>), and even the ones which weren't have been improved. =item * New Faster Hash Function on 64 bit builds @@ -514,39 +515,21 @@ searches for the next newline character. =item * -Reduce cost of C<SvVALID()>. +Assigning one reference to another, I<e.g.> C<$ref1 = $ref2> has been +optimized in some cases. =item * -C<$ref1 = $ref2> has been optimized. - -=item * - -Array and hash assignment are now faster, I<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 C<sv_catpvn()> in C<do_vop()> when unneeded. - -=item * - -Enhancements in Regex concat COW implementation. +Remove some exceptions to creating Copy-on-Write strings. The string +buffer growth algorithm has been altered slightly so that you're less +likely to encounter a string which which can't be COWed. =item * Better optimise array and hash assignment: where an array or hash appears in the LHS of a list assignment, such as C<(..., @a) = (...);>, it's likely to be considerably faster, especially if it involves emptying the -array/hash. For example this code runs about 1/3 faster compared to +array/hash. For example this code runs about a third faster compared to Perl 5.24.0: my @a; @@ -555,24 +538,23 @@ Perl 5.24.0: @a = (); } - =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. +The C<split> builtin is now slightly faster in many cases: in particular +for the two specially-handled forms + + my @a = split ...; + local @a = split ...; =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) = @_>. +traditional C<my ($a, $b, @c) = @_>. =item * @@ -677,9 +659,6 @@ 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. -L<[perl #130487]|https://rt.perl.org/Public/Bug/Display.html?id=130487>. - =item * L<DB_File> has been upgraded from version 1.835 to 1.840. @@ -744,7 +723,7 @@ that effect and then does nothing. L<Errno> has been upgraded from version 1.25 to 1.28. -Document that using C<%!> loads Errno for you. +It now documents that using C<%!> automatically loads Errno for you. It now uses 3-arg C<open()> instead of 2-arg C<open()>. L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> @@ -776,8 +755,6 @@ L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.34. 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. @@ -790,7 +767,7 @@ L<File::Fetch> has been upgraded from version 0.48 to 0.52. L<File::Glob> has been upgraded from version 1.26 to 1.28. -Issue a deprecation message for C<File::Glob::glob()>. +It now Issues a deprecation message for C<File::Glob::glob()>. =item * @@ -837,17 +814,9 @@ L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122> L<IO> has been upgraded from version 1.36 to 1.38. -The F<t/cachepropagate-unix.t> test now checks C<pack_sockaddr_un()>'s -return value because C<pack_sockaddr_un()> silently truncates the -supplied path if it won't fit into the C<sun_path> member of -C<sockaddr_un>. This may change in the future, but for now check the -path in theC<sockaddr> matches the desired path, and skip if it -doesn't. -L<[perl #128095]|https://rt.perl.org/Public/Bug/Display.html?id=128095> - =item * -IO-Compress has been upgraded from version 2.069 to 2.074. +IO::Compress has been upgraded from version 2.069 to 2.074. =item * @@ -892,8 +861,6 @@ L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01. 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. @@ -933,12 +900,6 @@ 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 L<Net::Ping> tests. - =item * L<NEXT> has been upgraded from version 0.65 to 0.67. @@ -972,7 +933,7 @@ L<parent> has been upgraded from version 0.234 to 0.236. L<perl5db.pl> has been upgraded from version 1.50 to 1.51. -Ignore F</dev/tty> on non-Unix systems. +It now ignores F</dev/tty> on non-Unix systems. L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960> =item * @@ -1021,11 +982,14 @@ 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. +L<POSIX> has been upgraded from version 1.65 to 1.76. + +This remedies several defects in making its symbols exportable. L<[perl #127821]|https://rt.perl.org/Public/Bug/Display.html?id=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. @@ -1109,18 +1073,10 @@ Added the C<down_timed> method. L<threads> has been upgraded from version 2.07 to 2.15. -Compatibility with 5.8 has been restored. - -Fixes -L<[perl #130469]|https://rt.perl.org/Public/Bug/Display.html?id=130469>. - =item * L<threads::shared> has been upgraded from version 1.51 to 1.56. -This fixes [cpan #119529], -L<[perl #130457]|https://rt.perl.org/Public/Bug/Display.html?id=130457> - =item * L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10. @@ -2416,6 +2372,15 @@ elements of a subroutine signature, plus any overall checking required. =item * +The C<OP_PUSHRE> op has been eliminated and the C<OP_SPLIT> op has been +changed from class C<LISTOP> to C<PMOP>. + +Formerly the first child of a split would be a pushre, which would have the +split's regex attached to it. Now the regex is attached directly to the +split op, and the pushre has been eliminated. + +=item * + The L<C<op_class()>|perlapi/op_class> API function has been added. This is like the existing C<OP_CLASS()> macro, but can more accurately determine what struct an op -- Perl5 Master Repository
