Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by stevan on 15 August 2005.
02:47 buu is now known as juu 04:27 juu is now known as buu
QtPlatypus Did the perl6 general list ever get started? 05:22
xinming %hash = (($keykey => $keyval) => $value); 09:31
hmm, what does this mean really, I mean how can we get the 'key' for $value? 09:32
wilx That won't work. 09:35
afaik
xinming wilx: see S02 09:37
?eval (($'a' => 'A') => 'AA'); 09:40
evalbot6 Error: unexpected "'" expecting "::"
xinming ?eval {($'a' => 'A') => 'AA'};
evalbot6 Error: unexpected "'" expecting "::"
xinming ?eval {('a' => 'A') => 'AA'}; 09:41
evalbot6 {('AA' => undef), ('a' => 'A')}
xinming Fixed as r6286. Please still commit the test, and add your 09:51
(ideographic?) name to AUTHORS.
Thanks,
anyone here can tell me how to commit the test? :-S
hmm, I think I found it. 09:57
write it up as a 10:14
test in t/syntax/ and commit the new test.
hmm, How can I do this please?
anyone would help? :-S
theorbtw1 Look at one of the other tests in syntax, and copy off of that? 10:17
10:18 theorbtw1 is now known as theorbtwo
xinming theorbtwo: the problem is, I even don't know where to go. :-S 10:19
11:15 Aankh|Clone is now known as Aankhen``
kolibrie in my struggle to set up WWW::Kontent, my most recent parse error is: 12:22
unexpected ";"
expecting "::", "-", trait or "{"
at ./WWW/Kontent/Exceptions.pm line 22, column 32
which is this line:
module WWW::Kontent::Exceptions;
any ideas?
iblech xinming: I'd be happy to guide you in your attempt of writing your first test :) 12:33
autrijus: ooh, just saw that -CPerl5 gives me TypeOr TypeAnd etc., so the split /\|/ hacks can go away, thanks :) 12:38
scook0 kolibrie: what comes before it in the file? 12:49
(it seems to be expecting 'module{}
(it seems to be expecting 'module{}' rather than 'module;')
kolibrie scook0: just pod 12:50
scook0 does it work if you kill the pod?
kolibrie will try
same error 12:51
scook0 :( 12:52
I was thinking that something earlier in the file was forcing it to be a block decl rather than a semicolon decl 12:53
but that's clearly not the case
kolibrie nope, just a weird parse error, for some reason 12:54
it parsed for me yesterday, with a pugs 50 to 100 revisions behind, but the script had a runtime error 12:55
upgraded pugs, now compile time errors
scook0 kolibrie: I have another vague hypothesis that I'm looking into... 12:59
kolibrie scook0: ok 13:00
scook0 kolibrie: the weird thing is that nothing in the last 50-100 revisions should have caused a change, afaict 13:06
kolibrie :(
could have been further back, perhaps, I didn't note my previous revision number
scook0 well, I have no idea, sorry :( 13:10
kolibrie someone else might, if I'm patient 13:11
autrijus shows up
kontent 0.01?
kolibrie yes 13:12
autrijus iblech: my pleasure :) your life will be further simpler when I finish the lexical hoisting :)
kolibrie: ok, give me a few mins, just back from work+dinner
kolibrie autrijus: no problem, thanks for looking into it
iblech autrijus: :) BTW, WRT lex hoisting: sub foo { $CALLER::a }; { foo(); my $a = 3; foo() } 13:13
autrijus iblech: larry ruled it as erroneous.
i.e. foo()'s behaviour is undefined.
iblech ok then :) 13:14
autrijus it's essential we do that because
foo($a, my $a)
is legal
and will be simply hazadrous to implement either way.
s/implement/mandate/
larry also said if somebody finds it fun to implement token positioning to resolve ambiguity, then he has no problem with that 13:15
but I think it will get ugly very soon with macros
so it's easier to just hoist. 13:16
iblech I think so, too
autrijus btw, congrats on completing the conversion to -CPerl5 :) 13:17
I saw your thanks in the changelog :D
iblech :) Compiling the Prelude now takes ~~10s, instead of ~~50s :) 13:18
autrijus ooh, so better than the 30% speedup estimated
iblech Yep :) 13:19
fglock re metamodel: how is 'is constant' stored in a Scalar?
autrijus fglock: it's not clear. 13:21
fglock is it an instance attribute?
autrijus fglock: larry speculates
constant $x = 3;
as a new special form
iblech Hm, Inf, -Inf, and NaN are currently serialized as Infinity, -Infinity, and NaN. Should we simply serialize them as "Inf", "-Inf", and "NaN" (i.e., as strings) or should we properly load Math::BigNum and use ->binf(), ->bnan(), etc.?
autrijus which would mean $x is not rebindable and the '=3' is evaluated at compile time
iblech: whichever that makes you easier/happier :)
fglock: if so, then "is constant" is just sugar for 13:22
my $x is constant = 3;
my $x := 3;
# same thing
iblech autrijus: ok :)
fglock so $x is just a name for a Value
autrijus fglock: no, a scalar container pointing to a constant cell. 13:24
fglock: $x := $y later (rebound) is allowed.
see pugscode.org/images/container.png
fglock in the implementation - "cell" is the $.value attribute in "Scalar"? 13:26
autrijus fglock: in the implementation, I _think_ Scalar comes in two flavours, a Scalar with "$.value is rw" and a Scalar::Const with "$.value is constant" 13:29
autrijus suddenly wonder if "$.value := $.key" would work.
autrijus decides to go back to Kontent and not think about that
fglock :)
fglock renames Scalar->value to Scalar->cell to avoid confusion 13:33
autrijus fglock++ 13:34
you can even flag a constant cell's value link as SvREADONLY
it's rather easy to do in pure perl 13:35
Internals::SvREADONLY($v, 1) 13:36
hidden-bag-of-tricks is perl5's specialty ;)
fglock the metamodel already does this, I think
autrijus oh good 13:37
right, it does.
but it's not inside-out or closure-protected yet, so you can still go in and modify stuff
but that's not a big deal :)
since that will amount to "go down to XS level"
although in this case the XS level is perl5.
it's turtles all the way down 13:38
svnbot6 r6296 | iblech++ | * t/var/caller.t: sub foo { $CALLER::a }; { foo(); my $a } is erroneous. 13:41
r6296 | iblech++ | * DrIFT.Perl5: Emit calls to Math::BigInt for Inf, -Inf, and NaN.
r6296 | iblech++ | * PIL2JS: Really working again. Dramatic speedup.
r6296 | iblech++ | * PIL, PIL::Params, PIL::Subs, new PIL::Types: Use the new TypeOr, TypeAnd.
r6296 | iblech++ | * PIL::PPos: Update $?POSITION (I removed it accidentally).
r6296 | iblech++ | * PIL::Parser: Handle Math::BigInt objects and die if the -CPerl5 output
r6296 | iblech++ | wasn't successfully eval()ed.
r6296 | iblech++ | * PIL::PVal: Support for compile-time lists (VList), i.e. 1+BEGIN{my@a=...}
r6296 | iblech++ | and Inf, -Inf, NaN.
iblech resmokes PIL2JS
kolibrie autrijus: I get the same parse error for Net::IRC on its module ...; line 13:42
unexpected ";"
expecting digit, ".", "-", trait or "{"
at /usr/local/share/perl6/Net/IRC.pm line 1, column 21
autrijus kolibrie:
./pugs -e 'module Foo;' 13:43
does it work?
kolibrie nope
is it just me?
autrijus your pugs rev #?
scook0 kolibrie: seems so 13:44
kolibrie r6295
autrijus very weird
I'm recompiling. sce
kolibrie I did take out that $ try in Parser.hs yesterday
Limbic_Region autrijus - did you see the weird junction behavior yesterday (after you went to sleep)?
autrijus Limbic_Region: er no
iblech r6295 here too, Net::IRC works without problems...
Limbic_Region ?eval any(<a b c d>) eq 'a' 13:45
evalbot6 bool::false
Limbic_Region ?eval any(<a b c d>) eq "a"
evalbot6 bool::false
Limbic_Region that behavior
autrijus oh.
I can explain.
?eval true (any(<a b c d>) eq 'a')
evalbot6 bool::true
autrijus ?eval ?(any(<a b c d>) eq 'a')
evalbot6 bool::true
scook0 kolibrie: which line?
autrijus ?eval (any(<a b c d>) eq "a") 13:46
evalbot6 bool::false
Limbic_Region ?eval (any(<a b c d>) eq 'a')
evalbot6 bool::false
Limbic_Region ok - color me confused
autrijus Limbic_Region: the output was
(bool::false | bool::true)
somehow evalbot discarded the true part.
kolibrie scook0: 301 ?
iblech ?eval ?(any<a b c d> eq "a")
evalbot6 bool::false
Limbic_Region ok - so it is an evalbot problem and not a pugs problem?
autrijus oh 13:47
wait
iblech got it correctly
it's a parse bug.
any is a listop
eq is of higher precedence
so the sentence is any(<a b c d> eq "a")
which is any(false) 13:48
which is false.
but it's not a bug per se
because larry never said <> can be used as function arg delimiter
so it's a... misfeature?
scook0 kolibrie: well, that's almost certainly your problem
Limbic_Region dunno - but I thought I would bring it to your attention
I leave figuring out what is right and wrong to the smart ppl 13:49
I just report the news
scook0 it seems the parser commits to parsing a block-module
then is unable to back-out to try a semicolon-module
kolibrie reverts that change and prepares to recompile 13:50
scook0 (seems my earlier guess was right after all)
autrijus kolibrie: I'm seeing 13:51
pugs: *** No compatible subroutine found: "&m_" at /usr/local/lib/perl6/site_perl/FindBin.pm line 33, column 20-77
kolibrie autrijus: never saw that one
but I might, after I recompile 13:52
xinming iblech: hmm, help me please. :-) 13:53
autrijus ah.
that's because I'm currently preludeless.
and rx handling was shifted to prelude.
xinming iblech: sorry, I was going out for helping one of my friend.
autrijus ok, false alarm
iblech xinming: Sure. Do you know what a test is? 13:54
xinming hmm, Maybe I know.
iblech ok. Then try to write that test :) You can use another test as template 13:55
xinming .... 13:56
iblech: I don't know. :-S
QtPlatypus What is the correct term for the most fundermental memory storage thingy, Cell? Container?
xinming for clearly.
13:57 Aankh|Clone is now known as Aankhen``
autrijus QtPlatypus: the most fundamental storage in the diagram is a cell 13:57
QtPlatypus Thanks
iblech xinming: Ok. Small steps :) Create a file ending with .p6 in t/syntax and copy t/syntax/unicode.t into it. Then remove everything except the first 6 lines.
scook0 later all
autrijus kolibrie: WWW::Kontent now worksforme 13:58
xinming iblech: hold on please
kolibrie autrijus: Net::IRC works again 13:59
autrijus: get this runtime error with Kontent make_root: 14:00
Preparing root page...
Cannot bind a reference (pugs=SCALAR(0x8a859d4)) ((null)) (0) type=3 10 4 0.
bbiab & 14:01
xinming iblech: hmm, hold on please, I think I have to upgrade 6.28 version to 6.29 14:06
iblech xinming: Upgrade to svn head, 6.29 is outdated :)
xinming iblech: Ok, hmm, I think I need to learn some subversion command. bbl. 14:07
too much to learn for me... life is a struggle. ;-)
autrijus xinming: "svn co svn.openfoundry.org/pugs" :) 14:11
xinming autrijus: may I ask you what Os are you using now? I use debian sid. I just do dist-upgrade yesterday, and ghc5 seems to be removed. :-S 14:13
autrijus xinming: I'm using freebsd 6.0 14:14
-stable
iblech Gentoo here
autrijus xinming: we can't run on ghc5 anyway :)
svnbot6 r6297 | autrijus++ | * use `File::Spec.cwd` instead of `File::Spec::cwd` to 1)save typing 14:17
r6297 | autrijus++ | and 2)gradually migrate to OO style.
14:20 autark is now known as jp-autark
svnbot6 r6298 | iblech++ | PIL2JS: 14:21
r6298 | iblech++ | * $?POSITION, $?SUBNAME, &?SUB, and &?BLOCK are now entered into the pad,
r6298 | iblech++ | allowing $?CALLER::POSITION, etc.
r6298 | iblech++ | * $?POSITION is properly backuped now.
r6298 | iblech++ | * Access to CALLER:: with twigils ($?CALLER::POSITION, etc.) works now.
r6299 | iblech++ | * STATUS: Removed "currently converting to -CPerl5". 14:30
r6299 | iblech++ | * pugs::hack: Added descriptions for Perl6-Value, Perl6-Container, and
r6299 | iblech++ | Perl6-MetaModel2.0.
r6299 | iblech++ | * PIL2JS: README: s/-CPIL/-CPerl5/.
autrijus sets Kontent to use SQLite and crosses fingers... 14:31
kolibrie xinming: I'm on debian unstable. I downloaded the ghc package, then the ghc source from their website and compiled 14:38
xinming: takes a long time to compile
autrijus: I'm using PostgreSQL
xinming kolibrie: hmm, In fact, I don't wish to do upgrade every time the new haskell released. that's why ... 14:39
autrijus kolibrie: I'm seeing "method not found" for "$dbh.prepare"
xinming I am a lazy guy...
obra there's a debian source for unstable haskell packages
autrijus xinming: we'll run on GHC 6.4 for many months to come :)
kolibrie autrijus: all my dbh stuff worked 14:40
obra haskell-unsafe.alioth.debian.org/ha...nsafe.html
autrijus curiouser and curiouser.
kolibrie autrijus: after I changed the SQL, that is
autrijus: any idea where I should look for my Kontent error: 14:42
Cannot bind a reference (pugs=SCALAR(0x8a859d4)) ((null)) (0) type=3 10 4 0.
I don't see a line number or anything
autrijus kolibrie: I think it's caused by the double boxing
xinming thanks
autrijus and is postgres specific.
i.e. DBD::Pg specific 14:43
i.e. it does not accept a tied dbh.
kolibrie oh, so I should switch to SQLite?
autrijus or mysql
I'm trying here too
kolibrie ok
autrijus there's no way out of all this mess before we finish Perl6->PIL2->Perl5
meanwhile, sorry for the inconvenience :)
kolibrie we're just playing, no hurry 14:44
autrijus :) 14:47
kolibrie autrijus: my try with SQLite yields:
Creating pages table... 14:48
Creating revisions table...
Creating attrs table...
Preparing root page...
*** No compatible subroutine found: "&execute"
at ./WWW/Kontent/Store/NarrowDBI/Revs.pm line 53, column 17-151
./WWW/Kontent/Store/NarrowDBI/Revs.pm line 49, column 17-33
./WWW/Kontent/Store/NarrowDBI/Pages.pm line 75, column 13 - line 77, column 14
./WWW/Kontent/Store/NarrowDBI.pm line 173, column 23 - line 175, column 10
autrijus okay, we are now on the same page
hitting the same bug
I'm looking into it.
kolibrie :)
svnbot6 r6300 | fglock++ | * perl5/ Value - More descriptive method names: 15:08
r6300 | fglock++ | - .unboxed() - returns the unboxed value
r6300 | fglock++ | Pair->unboxed returns two objects.
r6300 | fglock++ | - Ref->referred - returns the referred object
r6300 | fglock++ | - removed method .value() - except for Pair
r6301 | iblech++ | * Test.pm: Temporary hack to make skip_rest in PIL2JS work (no support for
r6301 | iblech++ | multisubs yet). 15:09
r6301 | iblech++ | * PIL2JS:
r6301 | iblech++ | * Forgot to svn add PIL::Types, fixed.
r6301 | iblech++ | * PIL::Subs: Empty code bodies should be ok.
dada what do I need to make PGE work? (eg. to make pugs use parrot's PGE) 15:14
(on win32, that is) 15:15
I have parrot.exe in the %PATH
now?
iblech You've to build Pugs without embedded Parrot 15:16
(I.e. do not put "parrot" in %*ENV<PUGS_EMBED>)
Then all P6 regexes will automatically be given to Parrot 15:17
dada I got the prebuilt binaries 15:18
autrijus PXPerl?
svnbot6 r6302 | iblech++ | * t/pugsbugs/topic_in_map.t: Uncommented a previously hardfailing test.
r6302 | iblech++ | * PIL2JS: $_.
r6302 | iblech++ | * PIL, PIL::Subs: $_ is now a proper lexical.
r6302 | iblech++ | This is not the case in normal Pugs :)
r6302 | iblech++ | * Prelude::JS::Operators, Prelude::JS::Math: ?$a = $CALLER::_.
dada autrijus: no, johnatan's one, IIRC
coral what's the canonical URL for "i want to help pugs but i don't know where svn is" 15:19
dada autrijus: yep, johnatan's one
coral not just the direct repo url but the page about "here's how we do things, here's where the repo is, here's who deals with committer bits"
iblech coral: svn.openfoundry.org/pugs/lib/pugs/hack.pod? 15:20
autrijus coral: pugscode.org/ ? 15:21
coral iblech: that'll work 15:24
autrijus: mm, that's already in the topic though 15:25
autrijus yup
coral hack.pod's url is too long for the topic
autrijus ok ok 15:26
I'll add a link
coral blinks
er
that wasn't criticism
but ok
there's been a couple times i wanted to link that but didn't know where it was, is all 15:28
autrijus a link is on bottom of pugscode.org now :)
it links to search.cpan.org/dist/Perl6-Pugs/lib...s/hack.pod
coral++
coral o 15:29
yay
autrijus kolibrie: the bug is in can_perl5 15:38
config.yml++ # precompile_prelude: false
compilation now takes <3sec
coke p6rule question: given "(.*)::+<-[:]>*$$", and a string of "::a::b::c", I should expect the first subpattern to match the string "::a::b", neh?
autrijus looks so to me.
PerlJam coke: you need to escape all colons so they aren't interpretted as cut operators 15:39
autrijus ah.
coke ahhh.
inc the one in the char class?
autrijus "they took away our angle brackets, and now the colons too"
coke apparently.
PerlJam I'm not sure about that one, but I'd guess not.
autrijus I think not
coke escaping it seems to work. (at least for positive matches) 15:40
but not negative. woot.
kolibrie autrijus: is there a fix?
autrijus kolibrie: I'm working on one. 15:41
kolibrie ok
autrijus aha. 15:42
Checking: DBI::db=HASH(0x8743d30)->can(prepare), ret 141808640
somehow only the lowest bit passed thru.
very obscure.
bool_var = POPi 15:43
wow.
autrijus blames clkao
ok, SvTRUE(POPs); does the trick
committing.
coke perljam:thank you. that's a few more partcl tests passing. =-) 15:48
autrijus mutters something about the insanity of weakly typed languages
kolibrie: r6303
ooh, larry made a decision. 15:49
"is constant" is now gone.
anyone up to produce a bible patch and send to p6l for pmichaud to apply? 15:50
# www.nntp.perl.org/group/perl.perl6....uage/22789
kolibrie svk pulls 15:51
svnbot6 r6303 | autrijus++ | * Very obscure Perl5 bug reported by kolibrie:
r6303 | autrijus++ | $dbh.prepare
r6303 | autrijus++ | If $dbh.can('prepare') is true, this method call would pass through
r6303 | autrijus++ | iff the last bit of CODE pointer location is 1.
r6303 | autrijus++ | It's caused by rounding a POPi into a bool. ;)
wolverian hmm. I assume it defaults to 'my constant ...', and you explicitly say 'our constant' when that's what you mean?
(or the other way around?) 15:52
autrijus I thought it's always lexical and never exported 15:54
but you can always ask :)
actually, I wonder what the effect of
my $x is export;
is
so maybe exportedness is distinct from lexicality. 15:55
in that case I expect "constant" to always be lexical and never package level
kolibrie autrijus: I think I set up my SQLite tables wrong 15:59
Committing root page...
*** [500] Failure while adding new page:
autrijus try mysql :) 16:02
I'm getting 16:05
[not|autrijus]~/work/pugs/WWW-Kontent-0.01$ h)`pu': pugs test.p6
*** [500] Can't execute statement handle 'getpageinfo'
autrijus tries make_root again 16:06
that works!
autrijus crosses fingers of the gripping hand...
Kontent runs! woot!
where's the svn repo to kontent again? 16:07
svn.brentdax.com/kontent
autrijus checks out trunk to play 16:08
mm offline 16:09
oh well.
kolibrie autrijus: I'll play a little bit later, $work applies pressure 16:13
16:15 Aankh|Clone is now known as Aankhen``
xinming compiling haskell is really a pain... 16:50
Limbic_Region yep - (binary distributions)++ 16:51
autrijus hm we're reaching half-month point this weekend. 16:56
iblech: you think PIL2JS is in releasable shape?
iblech autrijus: Yep :) I've finished both the CPS and -CPerl5 changes, and PIL2JS is in normal working state again -- currently PIL2JS passing 61.20% 17:02
autrijus woot
kolibrie woot!
autrijus iblech: how long does a smoke run take nowadays? 17:03
iblech autrijus: It used to take ~~30min, then went because of CPS up to ~~70min, and is now, because of various optimizations and -CPerl5, at ~~35min again :) 17:04
autrijus CPS is slow because of spidermonkey's exception model
or is because of the compiling overhead?
iblech Spidermonkey, mostly
CPS mostly requires more RAM when compiling, not processor speed 17:05
autrijus I'd expect so 17:06
would be good to find another nonexception way to do nonlocal returns
goto? ;)
or elimiate the javascript-side function boundary altogether 17:07
iblech goto would be fine, but is not available in JS :)
Hm
How would I then jump to a sub?
Without goto and without JS functions... 17:08
Hm, function generic_sub_wrapper (subname, args) { if(subname == "...") {...} else if... } 17:11
food & 17:16
putter does PIL2JS still use the trampoline, or is that gone? (putter svn syncs.) 17:17
autrijus iblech: a giant while{} maybe
putter iblech: :precomp in jspugs still gives me Can't locate Class/Rebless.pm. Has for a while. ideas? 17:20
autrijus putter: CPAN 17:21
putter aaahhh.
svnbot6 r6304 | fglock++ | - reimplemented Scalar - auto-deref; 17:25
r6304 | fglock++ | new methods .fetch, .store, .unboxed
r6305 | autrijus++ | * explicitly add 'use' in jspugs.pl to force Class::Rebless
r6305 | autrijus++ | error occur earlier.
fglock boxed containers can store unboxed values? 17:26
without autoboxing first 17:27
autrijus you mean 17:28
my Int $x = 3;
no, that boxes 3
fglock how about my $x = 3
autrijus that's untyped
so it is conceivable it just accepts whatever stored in 17:29
preserving boxedness
but if you think it's easier to just autobox, that's fine w/me too
putter re PIL2JS and js exceptions performance, if README is still an accurate description of the continuation calling trampoline, the usual thing to do is to add a counter (or trap, but counter is easier) and do several of the calls directly, to amortize the exception cost over several continuations.
autrijus putter: ref url? 17:30
autrijus is not at all familiar with trampolining
putter rather than calling something directly, you return or throw a request it be called to a main loop 17:31
autrijus oh. iblech does that.
but the thrown things were lambdas 17:32
I think if we lift everything, iblech's generic_sub_wrapper() can work
putter iblech does, yes. thus the suggestion. ;) re generic_sub_wrapper, ah, havent seen... 17:33
autrijus oh, you mean to non-CPS over say 5 levels 17:34
and only throw when stack is >5
right, makes sense
fglock ?eval my $p = 1 => [1..3]
evalbot6 (1 => [1, 2, 3])
autrijus s/non-CPS/direct-call CPS/ 17:35
putter err, still CPS, but directly call the lambda, rather than throwing it up for the runloop to call. 17:36
autrijus yes yes
xinming it's also funny to play with svn. :-)
autrijus xinming: when you start feeling svn slow, try svk :)
xinming hmm, anyone here compiled haskell using gcc-4.0
autrijus xinming: you probablyneed 6.4.1 to work with gcc4 17:37
(I think)
putter: as javascript has full closures, Ī» lifting makes less sense, but still it may help to name the intermediate cc and keep them as toplevels 17:38
so instead of passing closures around, we just need to pass symbols -- i.e. function names
sigh, Rhino does tail call automagically 17:40
if only SpiderMonkey does that too 17:41
putter looks like gcj might be newly (4.0) able to manage rhino? but then, nothing like java to be a portability nightmare... ;) 17:47
svnbot6 r6306 | fglock++ | * perl5/ Ref to unboxed value works
autrijus mumbles something like "write once run away" 17:48
putter lol :)
iblech putter: re. WRT counter: Is probably easy to implement, will do 17:50
autrijus would be cool to do some benchmark to find optimum nest level 17:51
putter k :)
iblech autrijus: Yep, that was my idea, too
autrijus goes back journaling, comfortable in the thought that sick minds think alike
putter re benchmark, optimum doesnt matter much? 10 reps gets exception cost down x10, so unlikely to matter anymore, and still in small call-depth where depth unlikely to have any cost... no? 17:54
svnbot6 r6307 | fglock++ | * perl5/ Scalar can store/fetch unboxed values
putter still, benchmarks always fun. 17:55
autrijus yeah :)
since it's hard to quantify the two 'unlikely' 17:56
w/o benchmarking, that is
putter oh, sigh, journal. autrijus, not that it really matters, but the idea was to have say "Pugs - The First Year" appear say T-Shirts sold through then end of the year, and then no longer appear. So incentive to buy sooner rather than later is bragging rights on "using pugs early". That's all. 17:57
autrijus putter: I changed the journal. :) 17:58
putter k :)
autrijus I'm also thinking about having one shirt each release
iblech Hm, it seems the counter slows things down...
autrijus and rorate every two weeks :D
that's going to be like CCG though 18:00
mm collectible pugs committer 18:01
one every release
starting with putter
xinming ?eval my @ary; my $t := @ary; 18:02
autrijus is thinking bad ideas again
evalbot6 []
autrijus xinming: that will be compiled (or coerced) to := \@ary
putter eeep! "run away" phrase comes to mind.
iblech Hm, using a real variable instead of an attribute of PIL2JS (the JS namespace) speeds things up 18:03
theorbtwo Or simply an error, and it should be corrected to $t := \@ary;.
iblech ponders using real variables for things which are often used
PerlJam autrijus: or just vanity shirts for all committers :)
autrijus iblech: "native registers"
PerlJam: you mean dump the entire committer list on the backside?
PerlJam autrijus: sure.
theorbtwo You could make a script that filled in a SVG template, and upload a new shirt with every SVN release. 18:04
autrijus and on the front, the version number, an one-line highlight from changelog
theorbtwo: exactly my thought
putter lists.puremagic.com/pipermail/vworl...00131.html mentions a call-depth and a stack limit, but doesnt say whether they are catchable.
autrijus and rotate one away every release
keeping 2-3 in current circulation
PerlJam theorbtwo: that's certainly not an error. 18:05
xinming ?eval true; 18:06
evalbot6 Error: unexpected ";" expecting term
PerlJam or, I would be *highly* surprised if perl6 treated @array as a reference in scalar context (in absense of stringifier or nummifier, etc) every where *except* $t := @array;
autrijus xinming: true is a unary function
xinming what does unary mean please? :-S 18:07
theorbtwo No, you don't understand -- make a new shirt with each release, automagically.
xinming: Takes one argument.
autrijus theorbtwo: PerlJam was talking to fglock.
PerlJam: fglock was talking about :=.
theorbtwo (See also: binary, trinary...)
PerlJam Well, s/// the names as appropriate ;)
autrijus er wrong, s/fglock/xinming/
autrijus notes the increasing activeness of this channel 18:08
theorbtwo: WebService::CafePress time? 18:09
xinming In my opinion, Perl 6 will be release in the next year, maybe July or Auguest. I believe this. ;-) 18:10
hmm, Maybe I am wrong. :-) But hope that won't be too long. 18:11
autrijus it'd be cool if we can hit 6.283185 by then.
PerlJam xinming: that's okay, I believed it would be released before the end of *this* year. :)
autrijus (full bootstrap)
but I have no idea about whether or when it will be called Perl6 :) 18:12
integral is pmichaud still quietly working away in the background?
autrijus integral: I think he's still working on the shift/reduce precedence parser.
xinming autrijus: hmm, I think pugs need to go on really. maybe I think pugs should stay pugs. as a interpreter... :-)
autrijus integral: but otherwise seems to be busy elsewhere
integral sounds fiddly work :) 18:13
autrijus integral: writing a prec parser in PIR is really not the funnest thing to do in the world :)
especially without any(< antlr sglr parser-combinator >) support 18:14
xinming ?eval my T { has $.a; my $.a }; my $o .= new; 18:15
evalbot6 Error: unexpected "{" expecting variable name or "("
xinming ?eval my T { has $.a; my $.a }; my T $o .= new;
evalbot6 Error: unexpected "{" expecting variable name or "("
autrijus ?eval my class T {}
evalbot6 Error: unexpected "T" expecting variable name or "("
autrijus xinming: "my class" is not yet supported.
so you need to say "class T" for now 18:16
xinming ?eval T { has $.a; my $.a }; my T $o .= new;
autrijus but eventually "my class T" is the syntax.
evalbot6 Error: No compatible subroutine found: "&T"
xinming ?eval class T { has $.a; my $.a }; my T $o .= new;
autrijus you can't simply say "T{}" to mean "class T"
evalbot6 \T.new();
xinming autrijus: hm, sorry, just a "hungry" delete. :-)
autrijus oh btw, you are Yiyi Hu right?
xinming I wonder, which will be used?
putter xinming: with increased stability (mm oo, new runtime and backends) I rather expect a dramatic increase in rate of progress. a lot of things which need to be done are "easy" in p6, but big enough that current pugs limitations become the bottleneck, and prohibitive. as that changes, I would be unsurpised if dramatic things like iblech's "oh, by the way, now there is a JS backend" start happening repeatedly. 18:17
xinming autrijus: hm, yes, I am. 18:18
autrijus xinming: I sent you an invitation mail to become a committer
xinming autrijus: hmm, yes, I recevied that. and registered the name. 18:19
s/name/account/
autrijus oh cool
putter re pmichaud and PGE, I suspect if might help if the rules test failures where distilled down to bitesized parrot test files... maybe.
autrijus putter: it's S/R, not PGE
xinming ?eval class T { has $.a =1; my $.a=2; }; my T $o .= new; $o.a();
evalbot6 Error: unexpected "{" expecting trait, ";" or end of input 18:20
putter S/R?
autrijus xinming: hm, what's your account name on openfoundry
xinming: I don't yet see you in committer list, that's why I ask. also I'd like to see your chinese listed in the AUTHORS file :)
putter: shift/reduce
putter: the low-level precedence parser
stevan howdy all
autrijus putter: similiar to the "buildExpressionParser" parsec function 18:21
putter ah, pm's new engine. he did however express interest in addressing PGE bugs which were presented to him.
stevan autrijus: I just sent a question to p6l, could you (in)sanity check it for me
autrijus putter: you give it a list of prec, fixity, arity
stevan is working on very little sleep right now
xinming autrijus: hmm, hold on,
svnbot6 r6308 | iblech++ | PIL2JS: Very minor optimization: PIL2JS.subpads, PIL2JS.callchain -> 18:22
r6308 | iblech++ | PIL2JS_subpads, PIL2JS_callchain, yielding ~~4% speedup.
iblech putter: Unfortunately, a counter causes a ~~7% slowdown :(
bbl &
Forth hmm...2:22am, I should sleep
putter re precedence parser, nifty. was wondering how to integrate one into the rules infrastructure. 18:23
iblech: :( &
autrijus putter: in parsec, it's as if it's a new primitive.
in PGE term, that's a subrule.
stevan: 1. runtime exception 18:24
(or even compile time)
2. yes, sane, possible. 18:25
2.1. that means eigenclasses are trivial to build
I want to steal why_the_lucky_stiff's eigenclasses! ;)
theorbtwo eigenclasses? 18:26
autrijus (it's a running joke in his "the least surprised" comic strip.)
PerlJam btw, Pm was physically about 4 feet from me earlier today working on another project. After today he should be finished with that project and then he said he's going to work on pmwiki 2.0 (which is extremely close to being released) and then it's perl6 for the foreseeable future.
autrijus theorbtwo: ruby's fancy term for singleton classes, or this-object-also-a-class.
PerlJam I took that to mean that he's going to be concentrating on perl6 stuff from about Sept 1. until it's "done"
autrijus PerlJam: it'd be great if it does transpire :) 18:27
PerlJam it would be indeed.
PerlJam crosses his fingers that there are no snags
autrijus would rather be happily surprised.
(no offense meant.)
PerlJam are you saying I possibly spoiled the surprise? I don't think so because I'll be surprised no matter what :) 18:28
autrijus :D 18:29
stevan autrijus: excellent, thanks 18:31
you confirmed my thoughts :)
autrijus :) 18:33
stevan I think I can fake that in 2.0 with tied scalars
MM2.0 that is
xinming autrijus: can you see me now? My login name is yiyihu, But In the afternoon, I can't login. So I go out for supper 18:34
kolibrie autrijus: I'd be interested in having the AUTHORS list on the back of the Perl6 Shirt 18:36
autrijus kolibrie: AUTHORS, or committers?
the former doesn't have guido :D
kolibrie autrijus: AUTHORS for the Perl6, committers for release shirts
autrijus oh. that's a thought 18:37
xinming: yes, cool
xinming: now you can try editing AUTHORS
and use "svn ci" to commit back
theorbtwo Don't forget to add your unicode name in the last column!
autrijus on line 134 is your name; you can add "xinming" between "Yiyi" and "Hu", and yes, what theorbtwo said.
welcome aboard :) 18:38
kolibrie: but AUTHORS keeps changing every day
seems that we really need WebService::CafePress
kolibrie autrijus: update the AUTHORS shirt every release, it can lag some 18:39
but WebService::CafePress would be good
autrijus ponders a t-shirt that reflects the sky every minute 18:40
kolibrie knows autrijus is crazy now
autrijus that would not be a news to many people here :) 18:41
putter iblech: err, if thowing exceptions is really comparable in cost to a native global variable access... can exceptions really be the performance bottleneck?
autrijus putter: iblech notices that cps via exception is 50% slowdown
xinming Yiyi xinming Hu, is the first column given name, and the "center" is the nick name, and the last is given name? :-S 18:50
integral the center is your CPAN id 18:51
autrijus Yiyi "xinming" Hu
then (CPANID) if you have one
kolibrie xinming: first column is your name, with irc nick in quotes 18:52
putter hmm... global native js variable access should be fast... if replacing exceptions with access makes things slower, with cache and branch prediction seemingly unlikely to be an issue, then... I'm puzzled.
autrijus then your non-ascii name -- čƒ”ä¹‰ä¹‰?
xinming 鹄é©æę‡æ 18:53
autrijus putter: colour me confused too.
what's a very nice and very unusual name :)
xinming This is my nick I normally use. :-)
autrijus s/what/that/
cool then. go ahead and add it in
xinming Yiyi Hu 鹄é©æę‡æ 18:54
will this be correct form?
autrijus Yiyi "xinming" Hu 鹄é©æę‡æ
so we can map the irc nick with your id
kolibrie only sees one chinese? character, and a lot of weird question mark things 18:55
autrijus kolibrie: maybe you don't have font for simplified chinese
integral it's coming through ok as utf-8 for me
kolibrie autrijus: can you suggest a font? in debian, preferably 18:56
autrijus xinming: is it intentional that the name sounds like "ę— ę„ä¹‰" (nonsense) ? :D
xinming ...
autrijus kolibrie: arphic's gb font
kolibrie autrijus: ok, will try
autrijus xinming: no offense meant -- I didn't intend 'autrijus' to sound like 'outrageous' (ēŒ–ē‹‚) when I picked the name :) 18:58
xinming autrijus: well, In fact, It isn't, In Chinese, That's "Hu" means watch... or "look forward to", And the middle "yi" means stage(é©æē«™), And the last Yi which will mean "be a person with good moral" 18:59
autrijus I thought Hu is a kind of bird that flies far.
xinming lol, autrijus It has another meaning. 19:00
autrijus cool then :)
DaGo: hi :) 19:03
DaGo hi autrijus !
xinming autrijus: search é¹„ęœ› in google, you may find the answer. Oh,,, tooo painful for compiling haskell. swaping occurs all the time... 19:04
autrijus xinming: if you are on debian, try haskell-unsafe.alioth.debian.org/ha...nsafe.html 19:05
xinming: ahh, åŗ”čæå†å…“ļ¼Œå››ęµ·é¹„ęœ› 19:06
cool :)
xinming: it has ghc 6.4.1 pkg
which should be fine to run pugs with
xinming ever used "å³°", But I found, be a person with good moral is what I need. So I changed. 19:07
autrijus: hmm, I've been in a pain for a while, I think I will go on with the compiling progress.
autrijus sure. it took ~5hr here. 19:08
xinming autrijus: by the way, What the result for this example will return? 19:09
svnbot6 r6309 | yiyihu++ | Edit Yiyi Hu's information
xinming ?eval class T { has $.a =1; my $.a=2; }; my T $o .= new; $o.a();
evalbot6 Error: unexpected "{" expecting trait, ";" or end of input
xinming hmm, I know now you can assign a value to attribute. But It it can, What will the result be? 19:10
1 or 2?
autrijus xinming: I think it will be 1.
because $o is an instance
and $.a is a class attr, not a instance attr 19:11
it's either 1, or error.
(the error would be for duplicate members for class and obj) 19:14
xinming hmm, I think, It might be 1 also, And It might not be a error but an warning. And within class, the attribute declared by "my" will have a higher priority... hmm, Just a guess... 19:15
autrijus xinming: that may be possible. you can ask on perl6-language
xinming and the attribute declared by "has" will be the accessor for outside world. 19:16
autrijus: Ok, I will
kolibrie I got ttf-arphic-ukai and ttf-arphic-uming, do I need bkai00mp, bsmi00lp, gbsn00lp, or gkai00mp?
xinming kolibrie: the more the better. ;-) 19:17
autrijus kolibrie: the "g*" are simplified
so you need g*
kolibrie autrijus: ok
autrijus woot, I fixed the class{} parsing.
all errors are now reported at the inner position.
kolibrie: rejoice!
kolibrie autrijus: awesome! 19:18
autrijus lookAhead++
parser combinator is really a good idea :)
Limbic_Region autrijus - I see that Larry is quoting from perldata as well (WRT p5 and numbers/underscores) and yet p5 doesn't behave by its own rules
I hesitated to add the trailing _ in the tests because the docs didn't support it 19:19
autrijus nod, so it's just an accidentalfeature 19:20
kolibrie ah. already had the gbsn00lp and gkai00mp fonts, I must have tried this before
svnbot6 r6310 | autrijus++ | * Within `class Foo { ... }`, syntax errors occuring in ...
r6310 | autrijus++ | is now reported in the place it happens, instead of lifted
r6310 | autrijus++ | at the `{` position, which greatly hinders development.
r6310 | autrijus++ | Reported by various people, but most recently kolibrie.
Limbic_Region what was the outcome of the weird junction behavior ?
autrijus Limbic_Region: parsebug
not bug
misfeature
any<1 2 3> eq 3
is parsed as
any(<1 2 3> eq 3) 19:21
which is true according to spec.
s/true/conformant/
and it evaluates to false.
because that's the same as
any([1,2,3] eq 3)
which is (any("1 2 3" eq 3))
which is any(bool::false).
Limbic_Region so is that any different from any('1', '2', '3') eq '2' ? 19:22
autrijus very different
any<1 2 3>
is not
any(<1 2 3>)
Limbic_Region ?eval any('1', '2', '3') eq '2'
evalbot6 bool::false
autrijus er what?
Limbic_Region needs to wander off but I find that one odd too
autrijus ?eval (any('1', '2', '3')) eq '2' 19:23
evalbot6 bool::false
autrijus ?eval (any('2')) eq '2'
evalbot6 bool::true
autrijus ?eval (any('2', '2')) eq '2'
evalbot6 bool::true
autrijus ?eval (any('2', '3')) eq '2'
evalbot6 bool::false
autrijus ?eval (any('2', '3'))
evalbot6 '2'
autrijus aha.
why is evalbot doing this?
it's picking the first value from a junction. 19:24
so in bool::false|bool::true only false gets printed.
it's a evalbot problem.
coral ! 19:25
kolibrie so, when we get back the junction (bool::false | bool::true), that simplifies to bool::true? 19:26
or evalbot should print both
autrijus to false.
evalbot should print both 19:27
but it's currently picking the 1st one.
?eval say any('2', '3')
evalbot6 any(VStr "2",VStr "3") bool::true
autrijus ?eval say(any('1', '2', '3') eq '2')
evalbot6 any(VBool False,VBool True) bool::true
autrijus that works.
ods15 ?eval die 19:28
evalbot6 Error: Died
ods15 bwhahaha
lol
autrijus :D
?eval die "I died\n" 19:29
evalbot6 Error: I died
wolverian ?eval XXX
evalbot6 Error: No compatible subroutine found: "&XXX"
wolverian dang. wasn't that specced? :)
kolibrie ?eval if (any('1', '2') eq 2) { say 'true' } else { say 'false' } 19:31
evalbot6 true bool::true
kolibrie so putting the junction in an 'if' makes it true?
autrijus wolverian: no, !!! is
?eval !!!
evalbot6 Error: !!! - not yet implemented
wolverian autrijus, ah, right. thanks.
?eval ...
evalbot6 *** ... - not yet implemented at <eval> line 1, column 1-4
autrijus kolibrie: yes, bool context flattens juncs 19:32
kolibrie and any truth is then true?
xinming hmm, by the way, is "true" a function in perl 6? 19:33
Aankhen`` It's a member of the `bool` enum.
wolverian xinming, yes.
Aankhen`` (which happens to be exported into the global namespace)
wolverian oh, so it's not the reverse of not() anymore?
xinming ?eval true( 0 ); 19:35
evalbot6 bool::false
xinming ?eval false( 0 );
evalbot6 Error: No compatible subroutine found: "&false"
xinming :-P
wolverian ?eval not true bool::false
evalbot6 bool::true
wolverian :)
Aankhen`` ?eval true == bool::true
evalbot6 Error: Can't use readline() or getc() in safemode.
autrijus "false" is spelled "not"
Aankhen`` :-o 19:36
?eval ?(true == bool::true)
evalbot6 Error: Can't use readline() or getc() in safemode.
Aankhen`` Bah.
wolverian hm. is it trying to make a filehandle with the =?
xinming hmm, Is this function mean force the context into bool context?
or just test the "property", just like my $x = 1 but true; 19:37
wolverian true ne bool::true
true is the reverse of not
or well. I think that's what larry decided. 19:38
Khisanth why the heck does that operator even exists?
autrijus all just because he wants to write
when true { ... }
instead of
xinming ...
autrijus when bool::true { ... }
or
when True { ... }
I have no idea. I don't even try to defend this one :) 19:39
wolverian autrijus, huh? why can't the bool::* be flattened into the main namespace?
autrijus wolverian: because larry hates that ;)
wolverian (and true() removed)
Aankhen`` Freaky.
I had it the other way round. :-\
autrijus he thinks it will encourage people to write (== false) or something
SamB couldn't he just do the perl equivalent of "from bool import true"?
theorbtwo I'd like true and false to be what bool::true and bool::false are now, and smart-matching against true to give you only things that are true, and likewise with false.
autrijus theorbtwo: I'm sure most of us likes that. 19:40
wolverian right, I agree with theorbtwo.
'when true' is not at all a reason to not do that, since it works that way too.
autrijus you can try p6l it again. I think larry is less fixed on this than on the y2k epoch (which I already gave up trying)
theorbtwo wonders if programmers from 2010..2099 will write '20'.$time.year. 19:41
Khisanth is still confused about what the heck true() is suppose to do 19:42
wolverian Khisanth, reverse of not()
autrijus Khisanth: it's the low precedence of ?
just like not() to !
xinming ?eval not( 1 );
evalbot6 bool::false
Khisanth wolverian: see that doesn't actually name sense
xinming ?eval not( 0 );
evalbot6 bool::true
Khisanth s/name/make/ 19:43
wolverian Khisanth, why not?
Khisanth since that would be not( not() )
xinming hm, In fact, we can use `()` in bool context to stand for true.
SamB ?eval true 1
evalbot6 bool::true
SamB ?eval true 0
wolverian that's an implementation issue. (why am I defending this?)
Khisanth it would make more sense if it didn't take any args ...
evalbot6 bool::false
xinming ?eval true
evalbot6 Error: unexpected end of input expecting term 19:44
SamB ?eval bool::true 1
evalbot6 Error: No compatible subroutine found: "&bool::true"
xinming ?eval not
evalbot6 undef
xinming Oops~~~
autrijus not() is specced as undef.
true() is specced as not enough arguments.
wolverian yay. :) (the perl5 not() fiasco was funny) 19:45
autrijus so, again, not quite symmetric
wolverian autrijus, hm. that's to make confusing it with bool::true harder?
Khisanth hrm so you can do when true {}, when not true {} but not when false {}? :)
autrijus wolverian: yeah
Khisanth: right, but you can do
when not {}
I need to sleep now :)
Khisanth ugh
autrijus waves &
xinming autrijus: good night.
autrijus please raise it on p6l again if you feel bad :) 19:46
&
Khisanth I thought there something about making things LESS confusing for newbies
xinming Khisanth: larry is the one who wanna do this.
Aankhen`` Night autrijus.
theorbtwo G'night! 19:47
kolibrie good night autrijus
xinming Khisanth: but seems to fail sometimes, I ever confused with "" and undef. and even now, I sometimes don't know when to used if( defined $var )....
Khisanth at least for me, the confusion mainly stems for a seemingly lack of purpose for true() and possibly from a bias due to the English language 19:49
xinming luckily Larry don't know Chinese. :-) 19:51
wolverian Khisanth, Larry considered whether() (I think autrijus suggested it). English just sucks here. 19:53
(and yeah, I don't know how useful true() is either, unless you want to turn off all autocoercion.)
Khisanth ?eval true bool::false 19:54
evalbot6 bool::false
Khisanth ?eval true bool::true
evalbot6 bool::true
Khisanth scratches his head
so it's if statement in the form of an operator
wolverian kind of, yes. it's an explicit booleanizer. 19:55
(like not(), except it doesn't flip the truth value)
(I mean, true() doesn't.)
Khisanth but doesn't if impose boolean context as well?
wolverian I assume so. that's why I talked about turning off autocoercion above :)
that's the only scenario where I can see this as useful. 19:56
xinming ?eval my $a = true( 10 ); $a.say;
evalbot6 1 bool::true
Khisanth how about we just call it "id" :P 19:57
wolverian heh. :)
there's .id already, I believe.
theorbtwo ?eval my $a = ?10; $a.say; 19:58
evalbot6 1 bool::true
xinming ?eval if 3 < 1 <= 6 { 'true'.say } else { 'false'.say };
evalbot6 false bool::true
xinming ?eval my $t; if $t = ( 3 < 1 <= 6 ) { 'true'.say } else { 'false'.say }; 19:59
evalbot6 false bool::true
xinming ?eval my $t; if $t = ( 3 < 1 <= 6 ) { 'true'.say } else { 'false'.say }; $t.say; 20:00
evalbot6 false bool::true
wolverian ?eval say do if 1 { 1 } else { 0 }
evalbot6 1 bool::true
wolverian do++
xinming is thinking why this happen.
theorbtwo I don't undersatand that last one (with $t) either.
xinming ?eval my $t; if $t = true( 3 < 1 <= 6 )) { 'true'.say } else { 'false'.say }; $t.say;
evalbot6 Error: unexpected "i" expecting ";", statements or end of input reserved word 20:01
xinming theorbtwo: hmm,
wolverian seems logical to me.
xinming ?eval my $t = true( 1 );
evalbot6 \bool::true
xinming ?eval my $t = true( 1 ); $t.say;
evalbot6 1 bool::true
xinming ?eval my $t = true( 100 ); $t.say;
evalbot6 1 bool::true
xinming it will also print 1...
wolverian bool::true stringifies to 1 20:02
bool::false stringifies to ''
xinming so. if $t = true( 3 < 1 <= 6 )), I just wish to get the value of this 3 < 1 <= 6
theorbtwo ?eval my $t; if $t = ( 3 < 1 <= 6 ) { 'true'.say } else { 'false'.say }; 'irrelevant';
evalbot6 false 'irrelevant'
theorbtwo ?eval my $t; if $t = ( 3 < 1 <= 6 ) { 'true'.say } else { 'false'.say }; say $t; 'irrelevant';
evalbot6 false 'irrelevant'
theorbtwo Ah, nevermind.
That bool::true isn't what I was thinking it was -- it's the return of say. 20:03
wolverian ?eval 3 < 1 <= 6
evalbot6 bool::false
wolverian xinming, there's your $t
xinming ?eval 3 < 1
evalbot6 bool::false
theorbtwo ? (bool::false, bool::false)
xinming ?eval my $t = true( 3 < 1 )
evalbot6 \bool::false
theorbtwo ?eval (bool::false, bool::false)
evalbot6 (bool::false, bool::false)
theorbtwo ?eval ?(bool::false, bool::false)
evalbot6 bool::true
theorbtwo Right. 20:04
wolverian theorbtwo, a list of two elements is true.
theorbtwo That's the only case where '?' ne 'true'.
?eval ?all(bool::false, bool::false)
evalbot6 bool::false
Limbic_Region so the bug I demonstrated is in evalbot and not Pugs or both or what?
wolverian ?eval true bool::false, bool::false
evalbot6 (bool::false, bool::false)
wolverian hm. right. that seems bogus
xinming ?eval my $t = true( 3 < 1 );
evalbot6 \bool::false
theorbtwo ?eval true (bool::false, bool::false)
evalbot6 bool::true
wolverian oh. precedence. 20:05
duh. thanks :)
xinming ?eval my $t = true( 3 < 1 < 5 );
evalbot6 \bool::false
wolverian I guess that makes sense, too.
lower precedence than ? but not as low as ,
xinming if a bool compared with a number, Will the result be true or false? 20:06
theorbtwo ? 3 ~~ bool::true
?eval 3 ~~ bool::true
evalbot6 bool::false
theorbtwo TIAS. 20:07
xinming ?eval 3 > bool::true
evalbot6 bool::true
xinming ?eval 3 > bool::false
evalbot6 bool::true
theorbtwo ?eval 1 ~~ bool::true
evalbot6 bool::true
xinming ?eval bool::false < 3
evalbot6 bool::true
theorbtwo I think that's a bug.
wolverian theorbtwo, I agree.
add a test if there isn't one :) 20:08
now I must go sleep. cheers
xinming wolverian: good night
theorbtwo wonders if there should be a "add a test" or "suggest a test" evalbot command.
G'night, wolverian.
putter autrijus: turns out js global variable access is said to be slow. 20:33
svnbot6 r6311 | Stevan++ | Perl6::MetaModel 2.0 20:34
r6311 | Stevan++ | - cleaned out MiniMetaModel code to make room for
r6311 | Stevan++ | all new code base
r6311 | Stevan++ | - added several primatives and wrote tests for them
Aankhen`` goes to sleep. 20:43
G'night.
svnbot6 r6312 | fglock++ | * perl5/ Scalar - new methods 21:09
r6312 | fglock++ | .access('ro') - make the Scalar r/o;
r6312 | fglock++ | .access('rw') - make the Scalar r/w (default);
r6312 | fglock++ | .bind( $scalar ) - binds ":=" the Scalar to other Scalar
iblech putter: [slow global var access] :( 21:11
fglock: oooh .bind :) If you can read JS, you may want to look at perl5/PIL2JS/libjs/PIL2JS.js, function BINDTO
iblech goes to read your code
clkao autrijus: heh,bleaklow.com/blog/images/p6_cover_big.gif 21:12
fglock iblech: it's not very clean :)
iblech fglock: np :)
fglock I defined an internal 'cell' object
bind makes both scalar use the same cell 21:13
iblech Right, I do essentially the same in PIL2JS 21:16
(To save another level of indirection, I don't have a separate .cell, but that's an implementation detail) 21:17
fglock iblech - I'm trying to avoid using the metamodel internals - I can't get to the 'access' attribute directly 21:18
now I have to find out how to implement AUTOMETH 21:21
Supaplex very carefully 21:22
fglock PIL2JS uses a metamodel? I'm interested on the "auto-deref" implementation 21:23
iblech fglock: I faked autoderef a bit -- basically, .ref, .isa, &prefix:<+>, &prefix:<~>, &prefix:<?> all check if the ref should be autoderefed. 21:29
So usercode thinks refs are autoderefed
While they are not, actually
But only JS code can notice that 21:30
putter iblech: emphasizing that (1) its not clear performance should be something we are thinking about yet; and (2) I dont have profiling working (looks firefox isnt running the .html output yet; see (1) :-), I note that I saw trival (vaguely ~10%) speedup from adding a var AlsoPIL2JS = PIL2JS; to PIL2JS.js, and adding var PIL2JS = AlsoPIL2JS; after every function (args) {. random observation.
fglock I was thinking about leaving the autoderef to the compiler - it would be much easier to implement 21:31
I mean, not implement it at the raw object level
(although I already implemented it) 21:32
iblech putter: (1) Right, features are more important
putter: (2) There is a JS profiler? Where? :)
putter: (3) Why is it faster then? Cache effects? 21:33
putter mozilla, Tools/WebDev/JSDebugger. named "Venkman".
iblech fglock: I'm not sure I understand you right... What about my $x = int rand 2 ?? [1,2,3] :: \4 -- the compiler can't always infer when to autoderef and when not 21:34
oooh
putter re (3), I noticed PIL2JS.mumble was used a lot, so this makes PIL2JS a fast-to-find local var. 21:35
iblech ah, I see
fglock it can deref the subexpressions: my $x = int rand 2 ?? deref([1,2,3]) :: deref(\4) 21:36
I need more experience with autoderef - it still confuses me 21:37
putter err, s/after every/after every (in Prelude.js)/ 21:40
svnbot6 r6313 | fglock++ | * perl5/ Scalar - read_only scalar can be modified once;
r6313 | fglock++ | "my $pi is readonly; $pi = 3;"
putter Yes! pi = 3! 5% error and sooooo much simpler! :)
iblech Ah, I see. But: $x should contain a Ref -- i.e. the deref may only happen ALAP 21:41
:D 21:43
putter: I'll add that alsopil2js
fglock iblech - in this case the reference could be stored in $x - it would dereference it later anyway. It would need some tests to see if this leads to the right behaviour. 21:48
svnbot6 r6314 | fglock++ | * perl5/ Scalar - added a test for "read-only store-once" 21:58
putter re pi, reduces 4/3 pi r^3 and 4 pi r^2 to area and volume of a sphere is one half that of the "box it came in" (bounding cube). similarly (3/4) for circle's pi r^2 and pi d. 22:07
fglock putter - I'll add it to the pod :) 22:08
but this must be discussed on p6l first 22:09
putter lol 22:10
iblech putter: Indeed, the AlsoPIL2JS hack gets us a ~~9% speedup :) 22:35
putter++
svnbot6 r6315 | iblech++ | PIL2JS: putter++'s AlsoPIL2JS speedup hack (~~9% speedup): 22:39
r6315 | iblech++ | The new "AlsoPIL2JS_SpeedupHack" is an alias to PIL2JS. Then, at the top of
r6315 | iblech++ | each JS function, we localize PIL2JS: "var PIL2JS = AlsoPIL2JS_SpeedupHack"
r6315 | iblech++ | This causes PIL2JS to be stored in the lexical pad instead of as a global,
r6315 | iblech++ | causing faster access times.
r6316 | iblech++ | * Pugs.Parser: Parse "use jsan:Foo.Bar", "use jsan:Foo.Bar ()", and "use 22:41
r6316 | iblech++ | jsan:Foo.Bar ..." and make it really call
r6316 | iblech++ | PIL2JS::Internals::use_jsan_module_[imp|noimp]("Foo.Bar", ...).
r6316 | iblech++ | * src/perl6/Prelude.pm: "Support for loading JSAN modules requires running
r6316 | iblech++ | under PIL2JS!"
r6316 | iblech++ | * Usual svn props.
axylfyre hey all 22:51
putter hi axylfyre. 23:01
axylfyre hey putter 23:02
putter hmm, so what's up with make smoke? I finally ran it myself, and found it skipped and failed the p6 rules tests, just like public smokes. But make test runs fine. Wha?!?
axylfyre do any of y'all use LWP? 23:04
putter I believe only LWP::Simple has as yet been ported to perl6. 23:07
theorbtwo I see no reason that use perl5:LWP shouldn't work.
Allo, Yuval. 23:08
putter nothingmuch! 23:09
nothingmuch putter!
axylfyre hmmm..interesting
I am running it on a win32 system also
putter I finally ran make smoke! All of the t/rules/from_perl6_rules/*.t test were skipped, and most all of t/rules/rules.t failed. But in make test, the former work and the latter fails less badly. Any idea what might be happening? 23:11
nothingmuch: any thoughts at all...? 23:12
nothingmuch sorry, typing 23:13
uh, not really... let me think
putter nothingmuch: d*mn. never mind. thanks for your help. I ran make smoke on a copy of pugs with externa parrot... and failed to set up PATH. mea foeda cpa. 23:17
err, culpa.
nothingmuch help?
i did not help... i was writing mail
putter sounding boards too are of service. help by virtue of a person saying "and then I did this, and then... oh.... drat". 23:18
;)
svnbot6 r6317 | iblech++ | PIL2JS: First stab at &PIL2JS::Internals::use_jsan_module_imp. Overrides a 23:25
r6317 | iblech++ | private JSAN method to find out the subs a loaded module exports so they can be
r6317 | iblech++ | boxed. Otherwise, you'd have to write "use jsan:Test.Simple; JS::plan(...);
r6317 | iblech++ | JS::ok(...)". Not working yet (could as well be a problem on the JSAN side/my
r6317 | iblech++ | setup), will investigate further tomorrow.
putter nothingmuch: ok, next question. could I pursuade you to run a parrotted pugs for your smoke? 23:26
nothingmuch putter: i already am, IIRC 23:27
putter nothingmuch.woobling.org/pugs_test_status/ has t/rules/rules.t and t/rules/from_perl6_rules/*.t all red. but the local smoke I just ran worked fine. 23:29
nothingmuch putter: what is today's date?
(/me restarts smoke loop... we had power problems this week) 23:30
iblech autrijus: [your journal, not terribly important] $CALLER::x was working for quite some time; Today I've only made $_ a real lexical, which made $CALLER::_ work, which caused some more tests to pass :)
putter Aug 17. at least in this part of the planet.
iblech Need to sleep now. Night all :)
Aug 18 here :)
putter good night iblech &
nothingmuch putter: and the date on top of the smoke report?
putter Aug 11. 23:31
ahh. (are we back to the argument on whether the run date should be at the top of the report itself...? :)
nothingmuch putter: patches welcome 23:32
iblech: when you wake up, see p6l post "
Serializing code"
23:43 venk` is now known as venk 23:47 venk is now known as venk2
pasteling "putter" at 66.30.119.55 pasted "patch to Test/TAP/HTMLMatrix/template.html to show report date in the body of the page (rather than only in the unreadable-in-some-browsers title)." (11 lines, 437B) at sial.org/pbot/12549 23:48
putter nothingmuch: here is a simple patch. includes the title in the body of the page. thanks!
nothingmuch got darcs and a PAUSE id? 23:49
putter neither, sorry. 23:51
nothingmuch hmm
when you get a pause ID tell me and I'll make you co maintianer 23:52
and if you feel like contributing more, get darcs, it'll make your life easy
anyway, your patch has been applied, and the moment i finish the next TTH it'll be in it
23:52 venk2 is now known as venk
putter err, ok; indeed; great; no hurry. 23:53
nothingmuch goes now 23:55
putter & thanks again. 23:57