In perl.git, the branch smoke-me/BeOS-is-late has been created

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

        at  8c6c6997cf2a8cd5e947a61f94ca02dd8b963334 (commit)

- Log -----------------------------------------------------------------
commit 8c6c6997cf2a8cd5e947a61f94ca02dd8b963334
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Wed Nov 28 15:01:29 2012 -0700

    mktables: Sort some outputs for repeatability
    
    The recent change to random hash ordering caused some of the files
    output by mktables to vary from run to run.  Everything still worked.
    However, one of the ways I debug mktables is to make a change, and then
    compare the tables it generates with those from before the change.  That
    tells me the precise effect of the change.  That no longer works if the
    tables come out in random order from run to run.
    
    This patch just sorts certain things so that the tables are output in
    the same order each time.

M       lib/unicore/mktables

commit 55cb5ee05bfa53af92bb56c9ce4ceb2037ace231
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Wed Nov 28 08:46:52 2012 -0700

    embed.fnc, mathoms.c: Add comments

M       embed.fnc
M       mathoms.c

commit 6b785ed7762408e359d2dd31a91df1216e750448
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Tue Nov 27 15:24:17 2012 -0700

    perlapi: Don't mention internal function
    
    This function is undocumented, and is for internal core use only.  Cause
    it to not be mentioned in perlapi

M       embed.fnc

commit cd298ce42eb3c82a651608c3fbd658ec616b0297
Merge: 08bf00b f5a0fd1
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Tue Nov 27 07:08:08 2012 -0800

    [Merge] New COW mechanism
    
    This branch makes string copying faster by introducing a new copy-on-
    write mechanism.  A reference count for the string buffer is now
    stored inside the string buffer itself.  This can be disabled with
    -Accflags=-DPERL_NO_COW.
    
    It also disables the PL_sawampersand mechanism, as copy-on-write
    can now be used for the pre-match ‘copy’, resulting in no slow-
    down from using $& and f(r)iends.  This can be reënabled with
    -Accflags=-DPERL_SAWAMPERSAND.

commit f5a0fd1e07ceb4866d2eee4eb9283498cd3ef1be
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Mon Nov 26 22:23:53 2012 -0800

    Don’t share TARGs between recursive ops
    
    I had to change the definition of IS_PADCONST to account for the
    SVf_IsCOW flag.  Previously, anything marked READONLY would be consid-
    ered a pad constant, to be shared by pads of different recursion lev-
    els.  Some of those READONLY things were not actually read-only, as
    they were copy-on-write scalars, which are never read-only.  So I
    changed the definition of IS_PADCONST in e3918bb703c to accept COWs
    as well as read-only scalars, since I was removing the READONLY flag
    from COWs.
    
    With the new copy-on-write scheme, it is easy for a TARG to turn into
    a COW.  If that happens and then the same subroutine calls itself
    recursively for the first time after that, pad_push will see that this
    is a pad ‘constant’ and allow the next recursion level to share it.
    
    If pp_concat calls itself recursively, the recursive call can modify
    the scalar the outer call is in the middle of using, causing the
    return value to be doubled up (‘tmptmp’) in the test case added here.
    
    Since pad constants are marked PADTMP (I would like to change that
    eventually), there is no way to distinguish them from TARGs when the
    are COWs, except for the fact that pad constants that are COWs are
    always shared hash keys (SvLEN==0).

M       op.h
M       t/op/concat2.t

commit e1b145039d15f6202e21cd23abb95117153eb816
Author: Father Chrysostomos <spr...@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 d78f32f607952d58a998c5b7554572320dc57b2a
Author: Father Chrysostomos <spr...@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 20961b6483f3653e3bf928a60cca828e2b13e098
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Nov 25 14:31:25 2012 -0800

    Increase $English::VERSION to 1.06

M       lib/English.pm

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

    English.pm: Update -no_match_vars docs

M       lib/English.pm

commit 00f6437b30bbbd24904cbecfa1c00ab91f7315e5
Author: Father Chrysostomos <spr...@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 aaee23ae9c2dfc4e671dcc6a11a59f9baf00f533
Author: Father Chrysostomos <spr...@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 c9669de21442b78c25b8a9d8500a806a25fb9194
Author: Father Chrysostomos <spr...@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 5b50f57e3c9dd69e1372943621f74736a63b65e5
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Nov 25 13:52:27 2012 -0800

    perl.h: Mention PERL_SAWAMPERSAND in perl -V output

