In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/353075a07ebc959a3a5d83bf53b00f3d2664ed00?hp=362e81e7a6d19fc10323ebfc1fd94e7ca546fb64>

- Log -----------------------------------------------------------------
commit 353075a07ebc959a3a5d83bf53b00f3d2664ed00
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:53:35 2014 -0800

    perldelta for 8915ba3d0

M       pod/perldelta.pod

commit d8fc35861442cef38933d61f3720e32dd16898bd
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:52:06 2014 -0800

    perldelta for dc1230de

M       pod/perldelta.pod

commit f5630681a4cb4d050ff32a7bd14d6458ca2d2f1f
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:50:25 2014 -0800

    perldelta for referencing outer stale vars
    
    e52eb89 Avoid reifying GVs in rv2cv
    c5e6a3c Test reference to unavailable lexical variable

M       pod/perldelta.pod

commit aa95859b3cbf926083cadfb92ec5b096d282ad94
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:46:06 2014 -0800

    perldelta for 5a8cd187c67

M       pod/perldelta.pod

commit e5fbfbc138e9c40911618be99d66f85eb2a366a3
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:43:01 2014 -0800

    perldelta for bae8cfc69

M       pod/perldelta.pod

commit 73e793fc64b8b2c2d5d5d414ba0bc0bc9f8e47d5
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:41:19 2014 -0800

    perldelta for 6a8b6cf09

M       pod/perldelta.pod

commit 70cee83f8ef0805c348e12d97bbfb92f86d4c93b
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:37:25 2014 -0800

    perldelta for OA_DANGEROUS additions
    
    6575cde tied is OA_DANGEROUS
    d86b312 values and each are OA_DANGEROUS

M       pod/perldelta.pod

commit 9e26817d2718fa3546cd8efc6212c698dfddaef0
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:34:44 2014 -0800

    perldelta for OPpTARGET_MY bugs
    
    b454703 Fix $lex = $ref++ under use integer
    f595e19 Fix $lex = chomp $lex regression from 5.12
    f9e9590 Call STORE on lexical $tied = vec/chr
    8ec0525 Don’t call STORE twice on setpgrp target

M       pod/perldelta.pod

commit 1e461e1609d667b0f9b7f7ed2d4f4a211a91dc52
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:13:06 2014 -0800

    perldelta for 710b427f0

M       pod/perldelta.pod

commit 80b0bb9141be18ccc5c41bda21dce75050eebc7b
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:11:47 2014 -0800

    perldelta for #119815 / 12cea2fa65

M       pod/perldelta.pod

commit b450ee68c90f0b8c9f82f2582aa0347bca34b905
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 14:01:41 2014 -0800

    perldelta for OPpTARGET_MY optimisations
    
    db09808 Allow OPpTARGET_MY optimisation for vec
    6abbd37 Allow OPpTARGET_MY optimisation for x
    d8cdf57 Allow OPpTARGET_MY optimisation for split
    a1b22ab Extend OPpTARGET_MY optimisation to state var init

M       pod/perldelta.pod

commit 167522052bf54d72296c14fb88291d4f06294bd4
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 13:46:57 2014 -0800

    perldelta for #77452 / 8635e3c23

M       pod/perldelta.pod

commit ef7051baee4d1f45801a8aca528cb1cd84074c51
Author: Father Chrysostomos <[email protected]>
Date:   Sun Nov 16 13:16:32 2014 -0800

    perldelta for 6a9665b0cf

M       pod/perldelta.pod
-----------------------------------------------------------------------

Summary of changes:
 pod/perldelta.pod | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index a44767e..45d6dab 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -130,6 +130,31 @@ operator disappears.  If the right-hand argument is a 
constant 0, the whole
 expressions is optimised to the empty list, so long as the left-hand
 argument is a simple scalar or constant.  C<(foo())x0> is not optimised.
 
