[prev in list] [next in list] [prev in thread] [next in thread] 

List:       perl5-changes
Subject:    [perl.git]  branch smoke-me/ookow2, created. v5.17.6-86-gd120337
From:       "Father Chrysostomos" <sprout () cpan ! org>
Date:       2012-11-26 18:06:16
Message-ID: E1Td34S-0008Ol-5Z () camel ! ams6 ! corp ! booking ! com
[Download RAW message or body]

In perl.git, the branch smoke-me/ookow2 has been created

<http://perl5.git.perl.org/perl.git/commitdiff/d12033768a30f28308ca1724369f9da729ef834b?hp=0000000000000000000000000000000000000000>


        at  d12033768a30f28308ca1724369f9da729ef834b (commit)

- Log -----------------------------------------------------------------
commit d12033768a30f28308ca1724369f9da729ef834b
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Mon Nov 26 09:40:34 2012 -0800

    subst.t: Test something I nearly broke
    
    The saving and restoring of $@ when utf8 tables were looked up was
    causing pp_subst's string pointers to go stale.  The existing mechanism
    of copying it temporarily to another scalar was already very fragile,
    and the new COW mechanism broke it (but I fixed it in the same commit
    that introduced the new COW mechanism).

M	t/re/subst.t

commit 6c296f0f1ebd374dae1efdff5b5f320a8fe8d449
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 14:50:48 2012 -0800

    Update docs to concur with $`,$&,$' changes
    
    plus a couple of other pod tweaks.

M	pod/perlre.pod
M	pod/perlreref.pod
M	pod/perlretut.pod
M	pod/perlvar.pod

commit 923ae9cd73c195221ad6769702c20229a410440c
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 14:31:25 2012 -0800

    Increase $English::VERSION to 1.06

M	lib/English.pm

commit b62ca22b04f1536624d41de9cc106420734eab29
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 14:31:04 2012 -0800

    English.pm: Update -no_match_vars docs

M	lib/English.pm

commit c2616160c26bffa88bb5dbcb1481a7ce6f53cc07
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 14:28:25 2012 -0800

    Test perl #4289
    
    This was fixed by the disabling of PL_sawampersand a few commits ago.
    
    The output used to be like this:
    
    $ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$&|, "\n"'
    e
    $ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$`|, "\n"'
    h
    $ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$'\''|, "\n"'
    l
    
    Now it's like this:
    
    $ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$&|, "\n"'
    b
    $ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$`|, "\n"'
    a
    $ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$'\''|, "\n"'
    c

M	t/re/pat_rt_report.t

commit bb6dcc1de54c344b938c51b17b129aa94d0f7b8a
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 14:04:05 2012 -0800

    test_bootstrap.t: Skip PL_sawampersand tests
    
    unless PERL_SAWAMPERSAND is defined.

M	t/porting/test_bootstrap.t

commit c370e1f2e658d8145a3789dc2081a67694f6ad94
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 13:58:40 2012 -0800

    Fix up Peek.t to account for preceding commits

M	ext/Devel-Peek/t/Peek.t

commit 0ec1e4e2a9f185c69dc84c135756538ec58ffd13
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 13:52:27 2012 -0800

    perl.h: Mention PERL_SAWAMPERSAND in perl -V output

M	perl.h

commit 70cc5ae67869f6b53f0f977199592cbf839b547a
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 25 12:57:04 2012 -0800

    Disable PL_sawampersand
    
    PL_sawampersand actually causes bugs (e.g., perl #4289), because the
    behaviour changes.  eval '$&' after a match will produce different
    results depending on whether $& was seen before the match.
    
    Using copy-on-write for the pre-match copy (preceding patches do that)
    alleviates the slowdown caused by mentioning $&.  The copy doesn't
    happen unless the string is modified after the match.  It's now a
    post- match copy.  So we no longer need to do things differently
    depending on whether $& has been seen.
    
    PL_sawampersand is now #defined to be equal to what it would be if
    every program began with $',$&,$`.
    
    I left the PL_sawampersand code in place, in case this commit proves
    immature.  Running Configure with -Accflags=PERL_SAWAMPERSAND will
    reënable the PL_sawampersand mechanism.

M	embedvar.h
M	gv.c
M	intrpvar.h
M	makedef.pl
M	perl.c
M	perl.h
M	regen/embed.pl
M	sv.c

commit ef3040e8e7e13da38fe2640227d1fee24a385f41
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Wed Nov 21 12:45:33 2012 -0800

    Enable PERL_NEW_COPY_ON_WRITE by default
    
    One can disable this with -Accflags=-DPERL_NO_COW.
    
    I am leaving this in for debugging purposes.  If it causes no problems
    in 5.18, we might remove the defines and enable it unconditionally in
    5.20, but then again we might not.

