List Info

Thread: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)




BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-08 15:19:53
Thanks, Jochen, for bringing another BBC case to my
attention.

Your collection of modules
JSTENZEL/PerlPoint-Package-0.451.tar.gz
works with bleadperl up to 31081 and starts failing with
31082.

    (http://public.activestate.com/cgi-bin/perlbrowse/p/26487
)
    Change 31082 by rgsstcosmo on 2007/04/26 10:51:36

        Subject: Re: The Strict trap
        From: Johan Vromans <jvromanssquirrel.nl>
        Date: Wed, 25 Apr 2007 16:12:58 +0200
        Message-ID: <m2lkggilud.fsfphoenix.squirrel.nl>

which leads to a test failure:

    t/l0_ifilters.........[Error 1] Could not load lang
import filter module: 'caller' trapped by operation mask at
/home/src/perl/repoperls/installed-perls/perl/pLm6hV6/perl-5
.8.032034/lib/5.10.0/strict.pm line 8, <GEN4> line
3.
    Compilation failed in require at
/home/sand/.cpan/build/PerlPoint-Package-0.451-8942QO/t/Perl
Point/Import/LANG.pm line 29, <GEN4> line 3.
    BEGIN failed--compilation aborted at
/home/sand/.cpan/build/PerlPoint-Package-0.451-8942QO/t/Perl
Point/Import/LANG.pm line 29, <GEN4> line 3.
    Compilation failed in require at (eval 580) line 1,
<GEN4> line 3.
    .
    [Info] Input contains 1 semantic error.

    #   Failed test at t/l0_ifilters.t line 280.


I'm too tired to dig any deeper and Hope This Helps,
-- 
andreas

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-09 03:44:32
On 08/10/2007, Andreas J. Koenig
<andreas.koenig.7os6VVqRfranz.ak.mind.de>
wrote:
> Thanks, Jochen, for bringing another BBC case to my
attention.
>
> Your collection of modules
JSTENZEL/PerlPoint-Package-0.451.tar.gz
> works with bleadperl up to 31081 and starts failing
with 31082.
>
>     (http://public.activestate.com/cgi-bin/perlbrowse/p/26487
)
>     Change 31082 by rgsstcosmo on 2007/04/26
10:51:36
>
>         Subject: Re: The Strict trap
>         From: Johan Vromans <jvromanssquirrel.nl>
>         Date: Wed, 25 Apr 2007 16:12:58 +0200
>         Message-ID: <m2lkggilud.fsfphoenix.squirrel.nl>
>
> which leads to a test failure:
>
>     t/l0_ifilters.........[Error 1] Could not load lang
import filter module: 'caller' trapped by operation mask at
/home/src/perl/repoperls/installed-perls/perl/pLm6hV6/perl-5
.8.032034/lib/5.10.0/strict.pm line 8, <GEN4> line
3.

Since strict.pm now uses caller(), your Safe compartment now
needs to
allow caller() in addition to require().

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-09 11:19:51
On Tue, Oct 09, 2007 at 10:44:32AM +0200, Rafael
Garcia-Suarez wrote:
} On 08/10/2007, Andreas J. Koenig
} <andreas.koenig.7os6VVqRfranz.ak.mind.de>
wrote:
} > Thanks, Jochen, for bringing another BBC case to my
attention.
} >
} > Your collection of modules
JSTENZEL/PerlPoint-Package-0.451.tar.gz
} > works with bleadperl up to 31081 and starts failing
with 31082.
} >
} >     (http://public.activestate.com/cgi-bin/perlbrowse/p/26487
)
} >     Change 31082 by rgsstcosmo on 2007/04/26
10:51:36
} >
} >         Subject: Re: The Strict trap
} >         From: Johan Vromans <jvromanssquirrel.nl>
} >         Date: Wed, 25 Apr 2007 16:12:58 +0200
} >         Message-ID: <m2lkggilud.fsfphoenix.squirrel.nl>
} >
} > which leads to a test failure:
} >
} >     t/l0_ifilters.........[Error 1] Could not load
lang import filter module: 'caller' trapped by operation
mask at
/home/src/perl/repoperls/installed-perls/perl/pLm6hV6/perl-5
.8.032034/lib/5.10.0/strict.pm line 8, <GEN4> line
3.
} 
} Since strict.pm now uses caller(), your Safe compartment
now needs to
} allow caller() in addition to require().

