pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
00:04 lichtkind left
pugs_svn r19423 | cosimo++ | Testing commit bit 00:25
00:25 justatheory joined
pugs_svn r19424 | lwall++ | Defined .bytes, .codes, .graphs, and .chars 00:48
r19424 | lwall++ | Defined samecase and samebase
00:48 rdice joined
pugs_svn r19425 | cosimo++ | Refactored substr.t tests into S29-functions\str\substr.t 00:57
00:57 nipotaway is now known as nipotan 01:03 polettix joined, arxc_ joined 01:05 cnhackTNT joined
pugs_svn r19426 | lwall++ | Add svn props to substr.t 01:07
r19427 | lwall++ | [STD] added ugly p5=> operator 01:08
01:09 arxc__ joined, arxc__ left 01:12 lyokato_ joined 01:19 arxc left 01:23 lunatic joined 01:26 arxc_ left
pugs_svn r19428 | rhr++ | [Unicode.pm] implement samebase 01:26
01:31 arxc joined 01:34 devogon left 01:38 Southen_ joined
TimToady 'course, samebase is rather misnamed, should really be sameaccent... 01:43
rhr transfer_grapheme_extenders hey nobody will ever use it anyway :) 01:47
01:52 luqui left 01:58 Southen left 02:05 rdice left 02:20 Psyche^ joined 02:23 Limbic_Region joined 02:35 Patterner left, Psyche^ is now known as Patterner 02:40 LimbicRegion joined 02:44 [1]Limbic_Region joined 02:46 Limbic_Region left, [1]Limbic_Region is now known as Limbic_Region 02:58 LimbicRegion left 03:02 bwisti left 03:09 thoughtpolice left 03:11 alester joined 03:13 penk joined 03:18 pen1 joined 03:20 pen1 left, pen1 joined 03:22 silug left 03:30 py77 left 03:36 penk left 03:46 cognominal_ left 03:55 Schwern joined 04:13 Schwern left 04:14 Schwern joined 04:28 Limbic_Region left 04:33 alc joined 04:40 justatheory left 04:43 _mjk_ joined 05:13 jferrero left 05:32 _mjk_ left 05:35 nothingmuch left 05:46 Schwern left 06:22 DarkWolf84 left
araujo hello 06:40
what the '|' does inside a subroutine call subcall(|arg) ? 06:41
TimToady it binds the entire Capture to the variable 06:50
06:50 Auzon left
araujo thanks TimToady 07:02
TimToady, so, it's a way to say ... pack all these variable into this one variable? 07:13
er, values
07:17 devogon joined
TimToady it's a way to defer deciding which of the arguments bind to scalar parameters and which to list parameters 07:18
araujo I see
TimToady for instance, if you want to pass the exact same arguments off to some other function, but you don't know what the exact signature of the other function is. 07:19
it's kinda like call-by-name but on the whole argument list rather than the individual arguments
araujo ah, get it 07:20
I was checking some functional-like code, so now it makes sense
07:38 alester left 07:52 cognominal_ joined 07:57 riffraff joined 08:14 asprillia joined 08:30 iblechbot joined 09:11 njbartlett_ left 09:17 polettix left, frodo72 joined 09:23 frodo72 is now known as polettix 09:32 mattz joined 09:43 Alias_ joined 09:46 riffraff left 09:55 cognominal_ left 10:01 njbartlett_ joined 10:05 ebassi joined 10:17 chris2 joined 10:22 jisom joined 10:42 masak joined 10:43 chacha_chaudhry joined 10:51 Alias_ left 10:52 Alias_ joined 10:53 chacha_chaudhry left
pugs_svn r19429 | ruoso++ | [smop] Updating the roadmap. The Stage 1 Language for SMOP will be called S1P, readed as "swamp". 10:55
10:57 pen1 left
moritz_ ruoso: is the plan to emit C code from kp6 that uses smop as a runtime lib? 10:58
ruoso moritz_, S1P is that... 11:00
moritz_ ruoso: ok
ruoso but I expect it to be used as a interpreter in the full Perl6-on-SMOP
actually, s1p will be used to write the built-in types 11:01
because the built-in types will have to be stack friendly already
after that, the best will be to make KP6 to generate a SMOP-Compatible C AST Dump of the parse 11:02
moritz_, if you take a look at the roadmap you'll see what I mean 11:03
moritz_ ruoso: ok
11:08 lyokato_ left 11:17 qmole_ joined 11:31 njbartlett_ left 11:33 cnhackTNT left 11:36 nipotan is now known as nipotaway 11:41 jisom left 11:42 xinming left
ruoso I've been wondering, SMOP will require each "code block" to build the stack nodes when calling it... how much will it cost in performance terms? 11:43
is there something that can be simplified or changed to create more room for optimizations?
11:44 asprillia left 11:45 cj_ is now known as cj 11:49 ofer joined 11:57 njbartlett_ joined 12:07 IllvilJa left 12:13 nothingmuch joined
ruoso are lvalue subroutines return values always evaluated as Scalar? 12:34
S06 seems to imply that 12:35
by saying that a tied return would have to implement STORE and FETCH
and actually... thinking better... it's the only thing that makes sense... 12:36
12:37 polettix left 12:43 ebassi left 13:00 chris2 left 13:01 AzureBOT left
pugs_svn r19430 | ruoso++ | [smop] As every operator in Perl 6 is a multi sub, lets put multi earlier on the ROADMAP... 13:02
13:10 Aankhen`` joined 13:11 dmast joined
pugs_svn r19431 | ruoso++ | [smop] Detailing a little more the ROADMAP, effectivelly, multi sub is a very important feature for the bootrap 13:13
ruoso lunch &
13:19 dmas1 left 13:26 cmarcelo joined 13:47 root____1 joined 13:48 meppuru joined 13:56 ispy_ joined 14:03 ixolit joined, dmast left 14:04 dmaster joined
root____1 so quiet... 14:06
14:06 njbartlett_ left 14:07 ixolit left
pbuetow root____1: yes 14:10
14:12 lunatic left 14:30 polettix joined 14:39 silug joined 14:40 xyxu joined 14:41 xyxu left 14:42 jhorwitz joined 14:46 rindolf joined 14:49 xinming joined 14:53 iblechbot left 14:57 cognominal_ joined 14:58 njbartlett_ joined, root____1 left 15:02 jferrero joined 15:05 meppuru left 15:09 alester joined 15:21 devogon left 15:22 devogon joined, meppuru joined 15:33 marmic left 15:37 marmic joined 15:54 cognominal__ joined
pugs_svn r19432 | ruoso++ | [smop] smop_lowlevel.h is an optional API (not included by smop.h) for ResponderInterface implementations that wish to use the same lowlevel management (libc malloc, refcount gc and pthread_rwlock) as the default smop objects. smop_lowlevel will use Continuation-Passing-Style for 15:56
..the DESTROY phase of the objects.
ruoso keeps getting happier and happier on how things are fitting together in SMOP 16:00
CPS for DESTROYALL made me smile :)
16:01 IllvilJa joined 16:02 cognominal_ left
[particle] me too :) 16:03
ruoso feels that he may be able to learn lisp now ;) 16:04
[particle] sure, while porting it to your new shiny vm :)
ruoso heh
16:10 meppuru left 16:11 meppuru joined 16:23 cognominal_ joined 16:28 cognominal__ left 16:29 cognominal__ joined 16:30 cognominal_ left 16:31 devogon left 16:34 pmurias joined 16:35 devogon joined, lisppaste3 left 16:43 lisppaste3 joined, Psyche^ joined 16:45 rindolf left 16:46 meppuru left 16:48 meppuru joined
pugs_svn r19433 | ruoso++ | [smop] moving src to old_src, in order to have a fresh start... 16:51
16:52 Ashizawa joined 17:00 ahmadz joined, Ashizawa left, Patterner left, Psyche^ is now known as Patterner, ahmadz left 17:01 mncharity joined 17:07 masak left 17:08 barney joined 17:10 dmaster left
mncharity I'm going to attempt to quickly create a ruby-based backend for kp6, in the hope of its giving us a bootstrapped kp6 which is usably fast. Basically by using ruby oo directly, rather than the p5 backend's much heavier approach. Your questions, comments, and assistance would be most welcome. 17:10
pugs_svn r19434 | ruoso++ | [smop] Starting to port YAP6__CORE__Value* to SMOP__Object*, lowlevel management ported... tests missing...
lambdabot mncharity: You have 2 new messages. '/msg lambdabot @messages' to read them.
ruoso mncharity, I wouldn't expect to be able to implement Perl 6 semantics on ruby oo 17:11
avar He can probably use ruby dispatch, no? 17:13
17:13 TJCRI joined
mncharity ruoso: is there some specific aspect you expect to be problematic? it's my hope that it might be 'good enough' for the bootstrapped kp6, and then for supporting the next kp6 task of working on the grammar. no? 17:13
avar mncharity: Just implement add_method and the rest of the MOP early:) 17:14
mncharity lol
ruoso avar, yeah... and end up with another runtime on top of ruby's runtime
just like kp6 does
does ruby support prototype objects? or anon-classes? 17:15
17:15 rdice joined
ruoso doing it without anon-classes will be very hard 17:15
TimToady you get an anon-class in Ruby every time you do a mixin
though I don't know if there's a way to declare one from scratch 17:16
pmurias multi-inheritance? 17:17
avar yes
pmurias mncharity: why do you prefare ruby to perl5?
mncharity an anon-class is automagically created when you do something which requires it. like some_object.instance_eval("def new_method()...end") 17:18
pmurias * prefere
argh, prefer
mncharity no multiple inheritance unfortunately, but there is enough introspection to fake it dynamically at runtime (eg, when a method gets added, scurry around adding it to derived classes as needed) 17:19
ruoso today really believes that any attempt to implement the Perl6 object system in some non-p6-oriented already existing object system will end up with too much emulation and probably being as slow as kp6
mncharity an alternate approach is there's a hack to be able to mixin classes rather than modules, but it's a reach-down-into-the-C and noone-really-uses-it-in-production kludge. 17:20
pmurias ruoso: if you do caching you pay the price only when you add a method
mncharity ruoso: so re, does ruby support prototype objects? or anon-classes? yes
ruoso I mean... I'm really not stopping you from doing it, but what I'm saying is that from what I've seen so far, you'll end up building a very complex emulation at some point that will give you very poor performance... 17:22
like, do ruby support continuations and coroutines? 17:23
mncharity re MOP and runtime, I was thinking of doing one level of indirection to handle namespaces - eg, method c_foo() returns the &foo Code object. Similarly for methods, etc. ruby oo is faster than p5 oo, so it's not much of a hit.
ruoso multi dispatch?
lazy evaluation of context?
pmurias ruoso: ruby does continuations
(even GNU C does them ;) 17:24
mncharity one might be able to take the MOP approach, and that's something to explore, but the other I know works and gives acceptable performance (from redsix), and I'm afraid I don't really understand the mop yet, so... something for version 2. :)
re why ruby instead of p5, ruby oo is faster than p5 oo, and I hope close enough to p6 oo to allow it to be used more or less directly, rather than p5's using it to implement an additional layer. 17:26
ruoso mncharity, as en exercise, take some codes from the kp6 tests 17:27
and try to figure out which ruby code would execute it
but without cheating differently for each test
if you cheat, the cheat must be there for every case
mncharity re multi dispatch, no, there are libraries, but not quite the right thing, but they are small, because the dynamic flavor of ruby makes it easy to implement. my feeling is the risk there is low. i'm not sure kp6 even needs multi to bootstrap? nor for grammar. but it would be nice to have for the prelude. 17:28
[particle] sounds like test-driven development to me
ruoso [particle], I mean, exercising the code before trying to write a full kp6 backend 17:29
mncharity not sure if kp6 bootstrap uses multiple inheritance either.
ruoso s/the code/the ruby code/
mncharity, does ruby have roles? if not, you must do it with MI...
mncharity re lazy, they're libraries. not sure how critical for kp6 bootstrap. ruby continuations, while my fuzzy impression is they are not up to smalltalk/scheme standards, are real continuations, not exceptions, like C's. 17:30
(it would be very very nifty if gnu c did continuations... and there are (or have been) spagetti stack hacks using it... but nothing very widely used... no?) 17:32
17:33 cognominal__ left
mncharity ruoso: redsix used the approach described, and was passing... some not large but non-trivial percent of the pugs t/ tests. 17:33
17:33 cognominal_ joined
ruoso well, I'm just playing devil's advocate here 17:34
mncharity so the project risks don't seem all that great, given the limited objectives of fast bootstrapped kp6, and supporting just the next step using it (grammars).
ruoso: very much appreciated :) 17:35
17:35 skids joined
mncharity re risks... redsix didn't do signature/capture. so getting enough of them for kp6, both in development pain and performance impact, seems a biggy. 17:36
ruoso mncharity, one thing that might help would be to bootstrap mp6 in ruby before...
as a great part of kp6 is compiled by mp6 17:37
pmurias ruoso: i don't think that would help
ruoso I think if you're planning to bootstrap kp6 it will...
mncharity ruoso: ooo, please go on. my understanding of mp6 is minimal. what would doing that buy?
pmurias s/would help/be a good idea/ 17:38
ruoso the kp6 grammar is compiled by mp6, at least a big part of it...
avar 1/w 25
ruoso mncharity, and also, mp6 doesn't implement a runtime on top of p5 as kp6 does... which is closer to what you want 17:39
pmurias ruoso: kp6 can also compile it
ruoso pmurias, yeah... but it is still compatible with mp6... 17:40
and if mncharity is planning to use the ruby runtime as is, mp6 is closer
while kp6 enforces the "kp6" runtime 17:41
pmurias but he will need to port it over to kp6 for the compiler to bootstraped
* bootstrap
mncharity i'm not sure the closeness is an issue. kp6 provides an ast, and the backend-specific emitter can do what it pleases. though it may have to add an ast munging pass if it needs any non-local information which can't be gathered as part of the emit. 17:42
pmurias mp6 is less pleasant to work on 17:43
mncharity re 'kp6 can also compile it', hmm, there's a point. so we know mp6 can compile the grammar, because it gets used all the time for that, yes? are we sure kp6 can compile its grammar?
pmurias the bootstraped version sort of parsed stuff 17:45
mncharity "sort of"?
pmurias mncharity: there was one bug
in the bootstraped parser 17:46
ruoso pmurias, it doesn't seem to be compiling right now
or the makefile is broken
pmurias mncharity: do you know how to translate := into ruby 17:48
?
mncharity are mp6's requirements from a backend a subset of kp6's? wrt supported p6 language features
17:48 TJCRI left
pmurias mncharity: yes 17:49
ruoso pmurias, kp6-kp6 seems to be completely broken right now
it doesn't even starts compiling anything
pmurias mncharity: but a mp6 ruby backend won't give us anything
ruoso: perl Makefile.PL --target=KP6-BOOT? 17:51
ruoso ah... ok... I was trying KP6-KP6
as the Makefile.PL says
mncharity re :=, maybe = (s_x = whatever vs s_x.assign(whatever)), maybe s_x.bind(whatever). not sure. don't remember if redsix's Cell (box? - Container-like-thing) did :=. 17:53
ok, redsix did = for := and ::=, s_x.assign(whatever) (actually (s_x)._(whatever)) for = 17:56
ruoso pmurias, perl script/kp6 -Cperl5rx --noperltidy -o compiled/perl5-kp6-kp6/lib/KindaPerl6/Ast.pm src/KindaPerl6/Ast.pm 17:58
this is failing
mncharity well, xS rather than s_x. new cleaner encoding for the backend, as being pretty for hand writing the code doesn't matter anymore.
pmurias mncharity: i use $lvalue = $rvalue for assignment in perl5v6 and bind_op("$lvalue",\$rvalue) (from Data::Bind) for :=
mncharity right, so that's identical. 17:59
re failing, :(
ok, so that's a risk I didn't take seriously enough. that bootstrapped kp6 might not be working at the moment. 18:01
pmurias mncharity: i don't think it's broken by anything serious 18:03
just minor bitrot
ruoso: it worked here 18:04
pugs_svn r19435 | pmurias++ | [perl5rx] fixed DISPATCH.new into ::DISPATCH
pmurias no,it's still compiling here :(
mncharity :) ^H :( 18:05
ruoso mm... in fact it worked now
mncharity ^H :)
ruoso I think I had something borked in my working dir 18:06
but if you try to recompile it it faile
anyway... I'm away from kp6 for too much time to understand it :) 18:07
mncharity re 'but if you try to recompile it it faile', so the 'perl script/kp6 -Cperl5rx --noperltidy -o compiled/perl5-kp6-kp6/lib/KindaPerl6/Ast.pm src/KindaPerl6/Ast.pm' runs, but the resulting compiled Ast.pm breaks kp6? 18:08
ruoso no.... I've tried cleaning the kp6-kp6 files and calling make again
it failed somewhere else
but it seems like a Makefile issue 18:09
pmurias ruoso: doing make forcerecompile;make 18:10
mncharity: i think someone fill will have fixed when you have the backend complete enough 18:11
ruoso pmurias, I think the makefile depends on files that are in the compiled dir
i mean
I understand that kp6-kp6 depends on the kp6-mp6 files for the bootstrap
but if I remove the compiled/ ... kp6-kp6... it should rebuild correctly 18:12
mncharity hmm, ok. so kp6-on-mp6 can compile kp6, and the result is known to run small bits of code. has the result done more? compiled any of the kp6 files? passed the kp6 test suite?
re 'someone will have fixed', right. good point.
ruoso hmmm make test with target kp6-boot is a noop 18:13
pmurias ruoso: the bug wrong parsing of my broke almost every test
18:16 ispy_ left, cognominal_ left
mncharity oky. well, doing much of a ruby backend seems like it would only take a day or two. if not, something unexpected is going on, the finding of which could be worthwhile in itself. so I'm still inclined to make it this weekend's project. and if it turns out kp6 has bootstrap issues, finding them could be useful too. and no doubt any will get resolved. no? 18:28
s/no?/sound plausible?/ 18:29
pmurias yes
ruoso mncharity, one thing I know for sure, bootrapping exercises always fixes a lot of bugs ;) so, yes, it's a very usefull thing 18:30
mncharity re 'bootrapping exercises always fixes a lot of bugs', sigh, right. :) 18:31
ok, many thanks for all the help bashing on the idea.
it's appreciated. 18:32
TimToady It's particularly useful if you discover missing tests
18:32 meppuru left
ruoso oh yeah... I probably wrote like 10 or 15 new test cases when bootstrapping kp6 18:33
as I like to say about TTD
TDD
a bug report is only successfull if it includes a test case reproducing the bug
18:35 meppuru joined
mncharity re missing tests, ah, ok. (wistful chant "don't hit any kp6 bugs, don't hit any..."). re successful, modulo a quibble vis heisenbugs, understood. 18:37
18:40 jferrero left
mncharity I'm hoping to simply be able to do a ruby version of Emit/Perl5.pm. and otherwise not reach into kp6, or do anything different wrt kp6 than the existing p5 backend does. effort/risk would seem to shoot up dramatically if that proves not to be the case. 18:42
hmm, that's a good clarification of objectives. a new, fast backend, no less capable than the existing p5 backend. if it turns out that's not sufficient to fully bootstrap, well, that's a separate project. 18:44
with quite different skill requirements, flavor, etc. 18:45
18:47 ispy_ joined
skids wonders if it is his brain broken or Proxy accessors, they return <obj:Proxy> rather than call FETCH 19:01
pugs_svn r19436 | ruoso++ | [smop] Added a goto method to the stack. It will be used to implement Continuation-Passing-Style
19:04 iblechbot joined 19:10 Limbic_Region joined, __Ace__ joined 19:19 cmarcelo left 19:31 buubot left 19:32 buubot joined 19:36 DarkWolf84 joined 19:37 rdice left 19:39 rdice joined 19:42 Psyche^ joined 19:43 jisom joined 19:45 alc left 19:47 rdice left
ruoso home & 19:57
19:58 Patterner left, Psyche^ is now known as Patterner 20:00 cmarcelo joined 20:14 ispy_ left 20:16 ruoso left, jisom left 20:18 riffraff joined 20:19 snearch joined 20:22 ispy_ joined 20:37 rlb3 left 20:38 thoughtpolice joined 20:43 barney left 20:46 snearch left 20:51 Aankhen`` left, iblechbot_ joined 20:53 araujo left 21:05 iblechbot left 21:08 TJCRI joined 21:11 lunatico joined 21:31 riffraff left 21:49 nipra_ left, japhb left 21:52 Auzon joined 22:02 ispy_ left 22:04 ashleyb joined 22:07 jhorwitz left 22:17 cognominal_ joined 22:21 japhb joined 22:31 cmarcelo left 22:56 pmurias left 23:03 alester left, iblechbot_ left 23:10 thoughtpolice left 23:17 c9s joined 23:27 TJCRI left 23:31 bwisti joined