M       perl.h

commit 1a904fc88069e249a4bd0ef196a3f1a7f549e0fe
Author: Father Chrysostomos <spr...@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 07d01d6ec25527bf0236de2205ea412d40353058
Author: Father Chrysostomos <spr...@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 f7a8268cd8b5af71e2d24a595ca88e48464a3e94
Author: Father Chrysostomos <spr...@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 9fd2152b911b1c311a72e55728050bfa2fc67ca6
Author: Father Chrysostomos <spr...@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 db2c6cb33ec067c880a2cb3c4efdb33f7e3e3d0f
Author: Father Chrysostomos <spr...@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

commit 08bf00be470db7b367e14733226d4fddc004c796
Author: Matthew Horsfall (alh) <wolfs...@gmail.com>
Date:   Sun Nov 25 11:13:05 2012 -0500

    Fix comment referencing pp_iterinit (should be pp_enteriter)

M       op.c

commit 9566f14a1e60201c203759da1798f55f226bac9e
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Mon Nov 26 16:18:47 2012 -0700

    regexec.c: White space only; no code changes

M       regexec.c

commit 33f29a4cec504672835fd47a5b11657983d0209e
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Mon Nov 26 16:06:53 2012 -0700

    Remove 3 unused interpreter variables
    
    These variables have been unused in the Perl core since
    commit 4c88d5e0740d796bf5064336d280bba72897f385.
    
    The variables are undocumented.  The only real use of any of these I
    found in CPAN is at
    https://metacpan.org/source/ABERGMAN/Devel-GC-Helper-0.25/Helper.xs#L1
    The uses there appear to be in a list of known Perl variables.  Since
    the module was published, more than a few new variables have been added,
    making this code obsolete anyway.

M       embedvar.h
M       intrpvar.h
M       perl.c
M       sv.c

commit 06099f79acc9684bcbd2efbb1efe56ce80c65f08
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Mon Nov 26 07:07:21 2012 -0600

    Consider /... a directory component with EFS on VMS.
    
    For some reason the omnibus patch (360732b5267d5dfe) that brought
    Extended Filename Syntax support to the VMS port considered three
    dots part of the filename portion rather than part of the
    directory portion when converting a Unix-format path to VMS format.
    
    There's no reason this should be different with EFS, so make it
    the same as without EFS, which gets two TODO tests passing.

M       vms/ext/filespec.t
M       vms/vms.c

commit 05a206c836e4d4e324996ada45136cc40a68126c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Nov 25 17:13:21 2012 -0800

    Add Bob Ernst to AUTHORS

M       AUTHORS

commit 98c9650cd6a4e552074e5a73bc335c5d9f92ff52
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Oct 5 13:00:35 2012 -0700

    Move a CAN_COW_MASK comment from sv.c to sv.h
    
    It got left behind in ed25273444 when the macro moved.

M       sv.c
M       sv.h

commit 048a2f473ab9e1649559f56eff334b3c25289f57
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Oct 4 12:45:45 2012 -0700

    Missing dependency in XS::APItest’s Makefile
    
    When core_or_not.inc is modified, core.c and notcore.c should
    be recompiled.

M       ext/XS-APItest/Makefile.PL

commit 0f534aaf12174a6c02f455475bef3141f46c221b
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Nov 25 13:03:07 2012 -0800

    Stop cv-to-glob assignment redef warnings from leaking
    
    We should not increment the reference count of the assignee until we
    are past the warnings.  It should only happen when the reference-
    counted location is actually made to hold the assignee.
    
    At the same time, I changed it to use a more specific variant of
    SvREFCNT_inc, for speed.

M       sv.c
M       t/op/svleak.t

commit e759bc314f0fb0eebf211ca20ce3b52cbce6bd71
Author: Bob Ernst <bober...@cpan.org>
Date:   Sun Nov 18 00:03:58 2012 +0000

    Add descriptions to tests for exp.t

M       t/op/exp.t

commit 66745c0bdc21eaccfcea80c9af21d23eadd859ab
Author: Bob Ernst <bober...@cpan.org>
Date:   Sat Nov 17 22:14:53 2012 +0000

    Add descriptions to tests for fh.t

M       t/op/fh.t

