6.2.10 released! xrl.us/hxnb | geoffb's column (/. ed): xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 | www.geeksunite.net Set by integral on 25 October 2005. |
|||
leo | ?eval say bool::true | 00:01 | |
evalbot_7830 | 1 bool::true | ||
cognominal_ | ?eval say 'ok' if 0 but bool::true; | 00:02 | |
evalbot_7830 | Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
leo | ?eval say 'ok' if (0 but bool::true) | 00:03 | |
evalbot_7830 | Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
leo | looks like uniplemented | 00:04 | |
svnbot6 | r7831 | autrijus++ | * change "&c.also(&d)" to "&c.retry_with(&d)" because "also" sounds like doing both, not taking an alternative | 00:05 | |
cognominal_ | I like very much of piggy backing a value of a type different from the base value. It goes very well with concept of context. | 00:06 | |
Khisanth | why not just .retry()? | ||
cognominal_ | although I am not sure how it will work with objects. | ||
I mean when the piggy back object is derived from the other one or the other way around | 00:08 | ||
leo | ?eval 0 but bool::true | 00:13 | |
evalbot_7831 | Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
clkao | chip: you goty our keyword thingy sorted? | 00:18 | |
leo | 22:42 <+svnbot6> r9764 | chip++ | trunk: | 00:20 | |
22:42 <+svnbot6> : Update pod svn attributes again, to make them consistent. | |||
seems so (hi clkao ) | |||
clkao | hi leo ;) | 00:22 | |
leo is just a bit lurkin' here | 00:23 | ||
chip | clkao: yeah, It's OK now. I am curious how to arrange that .pod files automaticaly have native line endings and a particular list of keyword expansions | 00:24 | |
clkao | you can set autoprop in Ā±?.subversion/config to add eol:style=native and others | 00:28 | |
gr, pesky british keboard | |||
02:13
stevan_ is now known as stevan
|
|||
rafl_ | r0nny: IRC isn't synchronous. Just say what you want to say and highlight me. I'll answer when I come to it. | 09:54 | |
autrijus | liz6: ping | 09:55 | |
liz6 | pong | 10:01 | |
autrijus | liz6: a SEE session coming up in see://perlcabal.org/ over S22 | 10:02 | |
do you have SubEthaEdit installed? | |||
liz6 | i do now | 10:08 | |
autrijus | cool, a sec, let me set up connection | ||
webmind | does anyone know how quickly the pugs debian package in unstable is updated, or if there is a daily package available somewhere ? | 11:00 | |
Juerd | webmind: rafl probably knows. | 11:33 | |
webmind | then I'll wait when he's back | 11:48 | |
svnbot6 | r7832 | autrijus++ | * random S22 SEE notes - need far better organization and wordings | ||
Juerd | webmind: Highlight him | 12:16 | |
rafl_ | webmind: I'm here. | 12:17 | |
webmind: I'll do daily builds soon. I first want to upload parrot 0.3.1 (6.11) and compile the pugs in unstable with parrot embedding. | 12:18 | ||
webmind: After that I'll upload snapshots to experimental more often. | |||
webmind | rafl_, cool thanks :) | 12:35 | |
rafl_ | webmind: Also interested in Debian development? A Co-Maintainer would be fine. | 12:36 | |
webmind | rafl_, hat kind of work would that require ? | ||
+w | |||
rafl_ | webmind: Preparing new packages, snapshots for example. | 12:37 | |
webmind: pugs is already in a state where making debian packages isn't a big problem, so updates are the main work that needs to be done. | |||
webmind | daily work would be a bit tricky with my schedule.. once a week would be fine though.. dunno if that fits | 12:38 | |
rafl_ changes rooms, brb. | |||
webmind | also not much experience with debian packages.. but if that all is fine, sure :) | ||
rafl_ | webmind: Indeed. Simply prepare a package from the current svn tree when you have time. I'll check and upload it afterwards. | 12:46 | |
And add yourself to the Uploaders field in debian/control. | |||
webmind | rafl_, hmk, I'll try and find a machine for that then | 12:47 | |
rafl_ | webmind: There's feather for example. | ||
webmind | ah yes | ||
I'll take a look on sunday for this | 12:48 | ||
currently working | |||
rafl_ | Great! | 12:50 | |
theorbtwo | G'morning, Limbic. | 13:05 | |
Limbic_Region | salutations theorbtwo | 13:08 | |
just going through my morning routine of PerlMonks catchup, use.perl catchup, cnn catchup, etc | |||
rafl_ | Does someone know other german pugs developers then iblech? | 13:40 | |
We want to organize the next german perl workshop and want to invite some pugs and parrot hackers. | |||
leo | oops /me thinks that I should submit a paper | 13:41 | |
rafl_ | That's good, indeed! | ||
r0nny_ | re | 14:00 | |
rafl_: ping? svk? *plzbefast - in 15 min i need to go away 30 min* | 14:01 | ||
rafl_ | I'm in a lecture. | 14:02 | |
r0nny_ | oh | ||
today i had a short day - only one of them | |||
i wish i had a laptop for the lectures | 14:03 | ||
rafl_ | Where do you study? | ||
r0nny_ | fh schmalkalden - germany | 14:06 | |
well - neet to go now | 14:10 | ||
biaw | |||
re | 14:46 | ||
rafl_: ping again? | |||
rafl_ | r0nny_: Highlight me and write what you want. No need to ping me a thousand times. | 14:47 | |
r0nny_ | ok | ||
did u get a svk mirror up ? | 14:48 | ||
rafl_ | No. | ||
I'll notify you as soon as I did it. | |||
r0nny_ | then i will try to create one new | ||
btw - i got a idea for a nice sixpan directoy structure | 14:50 | ||
package-based instead of author based | 14:51 | ||
aufrank | good time of day, all! | 15:37 | |
(morning here) | 15:38 | ||
kolibrie | aufrank: good $time_of_day, to you, too | ||
xinming | ?eval sub haha { $?SUB.say }; haha; | 15:44 | |
evalbot_7832 | Error: Undeclared variable: "$?SUB" | ||
kolibrie | ?eval sub haha { $?SUBNAME.say }; haha; | 15:45 | |
?eval sub haha { $?SUBNAME.say }; haha; | |||
evalbot_7832 | &main::haha bool::true | ||
15:58
Eimi is now known as yawn,
yawn is now known as Eimi
|
|||
aufrank | ?eval role A { has $.a } class B does A {} B.new(a => "hi").a | 16:11 | |
evalbot_7832 | \"hi" | ||
Khisanth | hmm roles are like Java interfaces except they have actual implementations that can be inherited? | 16:13 | |
aufrank | ?eval role A { has $.a } class B does A {} method C ( $b does A ) { say $b.a } $o = B.new( a => "hi" ); C( $o ) | 16:14 | |
evalbot_7832 | Error: Undeclared variable: "$o" | ||
aufrank | ?eval role A { has $.a } class B does A {} method C ( $b does A ) { say $b.a } my $o = B.new( a => "hi" ); C( $o ) | 16:15 | |
evalbot_7832 | Error: No compatible subroutine found: "&C" | ||
aufrank | ?eval role A { has $.a } class B does A {} my $o = B.new( a => "hi" ); $o does A; | ||
evalbot_7832 | Error: Unknown syntactic construct: Syn "does" [Var "$o",Var ":A"] | ||
aufrank | Khisanth: that's one view out there right now | 16:16 | |
the term "interfaces with defaults" was used on p6l recently | |||
either by Luke or Stevan, I think | |||
?eval role A { has $.a } class B does A {} my $o = B.new( a => "hi" ); if ( $o does A ) { say $o.a } | 16:17 | ||
evalbot_7832 | Error: Unknown syntactic construct: Syn "does" [Var "$o",Var ":A"] | ||
aufrank | ?eval role A { has $.a } class B does A {} my $o = B.new( a => "hi" ); if ( defined $o.a ) { say $o.a } | 16:18 | |
evalbot_7832 | hi bool::true | ||
perlover | is there a pug shell? | 16:42 | |
kolibrie | yes | ||
PerlJam | perlover: yes. Type "pugs" at your prompt after you've built it | ||
perlover | ok.. | ||
how long does it take to install in general via CPAN shell? | 16:43 | ||
PerlJam | dunno, I've been building from the subversion repository. | ||
Khisanth | how fast is your computer? :) | ||
perlover | 2.8GHz | ||
PerlJam | perlover: pugs takes a while to build unless you build unoptimized. | 16:44 | |
perlover | It's been running almost 30 minutes | ||
PerlJam | perlover: no, I take that back ... pugs just takes a while to build :) | ||
Khisanth | PerlJam: hmm actuall make unoptimized just fails here | ||
and takes a long time | |||
perlover | so you are saying via CPAN shell it contains unoptimized build | 16:45 | |
? | |||
PerlJam | Khisanth: How does it fail? | 16:46 | |
perlover: no, I'm saying that pugs takes a while to build. | |||
perlover: a *long* while in some cases. | |||
perlover | oh ok.. | ||
Khisanth | hrm that was in the log somewhere in here | ||
perlover | is there a "Beginners Perl" free online book equivalent for "Pugs"? | 16:47 | |
PerlJam | no. | ||
perlover | hmm | ||
Khisanth | not very practical | ||
perlover | what's the good resource to learn the syntax? | 16:48 | |
PerlJam | Read the Synopses | ||
aufrank | watch what people type into the evalbot ;) | 16:49 | |
?eval say "hello world" | |||
evalbot_7832 | hello world bool::true | ||
aufrank | see, that was chapter one of the book! | ||
there are also some pointers in docs/quickref/ | 16:51 | ||
in the pugs distribution | |||
and code in examples/ | |||
perlover | aufrank how do you invoke the docs quickref? | ||
aufrank | if you installed using cpan | 16:52 | |
it is at | |||
Khisanth | PerlJam: would have to rebuild pugs ... and that takes quite a while as well as preventing me from doing pretty much anything on this computer while it's doing that :/ | 16:53 | |
aufrank | whoops | ||
perlover still waiting for aufrank :-) | 16:54 | ||
aufrank | try .cpan/build/Perl6-Pugs-6.2.10/docs | 16:55 | |
wherever your cpan keeps its build history | |||
perlover | is that a command line aufrank? | 16:56 | |
aufrank | but you can also check the repository online | ||
svn.openfoundry.org/pugs | |||
no, that would not be a command | |||
perlover | manually go to the directory? | 16:57 | |
aufrank | my cpan keeps its build files in a directory call .cpan in my home directory | ||
so I would do something like | |||
perlover was thinking in line of "perldoc" for pugs | |||
QtPlatypus | perlover: There are people working on it, but its nowhere near usable yet | 16:58 | |
aufrank | svn.openfoundry.org/pugs/docs/ | ||
svn.openfoundry.org/pugs/examples | |||
perlover looking at it | 16:59 | ||
got it aufrank | 17:05 | ||
aufrank | enjoy! | ||
perlover | from quickref: | 17:12 | |
for @foo.kv -> $index, $value { ... } | |||
why ".kv" ?? | |||
what's the meaning of that? | |||
key value? | |||
wolverian | yes. | 17:13 | |
perlover | but an array with key and value??? | ||
for %hash.kv -> $key, $value { ... } this seems to make sense to me... | |||
wolverian | you can think of an array as a hash with integer keys. | 17:14 | |
perlover | I see I see | 17:15 | |
why we need that since we already can do $foo[$index] ? | 17:16 | ||
wolverian | why do we need perl since we already have assembly? | ||
(it's more convenient.) | |||
theorbtwo | Because it's often useful to iterate over both the indeces and the values at once? | 17:17 | |
wolverian | theorbtwo, indices | ||
(sorry :) | |||
perlover | I see | ||
that's really great.. | |||
theorbtwo | How often do you find youself doing for (0..$#foo) {my $v = $foo[$_]; ... }? | ||
I do it all the time. | |||
Thanks, wolverian. | |||
perlover | me too | ||
all the time | |||
how would you do it with @foo.kv? | 17:18 | ||
for @foo.kv->$index,$value { dostth($index,$value); } ?? | |||
QtPlatypus | ?eval my @array = <<a b c d f>>; @array.kv | ||
evalbot_7832 | (0, "a", 1, "b", 2, "c", 3, "d", 4, "f") | ||
perlover pugs testing with CPAN shell is taking too long... | 17:19 | ||
theorbtwo | If you use debian testing or unstable, just apt-get install pugs. | 17:20 | |
xinming prefers compile pugs himself | 17:22 | ||
s/compile/compiling/ | |||
perlover with Mdk 10.1 | 17:23 | ||
xinming | on debian, compiling pugs isn't that hard since GHC 6.4 is in testing. | 17:24 | |
perlover: If you do a full installation of Mandriva. You might be able to compile pugs too. :-P | 17:25 | ||
perlover | really?? | ||
it comes with Mandriva package? | |||
aufrank | ?eval role A { has $.a } class B does A { ... } method C ( A $obj ) { say $obj.a } my $o = B.new( a => "hi" ); C( $o ); | 17:26 | |
evalbot_7832 | *** ... - not yet implemented at <eval> line 1, column 37-41 | ||
aufrank | ?eval role A { has $.a } class B does A {} method C ( A $obj ) { say $obj.a } my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | Error: No compatible subroutine found: "&C" | ||
aufrank | ?eval role A { has $.a } class B does A {} sub C ( A $obj ) { say $obj.a } my $o = B.new( a => "hi" ); C( $o ); | 17:27 | |
evalbot_7832 | hi bool::true | ||
rafl_ | xinming: And because there are already pugs packages available ;-) | ||
aufrank | I can use a role as a type in a signature? | ||
aufrank needs to look at Stevan's diagrams again | |||
?eval role A { has $.a } class B {} sub C ( A $obj ) { say $obj.a } my $o = B.new( a => "hi" ); C( $o ); | 17:28 | ||
evalbot_7832 | Error: No compatible subroutine found: "&a" | ||
aufrank | ?eval role A { has $.a } class B does A {} sub ( $obj ) { if $obj does A { say $obj.a }} my $o = B.new( a => "hi" ); C( $o ); | 17:30 | |
evalbot_7832 | Error: unexpected "i" expecting ";", statements or "}" reserved word | ||
aufrank | ?eval role A { has $.a } class B does A {} sub C ( $obj ) { if ($obj does A) { say $obj.a }} my $o = B.new( a => "hi" ); C( $o ); | 17:31 | |
evalbot_7832 | Error: Unknown syntactic construct: Syn "does" [Var "$obj",Var ":A"] | ||
aufrank | ?eval role A { has $.a } class B does A {} sub C ( $obj ) { if (A $obj) { say $obj.a }} my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | Error: unexpected "i" expecting ";", statements or "}" reserved word | ||
aufrank | ok, I'll stop torturing the bot | 17:32 | |
how do I condition on role-doing? | |||
something like if ( $obj does Role) { ... } | 17:33 | ||
PerlJam | aufrank: good question! | ||
If perl is smart enough you may have given the answer. | |||
theorbtwo | I think that's $obj->can(::Role) | 17:34 | |
wolverian | $obj.does(Role) | 17:35 | |
$obj ~~ Role | |||
aufrank | ?eval role A { has $.a } class B does A {} sub C ( $obj ) { if ($obj can A) { say $obj.a }} my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | Error: unexpected "i" expecting ";", statements or "}" reserved word | ||
aufrank | ?eval role A { has $.a } class B does A {} sub C ( $obj ) { if ($obj can (::A)) { say $obj.a }} my $o = B.new( a => "hi" ); C( $o ); | 17:36 | |
evalbot_7832 | Error: unexpected "i" expecting ";", statements or "}" reserved word | ||
aufrank | bah | ||
I'm doing something wrong | |||
integral | ?eval class A; "foo" | 17:38 | |
evalbot_7832 | "foo" | ||
integral | ?eval class A {} "foo" | ||
aufrank | ?eval role A { has $.a } class B does a {} sub C ( $obj.does(A) ) { say $obj.a} my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | "foo" | ||
Error: unexpected "." expecting word character, "?", "!", trait, "=", "-->", ",", ":" or ")" | |||
aufrank | wolverian: are you catching whatever my error is? I think I've tried can, does (::A), and .does(A) | 17:39 | |
nothingmuch | stevan_: i'm waiting.... | ||
stevan_ | nothingmuch is by far,.. the coolest perl hacker in the whole world | ||
stevan_ stevan | |||
wolverian | ?eval "a".does(Str) | ||
nothingmuch | =) | ||
stevan_ | bah | ||
evalbot_7832 | bool::true | ||
17:39
stevan_ is now known as stevan
|
|||
wolverian | aufrank, 'class B does A' | 17:40 | |
stevan | ?eval my $nothingmuch = bool::true; $nothingmuch ? "is cool" : "is not cool"; | ||
evalbot_7832 | Error: unexpected "?" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
stevan | bah | ||
wolverian | stevan, ?? !! | ||
stevan | ?eval my $nothingmuch = bool::true; $nothingmuch ?? "is cool" !! "is not cool"; | ||
evalbot_7832 | "is cool" | ||
wolverian | aufrank, anyway, I don't think pugs has roles yet | ||
aufrank | oh | ||
nothingmuch | = | ||
stevan | nothingmuch: even evalbot_7832 things so | ||
nothingmuch | =) | ||
aufrank | that explains part of it ;) | ||
stevan | nothingmuch: evalbot_7833 may not , but we will have to see | ||
aufrank | do people think if ( $obj does Role) {} should be an okay syntax? | 17:41 | |
xinming wonders if there is a way to overloading the ',' operator... | |||
stevan | aufrank: for what? | ||
aufrank | or is it if ( $obj can Role ) ? | ||
conditioning on role-doing | |||
nothingmuch | aufrank: if ( $obj ~~ Role ) { } | ||
wolverian | aufrank, $obj does Role adds the Role to $obj at runtime | ||
aufrank | what if I like does for readability :( | ||
nothingmuch | read out loud: if object matches Role | ||
wolverian | aufrank, you want $obj.does(Role) or ~~ | ||
aufrank | ok | ||
thanks | |||
nothingmuch | if you use ~~ a few times you'll think "wow, damn readable" =) | 17:42 | |
aufrank | is can related to $object.does ? | ||
nothingmuch | can is per method | ||
does is per role | |||
wolverian | never use .can | ||
nothingmuch | isa is per class | ||
wolverian: how come? | |||
wolverian | larry says you shouldn't. :) | ||
nothingmuch | can I have a link to that? | ||
(is it to encourage roles?) | |||
wolverian | er. | 17:43 | |
nevermind me | |||
I confused .can with .isa | |||
Limbic_Region | . o O ( $Little.Debbie does Dallas ) | ||
aufrank | is there a reason that in a signature a role works as a type constraint but in as a conditional it doesn't? | ||
wolverian | I am _way_ too tired. | ||
xinming | hmm, is there a way to overload the , operator? :-P | ||
Limbic_Region stands in a corner | |||
wolverian | aufrank, it does? | 17:44 | |
nothingmuch | aufrank: explain? | ||
stevan | wolverian: I think you also might have confused chromatic with Larry :) | ||
fglock!! | |||
fglock | hi stevan! | 17:45 | |
aufrank | ?eval role A { has $.a } class B does A {} sub C ( A $obj ) { say $obj.a } my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | hi bool::true | ||
fglock | I'm in YAPC::SaoPaulo | ||
stevan | fglock: very nice | ||
wolverian | stevan, probably :) | 17:46 | |
aufrank | ?eval role A { has $.a } class B does A {} sub C ( $obj ) { if ( A $obj) { say $obj.a} } my $o = B.new( a => "hi" ); C( $o ); | ||
evalbot_7832 | Error: unexpected "i" expecting ";", statements or "}" reserved word | ||
aufrank | maybe I'm bad at writing conditionals | ||
but it looked like sub (A $obj) {} worked like I expected, but if (A $obj) {} did not | |||
where A was the role | 17:47 | ||
nothingmuch | fsck | 17:49 | |
aufrank | bad disk, nothingmuch ? | ||
wolverian and nothingmuch, did I explain myself clearly? | 17:58 | ||
fglock | ?eval 1 == 1|2 | ||
evalbot_7832 | bool::false | ||
xinming | ?eval any(1, 2) == 1 | 18:05 | |
evalbot_7832 | bool::false | ||
Khisanth | broken junctions? | 18:06 | |
xinming | my @a = 1|2; any(*@a) == 1; | ||
?eval my @a = 1|2; any(*@a) == 1; | |||
evalbot_7832 | bool::false | ||
Khisanth | HMM | 18:07 | |
?eval say "MOOOOO" if 1|2 == 1 | 18:08 | ||
evalbot_7832 | MOOOOO bool::true | ||
xinming | ?eval my @a = (1,2); any(*@a) == 1; | 18:09 | |
evalbot_7832 | bool::false | ||
Khisanth | 1|2 == 1 seems to magically turn into (1|2==1).pick | ||
err with the evalbot | |||
since the shell gives (bool::false | bool::true) | 18:10 | ||
xinming | Khisanth: what does the sub pick do? | ||
randomly pick one? | |||
Khisanth | for actually returns a value? | 18:16 | |
ah just some weirdness with the shell | 18:17 | ||
svnbot6 | r7833 | stevan++ | Perl6::ObjectSpace | 18:26 | |
r7833 | stevan++ | * more refactoring of the Bootstrap | |||
r7833 | stevan++ | - added more tests as well | |||
r7833 | stevan++ | * added ¬ to bit | |||
r7833 | stevan++ | * added Util directory for misc. stuff | |||
r7833 | stevan++ | - put S Expression Parser in there | |||
r7833 | stevan++ | - with tests | |||
theorbtwo | Sounds nifty, stevan. | 18:27 | |
stevan | theorbtwo: nothingmuch has promised to help write an Attribute Grammer to do codegen of the s-expression version | 18:29 | |
he tells me that using AG will make it much more maintainable and flexible :) | |||
theorbtwo | I'm personally wondering how hard it'd be to write a PIR->C compiler. | 18:34 | |
stevan | probably not too hard,.. using a simple subset of C | ||
C-- maybe | |||
theorbtwo | Why a subset? | ||
stevan | well PIR is fairly limit AFAIK, so you would (i assume) transform it into fairly simple C | 18:35 | |
s/limit/limited/ | |||
theorbtwo | Right. | 18:36 | |
PerlJam | It sounds weird to me to go from PIR -> C | ||
theorbtwo | But people already have C compilers, so I'd just compile to C, and not some other similar language. | ||
PerlJam | backwards in fact. | ||
theorbtwo | Why, PerlJam? That way your C compiler can (hopefully) optimize the hell out of it. | ||
stevan | I think PerlJam is thinking of PIR as a glorified assembler (which is how I view it too) | 18:37 | |
and so it seems like it is backwards | |||
Limbic_Region | theorbtwo - IOW, PIR is not nearly a HLL | 18:38 | |
Khisanth | that would make it a decompiler :) | ||
Limbic_Region | though I am personally fine with PIR -> C for the optimizations reasons | 18:39 | |
stevan | theorbtwo: I am hoping we can use the s-exp version of the metamodel and transform that into PIR too | ||
Limbic_Region | PIR -> JITed PASM should be comprable I would hope | 18:40 | |
liz6 | L~R: that would make much more sense to me too | ||
PerlJam | Limbic_Region: Since we already have the JIT, PIR->C might be a good benchmark for how good/bad it works :) | ||
liz6 | PerlJam: good point | 18:41 | |
Limbic_Region | exactly | ||
PerlJam | If a PIR->C compiler blows away the JIT, then something is probably horribly wrong :) | 18:42 | |
Limbic_Region | well - I am not entirely sure that's true right now | 18:43 | |
in a finished product sure | |||
but there are still a lot of optimizations that haven't been made that can be made | |||
and C has decades of optimizations already | |||
it is a good place to judge where we need to get to | 18:44 | ||
theorbtwo | OTOH, it's quite possible that things with more knowladge of the problem-space can get rid of some redundancy. | ||
(Like repeated dereferences into the same vtables.) | |||
Limbic_Region | PIR -> C may seem un-natural, but that doesn't mean it isn't a worthwhile endeavor | 18:45 | |
does anyone follow the parrot benchmarks? | 18:47 | ||
Matt Diep and I put them together | |||
www.sidhe.org/~timeparrot/graphs/ | 18:48 | ||
ironically, they are housed on Dan's machine ;-) | |||
PerlJam | I haven't looked in a while. | 18:49 | |
PerlJam looks | |||
I take it the last two ticks on the X axis are mashed together because not enough time has passed yet? | 18:50 | ||
theorbtwo | My thinking with the PIR->C thing is more a learning-exercise then anything else, BTW. | ||
PerlJam | theorbtwo: sure, but it'll find other uses too if some one does it. | 18:51 | |
Limbic_Region: Do you think you could get a copy of the benchmarks onto feather? | |||
Limbic_Region | PerlJam - yeah, Matt handled the graph piece. I handled collecting the data and giving it to the database | 18:52 | |
PerlJam - the parrot benchmarks or do the same thing for Pugs or what? | |||
PerlJam | L~R: both! :) | ||
L~R: but I meant the former. | |||
The latter would be nice too though. | |||
Limbic_Region | I would have to talk to Matt as I don't remember the password for the acct | ||
or Dan | 18:53 | ||
Limbic_Region will send an email | |||
PerlJam | Are you not on irc.perl.org now? | ||
Limbic_Region | no, using Feather to get to IRC | ||
PerlJam | matt is active on #parrot this minute | ||
Limbic_Region | PerlJam - ask him to join here or just approach him yourself | ||
or I will send an email | |||
it wasn't a whole lot of code btw | 18:54 | ||
theorbtwo | Hm, the overall trend on those benchmarks is rather disturbing... | ||
...though I do notice that they seem to have gotten faster again recently. | |||
Limbic_Region | PerlJam? | 18:55 | |
PerlJam | yes? | ||
(I can only multitask so fast :) | 18:56 | ||
(talking with matt now) | |||
Limbic_Region | k | 18:57 | |
I just found some old benchmark comparisons of perl5, perl5th, C, etc against Parrot | |||
PerlJam - I asked matt to send you a link to the files | 19:07 | ||
PerlJam | yeah, I've got them. | ||
Limbic_Region | ok - let me know if you need help deciphering any of the stuff I did | 19:08 | |
PerlJam | I'll look at re-doing the graphs on feather and then doing the same sorts of graphing for pugs | ||
Limbic_Region | which was pretty much parrotbench.pl, running and collecting the data, and handing it off to the DB | ||
matt read the db and generated the graphs | |||
s/graphs/graphs and html and whatnot/ | |||
svnbot6 | r7834 | autrijus++ | * Qualify "Precompiled * does not exist" messages for JS | 19:41 | |
r7834 | autrijus++ | so the user knows it's talking about JS. | |||
r7835 | autrijus++ | * fix the 'make ghci' target so it respects the new dist/build/ layout. | 19:47 | ||
r7836 | autrijus++ | * INSTALL - Note that we'll require Parrot 0.3.1 for next release. | |||
r7837 | autrijus++ | * Now that PGE::Hs is part of parrot, remove the | |||
r7837 | autrijus++ | inlining fix from src/pge/. | |||
r7837 | autrijus++ | (also need to hook into the new PGE S/R parser.) | |||
Limbic_Region | autrijus - you about? | 19:49 | |
liz6 | I think autri is in hyperfocus mode... | 19:50 | |
Limbic_Region | ah, nevermind then | 19:51 | |
autrijus | yes I am :) | ||
(fixing prelude generation) | |||
geoffb | Rule #1: DO NOT MESS WITH HYPERFOCUS MODE | ||
autrijus | the precomp_prelude:false was broken. | ||
and then will finish the obj-serialization code during compilation | |||
that will finally get class Foo {...} outputted into correct PIL. | |||
Limbic_Region | well - I have been trying to find out who, if anyone, knows why portions of Makefile.PL are so unportable | ||
and why the non-portability hasn't been raised as an issue | |||
autrijus | you can use "svk blame" | ||
liz6 | Schwern? | 19:52 | |
autrijus | I will blame rafl in general, but that may not be fair. | ||
geoffb | And I might add, that's not just for autrijus -- that's decades of research right there. (See, and now you don't have to read 4 decades of human efficiency papers :-) ) | ||
Limbic_Region | *shrug* - someone asked for help in making the PUGS_EMBED stuff more portable and in doing so I kept finding more and more stuff that was b0rk | ||
I didn't want to make extensive changes since I don't have a system to even test if they worked | 19:53 | ||
autrijus | is anyone here who found precomp=true annoying? :) | ||
I've got precomp=false working | |||
meaning it won't take any time/memory to compile Pugs.Run | |||
but startup has a 3sec penalty here. | |||
so probably not for testers. | 19:54 | ||
Khisanth | you can blame a fish named Roger instead :) | ||
autrijus | but very good for development :) | ||
Limbic_Region | anyone interested can look at builds 7761-7763 for examples of the portability issues | ||
geoffb | autrijus++ , thanks for giving us both options | 19:55 | |
(er, again) | |||
autrijus | Limbic_Region: sorry, neck deep in OO here | 19:57 | |
maybe someone else :) | |||
Limbic_Region | autrijus - no worries | ||
svnbot6 | r7838 | autrijus++ | * Previously, this setting in config.yml was broken: | ||
r7838 | autrijus++ | precompile_prelude: false | |||
r7838 | autrijus++ | reason is that the "null" Prelude was not evaluating | |||
r7838 | autrijus++ | Prelude.pm as it should; a pugs executable built this | |||
r7838 | autrijus++ | way could not access the Prelude (which means no regex | |||
r7838 | autrijus++ | and rules support). | |||
r7838 | autrijus++ | Setting precompile_prelude to false will keep Pugs.Run | |||
r7838 | autrijus++ | compilation from gobbling up huge amount of memory. | |||
r7838 | autrijus++ | On the other hand, this causes a 3sec penalty on startup | |||
r7838 | autrijus++ | on my laptop, so it's maybe not for testers. I wonder | |||
r7838 | autrijus++ | if we should display this option more prominiently though. | |||
Limbic_Region | I have thrown it out there 3 or 4 times already - no takers | 19:58 | |
autrijus | Limbic_Region: by "portability" you mean "win32 isn't happy"? | ||
Limbic_Region | autrijus - no | ||
I mean that differences in filesystems were not considered | |||
presumably Parrot and Pugs are supported on more than just Win32 and *nix | 19:59 | ||
Mac for instance | |||
autrijus | oh, you mean File::Spec | ||
Mac is *nix | |||
Limbic_Region | Mac can be *nix | ||
autrijus | and Win32 has emu for "file/sep" | ||
so both case no worries | |||
we can't build on OS9 no matter what. | |||
that left VMS | |||
which doesn't have haskell | |||
Limbic_Region | OS2? | 20:00 | |
autrijus | so I'm not too worried :) | ||
Limbic_Region | :P | ||
stevan | Limbic_Region: I doubt many people use OS 9 still (at least those in our audience) | ||
autrijus | OS2 also has emu for "f/s" | ||
hey stevan. | |||
stevan | hey autrijus :) | ||
autrijus | stevan: general strategy discussion with you a bit, then I'm going offline to hack :) | ||
Limbic_Region | all I am saying is that paths were hard coded to use / as file separators | ||
autrijus | you have 10mins? | ||
stevan | autrijus: sure | ||
autrijus | Limbic_Region: ack, but in practice I think it's okay. | ||
I'm not against File::Spec | 20:01 | ||
Limbic_Region | anyone have an opinion on a good book for code generation - On Lisp? | ||
autrijus | but this is build system, not svk :) | ||
clkao | hai | ||
stevan | Limbic_Region: generating LISP or any code? | ||
autrijus | stevan: okay. consider "sub foo { ... } BEGIN { foo() }" | ||
in py and rb this is comp time error | |||
geoffb | Limbic_Region, as an odd bit of trivia -- internally, the MS API's have supported both \ and / for path sep, back into the DOS days. It's the command shell that's been broken forever. | ||
stevan | yuk,.. ok | ||
aufrank | stevan-- seems like chromatic _isn't_ thinking roles can be implicitly done ;) | ||
autrijus | as they desugar to := not ::= | ||
Limbic_Region | stevan - any code likely (questioning by proxy) | 20:02 | |
autrijus | but p5 desugar to ::=, and I think p6 is same | ||
stevan | Limbic_Region: sorry,.. no idea | ||
autrijus | so class closure is fully built, just not executed, in comptime | ||
Limbic_Region | diotalevi asked and I figured #perl6 was better place to ask then the Monastery CB | ||
autrijus | because we know that "class Foo {...}" desugars same way as "sub foo {...}" | ||
same for roles. | 20:03 | ||
so my plan is to serialize comptime Opaque into PIL stream | |||
and thaw them back at INIT time | |||
this is backend agnostic | |||
so each runtime is to handle it | |||
and perform cls/role injection | |||
as an example | 20:04 | ||
the p5 codegen upon seeing a program with "class Foo { ... }" | |||
will gen p5 code that contains BEGIN blocks that hooks into the MM and set up the class before any userland code is run | 20:05 | ||
same for js -- populating objspace is to be done before INIT | |||
so in a way we carry the result of BEGIN over to runtime | |||
before it is run, as the initial objsp. | |||
makes sense? | |||
(this is markedly different from rb/py) | 20:06 | ||
stevan is thinking | |||
so class Foo {} is really BEGIN { set_up_objspace(); } INIT { class Foo {} } ? | 20:07 | ||
autrijus | it creates the ::Foo object and binds it inside the compiler's objspace | 20:08 | |
stevan | I think the only thing we need to carry from BEGIN to runtime would be ::* (the root namespace) and the top level environment | ||
autrijus: yes, i think that makes sense | |||
autrijus | and the codegen need to thaw that before running user code | ||
stevan | why "thaw" it? | 20:09 | |
autrijus | because compiler and runtime are conceptually separate | ||
there is a PIL layer between them | |||
stevan | oh | ||
autrijus | also, I don't think ::* works | ||
because you have lexical classes | |||
stevan | true | ||
autrijus | which are also comptime objects that needs to survive | ||
(this is new ground btw. perlcc doesn't handle it well and YARV/yc doesn't handle BEGIN at all) | |||
stevan | I was sort of thinking that class Foo {} would turn into ::Foo = Class.new(name => 'Foo'); ::Foo.superclasses(Object),.. etc | 20:10 | |
autrijus | and afics py doesn't even have BEGIN | 20:11 | |
stevan | if you can translate that to PIL and then the INIT phase could just "run" that? | ||
autrijus | but then composition failure will be runtime | ||
and we don't want that | |||
(I think.) | |||
stevan | true | ||
autrijus | I think all composition is to take place in compiler | 20:12 | |
stevan | well its in that grey area of INIT time | ||
autrijus | and runtime received composed obj | ||
er, consider | |||
pugscc -e "...some code that has class composition bug..." -o foo.exe | |||
we'd like it to die there | |||
not | |||
./foo.exe | |||
there | |||
stevan | true | 20:13 | |
hmm | |||
autrijus | and compile time already need to eval any p6 code anyway | ||
stevan | so maybe compile time performs a dry run? | ||
is that what you are thinking? | |||
autrijus | I'm thinking compile time does everything. | ||
and the serialized opaque class needs to be recognized by runtime | 20:14 | ||
opaque class object that is | |||
stevan | ok, that should be possible | ||
autrijus | note this is not at all different form | ||
my $x ::= BEGIN { SomeClass.new } | |||
in which case the obj has to survive | 20:15 | ||
okay, so I'll work out a basic serialization | |||
and see if I can hook into p5. | |||
stevan | now, will classes and objects and the MM be runtime accessible? | ||
autrijus | yes | ||
just like you can manip $x | |||
during runtime | |||
so there's a MM during comptime | 20:16 | ||
stevan | ok,.. this is making more sense now | ||
autrijus | and a MM during runtime | ||
liz6 | BEGIN doesn't return anything in p5 | ||
autrijus | the comptime one can only be manip using explicit BEGIN and modules (which is also a form of BEGIN) | ||
liz6: yeah, but they are specced to do so in p6 -- and it's a fine difference... | |||
my $x; BEGIN { $x = SomeClass->new } | |||
is the same with p5 | |||
liz6 | true | ||
autrijus | so the comp time checking is just with static info | ||
then at runtime you can totally demolish the MM | 20:17 | ||
stevan is thinking back to the PyPy FlowObjectSpace | |||
autrijus | and take responsibility of the errors that causes | ||
can't blame compiler for that | |||
stevan | is that similar to what we need to compiler to do? | ||
autrijus | yes | ||
stevan | ok | ||
autrijus | but note that if you fiddle MM in comptime | ||
stevan | you deserve what you get? | ||
autrijus | the question is whether comp need to freeze ::Object as an opaque. | 20:18 | |
think about it seriously a bit :) | |||
if at comptime, you extend Object, then at runtime that method should probably be still valid? | |||
liz6 | feels like that to me... | ||
stevan | well if the comp time runs the MM bootstrap,. the runtime shouldnt need to do the same | ||
autrijus | right! | ||
stevan | since all the MM objects will just "be" | 20:19 | |
autrijus | that's a scary but somehow reassuring thought :) | ||
yup | |||
stevan | I like that too | ||
autrijus | then we can move the work you do to p6space | ||
stevan | bootstrap should only need to be done once | ||
autrijus | and just do it once there | ||
and the runtimes just provide the kernelobjs, intrinsics, etc for the thawed MM objs to bind to | 20:20 | ||
stevan | but wait,.. then we are compiling the MM everytime | ||
autrijus | they can be part of prelude, so to speak | ||
so precomp | |||
stevan | ok | ||
yeah | |||
autrijus | so do you think we should attempt to do that the Right Way once? | ||
i.e. in p6 as part of Prelude/MM | |||
stevan | you mean write the MM in p6? | ||
autrijus | I can provide the Core stuff from hs space | ||
so it's just porting MetaModel/Bootstrap.pm to p6 mostly | |||
stevan | hmm | 20:21 | |
autrijus | using just the single sendmsg prim | ||
which would be builtin | |||
anyway, I think I'll first get the compiler serialization part done | |||
stevan has pretty much eliminated all control structures from Bootstrap.pm now | |||
autrijus | for objs | ||
geoffb votes for the autrijus idea, based on less work to support a new backend (don't even have to port the MM code) | |||
autrijus | geoffb: yup | 20:22 | |
and then I'll port Core::* shim over the current runcore | |||
stevan | yeah I like that part too | ||
autrijus | (no need for new runcore here) | ||
and then it's just writing src/perl6/Prelude/MM.pm | |||
based on Bootstrap.pm | |||
geoffb | I love this . . . it's getting so I might actually be able to write a backend myself. That makes me happy. :-) | ||
autrijus | geoffb: B::Generate? :) | ||
geoffb | :-) | ||
stevan | autrijus: yes, this is a sane plan, and I think this is the correct course | 20:23 | |
autrijus | stevan: okay, then my two days of zero-commit-pure-thinking isn't in vain :) | ||
stevan | I am going to work out the kinks in the current p5 version first though | ||
autrijus | sure, I'll ping you when I get the sendmsg prim and runtime opaque hook there | ||
stevan | autrijus: as I always say "back of the head thinking time is still billable hours" | 20:24 | |
autrijus: ok, so we can toss out the s-expression intermediate language idea right? | |||
autrijus: nothingmuch was going to write an Attribute Grammer to translate the s-exp version of the metamodel | 20:26 | ||
stevan was kind of looking forward to writing this again in psuedo-scheme | |||
geoffb | Just because it's not going to be used now, doesn't make it a worthless exercise . . . . | 20:27 | |
autrijus | I think it is still interesting, myself :) | ||
stevan | geoffb: I am all about writing silly stuff that will never be used :) | ||
autrijus | because it will let us reason about the MM in a more rigorous way | ||
geoffb | stevan, heh | ||
stevan | autrijus: true | ||
ok,.. I will let nothingmuch decide if he wants to continue (he is backlogging as we type I think) | 20:28 | ||
autrijus | also, pmichaud mentioned he'd like to write a parse tree evaluator for perl6 | ||
on top of parrot/pge | |||
stevan | yeah I saw that | ||
autrijus | so we'll maybe finally have independent implementations | ||
and common MM boot code is going to be useful to him :) | 20:29 | ||
stevan | ok | ||
autrijus | (as he can ->PIR that) | ||
stevan | he can write an AG to ->PIR it too | ||
since Allison has the L::AG in PIR now | |||
autrijus | I thought he was not the one into AG, but I'm not sure :) | ||
stevan | i think luke, allison and Larry are the AG fans | 20:30 | |
autrijus | okay, I'm off to work. wish me luck :) | ||
stevan | autrijus: sounds good,.. | ||
autrijus++ # to bad we can't get paid to do this shit :) | |||
(and by that I mean, not have to keep day jobs) | |||
autrijus | liz6++ # hosting for my stay, food, commuting, et al | 20:31 | |
geoffb | .oO( Perl 6, Inc. ) |
||
autrijus | I'm not keeping day jobs :) | ||
stevan | yes liz6++ | ||
geoffb | Sortof like JBoss, Inc. | ||
autrijus waves and goes back to mad haxx0ring | |||
stevan has to keep the day job, otherwise my wife would kill me :) | |||
geoffb | cya, autrijus | ||
aufrank | bye autrijus | ||
stevan goes to commit the latest bunch of stuff | 20:32 | ||
autrijus | I'll wait for that before I disconnect :) | ||
nothingmuch | where do i fit in, hypothetically? | ||
stevan | oh autrijus, i made the c3 linearization into a core type | 20:33 | |
C3->new($self)->linearize | |||
autrijus | liz6: btw, the books shipped _just now_, so I can't possibly have it -- make it my presents then :) | ||
stevan: and the reason not to do it as a kernel method is... | 20:34 | ||
stevan | autrijus: implementation detail,.. it can be either one | ||
autrijus | k, sure | ||
stevan | as long as I dont have to re-write it without control structures :) | ||
nothingmuch | ? | ||
stevan | and pure message sends | ||
autrijus | just commit whatever you have so I can go offline :) | ||
nothingmuch | autrijus: how do I apply an svn patch using svk, and keeping all the propedits, etc? | 20:35 | |
autrijus | nothingmuch: you can write stuff to extract sexp callgraph from Bootstrap.pm, and then transform that callgraph into p6 :) | ||
nothingmuch | uh | ||
autrijus | or to haskell, or to pir, hmm. | ||
nothingmuch | hmm | ||
autrijus | nothingmuch: I don't know of a way. ask clkao | ||
nothingmuch | asked on #svk, no asnwer | 20:36 | |
autrijus | prolly impossible then | ||
nothingmuch is torn between redoing Catalyst auth and this | |||
autrijus | you can also hack svk to accept svn patch format... | ||
but anyway, which ever funnest to you :) | |||
nothingmuch | what about svk patches? | ||
stevan is fighting svk at the moment,.. should be commited soon | |||
autrijus | they are Storable. | 20:37 | |
or rather FreezeThaw | |||
nothingmuch | okay | ||
svk patch --cat foo # somewhat like svn patch output... what do I do with this? | |||
autrijus | you can hand it to lwall's patch, or send it over to another svk person to do svk patch apply. | ||
nothingmuch | oh | 20:38 | |
apply - < ... | |||
--apply foo.patch didn't work, it complained about ~/.svk/patches/foo.patch.patch, so I thought I needed to first import | |||
thanks | |||
okay | 20:39 | ||
i think i'm going to do this: | |||
play around with catalyst auth for a bit more | |||
because we're making beautiful progress | |||
and then i'll write the AG to produce an easier to use AST into p6 | |||
stevan | anyone know how to cleanup a bunch of stalled svk locks? | ||
nothingmuch | and then convert sexp tree to that AST | ||
svk cleanup | |||
? | |||
stevan | doenst seem to eb working | 20:40 | |
aufrank | try detaching? | 20:42 | |
autrijus | svk cleanup -a | 20:43 | |
nothingmuch | stevan, autrijus: does my plan make you happy? | ||
stevan | nothingmuch: yes | ||
nothingmuch | okay =) | 20:44 | |
stevan | btw - did I mention you were the coolest perl hacker ever? | ||
nothingmuch | note that I am pretty dumb this weekend | ||
my skin is misbehaving again | |||
and antihistamines are not good in combination with the mind | |||
plus i feel spent | |||
so if i don't finish today, don't be surprised | |||
i'll give it my all tomorrow | |||
stevan | it worked!!! | ||
autrijus | woot | ||
autrijus pulleth | 20:45 | ||
stevan | but wait one second,.. i need to add the new files too | ||
nothingmuch | Morricone RMX++ | ||
stevan | autrijus: ok,.. pull now (r7840) | 20:46 | |
oops | 20:47 | ||
LOL, I put the new file back in the wrong spot :) | |||
ok,.. all fixed now | 20:49 | ||
stevan goes and refills his coffee | |||
svnbot6 | r7839 | stevan++ | Perl6::ObjectSpace - damn svk is driving me nuts | ||
r7840 | stevan++ | Perl6::ObjectSpace - adding the C3 type and some more tests | |||
r7841 | stevan++ | Perl6::ObjectSpace : me-- | |||
clkao | what happened to svk? | ||
autrijus | stevan: finally fine now? I can go offline? :) | 20:51 | |
stevan | yes | 20:52 | |
clkao: nothing,.. problem between svk and chair | |||
autrijus waves... & | 20:53 | ||
stevan waves back | |||
geoffb | AAAAAUUUUGGGGHHH! Emacs on Cygwin X is pissing me off! | 20:55 | |
(Having to use Windows for $contract)-- | |||
stevan | geoffb: just use notepad ;) | 20:58 | |
geoffb | stevan, I'm running the Emacs on a remote box, just using Cygwin X for local display . . . but apparently Emacs doesn't like this much, as it keeps crashing with X protocol errors. | ||
aufrank | geoffb: I've had decent luck with the fullbin build at mirrors.usc.edu/pub/gnu/emacs/windows/ | 20:59 | |
if you can run it locally, that is | |||
geoffb | aufrank, thanks for the link. Can't use it in this instance (heaven forbid I have SSH VFS access . . . ), but may get used another time | 21:01 | |
aufrank | geoffb: I think you can get that same build on any of the gnu mirrors | 21:02 | |
geoffb | aufrank, nod, thx | ||
liz6 wonders whether autri is still awake... | 21:11 | ||
geoffb | liz6, no worries, he commits faster asleep anyway | 21:12 | |
stevan | he really does sleep with that laptop IIRC,.. | ||
SamB | geoffb: emacs doesn't seem to much like running locally under Cygwin's X either... | 21:23 | |
geoffb | *sigh* | ||
SamB | at least not in the mode where each toplevel X window gets its own toplevel win32 window... | 21:24 | |
it runs fine for me, but it keeps popping up tooltips when it is minimized... | |||
nothingmuch | ?eval say "zsh" xx 10000000000 | 21:25 | |
evalbot_7841 | pugs: out of memory (requested 1048576 bytes) | ||
nothingmuch | ?eval say "zsh" xx 1000 | ||
evalbot_7841 | zshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzshzs | ||
sri_ | :) | ||
nothingmuch | ?eval say "zsh " xx 1000 | 21:26 | |
evalbot_7841 | zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh zsh | ||
nothingmuch | there, that's more like it | ||
now back to #catalyst | |||
sri_ | every channel should have an eval-bot | 21:27 | |
SamB | ?eval say "zsh " xx 1000000 | ||
evalbot_7841 | pugs: out of memory (requested 1048576 bytes) | ||
SamB | sri_: well, not every channel has a suitable language of choice | 21:28 | |
and then there are the security issues... | |||
beppu | zsh | 21:29 | |
the shell of the gods | |||
aufrank starts weekend | |||
see y'all around | |||
21:39
xern_ is now known as xern
|
|||
dduncan | openfoundry appears to be down again | 21:53 | |
seen autrijus | 21:54 | ||
jabbot | dduncan: autrijus was seen 1 hours 2 minutes 54 seconds ago | ||
geoffb | dduncan, aut* is offline so he can hyperfocus on code | ||
dduncan | okay | ||
geoffb | hi, btw | ||
dduncan | the IRC person list said he was online, but maybe you mean "he's trying to ignore" | 21:55 | |
geoffb | dduncan, he leaves his IRC connection up on a screen on a server somewhere, and just detaches from the screen session when he logs off | ||
dduncan | I C | 21:56 | |
geoffb | heh -- /me just came across a server named "SIN" | ||
dduncan | well, I will be switching to svk sooner rather than later for the offline commits ... but the last attempt yielded a bunch of issues so I deferred it | 21:57 | |
geoffb | don't defer any longer -- just make your woe clkao's problem. :-) | ||
dduncan | my main issue seems related to dependencies ... my system has those necessary for the svn client, but may be missing some for the server | 21:58 | |
and svk needs the server | |||
geoffb | dduncan, distro? | ||
dduncan | Mac OS X 10.3.9 | 21:59 | |
it may be simple to fix ... | |||
geoffb | Hmmm, I thought svk was packaged for Mac OS X . . . hmmm, 10.4 only? | ||
#svk should be able to answer that | |||
dduncan | but I'm the kind of person that tends to abort actions if they don't go as easily as I pre-anticipated | ||
in this case, I expected that there wouldn't be any dependency issues | 22:00 | ||
now I know that there are, I'll attack it again with the expectation of having to deal with those | |||
the svk package that includes binary svn server does expect 10.4 | 22:01 | ||
geoffb | nodnod | ||
bleah | |||
autrijus | ...was surprisingly easy. | ||
geoffb | 10.4: yet another thing to spend my hard earned cache on | ||
sigh | 22:02 | ||
autrijus commiteth :) | |||
dduncan | I decided it would be easier to install svn and svk-only separately | ||
geoffb | autrijus, rock on! | ||
autrijus | gawd I miss coding. | ||
dduncan | so that's what I will do this time | ||
geoffb | autrijus, so do it more. I promise we won't mind. ;-) | ||
autrijus | it doesn't help that foundry is down tho :) | ||
dduncan | autrijus, is openfoundry working for you? | ||
no | |||
autrijus | dduncan: no, it's another of those weekend repair I guess | ||
which would mean 36hr again. | 22:03 | ||
or 24 if we are lucky. | |||
dduncan | I'm going to try and install svk in the mean time | ||
geoffb | What in the world are they doing on a regular basis that involves taking a DC down for 36 hours? | ||
autrijus | geoffb: key is they are academy research facility without a DC | ||
geoffb | ah | ||
autrijus | so it's all normal research computer facility | ||
like university, even less | |||
geoffb | And no DC-experienced admin staff to lead them along the no-downtime path, I suppose . . . | 22:04 | |
autrijus | indeed -- they had heat dissipations problems a while ago -- maybe fixed now, but to them "downtime during weekends" is something that's probably acceptable | ||
dduncan back in a bit, will backlog | |||
autrijus | which is of course very annoying :/ | ||
geoffb | nodnod | 22:05 | |
autrijus | oh well. I'll commit to svn.perl.org | ||
geoffb | especially since that's when many day-job-having people want to do their OSS hacking | ||
autrijus | to their credit it's been a while (a couple months?) since they do that | 22:06 | |
anyway... less distraction for me then | |||
autrijus hacks on :) | |||
btw, I'll copy PIL1.hs to PIL2.hs | 22:09 | ||
and then start adding the long-delayed renovations to them | |||
(compile time obj serialization, my() lifting, unification of PSub and PCode forms, sand (chip-esque) pad handling) | 22:10 | ||
this is so I won't break the JS and P5 backends | |||
geoffb | Hmmm, Perl 6 style question: If you have an API with a pile of functions, each of which has an identical optional param (or two), which API users will almost always want to leave as the default value, *BUT* it's important that the multiple clients not tromp on each other, how do you write the API? | ||
autrijus | and I'll do Hs and PIR from there | ||
once it's proven to work, JS and P5 can switch over. | 22:11 | ||
geoffb: english doesn't work. try code :) | |||
geoffb | I mean, just coding the same optional params and defaults into each function is a MASSIVE D.R.Y. violation . . . | ||
Hmmm, I'm wondering out loud how the code should look, but let me try: | |||
Let's say you have subs as follows: sub foo(+$a = 1, +$b = 2, ...others...) {} sub bar (+$a = 1, +$b = 2, ...others...) {} and so on, how best to design that? | 22:13 | ||
All functions take the same two optional params, with the same two optional defaults. | |||
autrijus | mm who controls svnbot6? | ||
geoffb | So writing as I did would be bad style, essentially editor inheritance. | ||
Making a singleton with state sucks, because then it's not safe with multiple users. | 22:14 | ||
autrijus | openfoundry down, fallback: svn.perl.org/perl6/pugs/trunk/ | -Ofun: xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 | 22:14 | |
geoffb | Making an OO API that requires a new object to be created for each new user sucks, because then handing the object off to other users to use asynchronously is inconvenient. | 22:15 | |
geoffb masticates thoughtfully | |||
autrijus | +$a means what now? | ||
iblech | xinming: pong | ||
geoffb | Maybe the answer is just to macroize the API source | ||
autrijus | (named is now :$a) | ||
iblech | Khisanth: pong | ||
autrijus | iblech: hey! | 22:16 | |
geoffb | autrijus, sorry, I'm out of sync with P6L | ||
:$a then | |||
autrijus | iblech: do you control svnbot6? | ||
iblech | autrijus: I do, will restart svnbot | ||
autrijus | cool, thanks | ||
iblech: have you seen my discussion with stevan re compiler side booting? | |||
iblech | autrijus: not yet, currently backlogging | ||
autrijus | geoffb: how does foo and bar relate? | 22:17 | |
svnbot6 | r6467 | autrijus++ | Perl6::ObjectSpace - damn svk is driving me nuts | ||
r6468 | autrijus++ | Perl6::ObjectSpace - adding the C3 type and some more tests | |||
r6469 | autrijus++ | Perl6::ObjectSpace : me-- | |||
geoffb | For concreteness, this problem occured to me with some Perl 5 code in which I found myself writing a number of database-using components to take an optional $dbh argument, which almost always defaults to the current global cached database handle, but can be overrided for testing and other special uses. | 22:18 | |
And I wondered how I would do that cleanly, given the full power of P6 before me. | |||
autrijus, so I guess in this case "foo and bar are both functions that do something with/to the database" | 22:19 | ||
Khisanth | iblech: hrm? | 22:20 | |
autrijus | geoffb: I would just use temp $dbh :) | ||
<- of the "you are using globals, all hopes are off" school | |||
iblech | Khisanth: IIRC you have pinged me; if not, sorry | ||
Khisanth | you have highling on "blech"? :) | ||
autrijus | iblech: I could use some sanity checking for the booting if you have 10mins | 22:21 | |
iblech | autrijus: Sure :) | ||
geoffb | autrijus, I was intentially vague in the beginning, because I didn't want to bias in favor of globals. :-) | ||
iblech | Khisanth: No ;) I must have misread something | ||
Khisanth | heh | ||
autrijus | geoffb: but this is a case of implicit parameters | 22:22 | |
geoffb | autrijus, I suppose so. | ||
autrijus | which is traditionally solved with shared vars (like my$dbh in parent scope) | ||
and temporization | |||
it's the same in Haskell -- you can use implicit vars that way, but somehow people all flock to Reader monads when there are more than one around | 22:23 | ||
svnbot6 | r6470 | autrijus++ | * Compile-time objects now survives "./pugs -CPugs" compilation. | ||
r6470 | autrijus++ | This means the line below works now: | |||
r6470 | autrijus++ | pugscc -e 'class F {}; my $x ::= F.new; say $x' | |||
r6470 | autrijus++ | Previously, the ::= would prevent compilation because we | |||
r6470 | autrijus++ | did not have a serialization protocol for VObject types. | |||
r6470 | autrijus++ | (This work is going to be carried over to PIL.) | |||
iblech | autrijus: Serializing classes to PIL etc. is sane, I think | ||
svnbot6 | r6471 | autrijus++ | * pugscc: chase the s/MainCC.mainCC/Main.main/ change | ||
r6471 | autrijus++ | as the now-cabalized Pugs package no longer exports "main". | |||
geoffb | Hmmm, yeah, I suppose so. I'm so used to not using "local" in P5 for anything but $/ , that I forget that dynamically scoped localization is even possible sometimes. :-) | ||
autrijus | geoffb: p6 lets you temp lexicals, so they no longer comflict | 22:24 | |
geoffb | Perl6++ # Ah, just so damned nice | ||
autrijus | but in this case, maybe you want to export that lexical across packages, essentially making it a package our() | 22:25 | |
or you may not, since it's just a private cache. either way temp() works | |||
geoffb hates answering the phone in the days before an election -- likely as not to get phone spam from a PAC | |||
autrijus | iblech: in that case, the opaque data for ::Class and ::Object would be exported by the compiler | 22:26 | |
nothingmuch | seen mugwump? | 22:27 | |
jabbot | nothingmuch: mugwump was seen 1 days 20 hours 51 minutes 27 seconds ago | ||
iblech | autrijus: yep | ||
autrijus | so the runtime-supported objspace remains decided non-MM | 22:28 | |
svnbot6 | r6472 | autrijus++ | * Adds support for "./pugs -BPugs -e ...", which just takes | ||
r6472 | autrijus++ | -CPugs output and feed to the "runghc" executable in PATH. | |||
autrijus | (but is still uniform across backends -- I mean the prims and intrinsics) | ||
then they just have to implement the load protocol to populate the objspace with the compile time obj data | |||
and _then_ enters main | 22:29 | ||
the good thing about it is that each closure, including their OUTER relationship etc, would be part of the serialized protocol | |||
eg, a Code obj may just have a "has $OUTER" pointer to outer. | |||
($OUTER, not $.OUTER, as it's private) | |||
iblech | nodnod | 22:30 | |
autrijus | then the static extent problem of closures is automagically fixed | ||
okay, thanks for the sanity check -- anything else you want from PIL? | |||
iblech | no, I think this strategy will solve all of our problems :) | 22:31 | |
(And cp PIL1.hs PIL2.hs is a very good idea, too) | 22:32 | ||
autrijus | okay. sorry for the long wait :) | ||
I'll preserve names in PIL1.hs as much as possible | |||
to minimize transition costs | |||
iblech | np :) /me anticipates the weekend :) | 22:33 | |
autrijus | :) offline haxx0r & | ||
iblech | sleep... FYI, I'll probably be able to hack on Sun and Wed-Sat. | 22:36 | |
Night all! :) | |||
dduncan | fyi, my current thoughts are that it may be simpler to actually implement a simple database in perl 6 than try to connect to one externally, such as MySQL, so I may be "porting" the likes of Memory or CSV first | 22:37 | |
autrijus | that sounds good | 22:38 | |
geoffb swears at Oracle | 22:40 | ||
geoffb is having a bad proprietary software day | |||
Of course, all days that I have to deal with them are bad proprietary software days . . . . | 22:41 | ||
svnbot6 | r6473 | autrijus++ | * Repo copy PIL1 to PIL2 for the long-much-overdue PIL2 | 22:46 | |
r6473 | autrijus++ | refactoring. The goals are: | |||
r6473 | autrijus++ | - Compile time object serialization | |||
r6473 | autrijus++ | - Lexical hoisting | |||
r6473 | autrijus++ | - Static creation of Code objects with scope (no PSub forms) | |||
r6473 | autrijus++ | - Full Cxt information | |||
r6473 | autrijus++ | - PIL2 is *after* type erasure -- *no* static type annotation | |||
r6473 | autrijus++ | should be left after that -- it's somewhere between F<: and ANF, | |||
r6473 | autrijus++ | so to speak. | |||
r6474 | autrijus++ | * Add DrIFT-generated source of PIL2.hs. | |||
autrijus | in p6, aside from "labelable", what distinguishes a statement from an expression? | 22:50 | |
(or, same question, but for p5) | |||
p5 uses stmt number for lexical scoping, but that no longer applies | |||
maybe the Stmt form can go away. | 22:51 | ||
mm, wait, it's also used for hints. | |||
eg "use strict" applies to a set of stmts | |||
you can't say "f() * g()" but with the g() part being strict | 22:52 | ||
autrijus ponders some more | 22:53 | ||
geoffb | autrijus, um . . . why does that matter? The same care you take not to put a label on a subexpression applies to not putting a hint there, yes? | 22:55 | |
theorbtwo | autrijus: Just because there's no syntax for f() * g() with g being strict doesn't neccessarly neccessitate that the lower layers can't express it. | 22:56 | |
geoffb | and what theorbtwo said, also | 22:57 | |
theorbtwo | In p5, statements might not participate in the "function returns value of the last statement" rule. (Last I heard, p5p was debating it.) | 22:58 | |
geoffb | huh? | 22:59 | |
theorbtwo | That was more or less what I gleaned, too, geoffb. | ||
geoffb | That statement (NPI) didn't make sense to me | ||
heh | |||
theorbtwo | What does sub {'foo'; if (shift) {0} else {1}} return? | 23:00 | |
clkao | autrijus: svk is driving you nuts as well? how so? | ||
geoffb | clkao, it looked like a copy of the commit messages from stevan | 23:01 | |
theorbtwo | Apparently, a strict reading of the new language in the perl 5 documentation says that it returns 'foo';. | ||
...but this whole bit is probably best ignored. | |||
svnbot6 | r6475 | autrijus++ | * Repo copy Pugs.CodeGen.PIL to Pugs.CodeGen.PIL2 | ||
r6475 | autrijus++ | * Also rename CodeGen.PIL to CodeGen.PIL1 | |||
geoffb | theorbtwo, why did it get changed in the docs? | ||
theorbtwo | I'm not real clear on that. | 23:02 | |
I should just dig up the thread. | |||
geoffb | :-) | ||
autrijus | clkao: no, relayed commit | ||
?eval sub {'foo'; if 0 {0} else {1}}.() | 23:03 | ||
evalbot_7841 | 1 | ||
autrijus | same in p5 | ||
theorbtwo: so.. :) | 23:04 | ||
theorbtwo | groups.google.com/group/perl.perl5....79ea98d94, search for "sub return values" is a place to start on the p5p thing. | ||
I mostly agree with Yves that the whole thing is a debacle. | |||
autrijus: So ignore the differece between statements and expressions, if any, if it makes things easier on you. | |||
autrijus | geoffb: I'm merely wondering if there's something to gain if we restrict that labels and hints can only be placed on stmt in PIL | 23:05 | |
I can't think of one, except that people who label subexpressions will have a harder time doing PIL->P6. | |||
theorbtwo | One thing that we do gain is that backends don't have to worry about it. | 23:06 | |
autrijus | well, yes, there's that. | ||
which should be reason enough | |||
since very few backend allow you label subexpressions. | |||
geoffb | autrijus, but noone is supposed to write PIL by hand -- if the compiler does something silly like that, it's a different problem. | ||
clkao | autrijus: need your tailor snapshot work | ||
autrijus | PIR being now | ||
the only one -- but that's because it doesn't have subexpressions :) | |||
geoffb: problem is people do write comp and macro that can manip pil tree | 23:07 | ||
so whatever tree user macro can gen need to be handled by the runtime | |||
geoffb | autrijus, point taken. | ||
autrijus | so a new form there is a new burden to codegens | ||
geoffb | Hmmm. | ||
autrijus | clkao: I don't think I have anything useful at the moment. :/ | ||
clkao | the wip would be fine | ||
you didn't kill your laptop after that, no? | 23:08 | ||
geoffb | autrijus, maybe the solution then is to leave statement in, get our current backends on to PIL2, and then see how much pain is incurred in them to accept statement-free PIL syntax. It just seems like the kind of question that can only be answered by trying | ||
but a two-phase approach seems sane. | |||
autrijus | clkao: perlcabal.org/~autrijus/tmp/cvsync.tgz | 23:09 | |
clkao: all state is lost in my brain | |||
clkao | bah | ||
domo | |||
autrijus | geoffb: PIL1 has Stmt form | ||
Juerd | Feather may be down for any(15..30) minutes tomorrow | ||
geoffb | autrijus, I know. I meant "Keep that Stmt form in PIL2. Then once all backends are on PIL2, we can experiment with no Stmt in PIL2.5" | 23:10 | |
Did that make more sense? | |||
Perhaps I am too conservative with such changes | |||
autrijus | no, I think that's fine. thanks | 23:11 | |
theorbtwo | Hm, are we keeping the p5 convention that statements have line-numbers and the like attached to them, or do we have positions more common still, like we did in the fairly-early days? | ||
autrijus | theorbtwo: all expressions have ranges with them | 23:12 | |
that supercedes line numbers | 23:13 | ||
which is much better anyway -- unless you want to support "goto LINE", in which case it's going to take a bit macro foo. | |||
theorbtwo | You mean with a line number? That's just crazy talk. | ||
autrijus | search.cpan.org/dist/Acme-Goto-Line/ | 23:14 | |
in DrIFT-enabled PIL1 though, only Stmt has ranges | 23:15 | ||
going to fix that in PIL2 | |||
theorbtwo grrs at debian's squid package. | |||
(It has a tendency to go down for a while during long apt-get upgrades.) | 23:16 | ||
geoffb seriously dislikes packages that take down network services early in the upgrade . . . the worst were early iptables packages | 23:17 | ||
"We'll just disable your firewall while we upgrade X, KDE, Gnome, LaTex, and Emacs. No worries." | 23:20 | ||
svnbot6 | r6476 | autrijus++ | * Support for "./pugs -C PIL2". | 23:26 | |
r6476 | autrijus++ | Currently, "-C PIL" and "-C PIL1" both maps to PIL1, | |||
r6476 | autrijus++ | but some day "-C PIL" may change to PIL2. | |||
theorbtwo wonders why pugs -CPugs Prelude.pm works, but pugs -CPIL Preulde.pm dies with an error concerning two variables that do not (explicitly) exist, and no position information. | 23:30 | ||
autrijus | theorbtwo: hm? I get | 23:31 | |
*** Compile error -- invalid Pugs.PIL1.PIL_Expr: | |||
Stmts (App (Var "&postfix:++") ... | |||
theorbtwo | Stmts (App (Var "&postfix:++") Nothing [Var "$?FIRST_RUN"]) (Syn "=" [Var "$?FIRST_RESULT",App (Val (VCode (MkCode {isMulti = False, subName = "", subType = SubBlock, subEnv = Nothing, subAssoc = "pre", subParams = [], subBindings = [], subSlurpLimit = [], subReturns = (mkType "Any"), subLValue = False, subBody = Noop, subCont = Nothing}))) Nothing []]) | 23:32 | |
I was talking about $?FIRST_RUN and $?FIRST_RESULT. | |||
autrijus | they are desugaring FIRST blocks. | 23:33 | |
theorbtwo | Aaah. | ||
autrijus | (Pugs.Parser.vcode2firstBlock) | ||
theorbtwo | What's the error with that, though? I thought most of the -C options just printed the output somewhat differently. | 23:34 | |
autrijus | er no, -C* is using PIL | ||
but -CPugs is special | |||
it's not going thru compilation, just serializing the compiler state | |||
nothingmuch | seen stevan? | 23:35 | |
jabbot | nothingmuch: stevan was seen 2 hours 22 minutes 57 seconds ago | ||
theorbtwo | OK, I think I see. | 23:36 | |
Hm, how different is PIL2 planning on being vs PIL2? | 23:48 | ||
Er, s:2nd/PIL2/PIL1/ | |||
I'm planning, at the moment, on writing a PIL1 (Perl5 dumping) to C compiler in perl5. | 23:49 | ||
I'm wondering how difficult it will be to port that to PIL2 when it comes about. | |||
autrijus | perhaps not difficult at all | ||
since it's designed to simplify the hoops iblech/rafl/putter had to jump thru during the codegen | 23:50 | ||
though we really assume a runtime RTS | |||
and a RTS-less C would be Very Interesting | |||
theorbtwo | Not sure what you mean by RTS here. | 23:51 | |
You mean the ability to eval STRING? | 23:52 | ||
rafl_ | autrijus: blame me? For what? | 23:54 | |
autrijus | rafl_: nothing at all | ||
rafl_ | autrijus: But I'm surely responsible for something! :-) | ||
autrijus | I saw "platform specific bits in Makefile.PL" and recalled just two incidents in Makefile fragments | ||
both from you | |||
so I naturally thought that | |||
it turns out L~R is talking about not using File::Spec | |||
which is a bit silly as all our target platform afaics supports "/" as separator | 23:55 | ||
so nothing to do with you :) | |||
theorbtwo | We don't try to work on VMS? | 23:56 | |
geoffb | Parrot might, but that's Dan's doing. | ||
theorbtwo | Nod. | 23:57 |