Isn't the idea that caller() was also demoted from a
"safe" to "we're
not sure about this" kind of operation? The new caller
does some
direct peeking inside the optree and maybe it shouldn't be
considered
safe.

-- 
Josh
Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-09 11:29:10
On 09/10/2007, josh <twistsgmail.com> wrote:
> } Since strict.pm now uses caller(), your Safe
compartment now needs to
> } allow caller() in addition to require().
>
> Isn't the idea that caller() was also demoted from a
"safe" to "we're
> not sure about this" kind of operation? The new
caller does some
> direct peeking inside the optree and maybe it shouldn't
be considered
> safe.

caller() was never demoted. It was never put in a
well-defined
category; I just put it in a :load category with require()
and do().
(#32073).

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-09 12:11:19
On Tue, Oct 09, 2007 at 06:29:10PM +0200, Rafael
Garcia-Suarez wrote:
} On 09/10/2007, josh <twistsgmail.com> wrote:
} > } Since strict.pm now uses caller(), your Safe
compartment now needs to
} > } allow caller() in addition to require().
} >
} > Isn't the idea that caller() was also demoted from a
"safe" to "we're
} > not sure about this" kind of operation? The new
caller does some
} > direct peeking inside the optree and maybe it
shouldn't be considered
} > safe.
} 
} caller() was never demoted. It was never put in a
well-defined
} category; I just put it in a :load category with require()
and do().
} (#32073).

Just as an aside, I tried to perturb the hash returned from
caller
inside a Safe compartment. Nothing I'm doing seems to alter
it for
future calls. It also appears that every call to caller()
returns a
fresh copy of this data.

So uh, huzzah. It looks like it might not be allowing writes
to the
optree.

-- 
Josh
Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-09 22:11:17
>>>>> On Tue, 9 Oct 2007 10:44:32 +0200,
"Rafael Garcia-Suarez" <rgarciasuarezgmail.com> said:

  > On 08/10/2007, Andreas J. Koenig
  > <andreas.koenig.7os6VVqRfranz.ak.mind.de>
wrote:
 >> Thanks, Jochen, for bringing another BBC case to
my attention.
 >> 
 >> Your collection of modules
JSTENZEL/PerlPoint-Package-0.451.tar.gz
 >> works with bleadperl up to 31081 and starts
failing with 31082.
 >> 
 >> (http://public.activestate.com/cgi-bin/perlbrowse/p/26487
)
 >> Change 31082 by rgsstcosmo on 2007/04/26
10:51:36
 >> 
 >> Subject: Re: The Strict trap
 >> From: Johan Vromans <jvromanssquirrel.nl>
 >> Date: Wed, 25 Apr 2007 16:12:58 +0200
 >> Message-ID: <m2lkggilud.fsfphoenix.squirrel.nl>
 >> 
 >> which leads to a test failure:
 >> 
 >> t/l0_ifilters.........[Error 1] Could not load
lang import filter module: 'caller' trapped by operation
mask at
/home/src/perl/repoperls/installed-perls/perl/pLm6hV6/perl-5
.8.032034/lib/5.10.0/strict.pm line 8, <GEN4> line
3.

  > Since strict.pm now uses caller(), your Safe
compartment now needs to
  > allow caller() in addition to require().

Thanks, verified with this pseudo patch:


t/l0_ifilters.t (line 95) 
- $safe->permit(qw(require));
+ $safe->permit(qw(require caller));

gives

t/l0_ifilters......412/0 Use of uninitialized value $"
in join or string at
/home/src/perl/repoperls/installed-perls/perl/p6E9LgS/perl-5
.8.032059/lib/5.10.0/strict.pm line 6, <GEN4> line
3.
t/l0_ifilters......ok     
All tests successful.

Looks like strict.pm needs a fix as well. E.g.

  # Verify that we're called correctly so that strictures
will work.
+ local $" = " ";
  unless ( __FILE__ =~ /(^|[/\])Q{[__PACKAGE__]}E.pm$/ )
{

It's not getting prettier though;)


-- 
andreas

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-10 02:05:57
[Quoting Andreas J. Koenig, on October 10 2007, 05:11, in
"Re: BBC(Bleadperl Br"]
> t/l0_ifilters......412/0 Use of uninitialized value
$" in join or string at
/home/src/perl/repoperls/installed-perls/perl/p6E9LgS/perl-5
.8.032059/lib/5.10.0/strict.pm line 6, <GEN4> line
3.
> t/l0_ifilters......ok     
> All tests successful.

Interesting.

A "array" expansion of a single list array should
not need $" ...

-- Johan

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-10 02:54:05
On Wed, 10 Oct 2007 09:05:57 +0200, jvromanssquirrel.nl (Johan Vromans)
wrote:

> [Quoting Andreas J. Koenig, on October 10 2007, 05:11,
in "Re: BBC(Bleadperl Br"]
> > t/l0_ifilters......412/0 Use of uninitialized
value $" in join or string at
/home/src/perl/repoperls/installed-perls/perl/p6E9LgS/perl-5
.8.032059/lib/5.10.0/strict.pm line 6, <GEN4> line
3.
> > t/l0_ifilters......ok     
> > All tests successful.
> 
> Interesting.
> 
> A "array" expansion of a single list
array should not need $" ...

Isn't it blindly translated to

  join $", array;

?
Which leaves room for optimization?

-- 
H.Merijn Brand         Amsterdam Perl Mongers (http://amsterdam.pm.org/
)
using & porting perl 5.6.2, 5.8.x, 5.9.x   on HP-UX
10.20, 11.00, 11.11,
& 11.23, SuSE 10.0 & 10.2, AIX 4.3 & 5.2, and
Cygwin. http://qa.perl.org
http://mirrors.de
velooper.com/hpux/            http://www.test-smoke.org
                        http
://www.goldmark.org/jeff/stupid-disclaimers/

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-10 03:17:59
On 10/10/2007, H.Merijn Brand <h.m.brandxs4all.nl> wrote:
> Isn't it blindly translated to
>
>   join $", array;
>
> ?
> Which leaves room for optimization?

Changing it to ${...} interpolation makes the warning
disappear. (#32090)

Re: BBC(Bleadperl Breaks CPAN) Today: PerlPoint::Parser (0.451)
user name
2007-10-10 03:26:45
On Wed, Oct 10, 2007 at 09:54:05AM +0200, H.Merijn Brand
wrote:
> On Wed, 10 Oct 2007 09:05:57 +0200, jvromanssquirrel.nl (Johan Vromans)
> wrote:
> 
> > [Quoting Andreas J. Koenig, on October 10 2007,
05:11, in "Re: BBC(Bleadperl Br"]
> > > t/l0_ifilters......412/0 Use of uninitialized
value $" in join or string at
/home/src/perl/repoperls/installed-perls/perl/p6E9LgS/perl-5
.8.032059/lib/5.10.0/strict.pm line 6, <GEN4> line
3.
> > > t/l0_ifilters......ok     
> > > All tests successful.
> > 
> > Interesting.
> > 
> > A "array" expansion of a single list
array should not need $" ...
> 
> Isn't it blindly translated to
> 
>   join $", array;
> 
> ?

Yes:

$ ./perl -Ilib -MO=Concise -e '"ARGV"'
9  <> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
8     <> stringify[t5] vK/1 ->9
-        <0> ex-pushmark s ->3
7        <> join[t4] sK/2 ->8
3           <0> pushmark s ->4
-           <1> ex-rv2sv sK/1 ->5
4              <#> gvsv[*"] s ->5
6           <1> rv2av[t3] lK/1 ->7
5              <#> gv[*ARGV] s ->6
-e syntax OK

> Which leaves room for optimization?

I assume you mean that code above, not in the implementation
of join.
It would be possible to avoid the final read of $" for
0 and 1 element
arrays. Is that worth it? Specifically, it's this code in
this order in
Perl_do_join():

    (void) SvPV_const(delim, delimlen); /* stringify and get
the delimlen */
    /* SvCUR assumes it's SvPOK() and woe betide you if it's
not. */

    mark++;
    len = (items > 0 ? (delimlen * (items - 1) ) : 0);


If $" is a plain string scalar, SvPV_const() will check
one flag and read
direct from the structure, without any function calls.

Nicholas Clark

[1-10]

about | contact  Other archives ( Real Estate discussion Medical topics )