+=item *
+
+C<substr> assignment is now optimised into 4-argument C<substr> at the end
+of a subroutine (or as the argument to C<return>).  Previously, this
+optimisation only happened in void context.
+
+=item *
+
+Assignment to lexical variables is often optimised away.  For instance, in
+C<$lexical = chr $foo>, the C<chr> operator writes directly to the lexical
+variable instead of returning a value that gets copied.  This optimisation
+has been extended to C<split>, C<x> and C<vec> on the right-hand side.  It
+has also been made to work with state variable initialization.
+
+=item *
+
+In "\L...", "\Q...", etc., the extra "stringify" op is now optimised away,
+making these just as fast as C<lcfirst>, C<quotemeta>, etc.
+
+=item *
+
+Assignment to an empty list is now sometimes faster.  In particular, it
+never calls C<FETCH> on tied arguments on the right-hand side, whereas it
+used to sometimes.
+
 =back
 
 =head1 Modules and Pragmata
@@ -163,6 +188,22 @@ L<B::Deparse> has been upgraded from version 1.29 to 1.30.
 It now deparses C<+sub : attr { ... }> correctly at the start of a
 statement.  Without the initial C<+>, C<sub> would be a statement label.
 
+C<BEGIN> blocks are now emitted in the right place most of the time, but
+the change unfortunately introduced a regression, in that C<BEGIN> blocks
+occurring just before the end of the enclosing block may appear below it
+instead.  So this change may need to be reverted if it cannot be fixed
+before Perl 5.22.  [perl #77452]
+
+B::Deparse no longer puts erroneous C<local> here and there, such as for
+C<LIST = tr/a//d>.  [perl #119815]
+
+=item *
+
+L<B::Op_private> has been upgraded from version 5.021005 to 5.021006.
+
+It now includes a hash named C<%ops_using>, list all op types that use a
+particular private flag.
+
 =item *
 
 L<DynaLoader> has been upgraded from version 1.27 to 1.28.
@@ -268,6 +309,16 @@ L<Can't do %s("%s") on non-UTF-8 locale; resolved to 
"%s".|perldiag/Can't do %s(
 
 L<Warning: unable to close filehandle %s properly: %s|perldiag/"Warning: 
unable to close filehandle %s properly: %s">
 
+=item *
+
+The following two warnings for C<tr///> used to be skipped if the
+transliteration contained wide characters, but now they occur regardless of
+whether there are wide characters or not:
+
+L<Useless use of E<sol>d modifier in transliteration 
operator|perldiag/"Useless use of /d modifier in transliteration operator">
+
+L<Replacement list is longer than search list|perldiag/Replacement list is 
longer than search list>
+
 =back
 
 =head2 Changes to Existing Diagnostics
@@ -531,6 +582,32 @@ C<(...) x ...> in scalar context used to corrupt the stack 
if one operand
 were an object with "x" overloading, causing erratic behaviour.
 [perl #121827]
 
+=item *
+
+Assignment to a lexical scalar is often optimised away (as mentioned under
+L</Performance Enhancements>.  Various bugs related to this optimisation
+have been fixed.  Certain operators on the right-hand side would sometimes
+fail to assign the value at all or assign the wrong value, or would call
+STORE twice or not at all on tied variables.  The operators affected were
+C<$foo++>, C<$foo-->, and C<-$foo> under C<use integer>, C<chomp>, C<chr>
+and C<setpgrp>.
+
+=item *
+
+List assignments were sometimes buggy if the same scalar ended up on both
+sides of the assignment due to used of C<tied>, C<values> or C<each>.  The
+result would be the wrong value getting assigned.
+
+=item *
+
+C<setpgrp($nonzero)> (with one argument) was accidentally changed in 5.16
+to mean C<setpgrp(0)>.  This has been fixed.
+
+=item *
+
+C<__SUB__> could return the wrong value or even corrupt memory under the
+debugger (the B<-d> switch) and in subs containing C<eval $string>.
+
 =back
 
 =head1 Known Problems
@@ -568,6 +645,15 @@ This bug was actually fixed in 5.21.5, but it was not 
until after that
 release that this bug, and the fact that it had been fixed, were
 discovered.
 
+=item *
+
+If a named sub tries to access a scalar declared in an outer anonymous sub,
+the variable is not available, so the named sub gets its own undefined
+scalar.  In 5.10, attempts to take a reference to the variable
+(C<\$that_variable>) began returning a reference to a I<copy> of it
+instead.  This was accidentally fixed in 5.21.4, but the bug and its fix
+were not noticed till now.
+
 =back
 
 =head1 Obituary

--
Perl5 Master Repository

Reply via email to