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 &not 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