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.
cj which implementation is most complete at this point? :) 00:16
is mp6 kp6+1?
oh, looks like kp6 is mp6+1 00:19
mncharity kp6>mp6, yes 00:20
re "probably means that mp6 is doing some things in Perl 5 that Perl 5 itself would do in C instead", for the 7x, indeed. 00:26
for why fib-from-mp6 is 100x faster than fib-from-kp6/fake-ruby, but kp6-from-mp6/p5 doesn't seem screamingly fast... perhaps its that the fib on mp6 doesn't use any oo, unlike kp6-from-mp6. 00:28
TimToady
.oO(confused)
00:30
meppl good night 00:34
mncharity re confused, mp6's running of fib is wizzy. mp6's running of kp6 itself is ok. kp6/p5's running of kp6 is said to be glacial. kp6/rb's running of fib is ok. kp6/p5's running of fib is rather slow. so the question is, if kp6/rb's fib is merely ok to mp6's fib wizziness, is there any hope for kp6/rb's kp6 being at least ok? let alone any hope of kp6/rb's kp6 being non-glacial? 01:03
The hope for kp6/rb's kp6 being at least ok, that is, running no slower than script/kp6 does at present, would have to lie in the mp6 performance on fib being non-representative of its overall performance on kp6. eg, but its not using any p5 oo. 01:06
mncharity The hope for kp6/rb's kp6 being non-glacial, that is, that a bootstrapped kp6 on a ruby backend is usable, which is the objective of this exercise, lies in the ruby runtime being closer in performance to the mp6 runtime than to the kp6/p5 runtime. 01:08
mncharity After fiddling briefly, it doesn't look like there are any low-hanging (easy and >=10x) optimizations on the calling convention. While the microbench doesn't confirm we can win, nor did it motivate any interesting optimizations, but at least it leaves winning as a possibility. given the existence proof of redsix, it still seems plausible. So I'm just going to putter ahead with the backend, and we'll see how it all falls out. 01:13
pugs_svn r19633 | putter++ | [kp6] ruby backend: wrapup fib() microbenchmark exercise. 01:35
r19633 | putter++ | Nice to have some numbers. Draft calling convention looks at least
r19633 | putter++ | vaguely plausible. Results were too uncertain to do a performance
r19633 | putter++ | projection. Moved code to a new docs/ruby_backend/Journal.txt.
r19633 | putter++ | Timing a mp6 fib() implemented as a method, rather than a sub, might
r19633 | putter++ | be interesting.
pugs_svn r19634 | lwall++ | Added t/spec/README 01:42
TimToady well, could be a good prototype for a Smalltalk backend in any case. :) 01:44
mncharity :)
pasteling "mncharity" at 24.62.4.94 pasted "kp6: perl Makefile.PL: missing compiled/perl5-kp6-mp6/lib/PAST.pm error" (22 lines, 983B) at sial.org/pbot/29989 01:52
mncharity bbl(?) & 01:54
btw, that pasted error was just an fyi. a "things didn't build cleanly out of the box" bug report. I suspect PAST.pm needs to be put under revision control, but am unsure. 01:56
TimToady I hope the question mark doesn't indicate you're planning to play Russian Roulette... 01:57
mncharity ^.^ no, just dinner 01:58
pugs_svn r19635 | tjp++ | Fixed typos in docs/Perl6/Overview.pod 01:59
TimToady I hope your survival of dinner has better odds than 5/6 02:00
Juerd initially read 5/6 as Perl 5 / Perl 6, and tried to figure out what it meant. 02:09
Then I realised the relevance to the russian roulette reference :)
TimToady freeway and dinner & # probably less than 5/6 odds on the freeway... 02:15
mncharity TimToady: ah, comprendo. I was thinking bbl *this evening*. :) 04:16
pmurias @tell mncharity the rules engine in mp6 is the part which makes kp6 on mp6 run slow 09:31
lambdabot Consider it noted.
ruoso realises that he needs the bool type very early... 12:23
ruoso also realises that native bool true and false can also be imortal values 12:27
masak ruoso: immortal? what does that mean in this context? 12:28
immutable?
ruoso nope... means not subject to garbage collection
masak ah
ruoso that means that I can count on them being there in the C level without any checking
masak yes
sounds reasonable
pugs_svn r19636 | ruoso++ | [smop] test/06_native_bool.c -- starting to declare the native bool type. 12:34
pugs_svn r19637 | ruoso++ | [smop] src/native_bool.c -- native bool lowlevel calls implemented. 12:52
r19638 | ruoso++ | [somp] $frame.has_next() implemented. 12:59
ruoso lunch & 13:05
obra seen fglock 13:34
@fglock, ping me when you're around
moritz_ no lambdabot, no joy!
zf8|away is away: zZzZz... 15:21
ruoso later & 15:58
TimToady fglock: obra was looking for you earlier 16:40
obra fglock: hello! 16:41
lambdabot obra: You have 1 new message. '/msg lambdabot @messages' to read it.
obra lambdabot, hello! ;)
fglock obra: sorry, I'm fixing something here 17:03
obra fglock: no worries 17:05
ping when you're free
rhr_ how does a p6 pragmatic module process the arglist passed to use? e.g. use nf 'c'; doesn't want to import a sub named c... 17:09
TimToady it's just a Capture, like any other arglist 17:10
TimToady and can be bound to a Signature, or dispatched over multiple signatures 17:11
we haven't actually specified the export mechanism in detail, only the tag declarations
but probably something like "sub EXPORTER (*@_, *%_)" would be typical, give or take 17:12
rhr_ OK, I'll use that for now, thanks 17:13
TimToady so it would just be the standard exporter that interprets 'c' as a name and puts it into COMPILING::
zf8 is back (gone 02:12:18) 17:34
pugs_svn r19639 | lwall++ | Clarification suggested by jgottman++ 18:17
pugs_svn r19640 | ruoso++ | [smop] SMOP__SLIME__Frame first implementation almost ready... 19:39
r19641 | ruoso++ | [smop] small fix in SMOP__SLIME__Frame 19:40
ruoso anyone wondering how a low-level SMOP implementation looks like can have a shiny example at src/smop_slime_frame.c 19:44
pugs_svn r19642 | lwall++ | [fudge] implement #?DOES 20:01
r19642 | lwall++ | [fudge] : now optional
wolverian fudge? :o
pugs_svn r19643 | putter++ | [kp6] compiled/perl5-kp6-mp6/lib/PAST.pm: added to svn. 20:18
r19643 | putter++ | perl Makefile.PL complains about it's absence, and make kp6_mp6 creates it.
r19644 | putter++ | [kp6] compiled/perl5-kp6-mp6/lib/Test.pm: sync - it was out of date. 20:19
pugs_svn r19645 | putter++ | [kp6] Emit/Ruby.pm: first cut at emitting a new calling convention for subs. 20:20
[particle2 alester: TimToady++ recently committed t/spec/README, which has good info on the perl 6 test suite. i suggest a perlbuzz article.
alester [particle]: Go on. 20:21
[particle] he basically wrote the journal post i've been off-and-on playing with 20:22
(in that README)
you want me to write up a paragraph about it, with a link, and email it to you?
pugs_svn r19646 | lwall++ | [fudge] Didn't do #?DOES on subs right 20:23
pugs_svn r19647 | lwall++ | [fudge] Clarify meaning of statement in README 20:26
pugs_svn r19648 | putter++ | [kp6] docs/ruby_backend.txt: update calling convention and todo. 20:36
pugs_svn r19649 | lwall++ | [fudge] more sub counting tweaks 20:58
r19649 | lwall++ | *.t removed colon from #? lines
TimToady @tell cosimo you don't have to use colons any more on #?pugs 21:00
lambdabot Consider it noted.
mncharity would you believe f(a\n ,b) is a ruby parse error? ie, comma at beginning of line, rather than end, even inside parens. sigh.
pmurias :( 21:01
pmurias mncharity: in order to have good kp6-on-ruby performance you might be eventualy forced to write a regex engine which emits ruby directly (instead of using Token) 21:05
mncharity the pragmatics school of language design. examples: bison can't handle it, so language feature x can't spelled in the obvious way. we don't have an extra flag bit available, so no object other than nil/false can evaluate as false in an if statement. sigh. the shoemaker has a sideline in stained glass, and leaves glass shards all over the floor. 21:06
re regex, right. it was thinking perl5rx backend mixin might have to be translated. rubyrx. any thoughts? 21:09
(i'm unfamiliar with Token)
pmurias mncharity: Token is a implementation agnostic regex engine (it translates perl6 rules to imperative perl6 code) 21:17
pmurias mncharity: so you can use it untill you need the speedup 21:17
mncharity great. thanks. 21:19
pmurias is it possible to discover what side-effects an execution of a ruby block had?
(which variables where modified)
mncharity ponders... 21:22
the short answer is yes
a variable, $x, is just a container. s_x = Scalar.new; s_x._(3); 21:23
so the Scalar could do logging. but at present, that _() is a method on containers, so doing something like a mop which permitted say lexically overriding assignment with something that say()ed "hey! there was an assignment!" would require compiler cooperation. 21:25
what's the objective?
moritz_ BEGIN blocks, I guess 21:26
mncharity ah, ok
pmurias mncharity: i think it is possible to do that with a visitor (so no need to worry about this now) 21:29
mncharity the right thing is perhaps to notice at compile time whether infix:= has been overridden, and emit an actual call to it. currently the kp6 emitter doesn't seem to pass along a bucket of state, so one might have to do a Visitor to spread around the info. 21:31
pmurias mncharity: not sure ;) 21:34
mncharity bbl 21:38
Lorn 12 21:49
meppl good night 22:44