Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by stevan on 15 August 2005. |
|||
lhooq | ?eval 2+2 | 08:11 | |
evalbot_6581 | 4 | ||
GeJ | ?eval "Hello World!".say | 11:38 | |
evalbot_6581 | Hello World! bool::true | ||
rindolf | Hi all! | 11:40 | |
autrijus: here? | |||
autrijus | rindolf: hi | 11:41 | |
rindolf | autrijus: hi | ||
autrijus: I'm glad I found you here. | |||
autrijus | greetings. | 11:42 | |
Juerd | You're wasting bytes :) | 11:43 | |
rindolf | autrijus: can you please read www.nntp.perl.org/group/perl.module-authors/4022 and let me know how I can resolve this ExtUtils::Install issue? | ||
autrijus | rindolf: export PERL_EXTUTILS_AUTOINSTALL=--default | 11:45 | |
rindolf | autrijus: OK. Is --default the mode that behaves like a regular Makefile.PL with PREREQ_PM? | 11:46 | |
autrijus | aye. | ||
rindolf | autrijus: it works now. | 11:52 | |
autrijus: thanks. | |||
autrijus | np :) | 11:55 | |
rindolf | autrijus: I could not gather from the man page that that is what --default does. | 11:56 | |
autrijus | indeed. you want a committer bit? | 11:57 | |
rindolf | autrijus: for EU::I? | ||
autrijus | EU::AI, yes | ||
rindolf | autrijus: if I'm in the mood, I might write a patch for the POD and put it in RT. | 11:58 | |
Right now, though, I have other things to do. (including some stuff I'm getting paid to do) | |||
I'll just write a short E-mail about it to module-authors. | 11:59 | ||
autrijus | sure. vipe.technion.ac.il? | 12:00 | |
rindolf | autrijus: what about vipe.t.a.i? | ||
autrijus | was confirming whether it's your email addr | 12:01 | |
rindolf | autrijus: I have several E-mail addresses. | ||
[email@hidden.address] is one of them. | |||
I also have [email@hidden.address] and [email@hidden.address] | 12:02 | ||
autrijus | ok. an invitation for committership into extutils-autoinstall is in your inbox now | ||
the svn repos is svn.openfoundry.org/modinstall/ExtU...utoInstall | |||
if you find time to post to RT, please commit ahead instead | |||
rindolf | autrijus: as you wish. I'll try not to misplace this commitership. | 12:03 | |
autrijus | rindolf++ # thanks! | ||
rindolf | autrijus: :-) | ||
geoffb | good $time_of_day, autrijus | 12:18 | |
Same to you, Juerd, since you seem to be the other person on-channel atm. :-) | 12:19 | ||
12:27
integral is now known as integral|ZzZzz
12:56
autark is now known as jp-autark
|
|||
putter | autrijus: fyi, the rt.openfoundry.org/Foundry/Project/...gs/browse/ links are again in chinese. eg, the link to Home is 登入. fyi. | 15:08 | |
luqui: credit for finding the hash bug belongs to someone else. I just echoed it. But with the irc log bOrked, I'm afraid I can't give the correct attribution. | 15:12 | ||
iblech: btw, you should be ready to go. last night I smashed perl5.t down into edible 50 test pieces, and things looks plausible. | 15:13 | ||
Can anyone describe what's up with PIL and classes? I assume if it was easy it would already be done? I wonder if it might be kludged with a wrapper script? | 15:34 | ||
It seem a next step in moving PIL2JS along. And helps in beginning p6-based PIL codegen. | 15:36 | ||
vkon | my question probably obvious, but: whether *parrot* required for regexp's in pugs (rules are implemented via PGE) | 15:51 | |
? | 15:52 | ||
putter | parrot is indeed required for p6 rules in pugs. But not for :perl5 rules, which are provided by the included PCRE. One can used an external parrot (the default), or embed it. | 15:56 | |
brentdax | autrijus: get my e-mail? | 16:06 | |
putter | hi fglock | 16:20 | |
fglock | hi putter | ||
I'm working on Array.clone - I need this to fix some tests | 16:23 | ||
putter tries to picture a dual runtime, PIL-Run with p5 mm, and PIL2JS under JS::SM. or tri-runtime with pugs embedded. | |||
fglock | :) best of each world | 16:24 | |
putter | ah. I was just trying to picture using your lazy arrays from PIL2JS... ;) | ||
fglock | can you make p5 calls? | 16:25 | |
stevan__ wonders what is in the putters water that he is having such visions | |||
16:25
stevan__ is now known as stevan
|
|||
Aankhen`` | JS::SM? | 16:25 | |
stevan | Javascritp::SpiderMonkey | ||
Aankhen`` | Ah. | ||
stevan | but spelt correctly | ||
putter | hmm... svnbot is dead... as of a few minutes ago, yes :) | 16:26 | |
stevan | putter: the freenode admins are clearly drunk again | ||
putter | but I'm not sure what a JS proxy looks like. PIL class limitations mean one cant do the obvious by just injecting p6. | 16:27 | |
stevan: there seemed several partitions over the last day or so. maybe svnbot is off happy in some private universe | 16:28 | ||
a musing: name for a JS::SM which includes a copy of spidermonkey, so you can just CPAN install it cleanly... JavaScripdt::SpiderMonkey::WithMonkey ?;) | 16:30 | ||
JavaScripdt::SpiderMonkey::PrimateIncluded ? | |||
stevan pictures a universe where svnbots frolic about free from their commit-happy masters | |||
putter | ;) | 16:31 | |
"svnbots dream of committed sheep..." | |||
stevan | :D | 16:32 | |
putter | fglock: perl5/PIL2JS$ perl -Ilib -e 'use Perl6::Run::JS; Perl6::Run::JS->new->eval(q/say "hi"; eval_perl5(q!print "ho\n";!);/);' | 16:34 | |
Note you can run multiple js-based p6 instances in the same perl process. | 16:36 | ||
Before I dive in, has anyone here looked at the PIL vis classes issue? | 16:38 | ||
fglock will be offline for a few hours | |||
putter | bye fglock | ||
fglock | bye :( | ||
putter | life! :) | ||
autrijus | brentdax: what mail? | 16:49 | |
I don't think I did | |||
brentdax | Hmm, okay... | 16:51 | |
I noticed in your blog that you installed Kontent, and I was just wondering if you had any comments on the procedure or how it's documented, since I'll be releasing 0.02 soon. | |||
autrijus | ooh. | 16:52 | |
url to the svn again? | |||
brentdax | svn.brentdax.com/kontent | 16:53 | |
I haven't changed the docs on the installation yet, and I need to write some stuff to insert a few really critical pages (like, say, the setting containing the HTML template), so it's not entirely usable right now. | 16:54 | ||
putter | autrijus: do you have a moment for a quick -CPIL question? | ||
stevan | hey autrijus how is $work? | 16:59 | |
autrijus | stevan: tired, but fortunately free from tomorrow on to friday | 17:05 | |
putter: yes? | |||
stevan | autrijus: me too :) | 17:07 | |
sept 1 is launch | |||
autrijus | ooh then we can hack something :) | 17:08 | |
maybe MM2 stuff | |||
stevan | autrijus: MM 2.0 is is good shape | ||
the bootstapping is in | |||
I am starting to covert tests | |||
brentdax | Does Pugs have a YAML dumper? It seems like the Perl 5 one won't work properly--it interprets hashes as arrays of arrays. | 17:11 | |
autrijus | hrmph | ||
you mean .perl? | |||
brentdax | No, I mean using perl5:YAML. | ||
autrijus | we don't have yaml dumper yet -- but I think S^WJSON can do | ||
putter | autrijus: !:) I'd like to get -CPIL dumping class info for PIL2JS and PIL-Run. I notice -CPIL -e 'class C;' runs, but -e 'class C {}' doesnt. are there known deep reasons for this? or it just hasnt been attempted? any other thoughts? thank you. | ||
brentdax: iblech had a magic invocation. which I forget. so I use jspugs's :pil.yaml <expr> | 17:13 | ||
autrijus | there's no deep reasons, except we didn't know how to represent class literal | ||
putter | brentdax: or for entire files, crude_repl.pl with the :v option toggled on. | ||
autrijus | however, class literal now looks like just a regular MM closure constructor call | 17:14 | |
so maybe we'll just emit that | |||
putter | ok. thanks. I'll try to deal with the "{} causes -CPIL failure" issue, and leave the rest for later/others. | 17:18 | |
autrijus | nod | 17:19 | |
brentdax | Hey, I remember writing that panic routine for Parrot... | 17:40 | |
autrijus | ? | 17:42 | |
brentdax | I wrote Parrot's PANIC macro a few years back. Just now, I got it to panic while running a substitution on a long string. | 17:43 | |
(Out of memory, nothing that necessarily means there's a bug in PGE.) | 17:47 | ||
luqui | brentdax, how long? | 17:50 | |
brentdax | Hmm...actually, the longest string it could have been working on was 1K or so. | 17:53 | |
I had it doing a series of substitutions on a bunch of strings (one of which was much longer than the others). | |||
I'm using an older Pugs and Parrot, though... | |||
vkon | putter: thank you for complete answer ~2hr ago! | 18:01 | |
?eval 'qwerty'~~/q/ | 18:09 | ||
evalbot_6581 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
evalbot6 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
vkon | ?eval $?PUGS_VERSION | ||
evalbot_6581 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005' | ||
evalbot6 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r6378)' | ||
vkon | ?eval say 'qwerty'~~/q/ ?? 'y' :: 'n' | 18:12 | |
evalbot_6581 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
evalbot6 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
vkon | ?eval say 'qwerty' ~~ /q/ ?? 'y' :: 'n' | 18:13 | |
evalbot_6581 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
evalbot6 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
vkon | strange... results on evalbot are rather different on what I see on perl6.feather.nl | 18:14 | |
geoffb | ?eval say 'qwerty' ~~ rx:perl5/q/ ?? 'y' :: 'n' | 18:16 | |
evalbot_6581 | y bool::true | ||
evalbot6 | y bool::true | ||
putter | vkon: you're welcome. (asyncronous conversations)++ | ||
?eval 'qwerty' ~~ /q/ | 18:17 | ||
evalbot_6581 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
evalbot6 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
putter | I suspect evalbot is compiled without parrot :( | ||
geoffb | autrijus, ping | 18:18 | |
putter | Actually, no, I don't understand that error message. Even compiled without parrot, and no external parrot available, the error message should be different. | 18:19 | |
vkon | putter: when I do it on my PC, I get expected result, but when ssh [email@hidden.address] I see error 'Parrot VM: panic: out of mem' | ||
putter: it probably parrot feature considered non-safe and not available within evalbot? | 18:20 | ||
putter | parrot --version ? | ||
autrijus | geoffb: pong | ||
geoffb | There's an annoying bug that I could really use a crushing for: | 18:21 | |
?eval my $foo = 0; $foo++; say $foo; my $bar = [0]; $bar[0]++; say $bar; my $baz = {a => [0]}; $baz<a>[0]++; say $baz; | |||
evalbot_6581 | 1 1 Error: Can't modify constant item: VInt 0 | ||
evalbot6 | 1 1 Error: Can't modify constant item: VInt 0 | ||
geoffb | It's blocking my conversion of a nice chunk of P5 code to P6 (without hideous hacks). :-( | 18:22 | |
vkon | putter: on feather... This is parrot version 0.2.3-devel (r9087); on my PC is 0.2.2-devel | ||
autrijus | geoffb: which t/ test is that? | 18:24 | |
got the bug. fixing | 18:25 | ||
geoffb | Don't know, came across it when I was too otherwise tired to figure that out, but I'll try to A) find it, or B) write a test now | ||
autrijus | please write a test. | 18:26 | |
my $baz = [[9]]; | |||
$baz[0][0] = 10; | |||
is the minimal case I got here | |||
geoffb | OK, doing so. | ||
putter | vkon: hmm... I wonder if a release 0.2.3 would have the same problem...? | ||
autrijus | this borks too | ||
my @baz = [9]; | |||
@baz[0][0] = 10; | |||
so it's circumfix [] not preserving lvaluehood | 18:27 | ||
even more minimal | 18:29 | ||
[[0]][0][0] = 0; | |||
geoffb | *chuckle* | 18:30 | |
All right you, golfing boy. :-) | |||
vkon | putter: I don't have 0.2.3, so I'll fetch today's 'rsync' and will rebuild; this will be not immediate :) I'll do this | ||
geoffb | I'm transcribing these various cases into a pugsbug/.t | 18:31 | |
vkon | ?eval [[0]][0][0] = 0; | ||
evalbot_6581 | Error: Can't modify constant item: VInt 0 | ||
evalbot6 | Error: Can't modify constant item: VInt 0 | ||
vkon | putter: BTW on 'feather.perl6.nl' currently built pugs is 6378, so this is rather old? | 18:35 | |
PerlJam | vkon: 10 days old or so. | 18:37 | |
autrijus | back. fixing | 18:40 | |
geoffb | autrijus, 6588, t/pugsbugs/lvalue_deep_brackets.t | 18:42 | |
autrijus | great | 18:43 | |
geoffb | It's dies after test 2, but I figured it's better that you have it while you're working, than I have it perfect. | ||
autrijus | yup | ||
geoffb | and btw, chromatic++ for making add-svn-props.sh work with svn and svk equally. | 18:44 | |
autrijus | wunderbar | 18:46 | |
svnbot6 | r6588 | geoffb++ | First cut of test for lvalue deep brackets | ||
autrijus | got the bug. | 18:49 | |
the inner [0] is forced back into rvalue context. | |||
geoffb | wheee!, thanks | 18:50 | |
autrijus | np :) | 18:52 | |
putter | vkon: awesome. re 6378, now 6589, so yes, a bit. | 18:54 | |
luqui | ?eval (a => 'b')[1] | 18:58 | |
evalbot_6581 | Can't exec "./pugs": Permission denied at examples/network/evalbot//evalhelper.p5 line 42. | ||
evalbot6 | \'b' | ||
svnbot6 | r6589 | putter++ | Compile.hs: -CPIL -e 'class C {...}' now works (no longer fails with an error). Next step - remember package/module/class/grammar flavor, so it can tell you what C is. | ||
luqui | ?eval (a => 'b')[1] | ||
evalbot_6581 | \'b' | ||
evalbot6 | \'b' | ||
luqui | oh, evalbot6 is back | ||
putter | yay | ||
autrijus | fixed. | 19:00 | |
committing | |||
geoffb: try the fix? | 19:08 | ||
svnbot6 | r6590 | autrijus++ | * a one-line change that possibly have great impact: | 19:10 | |
r6590 | autrijus++ | when using fromVal to cast a VList into a VList, don't | |||
r6590 | autrijus++ | recursively flatten references in them anymore. | |||
lhooq | one-line change for a file, one giant leap for pugs | 19:13 | |
geoffb | autrijus, sorry, pulled away by $child | 19:19 | |
bak now | |||
pulling . . . | |||
making . . . | |||
autrijus | k. remember to pull to see my test fixes | 19:20 | |
it all passes here | |||
fglock | hi all | ||
geoffb | hi, fglock | 19:21 | |
fglock misses the daily autrijus journal | |||
svnbot6 | r6591 | autrijus++ | * lvalue_deep_brackets.t - make tests sane; all passes now. | ||
r6591 | autrijus++ | consider moving to other t/ dirs? | |||
geoffb too | |||
autrijus | fglock: I miss them too | 19:22 | |
fglock | how about a docs/JOURNAL file | 19:23 | |
autrijus | what would that do? collaborative journal making? | ||
I thought that's what pugs.kwiki.org is for :) | 19:24 | ||
fglock | I'm taking a look there | 19:25 | |
autrijus: a question on lazy arrays - '@a=1..Inf; @b=@a; say @a.shift, @b.shift;' - is this 1,1 or 1,2 ? | 19:27 | ||
svnbot6 | r6592 | autrijus++ | * wizards.p6 - print debug messages only if $DEBUG is set. | ||
autrijus | fglock: 1,1 for sure | 19:28 | |
1,2 only comes when | |||
@b := @a | |||
the generators are cloned | |||
not shallowly copied | |||
fglock | ok - I'm working on cloning generators right now - just wanted to be sure | 19:29 | |
geoffb | Bah, no wonder that took so long to build -- I forgot to quit Firefox first | ||
fglock | can you point me to a description of List x Array in Perl 6 - what is each one, what are the differences? | 19:31 | |
autrijus | fglock: Array, like Scalar, is a container type; you can write stuff into it. List on the other hand represents values; you cannot directly write into a list | 19:33 | |
geoffb | autrijus++ # Stomped that bug but good! | 19:34 | |
hey, nm! | |||
nothingmuch | three day weekend, oh how I long for thee | ||
geoffb | heh | ||
nothingmuch | hi ho | ||
keeping up is *hard*, and I don't even have kids | 19:35 | ||
autrijus | fglock: I'm not aware of any unambiguous writeup on this subject, sadly. whatever we come up will have to do, I think | ||
nothingmuch | I don't know how career people do it =( | ||
autrijus | oh, they don't :) | ||
nothingmuch | my parents work full time, but I don't recall neglect | 19:36 | |
geoffb | It's difficult, but you just give up something the kids don't notice. :-) | ||
lhooq | kids don't have much RAM, that is | 19:37 | |
geoffb , now a father of two, getting wise in his old age | |||
nothingmuch | geoffb: my problem is that my job is sort of my hobby, i guess | ||
i don't get sick of computers | |||
geoffb | nothingmuch, oh yeah, ditto that. | ||
nothingmuch | i want to code the "fun stuff" too, when I get home | ||
but on the other hand I don't want to do that | 19:38 | ||
autrijus | why would you get sick with part of you? :) | ||
geoffb | yep, so there. That's why I quit being a FTE and became a PTC. :-) | ||
nothingmuch | since I want to go outside, and see the lovely sun, and hear the lovely birds, and ride my lovely bike | ||
fte == full time employee? ptc == part time contractor? | |||
geoffb | perfecto | ||
fglock | in p5 runtime, List is a temporary object - it only exists for a short while before it disappears into an Array. It can actually be optimized out. | ||
nothingmuch | autrijus: it's not a part of me... it's something that I do, no more | 19:39 | |
i' | |||
don't see myself doing this 5 years from now | |||
autrijus | okay then | ||
I fully expect to become even more a cyborg after 5 years. | 19:40 | ||
nothingmuch | yeah, that is something that always scared me about you =) | ||
autrijus | fglock: how is it different from, say, a Str into a Scalar? | ||
geoffb | "And in 2010, autrijus became Hugh." | ||
nothingmuch | Hugh? | 19:41 | |
geoffb | The borg with self-will | ||
Couple episodes of TNG, IIRC | |||
autrijus | from "I, Borg"? | 19:42 | |
fglock | you store Str into Scalar, and Array into Scalar - but you don't store List into Scalar. Also, you store List into Array, but you extract Scalar from Array (fetch) or Array from Array (splice) | ||
geoffb | autrijus, yeah, that might be it | ||
putter | Ok, quick strawman proposal. Currently, class C{method f(){}} in PIL gives you C::f, but no indication whether C is class,package,module,grammar. Proposal: PIL includes a "&class("C");" (in this case, to tell you which one it is. Thoughts? | ||
nothingmuch | . o O ( autrijus voodoo dolls available at www.collectorsgalleryonline.com/Mer...y_Code=STK ) | 19:43 | |
autrijus | putter: should probably be | ||
our ::C := class {}; | 19:44 | ||
geoffb | ?eval my $foo = 'bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" : "other" | ||
evalbot6 | Error: unexpected ":" expecting operator or "::" | ||
geoffb | ?eval my $foo = 'bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" :: "other" | ||
evalbot6 | 'other' | ||
geoffb | ?eval my $foo = '+bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" :: "other" | ||
evalbot6 | 'plus' | ||
geoffb | hmmm | ||
autrijus | putter: or drop the {}, just | ||
our ::C := Class.new; | |||
nothingmuch | metamodels++ | 19:45 | |
autrijus | putter: the idea is to leverage a direct metamodel call based on the builting ::Module, ::Class etc | ||
putter: sounds sane? | 19:47 | ||
putter | hmm... package C; ... package main;... package C;... two our ::C := ?? | ||
nothingmuch | well, BEGIN { our ::C := } | ||
autrijus | nothingmuch: right. | ||
putter: no, I think just one, as packages are not reopened | 19:48 | ||
nothingmuch | . o ( they are refurbished ) | ||
putter | packages are not reopened??!? | ||
autrijus | as in, they are always reopened, sorry | 19:49 | |
you don't need to say "package C is reopened" | |||
nothingmuch | package C compiles not to BEGIN { ::C := ?? } then | ||
BEGIN { ::C := Package.new unless defined ::C; ::C.extend { ... } } | 19:50 | ||
autrijus | sure, that can work. | ||
our Package ::C .= new(...) | 19:51 | ||
which would call the instance .new if ::C is defined | |||
neatly sidestepping the "unless defined" problem | |||
but that may be too cute. | |||
I can't think too well, it's 4am here :) | |||
nothingmuch | btw, are ::X symbols stored in namespace? | ||
if so is there a root instance of package? | 19:52 | ||
or is this orthogonal, just pretending to be namespace-ey? | |||
putter thinks "&pil_hack_class("C"), and let the runtimes worry about it for now..." ;) | |||
autrijus | putter: at least &Class::create('C') | ||
nothingmuch | i disagree | ||
autrijus | or &Class::_create | ||
nothingmuch | PIL should present a static image | ||
or pretend to | 19:53 | ||
this can be translated to &Class::create('C') | |||
but that is potentially a lossy conversion WRT to the user's intents | |||
autrijus | nothingmuch: sure. ::= is just the RHS turned into normal form (i.e. constant rvalue) | ||
nothingmuch: and yes, PIL2 needs to be a static image. but at this moment PIL1 is all dynamic and has very little static contents | 19:54 | ||
so why not delegate to runtime for now :) | |||
nothingmuch | btw, I forget what happens in PIL for things like loop() | ||
are the loops generalized into looping constructs? | |||
or are these delegated to the runtime? | 19:55 | ||
putter | nothingmuch: re static, PIL1 re oo already seems... not PIL2. the objective is to make progress on backends, not to do PIL2 design work... | ||
nothingmuch | putter: i don't necessarily mean "getting it to work" in the right now scale | 19:57 | |
putter | ah ;) | 19:58 | |
nothingmuch | but if we want to be able to implement 'use optimize', the linker I proposed, static analysis, optimizers, type inferrencing, value inferrencing and so forth | ||
which are priority 2 features, but still important | |||
putter | written in p6? | ||
nothingmuch | yup | ||
shouldn't be that bad | 19:59 | ||
putter | does anything need to happen to get you to the point of being able to work on it? | ||
(quite a sentence) | |||
-CPerl6 ? | |||
nothingmuch | anyway, if pugs compiles to a PIL that is too "runtimeish" then these things won't have clear semantics | ||
uh... | 20:00 | ||
like i said about the 3 day weeken d | |||
putter | ;) | ||
nothingmuch | i don't think these are important enough now though | ||
things should be working | |||
autrijus | one thing PIL1 does not have is an object-literal node type | ||
where you can present an anonymous object -- say, a class object -- just like an anonymous closure | 20:01 | ||
nothingmuch | heh, this guy bought from the same place I bought my computer: i10.ebayimg.com/03/i/04/d2/31/9a_1_b.JPG | ||
small world, eh? | |||
autrijus | it would not be a runtime call to .new; rather, it would be just like a serialized opaque object. | ||
that is what objects in BEGIN would compile to | |||
nothingmuch | btw, is the serialization format of the env completely defined yet? | 20:02 | |
putter | re important, but they all share a PIL analysis/manipulation infrastructure with codegen. And iblech will be doing more of PIL2JS in p6 rather than js as that becomes possible. And much of what he does in p6, can be used for pilrun. | ||
autrijus | nothingmuch: nothing is, so no | ||
nothingmuch | autrijus: by completely i meant "good enough" | ||
putter | re object-literal, neat :) | ||
autrijus | nothingmuch: ah. no, the linkset problem is still open | 20:03 | |
nothingmuch ponders a peep-hole optimizer for PIL | |||
autrijus | we still don't know what the equivalent of .hi file would be for p6 | ||
nothingmuch | linkset problem in two words? | ||
autrijus: followup on the linker thread? | |||
putter | so I think getting p6-based codegen from PIL is a good shortterm objective. | 20:04 | |
autrijus | sure, but sleep is more important first | ||
putter: yes. -CPerl6 would be trivial, no? | |||
putter | s/is a/going is a/ | ||
nothingmuch | if any(@ARGV) eq "-CPerl6" { exec "cat" } | ||
autrijus | putter: actually if you define &bless, then -CPerl5 is likely oodwgood enough already | ||
nothingmuch: ;) | 20:05 | ||
putter | autrijus: cut and copy two Drift files? or is there abstraction potential there I missed... ;) | ||
re bless, yes. good idea. | |||
nothingmuch | oh | ||
what is this Drift thing? | |||
autrijus | nothingmuch: it allows you to derive any class for any data type. | ||
nothingmuch | uh... example? | 20:06 | |
autrijus | nothingmuch: see src/DrIFT/* | ||
yay I answered before you asked | |||
putter | lol | ||
nothingmuch | not on my terminal ;-) | ||
autrijus | well, I'm going to get progressively silly in this sleep deprived mode | ||
so I think sleep is a better idea | |||
see ya tomorrow :) | |||
autrijus waves & | |||
putter | good night autrijus & | 20:07 | |
nothingmuch | ciao! | ||
Juerd_ | What do you all use feather for? | ||
Oh, good night autrijus | |||
autrijus | Juerd_: I use it to run various perl6 bots | ||
really & | |||
nothingmuch uses it to ping home sometimes, and for the harrorth darcs page | 20:09 | ||
Juerd_ | hehe | 20:10 | |
memo: unlink `which ping` ;) | |||
nothingmuch | oh btw, i think you can remove autrijus and me from sudoers - we don't know our passwords | ||
Juerd_ | Smart. | ||
nothingmuch | well, I do know my ssh key | 20:11 | |
;-) | |||
stevan | nothingmuch, autrijus, putter: see the MM 2.0 for a closure based class form | 20:44 | |
putter | ! :) | 20:45 | |
stevan | it is a UI macro in CLOS-speak | ||
but it basically is this: | |||
class 'Foo-0.0.1' => sub { my $class_meta_object = shift; ... do something ... }; | |||
putter waits for the next line... slowly realizes that's it.. :) | 20:46 | ||
stevan | yeah thats all :) | ||
putter | :) | ||
stevan | svn.openfoundry.org/pugs/perl5/Perl...taModel.pm | ||
look in the SYNOPSIS of the Pod | |||
putter | looking... | ||
stevan | those two are equivalent | 20:47 | |
nothingmuch | you mean the synoposis section ;-) | ||
putter | now that oo info is exposed by -CPerl5, the mm's can be exercised a bit more.. | ||
stevan | SYNAPSE | ||
nothingmuch | stevan: fixed ;-) | 20:48 | |
stevan | nothingmuch++ # removing the evidence | ||
putter: yes | |||
I think it might make sense for the class part of PIL to just be a series of metaobject calls | 20:49 | ||
it will simplify it i think | |||
my $Foo = $::Class->new('$:name' => 'Foo'); | |||
that will create a new class | |||
nothingmuch | ebay-- | 20:50 | |
stevan | $Foo->superclasses([ $::Object, $Bar ]); | ||
etc etc etc | |||
nothingmuch | their site is broken =( | ||
stevan | MM 2.0 is greatly simplified (sort of) | ||
nothingmuch guesses that 'sub class { my $name = shift; my $class = $::Class->new; $class->name($name); &$_ for @_ } | |||
stevan | &$_ for @_?? | 20:51 | |
fglock | stevan: class is an "instance constructor closure"? | 20:53 | |
nothingmuch | uh | ||
too much functional programming? | |||
stevan | fglock: no, the sub "class" is just a "macro" to do some meta-object stuff for you | ||
make my life easier to test | 20:54 | ||
putter | stevan: or maybe wrap them in ApiX p6_mumble subs. its been nice to have the whole mm interface in one place. at some point it will just be boring, but it allows us to easily say things like "oh, instead of Int,etc, let's do P6::Int,etc". | ||
stevan | putter: I assume p6_mumble is re-sugaring routines? | ||
putter | (one of the nice things about p5 method calls being a bit slow, is sub call abstractions are then free...;) | 20:55 | |
svnbot6 | r6593 | nothingmuch++ | r7643@syeeda: nothingmuch | 2005-08-30 23:47:51 +0300 | ||
r6593 | nothingmuch++ | s/SYNOPSIS/SYNOPOSEES/ | |||
putter | stevan: yes, I think. | ||
I've just been following fglock's lead. "How do I create a mm Int? Ok, done How do I ...." | 20:56 | ||
svn.openfoundry.org/pugs/perl5/PIL-...un/ApiX.pm | 20:59 | ||
nothingmuch | stevan: what about mmd | ||
;-) | |||
stevan | nothingmuch: who needs that crap | ||
nothingmuch: MM 2.0 makes the assumption that methods exist | |||
I implement them in chaos.pl | |||
but I just assume they are there | 21:00 | ||
nothingmuch | stevan: from luqui's Class::Multimethods::Pure, the argument is basically applying what's good in OO one more time on OO | ||
svnbot6 | r6594 | putter++ | pugs - a Syn package/namespace now remembers whether it was a package/module/class/etc. When compiling to PIL, emit a kludge declaration info statement (eg &Module::_create("M"); for a module M {...}). | ||
r6594 | putter++ | Prelude/JS.pm: added placeholder hooks for declaration info calls. | |||
nothingmuch | to quote: | ||
no, it's too long | |||
stevan | and methods are just wrapped subs | ||
nothingmuch | search.cpan.org/~lpalmer/Class-Mult...ltimethods | ||
putter | stevan: you realize you're going to have to do talks on the mm stuff... time to start taking notes! ;-) | 21:01 | |
stevan | so the assumption is that multi-methods will likely just be wrapped multi-methods | ||
putter | s/taking/making/ | ||
nothingmuch | it would be cool if mplayer had an airtunes output driver | ||
stevan | putter: I will adopt the autrijus/ingy model of giving talks | ||
putter | lol | 21:02 | |
stevan | start the slides the night before, finish the first part in the cab/elevator to the talk | ||
and then finish the second part during the intermission | |||
putter | :) | ||
stevan | s/wrapped multi-methods/wrapped multi-subs/ | 21:03 | |
fglock | I guess multimethods will be implemented in Code.pm, with some glue to make classes know about them | ||
stevan | I know in CLOS multi-methods are all proxied through a single method | ||
so as to not have name clashes | 21:04 | ||
I assume we should do something similar | |||
nothingmuch | no =) | 21:05 | |
everything should be a multimethod | |||
stevan | otherwise we have to deal with package symbols of the same name,... etc | ||
putter | ah, that makes more sense #wrapped multi-subs/ | ||
nothingmuch | singi-methods are just "multi method ... is unique" | ||
stevan | nothingmuch: I agree, but you still have to store the symbol somewhere | ||
nothingmuch | stevan: every code symbol is an array of code refs | 21:06 | |
stevan | unless slots are arrays | ||
yeah | |||
nothingmuch | not code refs, method objects | ||
stevan | yes | ||
nothingmuch | or the method object has variants | ||
luqui: want to port C::M::P? | |||
stevan | but that makes slots/packages more complex | ||
nothingmuch | i think ti's simpler to let the method object have an add_variant method | 21:07 | |
stevan | why not store a single code value in the slot, then have that code have specializers to do the dispatching | ||
putter | how are temp()ed multimethod "branches" (what's the real name?) handled? ah, ok, so temp() on the array? | ||
stevan | nothingmuch: yes, add_variant is sane (sort of) | ||
methods (in MM 2.0 at least) are just closures around the code body which bind $?SELF and $?CLASS | 21:08 | ||
nothingmuch | stevan: that way every sub Method::add_variant { die "i'm no multi" if $self->unique; ... luqui code ... } | ||
stevan | nothing else really | ||
luqui is a hack and we all know it ;) | |||
I have not looked a the internals of MM::Pure | 21:09 | ||
nothingmuch goes to bed | 21:10 | ||
fglock | re MultiSub runtime: svn.openfoundry.org/pugs/perl5/Perl...l6/Code.pm | ||
nothingmuch | aah! 00:10:32 up 14 days, 5:03, 2 users, load average: 9.78, 7.35, 4.14 | ||
fglock: Damian will like that impl | 21:11 | ||
fglock | Damian will like == unreadable ? | 21:12 | |
nothingmuch | no | ||
the impl is "simple" | |||
it just goes through the alternatives ;-) | |||
fglock | ah ok. It is actually wrong - it should go through the alternatives in a certain order of precedence | 21:13 | |
nothingmuch | right | ||
fglock | and use a binary tree for that, or a hash | ||
nothingmuch | uh... not enough | ||
you have to calcualte the distance. | |||
if you want a proposal I wrote one | 21:14 | ||
and luqui implemented one | |||
and Damian has his own views which we don't like ;-)D | |||
docs/notes/mmd_match_order.txt | |||
fglock | thanks - will read it | ||
putter | $?METHOD_DISPATCH_ALGORITHM = @?PROPOSALS[int(rand(123))]; If you code changes behavior run-to-run, perhaps it should be made simpler... ;) | 21:15 | |
svnbot6 | r6595 | putter++ | pugs -CPerl5 now says bless(data , cls) instead of bless(data => cls). More p6 compatible. | ||
nothingmuch | putter: that sounds like damian's proposal ;-) | 21:16 | |
putter | lol :) | ||
hmm... where to place the beginnings of p6-based PIL work... there is always perl5/ ;) .... | 21:17 | ||
nothingmuch needs more ram | 21:18 | ||
putter | I suppose modules is the "official" place... but it's so quiet... | ||
fglock | putter: I've placed some things under ext/ | ||
nothingmuch | ext? | ||
fglock | ext/Perl6-Container-Array, ext/Perl6-Value-List | 21:20 | |
putter had the, well not "unhappy", how about "reflective", moment, of seeing a machine more wizzy than his, available for a few hundred $ in the ad insert of the sunday newspaper. I soo need a job. ;) | |||
hmm... putter goes to look at ext/ | |||
nothingmuch | putter: my machine is actually pretty decent, except for the ram | 21:21 | |
but i feel your pain | |||
nothingmuch was in school for too long | |||
putter | I thought ext/ was for "finished, working" things? | 21:22 | |
nothingmuch | putter: uh, compiling | ||
that's good enough ;-) | |||
putter | lol | ||
stevan kind of likes Class::Multimethods::Pure | 21:23 | ||
putter | search.cpan.org/~lpalmer/Class-Mult...ds/Pure.pm | ||
nifty. | 21:26 | ||
svnbot6 | r6596 | iblech++ | * Moved t/pugsbugs/lvalue_deep_brackets.t into t/var/ and | ||
r6596 | iblech++ | t/pugsbugs/hash_access_interpolation.t into t/syntax, as the tests pass now. | |||
r6596 | iblech++ | * t/pugsbugs/return_in_anonymous_subs.t: Added a new test and commented a test | |||
r6596 | iblech++ | testing &return (EMOREDISCUSSIONNEEDED, will ping p6l tomorrow). | |||
r6596 | iblech++ | * t/var/temp.t: Added some more tests testing "temp $struct<foo>[$bar] = ...". | |||
r6596 | iblech++ | * New t/var/codevars_should_not_autovivify.t: "&Foo::Bar; Foo::Bar()" should die. | |||
putter | iblech: ping? | 21:27 | |
stevan | hmmm, I think I can use Class::MM::Pure to add multi-methods to the MM 2.0 | 21:29 | |
putter | ! | 21:31 | |
svnbot6 | r6597 | iblech++ | PIL2JS: | ||
r6597 | iblech++ | * REAMDE: Large update, I especially enhanced the section about containers. | |||
r6597 | iblech++ | * Moved the code responsible for handling undeclared variables out of | |||
r6597 | iblech++ | PIL::PBind and PIL::PAssign to PIL::PVar (with a fix) -- PIL2JS passes | |||
r6597 | iblech++ | t/var/codevars_should_not_autovivify.t now. | |||
putter | It gradualness of the p5 to p6 continuum is curious. "So, have you used P6?" "Well, I dont know. I've never said use v6;, but I use Perl6::Mumble... and i think some of the modules I use are written in it... and I have no idea what runtime(s) my code runs on..." | 21:35 | |
oh! who was working on ext/Perl-Compiler/ putter goes to check... | 21:39 | ||
fglock | the "generator cloner" is finally passing some tests :) | 21:40 | |
putter | generator cloner? | ||
fglock | it is the thing that makes @a=1..Inf; @b=@a work | 21:41 | |
putter | ahh | ||
fglock | 1..Inf is the "generator" and @a is the "consumer" | ||
putter | loqui++ # " One small step for pads, one giant leap for kittens' feet. " commit message. ;) | 21:42 | |
ah, ok. | 21:43 | ||
and one clones because? | |||
fglock | without cloning - @a.shift gets '1', @b.shift gets '2' | 21:44 | |
putter | k | ||
fglock | because the generator is shared | ||
going home now - good night & | 21:45 | ||
putter | & | 21:46 | |
svnbot6 | r6598 | rafl++ | * Added possibility to skip tests when building the Debian package. | 21:49 | |
r6598 | rafl++ | * Remove empty files from the pugs-doc package. | |||
xinming | hmm, I have a question, I ever asked here about if that the perl 6 program will "HAVE TO" compiled to byte code to execute, I got the answer "yes", so, I wonder, If it have to compiled to byte code, does that mean all perl 5 program also "HAVE TO" Compiled to byte code? | 21:52 | |
s/compiled/compile/ | |||
xinming 's English seems to be more buggy than then day when I left school. | 21:54 | ||
putter | p6 will "likely always" be compiled to PIL. which is a tree. whether that tree is interpreted directly, compiled to language x where x is a high-level language, a bytecode, a machine code... the answer will eventually likely be "yes: ;) | 21:59 | |
bbiab | |||
actually, bbl | 22:00 | ||
iblech: ping? | 22:41 | ||
xinming | hmm, `@a Y @b Y @c -> $a, $b, $c` This will automatically get one element from each @array, and assign the value positionally, so, Is there a operation which can do a "reverse-thing" ? | 22:51 | |
I mean, `push @a, $a; push @b, $b; push @c, $c; | |||
` | |||
putter | ? | 23:49 | |
brentdax | ‽ | 23:50 | |
putter | xinming: perhaps something like vaguely like [push] (@a,@b,@c) Y ($a,$b,$c) ie ()Y() -> $l,$v { push($l,$v) } | 23:52 | |
brentdax: re ?, initial response to an hour old question. ;) | |||
brentdax | Ah, heh. | 23:53 | |
geoffb | .oO( Wouldn't it be great if IRC had threading? ) |
||
revdiablo | geoffb: dngor had an irc bot that did that | ||
geoffb: used tk to threads conversations on the fly | 23:54 | ||
or something along those lines... | |||
see Text::Conversation | |||
geoffb | how does it detect them? | 23:55 | |
(sorry, compiling pugs, cannot open any other windows, sigh) | |||
putter | given recordings of many people talking with each other, you can actually cluster them quite well based on overlap. and do lots of social analysis. but in irc, non-overlap is a much less useful metric. :/ | 23:56 | |
revdiablo | it uses their nick along with some sort of similarity rating | ||
putter | s/recordings/audio $1/ | ||
revdiablo | "Text::Conversation uses multiple heuristics to determine a message's referent. To be sure, the presence of another speaker's ID counts for a lot, but so common words between two messages. Consider them similar to quoted text in an e-mail message." | 23:57 | |
geoffb | hmmm | ||
so could probably be hinted well with a convention of some sort | |||
just saying "billgates, re: wrold_domination, ..." would probably do the trick | 23:58 | ||
putter | arg. we really need Filter::Simple for pugs. sigh. | ||
geoffb | especially if the thread was started with a "re: world_domination" | 23:59 | |
from the first person | |||
putter: what are you trying to do? |