M	perl.h

commit e9b2a00085ef03c8f2a39993897b3321698daeb2
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Sun Nov 4 00:07:31 2012 -0700

    Allow COW with magical and blessed scalars (among others)
    
    Under PERL_NEW_COPY_ON_WRITE (and I suspect under
    PERL_OLD_COPY_ON_WRITE, too, but have not confirmed) it is harmless to
    do copy-on-write with a magical or blessed scalar.
    
    Also, under PERL_NEW_COPY_ON_WRITE, it is safe to do copy-on-write
    with scalars that have numbers in them as well as strings (though not
    under PERL_OLD_COPY_ON_WRITE).
    
    So redefine CAN_COW_MASK under PERL_NEW_COPY_ON_WRITE to be less
    restrictive.  We still can't do it when the SvOOK hack is in place,
    and I don't feel comfortable doing it with regexps, even if it could
    be proven feasible (regexps are SVf_FAKE, so that covers them).
    
    Anything SvROK cannot be SvPOK, so obviously we can't COW with that,
    but I left SVf_ROK in for good measure.
    
    This change to CAN_COW_MASK affects whether non-cow scalars will be
    turned into cows in sv_setsv_flags.  It is already possible for exist-
    ing cows to become magical, blessed or numeric elsewhere.
    
    Also, we don't need to check the flags on the lhs in sv_setsv_flags,
    except for SVf_BREAK.  This is similar to ecd5fa70f3, but applies to
    another branch just below it.
    
    pp_subst needs a little bit of adjustment, as it is not expecting a
    vstring to turn into a cow.

M	pp_hot.c
M	sv.c
M	sv.h

commit ea87286e9e123e43d9037d4df90ed989e2eece7c
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Fri Oct 19 09:52:03 2012 -0700

    Min string length for COW
    
    We have two separate length thresholds for when copy-on-write kicks
    in, one for when a buffer would have had to be (re)allocated
    (SV_COW_THRESHOLD) and another for when there is already a large
    enough buffer available (SV_COWBUF_THRESHOLD).
    
    Benchmarking against mktables and against Test.Simple's test suite
    (see JS::Test::Simple on CPAN) run with WWW::Scripter and JE shows
    that 0/1250 is the best combination, at least on 32-bit darwin.
    
    Apparently, copying into an existing buffer is much faster than the
    bookkeeping overhead of sv_force_normal_flags (which I see no way to
    speed up).
    
    I have defined these conditionally with #ifndef, so that platform-spe-
    cific hints can override them with values appropriate to the platform.
    
    Also, refactor things in sv_setsv_flags slightly to avoid using SvLEN
    and SvCUR repeatedly.

M	sv.c
M	sv.h

commit 17a9ca7f771163d5e0024053de55617a79ad4ae3
Author: Father Chrysostomos <sprout@cpan.org>
Date:   Mon Oct 8 00:20:21 2012 -0700

    New COW mechanism
    
    This was discussed in ticket #114820.
    
    This new copy-on-write mechanism stores a reference count for the
    PV inside the PV itself, at the very end.  (I was using SvEND+1
    at first, but parts of the regexp engine expect to be able to do
    SvCUR_set(sv,0), which causes the wrong byte of the string to be used
    as the reference count.)  Only 256 SVs can share the same PV this way.
    Also, only strings with allocated space after the trailing null can
    be used for copy-on-write.
    
    Much of the code is shared with PERL_OLD_COPY_ON_WRITE.  The restric-
    tion against doing copy-on-write with magical variables has hence been
    inherited, though it is not necessary.  A future commit will take
    care of that.
    
    I had to modify _core_swash_init to handle $@ differently.  The exist-
    ing mechanism of copying $@ to a new scalar and back again was very
    fragile.  With copy-on-write, $@ =~ s/// can cause pp_subst's string
    pointers to become stale.  So now we remove the scalar from *@ and
    allow the utf8-table-loading code to autovivify a new one.  Then we
    restore the untouched $@ afterwards if all goes well.

M	dump.c
M	embed.fnc
M	embed.h
M	makedef.pl
M	perl.h
M	pp_ctl.c
M	pp_hot.c
M	proto.h
M	regcomp.c
M	regexec.c
M	regexp.h
M	sv.c
M	sv.h
M	utf8.c
-----------------------------------------------------------------------

--
Perl5 Master Repository


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic