svn switch --relocate svn.openfoundry.org/pugs svn.pugscode.org/pugs/ | run.pugscode.org | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com
Set by avar on 16 November 2006.
avar hehe 00:00
cmarcelo allbery_b: hmm, Parser.hs:1363 has the only relevant occurence of '->"'... 00:02
putter ok, I tweaked the Implementation section en.wikipedia.org/wiki/Perl_6#Implementations Comments welcome. 00:04
re MO, thanks
00:07 Psyche^ joined, Psyche^ is now known as Patterner
cmarcelo allbery_b: Parsec defines: "symbol = lexeme . string" and "lexeme p = do{ x <- p; whiteSpace; return x }". in the whiteSpace trick, aren't we "losing" something ("return x" on lexeme)...? 00:09
allbery_b no, lexeme returns a value in the RuleParser monad already 00:12
so it doesn't need to be lifted into the monad with "return"
avar meh:) 00:13
I'm beginning to think it'll never get released:)
putter: Isn't the section on pugs a bit misleading? You'd think from reading it that the pugs/js/perl5/pbc backends all worked equivalently 00:14
cmarcelo allbery_b: I don't get it. We completely lose the result of "string" action (considering the fix).. if not, symbol could be defined just as string >> whiteSpace... 00:15
allbery_b meh. need some way to fail the parse on "->"
we're not using parsec's symbol. see Pugs/Lexer.hs 00:16
allbery_b has reread the above and realized we're not talking about the same thing
cmarcelo ops.
putter avar: agreed. feel free to update. :) I mainly just wanted to get the funding line in... 00:19
let's see, what might it say instead...?
cmarcelo allbery_b: well, P/Lexer.hs' symbol is different but the same essence: rv <- string s (...) whiteSpace (...) return rv.
00:20 Aankh|Clone joined
avar putter: if the pbc backend worked 100% for instance we'd probably already have a p6-alpha? 00:20
or maybe not
allbery_b okay, and? we're not invoking symbol, we're invoking string (so trailing whitespace remains) and then cheching what follows
we *want* whiteSpace to be eaten after that 00:21
putter the js backend is complete up to not handling objects because the existing(?) AST does not support them.
the p5 backend is dead I think. yes?
allbery_b not last I heard
mp6 and kp6 both have p5 emitters 00:22
avar putter: not handling objects is a pretty big limitation in p6:)
putter well, PIL-Run is dead. do we have anything else which actually... right, but do those take pugs ast's?
my impression is mp/kp6 are standalone.
allbery_b I couldn't tell you about anything beyond that 00:23
allbery_b thinks he may have pointies fixed
putter thus while there have been p5 and pbc backends in the past, the pbc was always a "look, neat!" rather than passing lots of tests, and the p5 is dead.
avar How is parrot on being able to run perl6 anyway, theoretically 00:24
putter I've not idea.
s/not/no
cmarcelo allbery_b: could you paste it? 00:25
allbery_b there had been a similar error to the failed test during building the js prelude, but I didnt think anythiong of it until it didn't happen this time
lemme get the test suite past the statements thing to verify first
(running now) 00:26
cmarcelo k
putter avar: ok, I changed the compiled line to past tense. "has compiled to..."
any other thoughts? 00:27
pasteling "allbery_b" at 66.93.61.215 pasted "possible fix for pointy blocks?" (6 lines, 283B) at sial.org/pbot/22395
allbery_b test hasn't reached there yet though
cmarcelo allbery_b: re symbol: now I get. the return value wasn't being used anyway.. 00:28
allbery_b my assumption is that if the parse as expr fails it retris as a pointy block, so we need to catch and reject pointy for that to work 00:29
avar tt/w 5
00:30 nekokak joined
cmarcelo allbery_b: in your paste you're missing the whiteSpace, don't? 00:32
allbery_b statement_control passes 00:33
*sigh* that was what I was asking about before. *what* whiteSpace?
pasteling "cmarcelo" at 200.232.237.179 pasted "my version with whiteSpace" (13 lines, 518B) at sial.org/pbot/22396 00:34
00:34 neonse left
cmarcelo (maybe useful: use "./pugs -Iblib6/lib t/blocks/statement_control.t" when need to test just a file..) 00:36
allbery_b hm, okay, that makese sense
00:37 b00t joined, Aankh|Clone is now known as Aankhen`` 00:38 Psyche^ joined
cmarcelo putter: you mentioned two wikis. one is rakudo.org/perl6, where is the other? 00:38
00:40 Psyche^ is now known as Patterner
putter pugs.kwiki.org/ 00:40
lambdabot Title: HomePage - Pugs - A Perl 6 Implementation 00:41
putter 209.85.165.104/search?q=cache:YrgzW...k&cd=1
lambdabot tinyurl.com/y3fxkd
00:43 sonorous joined
cmarcelo putter: hmm.. "TASK: get pugs.kwiki.org redirects to new wiki at rakudo.org" ? 00:44
putter edit the page so google no longer picks it up for p6? i don't know how enthused the kwiki folks would be to do a redirect to a different engine. 00:49
it might be worth creating a wiki.pugs.... alias so we can shift easily in future.
cmarcelo right.. 00:52
00:59 nipra joined
putter err, what is a short one line description of MO? 01:01
putter updates the draft project graph with the 6.NNN milestones...
www.vendian.org/mncharity/Temporary...leteme.png updated. Comments encouraged. 01:12
01:12 nipotaway is now known as nipotan 01:13 dduncan joined
putter Graph updated. Comments encouraged. 01:17
cmarcelo putter: nothingmuch.woobling.org/MO/lib/MO/Overview.pod and r14664 commit log message maybe helpful...
putter reading...
ah, the MOP 01:18
01:20 thestarslookdown joined
putter updated 01:21
01:22 weinig|bbl is now known as weinig
putter I wonder if 6.28 (classes and objects) is to have a prelude-ified object space (rather than things hardcoded in hs) 01:23
allbery_b wonders if *that* bug was there before he started, since he didn't build the svn up'd pugs before hacking on it 01:26
t/builtins/control_flow/die.t infinite loop
01:27 sonorous joined
allbery_b on or around test 4 01:27
okay, that's not my fault; test 4 is die() to break recursion. it seems to be failing the wrong way... :/ 01:29
01:30 Aankhen`` joined, spoop joined
cmarcelo putter: I know about moving stuff from "main" to objects (chop() being now Str::chop() in the class Str). Not sure if moving this away from Hs is the case.. in src/MO/si.hs we are experimenting exactly this embedding some of this functions into the proper classes. 01:31
(nice graph btw) 01:32
allbery_b: here it's blocking on this test too.. 01:33
putter so maybe "unflatten primitive names" 01:34
re nice, thanks :) 01:35
www.vendian.org/mncharity/Temporary...leteme.png updated. 01:36
pasteling "cmarcelo" at 200.232.237.179 pasted "diff between pugs -CParse-YAML of t/b/c_f/die.t test without the fix (file b) and with the fix (file a)" (127 lines, 3K) at sial.org/pbot/22398 02:03
cmarcelo allbery_b: you may want to take a look at my last paste..
allbery_b yak 02:05
02:05 ozo_ joined
allbery_b and on top of it I just broke my irc client. brb 02:05
02:05 allbery_b left 02:06 allbery_b joined
allbery_b sighs 02:06
whatever you said after pointing me ot that paste came up as blank lines :(
cmarcelo sial.org/pbot/22398
lambdabot Title: Paste #22398 from "cmarcelo" at 200.232.237.179
cmarcelo with the fix, my $b = 1; --$b, gives wrong result. that explains the infinite loop.. 02:07
allbery_b okay, so somehow all sorts of things broke that shouldn't have. ugh. 02:09
putter hmm, anyone know the state of v6-alpha? is it being smoked? 02:10
apparently not (smoke)
allbery_b reverts change locally and wonders if he'll ever understand the parser well enough to know how *that* happened 02:11
cmarcelo wasn't thinking that allbery_b would give up... :-|
allbery_b already did once :/
putter lambdabot: ?tell fglock what is the state of v6-alpha? long ago it was blocked on... data::bind was it? now? 02:12
lambdabot Consider it noted.
allbery_b basically I think I need to understand far more about what is going n inside the parser befpore tryingt o do this. as far as I can see, it shouldn't break either autoincrement or pointy blocks... yet it does
I could probably hack around aitodecrement like I did pointies, but without knowing *why* those special cases are needed it'll just come back to bite us again some other way later 02:13
so, revert and try to comprehend the parser before trying again 02:14
cmarcelo ok.. 02:15
allbery_b this is far too much like what happened to me last time when apparently unrelated things broke when I tried to fix it. 02:17
at least time they look related...
putter good night & 02:18
02:21 Alias__ joined, lyokato joined 02:28 mako132_ joined
cmarcelo file operators (-f, etc) should have higher precedence than prefix -- and ++? 02:39
allbery_b doesn't think so 02:42
I think it's more a matter of what order things are being handed to the parser in, actually 02:43
02:43 dmq joined
allbery_b hm, also that some of that special casing in "symbol" was insuring correct parses for e.g. "--" and "->" (but breaking "- f"), and switching to "string" fixed the latter at the epxense of the former 02:44
maybe we just need a variant of symbol without the whiteSpace
or something
I still haven't quite grokked the fullness of "symbol"
02:52 weinig is now known as weinig|zZz 02:53 Alias__ joined
cmarcelo allbery_b: I see.. I just think that since precedence table indicates that it should try first "--", it would use symbol, because only "-" uses string.. (I'm trying to put some traces to see what's happening).. 02:56
02:56 Psyche^ joined, Psyche^ is now known as Patterner 02:57 puddingpimp_work joined
allbery_b I'm not sure symbol recognition necessarily is done by precedence. note for example that "->" isn't involved in precedence at all 02:57
(not an operator, just part of pointy block syntax)
cmarcelo right..
allbery_b it looks to me like parsing is mostly ad hoc, with the precedence table having some control but not necessarily complete, and the oddities are hacked around with all the special cases in "symbol" 03:01
cmarcelo allbery_b: "->" case is there, but not "--".. 03:03
allbery_b no, it's trickier than that I think. still comes down to "--" had no business breaking, yet it did, therefore there's some parsing subtlety somewhere that's being missed 03:04
...or maybe it's a *lack* of subtlety given that eliminating whitespace effectively caused the parse falure
cmarcelo doing something like GHC Commentary (hackage.haskell.org/trac/ghc/wiki/Commentary) for Pugs would be a nice idea.. 03:08
lambdabot Title: Commentary - GHC - Trac
cmarcelo @tell putter suggestion: hackage.haskell.org/trac/ghc/wiki/Commentary => having something like this for pugs would be nice and "lower the bar" a little bit.. 03:10
lambdabot Consider it noted.
03:11 Alias___ joined 03:19 [M]erk joined
cmarcelo allbery_b: putting the case condition inside symbol (when people ask for "-" don't use whiteSpace) and taking out your pointy workaround passes filetest.t, statement_control.t and die.t 03:27
03:27 Psyche^ joined
allbery_b wonder what else breaks though, that might not be tested for --- hard to imagine that doesn't change some case involving plain "-" 03:35
allbery_b is becoming too tired to track this, slept poorly last night (and must try to sleep tonight) 03:36
03:37 Psyche^ is now known as Patterner
cmarcelo indeed, i'm doing 'make smoke' to check for some absurdity.. thanks for helping. 03:37
just for the record: "1 - 1" breaks this change to symbol.. :o) 03:42
03:46 takanori joined 03:47 ayrnieu joined 03:52 takanori joined 04:09 leed joined 04:17 Alias__ joined 04:35 nipra joined, stevan_ joined 04:40 spx2 joined 04:52 justatheory joined 05:08 justatheory_ joined 06:12 stevan__ joined 06:13 nipra joined 06:14 BooK joined 06:53 Aankhen`` joined 07:16 nipra joined 07:22 marmic joined 07:41 mj41 joined 08:01 thestarslookdown joined 08:10 lisppaste3 joined 08:46 iblechbot joined 09:21 jferrero joined 09:28 andara joined, scw joined 09:45 spx2 joined 09:58 ruoso joined 10:01 nipotan is now known as nipotaway 10:18 fglock joined
andara hi fglock 10:21
10:23 lambdabot joined
svnbot6 r15073 | fglock++ | kp6 - added docs/parrot.pod 10:24
fglock andara: hi 10:28
andara fglock: looks like I might be doing audrey's talk in Nice. Could I ask you a few things about p6-on-p6? 10:29
fglock andara: sure!
andara fglock: does you current work need the haskell frontend or is it based on the p6-on-p5? 10:31
fglock andara: mp6 is written in itself - it only depends on p5 as a 'vm' 10:34
and kp6 is written in mp6
andara fglock: but you need to boostrap it somehow, isn't it? 10:35
10:36 dduncan left
fglock yes, it was compiled with v6.pm in the first 3 weeks 10:37
but the other backends will be bootstrapped with mp6 or kp6 10:38
andara fglock: OK, I see. So would you need another intermediary after kp6 to compile "full" p6?
fglock andara: I hope not - kp6 should provide enough semantics 10:40
andara fglock: ok, great. a last question: Suppose I'd like to use a Scheme VM or JVM instead of p5. What would I need to change? I presume it's the emitter, is that right? 10:41
fglock mp6 provides a syntax layer, so that you can use a common language in several VMs 10:43
kp6 covers the semantic mismatches
for example, the mp6-parrot implementation is currently incomplete, because 10:44
it is difficult to cover all the semantics needed by mp6
but you can provide that semantics in the desugaring layer (kp6) 10:45
for Scheme or JVM, 10:46
you can start by writing an emitter and a basic library
you can also provide additional implementation at the kp6 level, depending on the native features you would want to reuse 10:47
in other words,
you can also see it the other way: 10:48
start with full-p6, and provide desugarings until you get to the level supported by the vm
10:51 nipra joined
andara fglock: ok, that's quite clear now. thanks a lot! who should I ask about MOP? 10:52
fglock andara: re haskell - the haskell emitter for mp6 is planned, but currently nobody is working on it 10:53
MOP is nothingmuch and stevan's work
10:56 lambdabot joined
fglock putter: re v6.pm - it's currently frozen, it will be replaced by (6-on-6)-p5 10:58
nothingmuch fglock: stevan's 11:03
11:03 tennin joined
andara nothingmuch: do you know what the p6 MOP is based on (e.g. CLOS)? 11:06
11:06 jferrero joined
nothingmuch andara: it seems like it'll be based on MO 11:07
avar fglock: i.e. 6-on-6 that has a p5 emitter? 11:15
fglock avar: yes 11:16
avar tasty 11:17
11:18 penk joined 11:30 ruoso joined 11:36 nipra joined 11:59 buetow joined 12:00 nipra joined 12:08 chris2 joined 12:14 xinming joined 12:22 elmex joined 12:23 ProperNoun joined 12:27 fglock joined 12:39 iblechbot joined 12:42 elmex_ joined 12:48 xinming joined
svnbot6 r15074 | fglock++ | mp6-p5 - allow 'Apply' on variables 13:16
13:19 buetow joined 13:26 buetow joined
svnbot6 r15075 | fglock++ | kp6 - implemented 'my' and 'our' Sub/Apply desugaring (non-nested) 13:34
13:45 gnuvince joined 13:55 Limbic_Region joined
smash_ good afternoon 13:59
Limbic_Region salutations 14:01
svnbot6 r15076 | fglock++ | kp6 - added TODO, docs re: lexical subs 14:04
14:06 BooK_ joined
pasteling "evalbot_r15075" at 194.145.200.126 pasted "Pugs build failure" (375 lines, 20.9K) at sial.org/pbot/22411 14:10
14:12 kanru_ is now known as kanru 14:13 BooK__ joined 14:31 integral joined 14:41 Grrrr joined 14:46 ProperNoun joined 14:48 bonesss joined
fglock my vacations start in ten days... 14:48
kolibrie does that mean more or less p6 hacking? 14:51
fglock kolibrie: not sure yet - less internet connectivity, certainly 14:53
kolibrie generally does less computer stuff on vacation - more family time
14:54 b_jonas-2 joined
fglock kolibrie: I've got no plans - my initial plans was to go to Portugal for a month, but that didn't work 14:56
so I'll go to the beach nearby
kolibrie that could be fun
fglock I guess I'll get bored after a week - but after a few more days I usually get used to doing nothing 14:58
kolibrie that sounds pretty normal for me too 14:59
fglock btw, 15:01
YAPC::SA will be here in Porto Alegre, Brazil - apr 12-14 2007 15:02
everybody is invited
kolibrie didn't you just have a YAPC::SA in November?
fglock (but we've got no sponsors this time)
kolibrie oops, meeting & 15:03
fglock yes
Limbic_Region fglock - if you had it later in the year, I would be sure to come
Limbic_Region just used up all his vacation
fglock that's because we exchanged the dates for YAPC::Brasil/YAPC::SA 15:04
Limbic_Region may come anyway - even if there is no conference
fglock YAPC::Brasil will be near september 15:05
Limbic_Region hrmmm
fglock in Salvadr, Bahia - nice place
Salvador
Limbic_Region well, my wife is taking our daughter to the Philippines in March/April
since I can't go (no vacation), I will be taking a vacation later in the year by myself 15:06
I am currently thinking S. America (some place I have not been)
fglock Limbic_Region: en.wikipedia.org/wiki/Salvador%2C_Bahia 15:07
lambdabot Title: Salvador, Bahia - Wikipedia, the free encyclopedia
Limbic_Region yes, but how are the women? 15:08
>:_)
er
>:-)
fglock :) 15:09
Limbic_Region should not that he is the most faithful husband in the world if you exclude oggling women 15:11
fglock it depends on personal taste - people seem to like Porto Alegre best
Limbic_Region fortunately, my wife doesn't mind and often points out women for me to oggle
we seldom agree on what's beautiful though 15:12
her tastes are heavily influenced by her cultural background of the Philippines
um, but this is severely OT
s/not that/note that/ 15:14
on that note, TTFN
15:16 GabrielVieira2 is now known as GabrielVieira 15:29 Vex joined 15:30 nipra joined 15:35 b_jonas_ joined 15:36 vel joined 15:38 buetow joined
kolibrie my company has sponsored trips for me to YAPC::NA, but that's a big stretch for YAPC::SA, so I probably won't ask, at least not this year 15:44
fglock kolibrie: do you live in NA? 15:50
kolibrie yes, close to Washington, DC
15:53 xinming_ joined 15:56 penk joined
fglock hmm - I wonder if perl 6 has something that could emulate parrot ':outer' 15:59
masak I still find myself thinking about MMD 16:00
my problem with it is that I cannot visualise it
can someone create a problem -- not necessarily a realistic one -- where MMD would be needed?
then from than one could maybe dream up a favorite syntax and semantics 16:01
16:01 elmex joined 16:02 xinming_ joined
fglock masak: any place where you would be using if/elsif/else - except that with MMD it's more fine-grained subclassable 16:03
masak fglock: I'm reading use.perl.org/~chromatic/journal/32133 right now 16:04
lambdabot Title: Journal of chromatic (983)
masak they mention a version of MMD that would work like "a series of nested switch statements" as if that was something less than optimal 16:05
as if they wanted something more than that
what is the additional thing they're after?
16:12 weinig|zZz is now known as weinig|bbl 16:13 elmex joined
masak they seem to all agree on under-specifying the MMD semantics and leaving the edge cases to the programmer 16:13
sounds fine by me, who still don't understand the use of MMD
fglock masak: re additional thing - I didn't finish reading yet, but it seems to boil down to: having a 'set' of options, rather than an 'ordered set'; and making this optimizable 16:14
masak fglock: would the "ordered set" case correspond to the "series of nested switch statements" case, then? 16:16
fglock masak: yes 16:17
16:19 rhizo joined
masak these people are really smart 16:26
I hesitate to say that they are groping for an ideal that isn't there 16:27
so I'll settle with saying that I don't really see what they are trying to do
I'd be happy seeing an example
but if there isn't one yet, because no-one uses MMD today because it doesn't work in other languages, 16:28
maybe it really is a good idea not to try and spec MMD, and leave it as an exercise for the programmer
16:33 luqui joined
fglock masak: would you imagine a possible use of a switch statement inside a method 16:34
luqui fglock, Text::Balaned? (essentially, havy arg dwimmery) 16:35
fglock it's like MMD would let you refine some of the cases, using plain inheritance
masak fglock: sure. let's say I implement an atan2 function
luqui should stop jumping in conversations he has only seen one line of
masak then I would need to switch on all combinations of x>0, x<0, y>0 and y<0 16:36
fglock luqui: np - thanks :)
masak oh, and x==0 and y==0 thrown in also, of course 16:37
that, I would say, is a possible and legitimate use for a switch statement 16:38
fglock masak: ok - you would implement separate (multi)methods for each case
16:39 chris2 joined
fglock the advantages are: you can add more cases; you can redefine existing cases 16:39
masak hm
not sure I need add more cases in the atan2 case 16:40
it's fairly stable
and the switch feels easier
but maybe I'm just not used to the idea
kolibrie fglock: that is a big benefit in subclasses 16:44
so far, I've only really thought about readability 16:45
I only really started understanding multis when I looked at haskell 16:46
luqui ... which doesn't really have them
(well, type classes sortof do)
(but I think type classes are far too sane a way to do them for perl)
kolibrie well, you can define the same function multiple times with different arguments
luqui no you can't.... it's just a different syntax for a switch at the top level 16:47
kolibrie oh, well, that syntax helped me understand things, even if under the hood it's just a switch 16:48
luqui :-)
masak luqui: why does the fact that it can be understood as a switch at the top level disqualify it as an MMD?
luqui masak, it's not distributed 16:49
masak (note that I still don't think I grok MMD)
luqui you have to define all the cases right next to each other
masak luqui: I see
kolibrie oh really, I missed that
masak so MMD is like in Haskell, but (possibly) distributed? :)
luqui I.. guess so.. except haskell also prefers the one that was defined earlier, not the one that is most specific 16:50
so it's really not at all like mmd
(it side-steps the many problems one runs into when designing an mmd system)
masak luqui: couldn't preferring-the-earlier-definition just be considered a type of MMD strategy? 16:51
kolibrie only if they are all defined right next to each other
luqui yeah, but nobody would consider it a good one for a distributed system
kolibrie, exactly
masak sounds reasonable 16:54
so what _would_ be a good MMD strategy?
masak guesses that this is sort of the central question, but still...
luqui who knows..? I tried to define one a while ago, which got mostly adopted
until it started getting bloated with semicolons and other stuff whose benefit is not totally apparent to me 16:55
masak :)
luqui (but I haven't seen it hurt anything... yet)
masak just give it time...
as soon as the semantics can not fit inside the head of the programmer, there will be problems 16:56
luqui uh huh
masak MMD is a good candidate for such a non-fitting semantics 16:57
luqui I think that my scheme (I say "my" scheme, but in fact it is the most used scheme in academic literature) is the best possible one for the strategy we are taking
i.e. defining single methods with multiple signatures
but I think there's another angle which could be much, much better
so that is what cpan is for ;-) 16:58
masak luqui: yes.
MMD is a good idea, but nobody knows how it will look 16:59
we'll probably need 1e3 bad implementations before hitting gold
ten years from now, we'll find the perfect MMD implementation on CPAN
that's "distributed computing" for you :) 17:00
luqui heads off to write a program which will write mmd implementations so we can get past the 1e3 quickly
masak sorry, you can't fool statistics like that :)
CLOS has MMD, has anyone looked at that? 17:01
masak hasn't
luqui yeah
it is leftmost
widely regarded as "sucky"
masak oh, ok
:)
leftmost sounds simple though
why's it sucky?
luqui well, for one, you can't do a generic case 17:02
masak which means?
luqui if you define a multi on (Any, Any), it will get picked up if the left argument doesn't match
regardless of the right argument
masak ah, ok
luqui er... 17:03
that was a bad example
masak yes, that does sound wrong
I think I got the gist, though
luqui yeah, why should the left be more special than the right?
(see my bitch about semicolons ;-)
masak favoring the earlier arguments is wrong merely because there's no good reason to
however, 17:04
what if i define f(B, Any) and f(Any, B) and then call f(B, B)?
luqui ambiguous, no doubt
17:04 TimToady joined
masak how would a sane MMD handle it? 17:04
luqui as "ambiguous" yes 17:05
masak ok
luqui essentially every scheme we have looked at which is not leftmost calls that ambiguous
masak is there another good example which furthers thinking similarly?
luqui though that is one of the things that a really good mmd scheme would not die on
masak luqui: how would it not die?
luqui that is, if f(B, Any) and f(Any, B) have symmetrical implementations, then it wouldn't die
because it doesn't matter which one you call 17:06
masak you'd have to annotate the symmetry somehow
but yes, that'd be sweet
ok, another one: C extends B1 and B2 which both extend A, and I define f(B1) and f(B2) and then call f(C) 17:09
is that ambig too?
luqui yep
and that's the MI thing
masak yes
17:09 TimToady joined
masak I'd hate it if all MMD gave me was ambig all the time 17:09
luqui using multiple inheritance (or multiple role composition) you can make any set of multimethods ambiguous 17:10
masak I'd want a clear set of rules that I could apply so as not to end up with ambig calls
luqui provided that the multis were not already linearly ordered
masak so the clear rules would say something like: don't mix MMD and MI?
luqui perhaps... 17:11
if you ignore MI, you can detect all combinations which would be ambiguous
then if you define multis for those combinations you are guaranteed not to have ambiguous calls
again, in the absence of MI
MI really screws things up 17:12
masak so let's leave it out for now
luqui (but I don't think that's a reason to ban it; it just means you have to be careful with it)
masak 'course 17:13
it's Perl we're talking about
freedom under responsibility
dangerous and powerful things Can Be Mixed
(At Your Own Risk)
luqui but you might get something dangerously powerful
or powerfully dangerous 17:14
I suppose the first one is what you want
DAPTCBMAYOR
a little less pronouncable than TIMTOWTDI 17:15
masak that's ok; TIMTOWTPI :)
luqui dapticmayor (silent b) 17:16
17:17 lihaitao joined
masak ok, the way I see it, all examples of ambiguity I can think of either boil down to too-many-matches in the end, or no-exact-matches but one or more "almost matching" signatures, for some definition of "almost matching" 17:20
17:24 putter joined, elmex joined
masak I'd be ok with standard MMD giving up on both of these 17:25
17:26 mako132_ joined, bonesss joined
putter fglock: ping? 17:27
fglock putter: pong
putter hi fglock. I'd like to add p5 stuff to www.vendian.org/mncharity/Temporary...leteme.png 17:28
Do you have a chance to give me a brief?
fglock sure
putter audreyt once had a nice pyramid slide. how much of that is still valid? 17:29
fglock looking...
putter tries to find it too...
fglock it's still mostly valid for v6.pm 17:30
putter: pugs.blogs.com/photos/visiolization...stack.html
lambdabot Title: Visiolization: V6alphastack
fglock only re::override and autobox were not used
17:31 araujo joined, bernhard joined
putter ok. how far have things progressed? 17:31
i didn't see a v6-alpha smoke... 17:32
fglock when it got the Data::Bind problems, I started a plain p5 impl - but then, a plain p6 impl seemed more reasonable...
and mp6 was started - pugs.blogs.com/photos/visiolization...strap.html 17:33
lambdabot Title: Visiolization: Mp6bootstrap
fglock mp6 would compile both to p5 and haskell
putter looking...
ok, let's see. first approach. if D::B ceased to have problems, what then? 17:36
fglock then v6 devel would proceed, with some parts being replaced with p6 code 17:37
the "new" v6 is still in: misc/pX/Common/Pugs-Emitter-Perl6-Perl5-2
putter does mp6 use any of the v6a stack? 17:38
fglock mp6 replaces the pyramid with all-new mp6 code
it's implemented from scratch
putter so Moose won't be used for instance? 17:39
fglock no - the only cpan module is Scalar::Util
which is used to implement the Match object (for accessing the inside-out) 17:40
putter hmm. my fuzzy recollection was things like Data::Bind and PadWalker were there to provide efficient p5 implementation of primitives. can one really avoid them entirely? 17:41
fglock yes!
putter ok. :)
fglock this came from the experiments for v6-2 17:42
you can do some reasonably clean tricks
17:42 bonesss joined
putter ok, so wrapping up the old approach... 17:43
if DB was working, any idea how much of smoke would pass?
fglock maybe 10%
putter with the bottleneck being... PCP? 17:44
17:45 penk joined
putter tries to picture what the next step would have been had D::B worked... 17:45
fglock the next problem would be the container implementation, which was started in v6-2
putter tell me about v6-2?
fglock v6-2 had more compile-time context - it could tell the difference between interpolating and non-interpolating lists, for example 17:46
this was giving v6 a lot of failing tests 17:47
and v6-2 could generate more optimized code, when possible 17:48
putter so the things v6-2 needed and didnt finish were containers, ... and what else?
fglock the plan was to follow the pil-run development - lazy lists, junctions 17:49
putter ok. any questions about v6-1 or v6-2 that I should have asked but didnt? 17:50
fglock at that point, using cpan wasn't helping much - and the code was getting unmaintainable 17:51
it was getting too difficult to explain the software to new volunteers 17:52
that was near sep/2006, just before the Sao Paulo hackathon 17:53
I sketched mp6 on the plane to Sao Paulo, and audreyt helped me design a pugs-like AST 17:54
putter ok, www.vendian.org/mncharity/Temporary...leteme.png updated 17:55
look plausible?
(hmm. those nodes were supposed to be gray... oh) 17:56
fglock that's the big picture :) 17:57
putter :) 17:58
ok, mp6 (I keep wanting to type mp3:)
what's the "top level introductory paragraph"? 17:59
fglock mp6 is a bootstrapped ... mp6
putter "so it implements COBOL and..."? 18:00
fglock you can compile mp6 code using pugs, or v6.pm, or itself
it's a subset of perl6
putter v6.pm == v6-2? 18:01
fglock v6.pm is the normal CPAN version
putter v6-1? 18:02
fglock yes
putter can you characterize the subset included?
fglock it has binding with := - including deeper structure binding 18:04
simple OO
scalar/array/hash
subroutine signatures, with positional parameters only 18:05
class attributes
18:06 justatheory joined
fglock simple control structures 18:06
grammars, with 'token' only
tokens have 'return' blocks 18:07
that's it - it's a miniature perl6
putter ok. so mp6 is written in this subset. and compiles this subset. to some AST? 18:08
fglock .. to mp6-AST - and emits to p5/parrot/... 18:09
putter how does the mp6-AST compare with the pugs AST(s)?
fglock mp6-ast: svn.pugscode.org/pugs/v6/v6-MiniPer...l6-ast.pod
putter it looks quite similar in flavor, yes? 18:10
fglock I can't say, but mp6-AST was designed by audreyt
putter ok 18:11
fglock she intended to add mp6-to-haskell
18:11 ruoso joined
fglock so that we could reuse code 18:11
putter ah. 18:12
emitters exist for p5 and parrot?
fglock yes - PAST is under some development lately, and we may have C# some day 18:13
parrot can do 'hello, World!'
putter do the emitters cover the entire ast?
fglock no (but this can be fixed at the kp6 level) 18:14
putter ok.
what is the current coverage? 18:15
fglock p5 can bootstrap, so it's "finished"
parrot can't do class variables, and block-closures 18:16
there is an implementation of the Match class for parrot
18:16 stevan__ is now known as stevan
fglock which is compilable 18:16
PAST was just started, it doesn't work yet 18:17
ah, and there is mp6-MO 18:18
putter any idea how much of the ast gets exercised by compiling mp6? or by compiling whatever else it compiles?
fglock the compilation uses pretty much everything 18:19
mp6-MO can run small programs, but it can't bootstrap 18:20
putter ok, so what is mp6-MO?
fglock it's mp6 compiled into nothingmuch's meta-object library (MO) 18:21
putter hmm. ok, before going there... 18:22
18:23 ilogger2 joined
fglock there is a minimal runtime: svn.pugscode.org/pugs/v6/v6-MiniPer...Runtime.pm 18:24
lambdabot tinyurl.com/y2jyzb
fglock defines <space>, <digit>, newline, ... - primitives
putter ok, so mp6-source -> mp6-running-on-{pugs,p5} -> mp6-ast -> p5-emitter -> p5-code + minimal-runtime -> works 18:27
has it been smoked? 18:28
fglock no
putter any particular obstacle? 18:29
fglock it's meant as a tool for writing 6-on-6
it is meant to be rewritten, rather than extended 18:30
it would require a special test suite 18:31
because it would not pass any of the xisting tests 18:32
existing
putter writes down reminder to ask about progress on a yaml-based testing framework...
ok, so what is the motivation for mp6-MO? 18:33
fglock btw, there is a t/ under v6-MiniPerl6
18:33 mako132_ joined
fglock mp6-MO would implement 'full-OO' 18:33
with the same algorithms that pugs would use 18:34
putter so what bits are different between mp6 and mp6-MO? the emitter? an additional MO runtime? 18:35
fglock both - class/methods are implemented as a "macro" that expands into MO calls 18:36
MO calls are executed in p5 land
putter the rest of mp6 is unchanged in mp6-MO? 18:37
fglock yes, it's still the same grammar
putter is mp6-MO a fork of mp6? 18:38
fglock no, it was planned
as the next version of mp6 18:39
putter so mp6-MO == mp6-2?
fglock yes
putter how far has mp6-MO's oo support gotten? 18:40
fglock putter: ping? 18:42
18:42 mncharity joined 18:43 mncharity is now known as putter
putter sorry about that. checking log... 18:43
pong
fglock putter: MO is under development
putter is mp6-MO strictly more capable than mp6-1? 18:44
fglock well, it would be 18:45
if the semantics were right, the extra syntax could be added
putter I'm not sure I understand. can mp6-MO compile and run itself on p5? 18:46
fglock no - it can't run the compiler 18:47
it only works with small programs
18:47 autark_ joined
putter can mp6-MO compile and run mp6-1 on p5? 18:47
fglock mp6-MO must be run from the plain-mp6 compiler - it is not self hosting 18:48
s/run/compiled/
you can compile mp6-MO to perl5, but it won't run 18:50
instead, you need to compile with plain-mp6, and emit p5-MO - this way you can run small programs
putter mp6-MO can compile mp6-MO to p5? it wont run because...? runtime is incomplete? 18:51
fglock it takes too much ram, too much cpu, and it just dies in the end
putter ... the mp6-MO new runtime is currently too resource intensive to run mp6-MO? 18:53
if not for that (magic wizzy machine) would it work?
fglock putter: probably yes
putter so the mp6-MO development path goes from here to... what's next? 18:55
fglock kp6 18:56
putter ok, before we go there...
what did you mean by "if the semantics were right, the extra syntax could be added"?
fglock things like 'rule'
oops - role
putter so even with a wizzy machine, mp6-MO couldn't run mp6-MO or mp6-1 because there is some missing syntax support? 18:57
fglock I mean, mp6-MO would have the extra keywords added 18:58
putter mp6-MO is currently missing keywords needed to run mp6-MO and mp6-1? 18:59
fglock hmm - no, it reuses the mp6-1 grammar. It only misses the 'OO' words that define the "extra" semantics provided by MO 19:01
so running mp6-1 would be fine
putter so mp6-MO is written in a slightly larger p6 subset than mp6-1? and mp6-1 can handle this larger subset, but mp6-MO cannot? 19:03
fglock in other words, mp6-MO compiles to the "p5-MO" VM - which is an enlarged p5 VM 19:05
but the syntax is the same 19:06
putter I'm still unclear on why/whether mp6-MO can't self host. earlier it was said mp6-MO can be run by mp6-1. which implies mp6-MO is implemented in the same dialect as mp6-1. so I'm unclear where the syntax stuff comes in...? 19:10
fglock if mp6-MO worked (self hosted)
then the extra syntax would be added
putter ahhhhhh 19:11
lisppaste3 lumi pasted "Can't make test, got clue?" at paste.lisp.org/display/35417 19:12
putter if mp6-MO could self host, which it cannot (hypothesized to be strictly due to it's runtime/emitter?performance), then 19:13
the next development step would have been to add syntax to expose some of the new features which mp6-MO adds over mp6-1. yes?
fglock yes 19:14
putter woot :)
was it runtime or emitter performance, or both?
fglock runtime
putter ok... any additional thoughts on mp6-MO before moving on to kp6? 19:15
lumi: once upon a time, long ago, one sometimes needed to run "make" before "make test". other than that, no idea 19:17
is kp6 == err, "mp6-3"?
fglock the idea after mp6-MO is to make mp6 pluggable 19:18
19:19 CardinalNumber joined
lumi putter: Interesting theory.. but I've run make fast, and I can run individual tests with it 19:19
fglock we can still have MO as an alternate backend
putter "after mp6-MO" == kp6?
fglock no, mp6 is frozen
lumi (Er, with the ./pugs that was born)
fglock kp6 is a new architecture
putter mp6-1 and mp6-MO are frozen?
fglock mp6-MO is more frozen :) 19:20
mp6 is one of the backends that kp6 will support
putter mp6-1 is "finished" but not "frozen", and mp6-MO is frozen?
hmm. what is kp6? 19:21
19:21 neonse joined
fglock kp6 can compile a bigger p6 subset into the "desugared p6" supported by mp6 19:22
kolibrie fglock: this is a very interesting history lesson about the past several months :)
putter: thanks for asking all the right questions
putter a rearchitecting of mp6-1?
fglock yes 19:23
mp6-1 uses controller scripts for the compilation workflow
kp6 makes it easier to add/take things from the workflow 19:24
such as AST transformations
putter does kp6 self host? 19:25
fglock self-hosting is not the primary goal - it currently compiles with mp6
putter kp6 runs on pugs as well as mp6-1-on-p5? 19:26
fglock I didn't try it on pugs, but it should work 19:27
putter the kp6 implementation is a massaged version of mp6-1? 19:28
fglock mp6 is like: parse->emit - all AST transformations are made at one of these phases 19:29
kp6 is like: parse->(run AST plugins) 19:30
a plugin can dump AST, emit code, rewrite subroutines...
19:31 buetow joined
fglock final-kp6 will have extra semantics 19:31
putter how does the performance of pugs and mp6-1 compare?
roughly 19:32
fglock the target is to be no more than 20% slower
putter and the current state? 19:33
fglock I've not benchmarked yet
the extra semantics will be: lexical subs and classes; metamodel interface; begin blocks; containers 19:34
putter handwaving - about the same? within 10x? within 100x?
fglock about the same
putter nifty
fglock at the expense of about 2x extra code, which is there just in case you need to call it 19:36
putter ok, so what is mp6-1's development state? bugfix only? still adding features? 19:37
fglock only adding/fixing backend stuff 19:38
putter "backend stuff"? p5 emitter?
fglock p5, parrot, past, ... 19:39
putter runtime?
fglock runtime, too - but only as-needed
putter ok, limiting it to p5, emitter? runtime? both?
s/it/the question/ 19:40
fglock there were minor fixes to mp6 even today
putter bugfixes. is the p5 emitter and runtime being added to?
fglock yes - for example, the ast for "$var()" was not supported until today 19:42
putter I'm trying to get a feel for whether mp6-1 on p5 is "finished"/feature complete/bugfix only, or if it is continuing to be extended as kp6 say discovers new needs...
ah, ok
19:42 mako132_ joined
fglock but mp6 will not be extended with new features 19:43
putter "$var()" != "new feature"?
fglock it supported $var.() which is a method call
putter but... 19:44
but didn't support...X? 19:45
fglock it's kind of difficult to tell bugfixes from missing features... 19:46
putter :)
ok, let's see...
fglock in this case, reusing $var.() would possibly introduce bugs later
putter so mp6-MO entirely abandoned at this point? 19:47
fglock yes - it will come back as a kp6 plugin 19:48
putter and MO is being rethought to address its performance problems?
fglock yes, but MO is a separate project 19:49
kp6 will likely have several choices for OO
including Moose, for example
putter so the mp6-MO runtime is abandoned? and a fresh MO implementation will be attempted at some point? 19:50
fglock and native-perl, and native-parrot...
yes
putter why is mp6-1 being used to run kp6 rather than pugs? 19:51
fglock because guarantees that kp6 can support p5, and maybe parrot later 19:52
s/because /because this/
it should be kept bootstrappable 19:53
putter ok, so what is kp6 capable of now? 19:54
fglock the plugin system looks ok
currently there are 2 plugins written 19:55
ingy TimToady: ping
hi fglock 19:56
stevan heya ingy
fglock there are several p5/mp6 prototypes, implementing the other ast transformations
ingy hi stevan!
fglock ingy: hi!
stevan putter: MO is very different from Moose
fglock putter: it's under implementation
ingy MO?
stevan ingy: it's nothingmuch's take on the meta-object stuff 19:57
more in line with the Haskell world
ingy OSE!
putter stevan: hi. ok. not being able to multitask like audreyt, I'll get back to that in a bit... ;) 19:58
how far is kp6 from being able to run mp6-1? how far from self hosting? 19:59
stevan putter: nothingmuch is the best one to discuss it with, all I can give is a rough overview
putter k 20:00
fglock putter: there is no point in self-hosting right now, because the extra code is just plain mp6 20:01
putter can kp6 run mp6? 20:02
fglock yes - it just adds extra semantics
putter so kp6 can currently run itself?
fglock such as lexical subroutines 20:03
yes
putter so kp6 is indeed currently self hosting (ie, capable of running itself). it just usually isn't currently run that way. yes? 20:04
fglock yes
putter and mp6-1 is being kept around because... it's easier to tweak than a snapshot of kp6? 20:05
fglock mp6 will be discarded at some point - it's just not a priority right now 20:06
putter how does kp6 compare to mp6-1 performance? 20:08
fglock and kp6 will be discarded after 6-on-6 is out
TimToady ingy: pong
putter (about the same, withing 2x, within 10x, etc)
fglock native oo being faster than full-mop 20:09
the performance will depend on the emulation level
currently within 2x
I hope it will stay there
putter so current kp6 on p5 is within 2x of mp6-1 on p5 and of pugs? 20:10
fglock I don't know about pugs
this would require writing very specific benchmarks 20:11
putter so mp6-1 is with Nx of pugs for some small integer factor N, and kp6 is within 2N? or somesuch? 20:12
fglock maybe trying to compile something with kp6 under pugs...
yes
putter ok, let's see... 20:13
oh, yes. so what is 6-on-6?
fglock mp6 is likely faster than pugs - it generates very plain p5
6-on-6 is the next compiler rewrite after kp6 20:14
(mp6 is also 6-on-6, kind of)
putter at what point does work on kp6 shift to 6-on-6? 20:15
fglock 6-on-6 allow using OO for writing the compiler itself - that's the main difference
as soon as kp6 has reasonable support for OO and containers 20:16
putter so mp6-1 and kp6 don't use oo for the compiler?
fglock not really - they use "native" OO
rather than "perl6 OO" 20:17
20:17 hexmode joined
putter so 6-on-6 would have been built on mp6-MO if its performance had been acceptable? 20:17
fglock hmm - I've got to go
putter: yes 20:18
putter ah, ok
thanks for your afternoon :)
fglock thank you :)
putter some random left over questions... 20:20
the mp6-ast doesn't look like it supports "full oo". much oo at all actually. is there a mp6-ast-oo analogous to the pugs ast-withj-oo work? 20:22
what is the state of pugs ast-with-oo? 20:23
how did mp6-MO deal with absence of oo ast? typenames? 20:24
ah. its no fun to do this kind of thing blind. :/
ingy hi TimToady 20:25
putter hey ingy
ingy hey there putter
TimToady howdy all
ingy TimToady: I will try to msg you again...
TimToady: did you get my msg of "yo"? 20:27
putter howdy TT. I was wondering earlier what variables exist whose frobbing would increase the rate at which spec is generated. Would a duplicate Larry or three do it? ramped 20:28
up pugs development? what other constraints are around?
need to clone all(@Larry) ? 20:29
have more audreyt or someone time asking questions/clarifications? 20:30
thoughts? (i need a node for the graph...;) 20:31
TimToady spec is mostly generated lazily on demand these days
putter so an effort to code, in say pugs p6 dialect, things like IO and events, might be userful in motivating spec 20:33
?
hmmm
steven: hey steven. how goes the big hairy smelly aggressive road hazard? 20:34
putter thinks only someone living in the arid mediterranean could love mooses... 20:36
;)
20:36 Limbic_Region joined
TimToady the IO and event models have probably been thunk about more (or at least differently) in the parrot world 20:37
but I think a lot of spec-demand is pent up waiting for 6on6 20:39
people writing various emitters for that will have to negotiate what's possible/efficient across many platforms
araujo hi there TimToady 20:40
TimToady hi
putter lambdabot: ?tell fglock did the Data::Bind people ever get a bug report? some kp6 plugin or 6o6 runtime might need it.
lambdabot Consider it noted.
araujo :-)
putter re IO/event... hmm. i wonder if one could get by with unrunnable p6-side class code, and attempts at backend runtime supports. as a way of decoupling them from 6o6 and emitters. 20:43
s/them/spec progress/
ah well. keep an eye on the critical path... 20:44
PerlJam putter: IMHO, the sooner we get to a place where people are using code (in what ever capacity) the better it is for the spec. :-)
putter indeed. I'll include both "graph edges". 20:46
since rewriting compiler cores seems to be the name of the game, does anyone have a favorite "it was just awesome" compiler architecture to steal for 6-on-6? 20:47
gaal invites everybody to live in the mediterranean (not all of it's arid you know) and share the love 20:49
putter re IO/Event, PIL2JS could be used to explore them now, though since pugs doesn't (maybe does now?) ast class defs, you would have to code the classes at both ends... 20:50
TimToady we're kinda hoping everyone will want to steal our architecture...
ingy gaal: I'm on my way 20:51
putter i suspect rev 1 will be a throwaway... if only because of the advantages of constraining vocabulary
TimToady besides most compiler architectures prematurely optimize for things P6 doesn't want to prematurely optimize for. 20:53
such as assuming the same language is being compiled throughout.
in fact, arguably the weekend angst over -f and friends is caused just by such assumptions. 20:54
P6 assumes only longest token within the current set of active grammatical categories. 20:55
so in a sense you have two or more different languages interleaved on the token level.
depending on what the parser is expecting at the moment.
PerlJam is *so* glad Moore's law is still in effect ;) 20:56
TimToady -f is a token when a term or prefix is expected.
it would not be a term where an infix is expected.
gaal ingy: whee!
ingy :P
gaal is trying to think which med city would be most appropriate for ingy 20:57
tlv's surely a candidate
stevan thinks ingy would make an excellent greek god
ingy oh yeah! 20:58
gaal doesn't know any greek perl monks
the one with the paradigmatically greek name doesn't live there
Limbic_Region gaal - perhaps tinymicros.com/pm/index.php?goto=BigMonkMap 20:59
lambdabot Title: Perl Monks Statistical Page
stevan putter: to answer you earlier query,.. Moose is curing right now
stevan put it into a big oak cask and stashed it in his basement
gaal whee there is one! who even seems to be active in pm! 21:00
putter hmm.... pickled moose...
stevan putter: $work has taken priority,.. and to be honest,.. I need a break from meta-ness :) 21:01
gaal whoa cool! www.maperl.com/ 21:02
lambdabot Title: S/V Mother of Perl --
stevan grumbles about freenode and lost passwords again 21:03
gaal zzZ&
putter TimToady: re -f, I was kind of wondering if the issue would go away if -f was moved to the Prelude, but, in the past that has sometimes not been simple, and more lambdas are needed... But moving stuff to p6 is one way to avoid fighting hs. 21:04
g'night gaal
TimToady well, the idea is to move the whole parser to P6 eventually. 21:05
luqui nice boat :- 21:07
putter hmm.... graph is getting messy... reflecting my lack of clarity about what is going on... 21:08
hey, putter realizes there are people here... ;) 21:10
do we have an oo-enabled ast at this point?
on pugs that is?
or are we still in the mode where the pugs's ast doesn't explicitly mention class definitions and the like? 21:11
stevan putter: gaal and audreyt were working on it back in Boston last summer
putter nothing more recent? 21:12
stevan and I think that work has been just basically waiting for a metamodel to back it
putter: I really couldnt say ,.. I know the MOH (MO in Haskell) work was going on pre-holidays, but seems to have slowed recently
TimToady I suspect that subproject is strongly modulated by the audreythrottle. 21:13
putter hmm. oo ast has been something resembling a critical path block for a year and half. if metamodel is requirement, has that gotten appropriate priority?
stevan cheers the freenode staffers for helping him restore his password 21:14
putter freenode staff++
ooo... "audreythrottle" :) 21:15
sigh. companies spend $3k on weekly lunches, and we haven't managed to get audreyt FT... :( 21:16
TimToady I think the metamodel has definitely been considered a priority and a lot of work has gone into it. It mostly just needs stitching in.
21:16 justatheory joined
putter ok, editing graph... 21:18
21:34 _marco joined
putter does a full grammar() for rules exist at this point? 21:43
a full grammar for p6? 21:44
TimToady: the other day you mentioned a "unified ast". is that a pugs ast with oo and typing unified with a parrot ast? 21:47
TimToady something like that
I don't think anyone has a full grammar yet. We could use one of those too... 21:50
21:55 larsen_ joined 22:07 jferrero joined 22:09 GabrielVieira2 joined, jferrero is now known as JoaquinFerrero 22:35 dduncan joined 22:43 gene9 joined 22:44 gene9_ joined 22:47 gene9_ is now known as as 22:54 justatheory joined 23:00 GabrielVieira2 is now known as GabrielVieira 23:10 neonse left 23:13 prism joined 23:17 Aankhen`` joined
putter TimToady: ping? 23:49
23:53 Psyche^ joined 23:57 mako132_ joined