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 |