Parrot 1.0 Released | parrot.org | 385 RTs left!
Set by moderator on 26 March 2009.
00:10 PerlPilot joined, shucho joined
Infinoid Yay, home sweet home 00:15
00:19 mikehh joined 00:21 PerlJam joined 00:22 rob joined, dduncan joined
rob whats the pir opcode to return a pmc's class? 00:25
00:26 bacek_ joined
Tene type 00:30
iirc
00:33 Theory joined
Infinoid class object or class name? 00:34
rob class name 00:42
purl class name is probably the package name.
Infinoid I think its "typeof"
rob thanks
Tene looking at pirc... it doesn't handle methods properly 00:44
but I can see what it needs to do
dalek rrot: r37780 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] function docs shouldn't need function attributes like PARROT_FOO;

Always list all functions (eliminate old style for multi-file) fix copyright, remove author section. This test hasn't kept up with the headerizer, which it depends on.
00:45
rrot: r37781 | pmichaud++ | branches/pge1/runtime/parrot/library/PGE/Glob.pir:
[pge]: Switch more 'result_object' ==> '!make'
00:54
00:57 mikehh joined
dalek rrot: r37782 | pmichaud++ | branches/pge1/runtime/parrot/library/Tcl/Glob.pir:
[tcl/pge]: Switch 'result_object' ==> '!make'.
00:58
rrot: r37783 | tene++ | trunk/compilers/pirc/src (3 files):
[pirc]: Set method_name on subs when appropriate... methods still don't work.
01:01
rrot: r37784 | pmichaud++ | branches/pge1/compilers/nqp/src/Grammar/Actions.pir:
[nqp]: Convert 'result_object' calls to '!make'.
01:08
rrot: r37785 | pmichaud++ | branches/pge1/compilers/pct/src/PCT/Grammar.pir:
[pct]: Convert 'result_object' calls to '!make'.
01:11
rrot: r37786 | coke++ | trunk (36 files):
[docs] remove placeholder non-documenttion
01:15
Coke question: our c-function docs should include (in spirit) the full signature of the function, yes? 01:17
(args, types, retval, etc.) 01:18
const?
purl const is a bad idea described on www.lysator.liu.se/c/dmr-on-noalias.html or cool for definining "mini constants" or const sausage const const bacon const tomato and const ( #25605 )
dalek rrot: r37787 | coke++ | trunk/tools/docs/func_boilerplate.pl:
[docs] when generating documentation boilerplate, leave it empty.
rrot: r37788 | coke++ | trunk/src/tsq.c:
[docs] remove non-standard placeholder non-docs
01:21
rrot: r37789 | pmichaud++ | branches/pge1/compilers/pct/src/PCT/Grammar.pir:
[pct]: Switch 'item' calls to 'ast'.
01:25
rrot: r37790 | pmichaud++ | branches/pge1/compilers/nqp (2 files):
[nqp]: Switch 'item' calls to 'ast'.
01:28
01:29 eternaleye joined
dalek rrot: r37791 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] function docs shouldn't need to specify ARGIN() or ARGMOD() modifiers.
01:31
rrot: r37792 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] Fix logic to strip off multiple leading PARROT_* modifiers
01:51
rrot: r37793 | coke++ | trunk/compilers/imcc/cfg.c:
[docs] Fixup function docs to pass t/codingstd/c_function_docs.t
01:54
01:55 japhb joined 02:00 Theory joined
nopaste "kid51" at 70.107.8.79 pasted "r37670 problem" (11 lines) at nopaste.snit.ch/15978 02:05
02:09 Tene_ joined 02:15 cspencer joined
cspencer is there a way to determine the current string encoding via sysinfo or interpinfo or something similar? (ie. utf8, utf16)? 02:16
or do i just have to create a string and then use the encoding opcode? 02:17
dalek rrot: r37794 | jkeenan++ | trunk/tools/dev/nopaste.pl:
Add documentation in POD format.
Coke kid51: I'd ping the person who committed that, but I'd guess it was an accident. 02:19
kid51 I'm entering it in the TT on which I'm working. The committer is already CC-ed on it. 02:20
bacek_ kid51: can you close TT#496 please? It's fully resolved now. 02:28
kid51 Could you post a comment explaining why it's resolved? (Otherwise the thread ends with my questions apparently unanswered.) 02:29
... and I can't quite remember what it was all about, at the moment :-)
i.e., Can you post that you supplied an updated patch which both met coding standards and did not prevent compilation? 02:30
bacek_ kid51: done 02:34
kid51 ... and closed 02:44
bacek_ Is anyone working on opendir/readdir/... ops ATM? I can try to find some time tomorrow to implement them. 02:54
02:57 cspencer left
diakopter hunh; I wonder what this is: repo.or.cz/w/parrot.git 03:03
Chile I'm playing with embedding parrot & reflecting C functions into the VM. I found test cases demonstrating Parrot_sub_new_from_c_func and calling it explicitly via the PMC handle, but how do I actually attach an identifer to it and stick it in a namespace so I can call it from PIR code? 03:15
I've tried store_global_n & such on the sub's PMC but that hasn't seemed to work 03:16
rg did you see t/src/embed.c? 03:18
one test is called "Insert external sub in namespace" and although it doesn't call the sub from pir, it might do what you want. otherwise you'll probably have to catch NotFound. 03:20
Chile ah, no, I looked through the stuff in examples/embed and some test cases I found searching the lists
I'll check there
hm, the correct namespace to be putting subs in is 'parrot' and not the root? 03:22
rg i don't know. i guess you can put it in any namespace you like. it just depends on where you're going to call it from. 03:25
Chile alright, well that did it.. the line that I'm confused about is the following, though. it seems to indicate that the global namespace by itself isn't sufficient.. why would this be? 03:29
pns = Parrot_PMC_get_pmc_strkey(interp, Parrot_get_root_namespace(interp), string_from_literal(interp, "parrot"));
(using pns in place of Parrot_get_root_namespace(interp) makes it work)
03:31 dduncan left
rg i think i've read somewhere that below the root namespace are languages, which includes parrot/pir itself. but i really haven't done anything with it, so i basically have no idea ;) i'm just trying to point you in the right direction. 03:35
Chile alright, thanks 03:36
the tip about t/src was quite helpful
03:48 janus joined 04:06 Theory joined 04:21 HG` joined 04:53 pusky joined 05:03 pusky left
Tene_ Chile: in parrot, you can't run in the root namespace directly, you run in an 'HLL namespace' 05:26
which is under the root
each different language has (or will have) a different HLL namespace
core parrot stuff goes in 'parrot'
Chile Tene_: got it. why is that namespace 'parrot' and not 'pir'?
ah
would putting it in 'pir' work as well? 05:27
Tene_ No.
Many things look for the 'parrot' HLL namespace specifically
Chile ok
Tene_ and many things in that namespace aren't defined in PIR
and every language is compiled to PIR
so even though, say, Python code is compiled to PIR, it still runs in the 'python' HLL namespace 05:28
for an example
in PIR, to set the HLL namespace, you use:
.HLL 'foo'
outside of a sub
it sets the HLL until the next .HLL directive
so if you wanted to, you could say .HLL 'pir' 05:29
the default is 'parrot'
Chile alright.
05:29 eternaleye joined
Chile if you wanted to make a C function available to, say, python code through this method, would putting it in 'parrot' still work, or is putting it in 'python' necessary? 05:31
05:32 davidfetter joined
Chile also, just by trial and error, _store_global_n, _set_global, and _set_pmc_strkey all work for putting the sub PMC in the namespace.. _set_pmc_strkey was the one used in the test code. is there a reason that's preferred over the others? 05:33
Tene_ until the python implementation has a way to access symbols from another HLL, you would need to put it in 'python' 05:43
(actually 'pynie', the name of the python compiler)
Chile hm, interesting. so there's no way to universally provide a set of routines at runtime this way? i'll have to put it in the correct HLL namespace depending on what was used to compile it? 05:48
Tene_ Chile: more likely, the HLL compilers need a way to import symbols from parrot.
For Perl 6, for example, it will be: use Foo :from<parrot>;
Chile ok. 05:49
Tene_ Chile: store_global is deprecated 05:50
set_global does the namespace lookup for you
and set_pmc_strkey is just doing keyed access on the namespace itself 05:51
Chile any preference between set_global and set_pmc_strkey?
Tene_ depends on whether you want to build keys or fetch namespaces. fetching namespaces is probably easier, I'd suspect. 05:52
so probably set_pmc_strkey
ah, looks like set_pmc_strkey is specifically for embedding. wasn't what I thought it was. 05:53
I'm not sure what the point of set_pmc_strkey is... it just calls set_pmc_keyed_str 05:54
you'd have to ask someone else about that, I guess.
Chile sounds good, thanks for the help
Tene_ Glad I could help. 05:55
Tene_ back to digging into pirc 06:16
06:32 plobsing joined 07:22 amoc joined 07:53 contingencyplan joined 08:07 szabgab joined 08:49 masak joined 09:00 TiMBuS joined, amoc joined, protorom joined 09:01 protorom left 09:15 barney joined
moderator Parrot 1.0 Released | parrot.org | 380 RTs left! 09:37
09:52 alvar joined 10:00 korshak joined 10:04 korshak left, korshak joined 10:14 TiMBuS joined 10:42 korshak left 10:44 korshak joined 10:45 amoc joined 10:50 jan joined 11:01 AndyA joined 11:11 riffraff joined 11:13 amoc joined 11:16 cseong joined
korshak is there something like $1 in perrot's grammar rules? if i want to match something like <statement> <block> \\1 ? 11:20
where \\1 is the same as <statement>
dalek rrot: r37795 | barney++ | trunk/runtime/parrot/library (2 files):
[library] loading with "library" is bad with installed Parrot"
barney korshak: there are named matches like st1=<statement>, I don't know whether the can be used later on in the rule 11:26
korshak is there some dodumentation on PGE? :)
barney Basically it's Perl 6 rules, so I would check the Perl 6 synopses first 11:29
korshak thx
barney going out biking 11:30
dalek rrot: r37796 | barney++ | trunk/runtime/parrot/library/yaml_dumper.pir:
[library] loading with "library" is bad with installed Parrot"
rrot: r37797 | coke++ | trunk/runtime/parrot/library/yaml_dumper.pir:
[docs] fix accidental copyright chop from r37796
11:34
11:55 cseong joined 12:05 rob joined, crythias left 12:06 rob joined 12:14 kid51 joined 12:21 korshak left, korshak joined 12:26 magnachef joined 12:32 magnachef_ joined
rob is it possible to grab the line number from a builtin? 12:41
I am trying to grab '$/' from a builtin but it doesnt work 12:42
12:42 cheflog__ joined 12:46 Whiteknight joined
rob is there a way of returning the line number when throwing an exception? 12:47
12:59 AndyA joined
korshak in order to match empty html tag pair: '<' (<name>) '>' '</' $1 '>' <-- how to write something like this in right way? 13:03
13:04 estrabd joined 13:07 AndyA joined 13:11 Theory joined 13:22 korshak left
Infinoid bacek: how do the constants defined in trac.parrot.org/parrot/attachment/...ket5.patch get to pasm/pir? is it missing some files, or is it not complete? 13:31
shorten Infinoid's url is at xrl.us/bemv88
13:32 mikehh joined
mikehh codetest failures at r37794 13:40
Infinoid bacek: Also, your use of direct magic numbers will make it compile everywhere, but I'm a little worried that the PIO_PF_* stuff will vary from one platform to the next. I think we probably want some configuration/detection for protocols and domains 13:41
Ah, mingw's winsock.h defines PF_INET6 as 23, not 10, and I don't have a clue why they would define PF_UNIX at all but they do
13:43 fperrad joined
dalek rrot: r37798 | Infinoid++ | trunk (3 files):
[cage] Fix some codetest failures, mikehh++ for reporting.
13:55
13:55 AndyA joined
Coke Infinoid: if you just fixed that, there's a ticket I just opened. 14:03
ha, so you did. 14:04
Infinoid And I closed the ticket :) 14:05
Coke +1
purl 1
Coke In my defense, I did an update and tested before reporting. =-)
14:06 AndyA joined
Infinoid Coke++ for keeping on top of codetest, we need more of that 14:06
Coke there's a smoke test now, even. I cannot make it easier. =-)
Infinoid: any feedback on the SHIM question I had?
Infinoid I didn't see your SHIM question, sorry 14:07
where was this? 14:08
Coke some tt
TT #324
Infinoid strip those too 14:10
SHIM just means "we don't currently use this variable, but $EXCUSE" where excuse is probably one of ["we didn't want to fix up all the callers", "wanted it to be consistent with the rest of the API", "we might use it later"] 14:11
so SHIM just wraps an UNUSED around it. It's like the anti-ARGIN 14:12
SHIM_INTERP can be treated exactly like PARROT_INTERP, only the function doesn't currently use that argument 14:18
14:21 Casan joined
Coke should I make SHIM_INTERP be spelled PARROT_INTERP in the doc portion? 14:27
Infinoid I guess it should look however PARROT_INTERP ends up looking. (you mentioned stripping the leading "PARROT_", I think?) 14:28
Coke that's for function declarations. 14:29
so PARROT_EXPORT is stripped in the docs.
Infinoid ah, ok
Coke right now PARROT_INTERP is still PARROT_INTERP
Infinoid that works
Coke ok. sounds good for now.
14:30 korshak joined
dalek rrot: r37799 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] strip off more argument modifiers, make SHIM_INTERP look like other interps.
14:34
korshak nopaste.org/p/aMXHHYSbmb <-- if somebody can help about rules and actions
14:39 AndyA joined 14:42 AndyA_ joined
pmichaud korshak: PGE doesn't currently have a way to look into data structures. In standard Perl 6 I expect it will be $<tagcontent><name> 14:42
(if it's possible at all)
Coke korshak: if you can't get an answer here, #perl6... oh, there's pmichaud now,. =-)
korshak hmm :( 14:43
pmichaud however, I would tend to think of it as being
korshak I had hoped its possible 14:44
dalek rrot: r37800 | coke++ | trunk (3 files):
[t/docs] Update the output of test to show the expected signature

from the test for generating docs.
pmichaud '<' <name> <attributes>* [ '/>' | '>' <content> '</' $<name> '>' ]
korshak shure
i found this possibility 14:45
but i want to use same <tagcontent> with it's (future) action in other rules
pmichaud yes, that does make it a bit more difficult. :-|
korshak yep. i was so glad, imagining how beautiful parrot is :) 14:46
but again made such a step on rakes 14:47
14:48 korshak left
dalek kudo: 7af829f | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 339 files, 7804 passing, 0 failing
14:48
shorten dalek's url is at xrl.us/bemwe8
14:57 Hunger joined 14:58 khisanth_ joined
Infinoid So I think we're going to need conditional constants for the various PF_* definitions, for network sockets. Does PIR have something equivalent to #ifdef? 14:58
or some kind of explicit namespace lookup, perhaps 14:59
Tene_ argh, I can't figure out what's wrong with this bytecode. 15:02
15:03 AndyA joined 15:13 AndyA joined
dalek rrot: r37801 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] .* matches \\s* - fix up boilerplate check. fixup ARG check slightly.
15:17
rrot: r37802 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] skip more argument modifiers.
15:40
rrot: r37803 | jhorwitz++ | trunk (3 files):
[OO] Check for an explicitly set vtable index when overriding a vtable method.
15:46
15:51 Tene joined 15:54 bjoern joined
bjoern On MacOSX, any suggestions about this? 15:55
gmake test:
/usr/bin/libtool: for architecture cputype (16777223) cpusubtype (3) object: /usr/local/lib/libgcc_s.10.4.dylib malformed object (unknown load command 4)
gmake: *** [blib/lib/libparrot.1.0.0.dylib] Error 1
15:56 Khisanth joined
bjoern (10.4 with Xcode 2.2.2) 15:58
Util bjoern: which SVN revision of Parrot (`svnversion`), and which GCC (`gcc --version`)? 16:01
bjoern with the 1.0 release. 16:05
Util bjoern: Did you run `gmake`, then `gmake test`, or did you skip the plain `gmake` and go straight to `gmake test`? 16:11
bjoern i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5250) 16:12
ran gmake first
16:15 cognominal joined
bjoern Actually the error did occur during just "gmake" 16:19
16:20 korshak joined
korshak whan running "parrot *.pbc file" have there any meaning --target option for syntax error matching? 16:22
i made little set of rules and actions, when i running pbc with --target=parse it's all ok, but when i try without --target, there is syntax error on same input 16:23
Util bjoern: Thanks; knowing that it bombed during `gmake` clears up some of the confusion. 16:24
Coke someone just opened a ticket abot this.
trac.macports.org/ticket/19024#comment:3
is there a way to tell what version of xcode I have installed? (oh, I could run it.) 16:25
I'm using xcode 2.4 here; no problems. 16:26
Util My config: OS X 10.4.11, XCode 2.5, i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5370)
No problems for me.
Coke any chance you can update your xcode? 16:27
gah. latest xcode is 3.1.2
(ah. 3.1.2 is 10.5 only) 16:28
Util "...libgcc_s.10.4.dylib malformed object..." does not sound like a out-of-date compiler, though.
It sounds like a damaged or mis-installed compiler to me.
bjoern: Have you had any trouble compiling other C code?
For re-install, Xcode 2.5 works on OS X 10.4 16:29
Oh, now I see that the macports ticket says "Xcode 2.5 is no longer available from the Apple Developer Centre." 16:30
bjoern notes he's just relaying the macports bug reporter, who isn't very responsive at the moment... 16:32
no problems like this before 16:34
can't upgrade to 2.4 either
Util sees that the ticket comment is incorrect - Xcode 2.5 (for OS X 10.4) *is* still available from the ADC site. You have to scroll down to see it. 16:45
bjoern direct link to where you see this? 16:48
16:52 Khisanth joined
dalek rrot: r37804 | coke++ | trunk/t/codingstd/c_function_docs.t:
[t] skip another ARG modifier.
16:52
korshak what can it be, is same statement runs ok if --target=parse set and panic "Syntax error" if --target - something else?
s/is/if/ 16:53
Util Link is unique to my ADC ID. Sorry.
I am working out the navigation path. Just a minute...
bjoern found it already
was the first google hit for "Xcode 2.5" download
16:53 tetragon joined
Util Great! 16:55
mikehh t/distro/file_metadata.t fails - Failed tests: 2-4 p All on file: t/pmc/socket.t
s/ p / - / 16:56
Infinoid Good catch, I'm not using svn so I normally don't see those
Util For future readers: connect.apple.com/cgi-bin/WebObject...leID=19907 16:57
shorten Util's url is at xrl.us/bemws5
mikehh that's at r37803 on Ubuntu Intrepid Amd64
bjoern Thanks. 16:58
17:00 pusky joined, davidfetter joined, pusky left 17:02 Limbic_Region joined 17:03 msmatsko joined
Util Infinoid: shall I commit the property changes for t/pmc/socket.t ? 17:14
Infinoid please do, taking a fresh checkout is taking forever on this link
Util Done. 17:16
dalek rrot: r37805 | Util++ | trunk/t/pmc/socket.t:
[cage] Added SVN properties for socket.t
17:18
17:21 jhorwitz joined
Coke here's a link to xcode: trac.macports.org/ticket/19024 17:22
Infinoid: You said you FIXED CODETEST! :)
Infinoid Coke: I thought I had. I can remove file_metadata.t if you prefer :) 17:23
(I'm not sure it actually serves a purpose) 17:24
Coke Infinoid: If we could make the server make the right choices, it'd be useless. 17:25
Infinoid What purpose do the file properties serve? 17:26
mikehh ok - r37508 fixes t/distro/file_metadata.t - prove --verbose t/distro/file_metadata.t - PASS 17:31
BTW shouldn't the Coptright be just 2009 as it is a new file? Is there a policy on this? 17:37
that's on t/pmc/socket.t
s/Copt/Copy/ in the line 2 before 17:39
Coke on a brand new file? yes. 17:40
mikehh I think my fingers are putting on weight - or something
actually, I think the new keyboard is a different size :-} 17:42
Infinoid hehe 17:46
mikehh trying a make fulltest now - cu much l8r 17:47
dalek rrot: r37806 | coke++ | trunk/src (18 files):
[docs] Update the c function documentation
18:01
18:02 Hunger joined
Coke # 1904 function(s) lacking documentation: 18:03
korshak can anybody say, is this rule valid? nopaste.org/p/a8SkqqOR7 18:14
pmichaud <!cm_str> is a zero-length match. 18:15
korshak trying to understand, why parrot goes in permanent loop
pmichaud because you're using a * quantifier on a zero-length match :-) 18:16
(and PGE isn't smart enough to break such loops)
perhaps you want <-cm_str>* instead.
korshak o! thx 18:18
thats it
19:06 bsdz joined 19:23 NordQ joined
mikehh make fulltest - all tests PASS -r 37508 - Ubuntu Intrepid Amd64 19:25
now - if we can get the build_tests to PASS p all my tests will PASS 19:27
19:45 dduncan joined 19:56 dduncan left 20:08 mikehh joined 20:42 eternaleye joined 21:01 donaldh joined, donaldh left 21:02 donaldh joined
plobsing Hi, I'm playing around with embedding. Specifically interested in linking against an installed version of parrot. The docs/embed.pod mentions using pkg-config to figure out how to include/link, but I am having problems running the examples against the ubuntu PPA version of parrot. Is pkg-config the right way to find include/link information? 21:12
21:35 Limbic_Region joined 21:39 HG` joined
dalek rkdown: 95c189a | (Francois Perrad)++ | (4 files):
more quoteblock
21:49
shorten dalek's url is at xrl.us/bemxm6
dalek rkdown: e4af77a | (Francois Perrad)++ | src/Compiler.pir:
minor refactor
shorten dalek's url is at xrl.us/bemxm8
dalek rkdown: 669e593 | (Francois Perrad)++ | src/ (2 files):
some beautification
shorten dalek's url is at xrl.us/bemxna
dalek rkdown: 9f70116 | (Francois Perrad)++ | src/parser/actions.pm:
add missing ListContinuationBlock
shorten dalek's url is at xrl.us/bemxnc
dalek rkdown: e3255e8 | (Francois Perrad)++ | src/Compiler.pir:
refactor newline generation
shorten dalek's url is at xrl.us/bemxne
dalek rkdown: 7568ab1 | (Francois Perrad)++ | src/ (3 files):
add a new node : Newline
shorten dalek's url is at xrl.us/bemxng
dalek rkdown: 5f65acc | (Francois Perrad)++ | src/ (3 files):
detabify codeblock
shorten dalek's url is at xrl.us/bemxni
21:54 pinkyandthebrain joined 21:59 fperrad left
bacek good morning 21:59
korshak gg. it's 00:00 right now =) 22:00
good morning
bacek 9:00 AM already :) 22:01
korshak i like this moment. sometimes talking with buddies thru webcam, when opponent just woke up, and you already are going to sleep 22:03
bacek Infinoid: (PF_* constants) We have to provide _own_ constants. Because they will be stored in PBC. My current idea - create internal mapping in socket_*.c files. (And I mention this in enum comment :) 22:04
Infinoid that works for me 22:10
bacek Infinoid: I'm creating this version now. 22:11
Infinoid I think the result is going to be VERY confusing for languages/c99 though 22:12
but you're right, the pbc needs to be standard 22:14
bacek Infinoid: gist.github.com/87221 22:17
something like this.
purl i think something like this is tempting: www.zones.com/cgi-bin/zones/site/pr...p;zone=zbs
bacek for unsupported protocols it will be "#ifdef PF_SOMETHING/PF_SOMETHING,/#else/-1/#endif" 22:18
korshak hmm. for representation html dom which PAST is better? 22:29
i red man, and at first time i thought that PAST::Node is the best in this case. 22:30
but i was wrong, as usualy 22:31
bacek korshak: what's wrong with PAST? 22:34
korshak its all ok with past =) 22:35
im newbie, and looking in each corner for something interesting.
i made simply grammar for xml. when i represent each tag as PAST::Node, and then try to dump pir 22:36
nodes that are children of first node wasnt dumped 22:37
but probably, i made something wrong 22:38
bacek probably
purl Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look harder. Because I'm an asshole.
22:55 DietCoke joined
DietCoke . 22:55
Coke .
23:06 korshak left 23:22 pinkyandthebrain left