commit af1b6079f4f58b6c4af6ba7874b8b96fa7dfd92d
Author: Bob Ernst <bober...@cpan.org>
Date:   Sat Nov 17 21:18:20 2012 +0000

    Added descriptions to tests in reverse.t

M       t/op/reverse.t

commit 7231abfa401098a696dd1efea7bea4e81edbe44f
Author: Bob Ernst <bober...@cpan.org>
Date:   Sat Nov 17 19:57:39 2012 +0000

    Add descriptions to tests for int.t

M       t/op/int.t

commit 2f54119d20adde7812afae1aa17e80481871bc2f
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Sun Nov 25 17:39:29 2012 +0000

    Update Compress-Raw-Zlib to CPAN version 2.059
    
      [DELTA]
    
      2.059 24 November 2012
    
          * Copy-on-write support
            [#81353]

M       Porting/Maintainers.pl
M       cpan/Compress-Raw-Zlib/Changes
M       cpan/Compress-Raw-Zlib/README
M       cpan/Compress-Raw-Zlib/Zlib.xs
M       cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm

commit ae48cd005ca79179175ad324e832a74269fc746b
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Sun Nov 25 17:38:06 2012 +0000

    Update Compress-Raw-Bzip2 to CPAN version 2.059
    
      [DELTA]
    
      2.059 24 November 2012
    
          * Copy-on-write support
            [#81352]

M       Porting/Maintainers.pl
M       cpan/Compress-Raw-Bzip2/Bzip2.xs
M       cpan/Compress-Raw-Bzip2/Changes
M       cpan/Compress-Raw-Bzip2/README
M       cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
M       cpan/Compress-Raw-Bzip2/t/000prereq.t

commit ab2aaaf441daa1a553b795d595da60aa52091a3d
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Sun Nov 25 17:36:18 2012 +0000

    Update Digest-SHA to CPAN version 5.74
    
      [DELTA]
    
      5.74  Sat Nov 24 03:10:18 MST 2012
           - handle wide-string input by converting to bytes first
                   -- viz. use SvPVbyte instead of SvPV in SHA.xs
                   -- thanks to Eric Brine for summary and code

M       Porting/Maintainers.pl
M       cpan/Digest-SHA/Changes
M       cpan/Digest-SHA/README
M       cpan/Digest-SHA/SHA.xs
M       cpan/Digest-SHA/lib/Digest/SHA.pm
M       cpan/Digest-SHA/shasum
M       cpan/Digest-SHA/src/hmac.c
M       cpan/Digest-SHA/src/hmac.h
M       cpan/Digest-SHA/src/sha.c
M       cpan/Digest-SHA/src/sha.h

commit b219737899b7744755182cf4dadebfabb21e24bc
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Sun Nov 25 10:03:25 2012 -0600

    Bump Term::ReadLine version.

M       dist/Term-ReadLine/lib/Term/ReadLine.pm

commit 9afdad132fb2f9cac46d8860924ad2b4384f4090
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Sun Nov 25 09:09:59 2012 -0600

    Add Sven Strickroth to AUTHORS.

M       AUTHORS

commit c0788ef2f042eecbda736216fc6338474b161551
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Sun Nov 25 08:54:32 2012 -0600

    Rational findConsole dispatch for Term::ReadLine.
    
    Back in 5.002 or so, if we didn't find /dev/tty and weren't on
    Windows, the console was assumed to be sys$command, which only
    makes sense on VMS (possibly $^O didn't work yet on VMS?).
    
    Later accretions have assumed that the sys$command default meant
    something other than laziness and a second if block with various
    specific overrides was added, some of which set the console back
    to undef after its having been set to sys$command.
    
    That can all be avoided by simply checking we're on VMS before
    setting the console to sys$command and letting it default to
    STDIN for cases where we don't know of something else specific
    that it should be.

M       dist/Term-ReadLine/lib/Term/ReadLine.pm

commit 0a616d17c63ccea3e07a9370becf1d236ce89558
Author: Sven Strickroth <sven.strickr...@tu-clausthal.de>
Date:   Sun Nov 25 08:44:02 2012 -0600

    (msys) perl readline creates sys$command files w/o STDIN connected
    
    This fixes [perl #115900].

M       dist/Term-ReadLine/lib/Term/ReadLine.pm

commit 6c864ec2ac9f9d9be7636d00f6c73b0fe89025b8
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Sun Nov 25 07:58:21 2012 -0700

    pp_hot.c: Comment typo, white-space only
    
    No code changes

M       pp_hot.c

commit 5aaab254c02795622bdf42e348ad8473aa1fc643
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Sat Nov 24 21:06:36 2012 -0700

    Remove "register" declarations
    
    This finishes the removal of register declarations started by
    eb578fdb5569b91c28466a4d1939e381ff6ceaf4.  It neglected the ones in
    function parameter declarations, and didn't include things in dist, ext,
    and lib, which this does include

M       NetWare/nwhashcls.cpp
M       NetWare/sv_nw.c
M       av.c
M       dist/Cwd/Cwd.pm
M       dist/Cwd/Cwd.xs
M       dist/Data-Dumper/Dumper.pm
M       dist/Data-Dumper/Dumper.xs
M       doio.c
M       doop.c
M       dquote_static.c
M       ext/Devel-Peek/Peek.pm
M       ext/Devel-Peek/Peek.xs
M       ext/DynaLoader/DynaLoader_pm.PL
M       ext/DynaLoader/dl_aix.xs
M       ext/File-Glob/bsd_glob.c
M       ext/SDBM_File/sdbm/README
M       ext/SDBM_File/sdbm/dba.c
M       ext/SDBM_File/sdbm/dbd.c
M       ext/SDBM_File/sdbm/dbe.c
M       ext/SDBM_File/sdbm/dbu.c
M       ext/SDBM_File/sdbm/hash.c
M       ext/SDBM_File/sdbm/pair.c
M       ext/SDBM_File/sdbm/readme.ms
M       ext/SDBM_File/sdbm/sdbm.c
M       ext/SDBM_File/sdbm/util.c
M       ext/VMS-Stdio/Stdio.xs
M       ext/XS-APItest/APItest.pm
M       ext/XS-APItest/APItest.xs
M       ext/arybase/ptable.h
M       ext/mro/mro.pm
M       ext/mro/mro.xs
M       haiku/Haiku/Haiku.pm
M       haiku/Haiku/Haiku.xs
M       hv.c
M       hv.h
M       malloc.c
M       mathoms.c
M       op.c
M       os2/os2.c
M       pad.c
M       perl.c
M       perl.h
M       pod/perlcall.pod
M       pod/perlguts.pod
M       pod/perlinterp.pod
M       pp.h
M       pp_pack.c
M       pp_sort.c
M       regcomp.c
M       regexec.c
M       scope.c
M       sv.c
M       t/porting/known_pod_issues.dat
M       toke.c
M       utf8.c
M       util.c
M       vms/vmsish.h
M       x2p/a2py.c
M       x2p/hash.c
M       x2p/str.c
M       x2p/util.c
M       x2p/walk.c

commit a8bd0d47f960000fee81e97d55dd5e8bac15e034
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Sat Nov 24 20:59:39 2012 -0700

    perlhack: Add note to not use "register" declarations

M       pod/perlhack.pod

commit de0df3c095e361fff88c58066233c2210f8a55b1
Author: Matthew Horsfall (alh) <wolfs...@gmail.com>
Date:   Sat Nov 24 13:05:49 2012 -0500

    RT-23180 - If we skip matching in pp_match for any reason, pos() must still 
be updated.

M       MANIFEST
M       pp_hot.c
A       t/re/pos.t

commit d5eaec228240ca8b0e978d5ff4742f6feadef98e
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Sat Nov 24 19:06:45 2012 -0600

    Clarify reporting of .DIR extension on VMS.
    
    In readdir and start_glob, we were removing the .DIR extension from
    VMS directory names when reporting results in Unix format, but also
    when Extended Filename Syntax (EFS) was enabled.  The former makes
    sense, but the latter (by itself) doesn't.

M       vms/vms.c

commit 0753128385586b74fb493c6e49d37e471ee085fb
Author: Craig A. Berry <craigbe...@mac.com>
Date:   Sat Nov 24 18:46:44 2012 -0600

    Handle invalid directory spec with EFS in pathify_dirspec.
    
    When Extended Filename Syntax is enabled on VMS (which is not [yet]
    the default), we were allowing invalid directory specifications
    consisting of a .DIR extension but some version other than ;1 to
    be passed through.
    
    Now we flag that as an invalid directory just as we were doing
    without EFS.  This gets a test passing in vms/ext/filespec.t that
    was failing under EFS.

M       vms/vms.c

commit c6c09ee83a5807437228496363dc96efab78f90a
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 15:55:04 2012 -0800

    Increase $Module::CoreList::VERSION to 2.79

M       dist/Module-CoreList/lib/Module/CoreList.pm

commit 1549d03d8e1310b147b48bc8dbf1f788a451db15
Author: Alexandr Ciornii <alexcho...@gmail.com>
Date:   Sat Nov 24 20:24:26 2012 +0200

    Errno was added in 5.5, not in 5.5.4

M       dist/Module-CoreList/Changes
M       dist/Module-CoreList/lib/Module/CoreList.pm

commit 7af276bcacd71d557a403b1d416e975ea139994c
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Sat Nov 24 11:18:31 2012 -0700

    Request is_utf8_char_slow() be inlined

M       embed.fnc
M       proto.h
M       utf8.c

commit 457a9a829c2fcc56599d6950dcb6861c119bd191
Author: Karl Williamson <pub...@khwilliamson.com>
Date:   Sat Nov 24 11:14:28 2012 -0700

    regen/embed.pl: flag 'i' didn't work with 'n'

M       regen/embed.pl

commit 4886dc4f5813d46e391c2336d87c89a3f270b7f9
Author: Yves Orton <demer...@gmail.com>
Date:   Sat Nov 24 19:21:38 2012 +0100

    Add "buzzhash16" - a random hash function
    
    This is just a toy. Probably not worth using in production. But
    interesting enough I thought I would include it.
    
    The idea is to use the hash seed as a table of random 16 bit integers
    whose values are what we hash depending on the character we read.
    
    It is pretty fast, I have no idea how secure it is. It will probably
    work really badly if the seed is crap. YMMV.

M       hv.h

commit d0761305e645847e893799c475b2a24d15afbcd0
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 00:31:01 2012 -0800

    Stop sub decl redef warnings from leaking CVs
    
    When newMYSUB and newATTRSUB are called, PL_compcv has an unclaimed
    reference count, so any code that croaks must decrement the reference
    count or make arrangements for such to happen.
    
    This commit applies only to redefinition warnings triggered by sub
    declarations, like ‘sub foo {}’ and ‘my sub foo {}’.

M       op.c
M       t/op/svleak.t

commit 58d67a2773e32367cd7f045a3afaebf08da91194
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 00:24:25 2012 -0800

    perldiag: Correct wording of ‘Using just the first char...’

M       pod/perldiag.pod

commit 687531b57f8d0312f4d2044c692a7c9514472f85
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 00:20:17 2012 -0800

    perldiag: Add cat to ‘Using just the first char...’

M       pod/perldiag.pod

commit c732bbdcdefee234a43597f835893a13be397daf
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 00:19:05 2012 -0800

    Increase $feature::VERSION to 1.32

M       lib/feature.pm
M       regen/feature.pl

commit 64fbf0dd43246bda0d854a4cbf1884b785d4d890
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sat Nov 24 00:10:15 2012 -0800

    Warn when declaring lexsubs, not when enabling them
    
    feature.pm has an ":all" tag.  So if we warn when lexical subs are
    enabled, then ‘use feature ":all"’ will also warn.  That’s unkind.
    
    Instead, warn when a lexical sub is declared via
    ‘my/our/state sub...’.

M       lib/feature.pm
M       pod/perldiag.pod
M       regen/feature.pl
M       t/cmd/lexsub.t
M       t/lib/croak/toke
M       t/lib/warnings/op
M       t/lib/warnings/toke
M       t/porting/diag.t
M       toke.c

commit 2b141370e47820eefd315393146f44b116c3b058
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 23:47:05 2012 -0800

    op.c: Factor common ‘existing sub’ logic into static routine
    
    newMYSUB and newATTRSUB are very similar but differ in small ways
    throughout.  This particular block of code is close enough it can be
    moved into a separate static routine to avoid repetition.

M       op.c

commit ee0832ceab256e5d1ed74d0767fa3bd420bc5bd6
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 23:44:49 2012 -0800

    Warn by default for constant my sub redefinition
    
    I apparently never had this working and never tested it either.
    
    I was checking whether the new sub was a constant, rather than the one
    it was clobbering.

M       op.c
M       t/lib/warnings/op

commit 4ded55f35550b45910091ebeac7889f08d209fe4
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 23:32:55 2012 -0800

    Prevent double frees with lexical constants
    
    my sub foo() { 2 }
    
    This produces a double free, because SAVEPADSVANDMORTALIZE causes the
    reference count to go down on scope exit, and nothing was increment-
    ing it to compensate.

M       pp.c
M       t/cmd/lexsub.t

commit 7e18702058e5564da44e84546c67056637b62d83
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 20:40:39 2012 -0800

    op.c:newATTRSUB: Change an if condition to an else
    
    In one spot we have if(blah blah balh) {...} followed by
    if (<exactly the opposite>).  We can just change the second if to
    an else, since the condition is not going to change here.
    
    This brings newATTRSUB and newMYSUB slightly closer, allowing me
    to factor some of it out into a static routine in the next commit.

M       op.c

commit 8daf8916b49984fc91791e8265cd7e1ca36b836c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 20:32:49 2012 -0800

    Stop ignored :lvalue warning from leaking CVs
    
    When newMYSUB and newATTRSUB are called, PL_compcv has an unclaimed
    reference count, so any code that croaks must decrement the reference
    count or make arrangements for such to happen.

M       op.c
M       t/op/svleak.t

commit 8e3171984bd6a5f4edf04ec5b91032d053bdd8a5
Author: Yves Orton <demer...@gmail.com>
Date:   Sat Nov 24 11:16:48 2012 +0100

    prevent memory exhaustion from hash attacks
    
    We do not want to resize the hash every time the bucket length is
    too long. Nor do we want to pay the price of checking how long
    the bucket length is when there is nothing we can do about it anyway.

M       hv.c

commit 630b72b081fe290d04732279e069c327eea82b09
Author: Daniel Dragan <bul...@hotmail.com>
Date:   Fri Nov 23 16:15:04 2012 -0500

    SvPVXtrue single eval->multiple eval
    
    Make SvTRUE and SvPVXtrue smaller and faster in machine code on non GCC
    compilers.
    
    This commit implements my posts here,
    http://www.nntp.perl.org/group/perl.perl5.porters/2012/11/msg195720.html
    and in my commit message in commit 4cc783efe0 . SvPVXtrue was added in
    commit 4bac9ae47b . No reason was given why SvPVXtrue is single eval, but
    its only use is in multi eval SvTRUE. A non GCC compiler will write to
    PL_Xpv and PL_Sv, and still keep the SV * and PV *s in a register for the
    next operations/instructions. The writes to PL_Xpv and PL_Sv are needless.
    The use of PL_Xpv and PL_Sv is self explanatory C lang wise. As said in the
    ML post, this commit causes overall code bloat because of incorrect uses
    of passing macro args that make calls (ERRSV for example) to SvTRUE. This
    will have to be fixed in the future. All of the pp opcode funcs decrease
    tiny bit in size after this commit. See the ML list post for details.

M       sv.h

commit b899e89d91e81e631e553a5b805e8d068828dbf0
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Fri Nov 23 17:54:09 2012 -0800

    Stop toke.c:S_scan_const from leaking
    
    Fatal warnings and errors can cause the string buffer used when
    scanning a quote-like operator to leak.  This commit fixes it
    by using the savestack.  There are still a few leaks from that
    code path that are not fixed by this.

M       t/op/svleak.t
M       toke.c

commit eed484f95050ad51c720521f68c6341a14bf5638
Author: Daniel Dragan <bul...@hotmail.com>
Date:   Thu Nov 22 23:37:29 2012 -0500

    prevent multiple evaluations of ERRSV
    
    Remove a large amount of machine code (~4KB for me) from funcs that use
    ERRSV making Perl faster and smaller by preventing multiple evaluation.
    
    ERRSV is a macro that contains GvSVn which eventually conditionally calls
    Perl_gv_add_by_type. If a SvTRUE or any other multiple evaluation macro
    is used on ERRSV, the expansion will, in asm have dozens of calls to
    Perl_gv_add_by_type one for each test/deref of the SV in SvTRUE. A less
    severe problem exists when multiple funcs (sv_set*) in a row call, each
    with ERRSV as an arg. Its recalculated then, Perl_gv_add_by_type and all.
    I think ERRSV macro got the func call in commit f5fa9033b8, Perl RT #70862.
    Prior to that commit it would be pure derefs I think. Saving the SV* is
    still better than looking into interp->gv->gp to get the SV * after each
    func call.
    
    I received no responses to
    http://www.nntp.perl.org/group/perl.perl5.porters/2012/11/msg195724.html
    explaining when the SV is replaced in PL_errgv, so took a conservative
    view and assumed callbacks (with Perl stack/ENTER/LEAVE/eval_*/call_*)
    can change it. I also assume ERRSV will never return null, this allows a
    more efficiently version of SvTRUE to be used.
    
    In Perl_newATTRSUB_flags a wasteful copy to C stack operation with the
    string was removed, and a croak_notcontext to remove push instructions to
    the stack.  I was not sure about the interaction between ERRSV and message
    sv, I didn't change it to a more efficient (instruction wise, speed, idk)
    format string combining of the not safe string and ERRSV in the croak call.
    If such an optimization is done, a compiler potentially will put the not
    safe string on the first, unconditionally, then check PL_in_eval, and
    then jump to the croak call site, or eval ERRSV, push the SV on the C stack
    then push the format string "%"SVf"%s". The C stack allocated const char
    array came from commit e1ec3a884f .
    
    In Perl_eval_pv, croak_on_error was checked first to not eval ERRSV unless
    necessery. I was not sure about the side effects of using a more efficient
    croak_sv instead of Perl_croak (null chars, utf8, etc) so I left a comment.
    nocontext used to save an push instruction on implicit sys perl.
    
    In S_doeval, don't open a new block to avoid large whitespace changes.
    The NULL assignment should optimize away unless accidental usage of errsv
    in the future happens through a code change. There might be a bug here from
    commit ecad31f018 since previous a char * was derefed to check for null
    char, but ERRSV will never be null, so "Unknown error\n" branch will never
    be taken.
    
    For pp_sys.c, in pp_die a new block was opened to not eval ERRSV if
    "well-formed exception supplied". The else if else if else blocks all used
    ERRSV, so a  "SV * errsv =  NULL;" and a eval in the conditional with comma
    op thing wouldn't work (maybe it would, see toke.c comments later in this
    message). pp_warn, I have no comments.
    
    In S_compile_runtime_code, a croak_sv question comes up same as in
    Perl_eval_pv.
    
    In S_new_constant, a eval in the conditional is done to avoid evaling
    ERRSV if PL_in_eval short circuits. Same thing in Perl_yyerror_pvn.
    
    Perl__core_swash_init I have no comments.
    
    In the future, a SvEMPTYSTRING macro should be considered (not fully
    thought out by me) to replace the SvTRUEs with something smaller and
    faster when dealing with ERRSV. _nomg is another thing to think about.
    
    In S_init_main_stash there is an opportunity to prevent an extra ERRSV
    between "sv_grow(ERRSV, 240);" and "CLEAR_ERRSV();" that was too complicated
    for me to optimize.
    
    before perl517.dll
    .text 0xc2f77
    .rdata 0x212dc
    .data 0x3948
    
    after perl517.dll
    .text 0xc20d7
    .rdata 0x212dc
    .data 0x3948
    
    Numbers are from VC 2003 x86 32 bit.

M       mg.c
M       op.c
M       perl.c
M       pp_ctl.c
M       pp_sys.c
M       regcomp.c
M       toke.c
M       utf8.c

commit b99c9e9a2fb2fff6d70f66d59c376cf258e2c047
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Nov 22 19:18:57 2012 -0800

    sv.c:S_curse: move assertions to make them useful
    
    I added these when debugging something, and decided to keep them, as
    they could be useful.  So I committed them as 14eebc59.
    
    But now I realise that they are quite useless where they are, as a
    program will crash before the failed assertions are reached.

M       sv.c

commit 4b748257c65d0cf78771db569a081f98eb77c7fa
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Thu Nov 22 14:53:47 2012 -0800

    sv.c:S_curse: remove unnecessary null check
    
    If an SV has the OBJECT flag on but no STASH, it will cause crashes
    elsewhere.  So there has to be a stash here.  I only put the null
    check there in 8c34e50dc because I was copying what StashHANDLER
    used to do.  8c34e50dc removed the use of StashHANDLER (which calls
    gv_handler, which has a null check), replacing it with a different
    caching mechanism inlined into S_curse.

M       sv.c

commit 38b1111c5f4e6340ce434a21336fe7350c148b03
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Wed Nov 21 22:52:14 2012 -0800

    svleak.t: To-do tests for fatal warnings and some syntax errs

M       t/op/svleak.t
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to