perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ Set by mncharity on 25 March 2009. |
|||
jnthn | I seem to remember that I started taking us in that direction - creating a PMCProxy object at the point the PMC's vtable was built. | 00:00 | |
IIRC allison then felt we shouldn't be creating all of those PMCs up front but instead should create them on-demand. | |||
pmichaud | it's okay with me if it's done at the point where it's first needed... but mro really shouldn't be a list of names. | ||
jnthn | yeahbut we gotta know the list of parents in terms of _something_ | 00:01 | |
pmichaud | where does mro come from in the first palce? | ||
*place? | |||
jnthn | And it can't be in terms of class objects if we...y'know...ain't creating them. | ||
Look at any .c file generated from a .pmc file | 00:02 | ||
And grep for VTABLE_push_string(interp, mro | |||
pmichaud | I presume it's more interesting for a PMC that actually has parents :-) | 00:03 | |
jnthn | yes ;-) | ||
pmichaud | okay, here's what really doesn't make sense then. | 00:04 | |
Capture PMC doesn't have any parents. | |||
so we shouldn't even be in that loop to begin with. | |||
or we're looping on something _other_ than the Capture PMC | 00:05 | ||
jnthn | I suspect the latter. | ||
pmichaud | looks like Hash. | ||
jnthn | What has Hash as a parent... | 00:06 | |
pmichaud | so.... let me throw Hash into the mix | ||
or Maping | |||
jnthn | Oh, lots of things. | ||
Yeah, try that. | |||
oh, we'll need a few other bits to throw taht in. | 00:07 | ||
pmichaud | lots of dependencies for those | 00:08 | |
jnthn | yeah | ||
'cus you pull in the whole parametric role fun. | |||
pmichaud | which means we need the dynops | 00:09 | |
jnthn | Oh? | ||
Maybe | |||
pmichaud | because we need guts.pir | ||
jnthn | Ah, yes. | ||
pmichaud | it gets kinda ugly from there. | 00:10 | |
00:10
DemoFreak left
|
|||
japhb | jnthn: sorry to interrupt. I saw a commit that you worked on constant decls. Did you get 'constant foo is export' working also? | 00:11 | |
jnthn | japhb: No, not is export just yet. | ||
But otherwise constant is working. | |||
Or should be working enough. | |||
Will do export later in the week, all being well. | |||
pmichaud | trying to add Hash into the small example doesn't seem like a fruitful path at the moment. | 00:12 | |
japhb | jnthn: OK, cool, thanks! | ||
jnthn | pmichaud: Sure. Though I wonder if sticking a Hash entry in the namespace is enough? | 00:13 | |
Just faking something up | |||
pmichaud | I've just been using the PAST::Op protoobject :-) | ||
japhb | What is the current easiest way in Rakudo to insert a file (textually) into the currently compiling file? (I'm looking for the equivalent of cpp #include, more or less) | 00:14 | |
pmichaud | since Hash ends up being a protoobject :-) | ||
jnthn | Syre | ||
pmichaud | japhb: require ? | ||
jnthn | require isn't so much textual though? | ||
pmichaud | I don't think there's a textual include in Perl 6. | ||
cspencer | rakudo: my @a = <a b c d>; say @a.exists(*-5) | ||
jnthn | Aye, me either...and I suspect that's what japhb is really needing. | ||
japhb | pmichaud: What jnthn said. | 00:15 | |
p6eval | rakudo c76d8d: OUTPUTĀ«Use of uninitialized valueā¤0ā¤Ā» | ||
jnthn | japhb: I suspect for now you can't do stuff in modules until is export is in place. | ||
japhb | But thanks, I had also forgotten that require was working. :-) | ||
jnthn | is export for constants, that is | ||
cspencer | rakudo: my @a = <a b c d>; say @a.exists(*-4) | 00:16 | |
p6eval | rakudo c76d8d: OUTPUTĀ«Use of uninitialized valueā¤1ā¤Ā» | ||
jnthn | pmichaud: Getting quite tired (late here and still catching up on sleep) so 'fraid I'll have to leave this bug hunting for now. | 00:17 | |
pmichaud | jnthn: no problem, I will have to leave also. | ||
But at least we've identified the loop. | |||
jnthn | Sure. | 00:18 | |
And fixed some stuff that was making us fail earlier. | |||
pmichaud | a-ha! | 00:19 | |
nopaste coming! | |||
nopaste.snit.ch/16433 # now with segfaults! | |||
and if I comment out the include of Capture.pir, it doesn't segfault. | 00:20 | ||
*this* is something we can work with. | |||
Later. Or tomorrow. | |||
Or maybe Tene++ can pick it up. | 00:21 | ||
jnthn | Excellent. | ||
OK, posted Rakudo day report at use.perl.org/~JonathanWorthington/journal/38888 | |||
and now, sleep time | |||
night | |||
pmichaud | I'm a little surprised that -G exposed the bug more readily. | 00:22 | |
jnthn: bug in rakudo report | |||
my $x = 42; # ok | |||
should be | |||
my answer $x = 42; | |||
jnthn | oops | 00:23 | |
fixed, thanks! | |||
pmichaud | dynnertyme here :-) | 00:24 | |
jnthn | enjoy! | ||
cu | |||
Tene | I can look at it after Miscellaneous Events with the girlfriend. | 00:25 | |
00:30
hercynium joined,
meteorjay left
00:32
meteorjay joined
00:38
cspencer left
|
|||
japhb | rakudo: eval "say 'foo'" | 00:41 | |
p6eval | rakudo c76d8d: OUTPUTĀ«fooā¤Ā» | ||
japhb | rakudo: "say 'foo'".eval | ||
p6eval | rakudo c76d8d: OUTPUTĀ«Method 'eval' not found for invocant of class 'Str'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā» | 00:42 | |
japhb | std: "say 'foo'".eval | ||
p6eval | std 26545: OUTPUTĀ«ok 00:04 35mā¤Ā» | ||
01:08
eternaleye joined
01:22
ispy_ joined
01:26
payload left
01:27
kimtaro left
01:39
broquaint left
01:52
ispy_ left
01:56
alanhaggai joined
02:00
PhatEddy left
02:03
nihiliad joined
02:13
cognominal left
02:19
wknight8111 left
02:23
cognominal joined
02:31
meppl joined
02:33
bacek_ joined,
bacek__ left
02:42
alanhaggai left
|
|||
pmichaud | Tene, jnthn: nopaste.snit.ch/16436 | 02:55 | |
a very small, simple test case leading to a segfault with .HLL | |||
Remove the .HLL line and it runs just fine. | |||
Tene | Nice. | ||
pmichaud | and yes, it goes into an infinite loop. | 02:57 | |
03:00
FurnaceBoy joined
|
|||
Tene | Yeah, it's capture.pmc:550 | 03:05 | |
pmichaud | I wonder if there's some other way we can get to the proxy object. | 03:06 | |
or the Capture PMC | |||
(the classobj) | |||
Tene | can list() get_global [parrot;Capture] ? | 03:07 | |
pmichaud | yes, that's what I'm wondering. | ||
Tene | want me to try? | 03:08 | |
pmichaud | sure | 03:09 | |
I'll have to take a break in a moment. | |||
03:11
meppuru joined
|
|||
pmichaud | looks to me like Parrot_get_namespace_keyed_str(INTERP, root_ns, 'Capture') | 03:12 | |
er, no. | |||
hmm. | |||
looks to me like Parrot_get_namespace_keyed_str(INTERP, root_ns, 'parrot') | 03:13 | ||
and then after that 'Capture' | |||
unless there's an easy way to build a key | |||
03:14
meppl left,
meppuru is now known as meppl,
jaye joined
|
|||
pmichaud | it's also possible that the whole PObj_is_object_TEST(self) conditional can be avoided now. | 03:17 | |
that may be left-over from earlier versions of parrot where such subclassing had to be explicitly tested and worked around | 03:18 | ||
so it might be worth checking other PMCs that have methods and see how/if they handle it. | |||
Tene | can I put decl in an if{} in C89? | ||
then Parrot_oo_get_class(INTERP, namespace); | 03:20 | ||
It works. | 03:22 | ||
I'm testing it now | |||
pmichaud | might be nice to only do the ns lookups inside the if() | 03:26 | |
since they aren't used outside | |||
Tene | Can I declare ns in the if{} ? | ||
in C89? | |||
pmichaud | sure -- there are other declarations there | ||
Tene | ... wow | ||
pmichaud | - STRING *classname = CONST_STRING(INTERP, "Capture"); | ||
Tene | Thank you. | 03:27 | |
pmichaud | that's a declaration. | ||
but the declarations all have to be at the beginning | |||
so you can't have the two ns = Parrot... statements followed by another declaration | |||
Tene | except... unless I mix that entire thing into one line, I need to declare all of them, and then do the lookups... | ||
so twice the lines. | |||
pmichaud | no | ||
just a sec | 03:28 | ||
Tene | anyway, all tests pass | ||
03:37
orafu left,
orafu joined
04:09
eternaleye_ joined
04:30
eternaleye left
04:45
FurnaceBoy left
04:46
hercynium left,
skids_ left
04:47
hercynium joined
04:51
alester joined
04:55
mberends joined
05:01
nihiliad left
05:15
rewt left,
rewt joined
05:16
wayland76 joined
|
|||
eternaleye_ | (re threads) You know, the most elegant solution might be to get these Peng Li and Steve Zdancewic people hooked on Perl 6 and let them help hammer out the spec. | 05:27 | |
(the ones who wrote the Unify paper) | 05:28 | ||
05:29
masak joined
|
|||
masak | good morning, parsercamels. | 05:29 | |
05:30
japhb left
|
|||
wayland76 | eternaleye_: Where do they hang out? | 05:31 | |
lambdabot | wayland76: You have 3 new messages. '/msg lambdabot @messages' to read them. | ||
eternaleye_ | wayland76: I dunno. I'm gonna try and track them down. | ||
wayland76 | www.cis.upenn.edu/~stevez/ | 05:34 | |
mberends | masak: good morn, I think there may be some sockets test (unix only) working soon based on forking in a little shell script. | 05:35 | |
masak | mberends: good morrow. that sounds nice indeed. | 05:36 | |
05:36
mberends left
|
|||
Tene | do we have fork in parrot? | 05:36 | |
Looks like no. | 05:38 | ||
wayland76 | (and just a minute ago, when I said "Where do they hang out", I was thinking of the quote from the Connecticut Yankee where Sandy say " 'Where do they hang out?' Verily, it trippeth from the tongue with lightess and...." (I forget the rest, and even lightness may be wrong) | ||
05:39
japhb joined
05:42
mberends joined
05:45
alanhaggai joined
05:49
jaye left
|
|||
masak | std: UnknownType | 05:54 | |
p6eval | std 26545: OUTPUTĀ«Undeclared name:ā¤ UnknownType used at 1 ā¤ok 00:02 35mā¤Ā» | ||
masak | std: KitchenSink | ||
p6eval | std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
masak | std: class KitchenSink {} | ||
p6eval | std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā» | 05:55 | |
masak | std: class Int {} | ||
p6eval | std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
masak | TimToady: any reason it doesn't warn for those last two? | ||
Tene | masak: I have many tests passing in rakudo in the hll branch. | 05:58 | |
A few failures... but mostly passes. | |||
I can probably merge it soon. | |||
masak | Tene: hm, that was the blocker for things like playing around with Hitomi and PCT, right? | 05:59 | |
Tene | kinda, potentially. | ||
It meant that no other HLL could use Perl 6 code. | 06:00 | ||
06:00
cognominal_ joined
|
|||
Tene | pmichaud, jnthn: i have rakudo passing many tests in the hll branch. Still a few failures left. | 06:01 | |
masak | Tene: what causes the failures? | ||
Tene | Dunno yet! It's a mystery! | 06:02 | |
:) | |||
masak | :) | ||
Tene | I expect some of them are from unfudged tests in master | 06:03 | |
masak | well, try merging then. | ||
Tene | success! | 06:04 | |
building again... | |||
06:06
cognominal left
|
|||
wayland76 | I'm working with POE (on P5) at the moment, and I've noticed that NFA is supposed to be a drop-in replacement for Session, but it isn't. I'm hoping this will improve in P6 | 06:07 | |
Tene | wayland76: I've started work on a poe-alike in perl 6. | ||
wayland76 | Tene: Yeah, I'm backlogging, and that's why I mentioned it :) | ||
Tene | wayland76: I'd love some help on it, or even just feedback, once I get it more fleshed out. | 06:08 | |
wayland76 | I suspect you're probably not doing NFA yet, but I thought I'd mention it in case you need to design Session to suit that somehow | ||
Tene | Thanks. :) | ||
wayland76 | Tene: I'd love to after I get a working Rakudo RPM, but I'm not doing any other P6 work until then :) | ||
Tene | wayland76: very important work... thank you for doing it. | 06:09 | |
wayland76 | And I don't expect to get the time to work on that for at least another week | ||
pugs_svn | r26546 | masak++ | [u4x/TODO] added statement prefix 'lift' | 06:12 | |
r26546 | masak++ | | |||
r26546 | masak++ | [u4x] removed line-ending spaces | |||
r26546 | masak++ | | |||
r26546 | masak++ | [u4x] s/data/documentation/ | |||
r26546 | masak++ | | |||
r26546 | masak++ | The latter is more informative, IMHO. *Everything* in a computer is data. | |||
wayland76 | Tene: Am I right in presuming that you saw the recent S17/threads discussion and had at least some grasp of its relevance to your POE model? | ||
masak: I hadn't thought of that way of getting extra karma before :o) | 06:13 | ||
Tene | i didn't see it. | ||
perl6-language? | |||
masak | wayland76: sorry about that. it's the way git lays out commit comments. :/ | 06:15 | |
06:15
bacek left,
justatheory left
|
|||
wayland76 | masak: Note clown face after last comment to show I was being silly :) | 06:15 | |
Tene | wayland76: where was it? | 06:16 | |
masak | wayland76: aye. | ||
wayland76: I thought I would actually save y'all some noise by squashing three commits. | |||
06:17
wayland joined
|
|||
wayland | Argh; server died again | 06:17 | |
Tene | wayland: where was the S17 discussion? | 06:18 | |
wayland | Tene, not p6l, but IRC backlog. I'l find the link when my server comes back up (about 5 minutes unless it's too cold; then double that) | ||
pugs_svn | r26547 | azawawi++ | Upgraded dependencies of YAML::Syck to 1.07 and Moose to 0.76. | ||
Tene | ah | ||
wayland | No, I'll do it now. Wait a few minutes | ||
Tene | no hurry | 06:19 | |
wayland | Well, I can't do much else until the server comes back up | 06:20 | |
It's my NFS server, and I'm planning on replacing it, but until then, I have to keep it warm | |||
I think the keyboard IO chip is faulty | |||
06:21
alanhaggai_ joined
|
|||
wayland | irclog.perlgeek.de/perl6/2009-04-28#i_1099607 | 06:21 | |
There and following for a while. Threading talk continues until 12:39 | 06:22 | ||
...with a few final comments at 13:37 | 06:23 | ||
06:26
alester left
|
|||
wayland | (Tene -- actual effect on what you're doing may be minimal, but it'll give you some idea of what people are thinking) | 06:26 | |
06:28
sri_kraih joined
|
|||
eternaleye_ | wayland76: Hm, neither of them seemed to have visited the #haskell channel prior to making that paper, so I can't track them down that way. Best option for contact seems to be locating Steve Z, who seems to have been Peng Li's thesis advisor. He's faculty, and therefore has a upenn email address. | 06:28 | |
Matt-W | jnthn++ - better type error messages helping me track down a problem in Form with much less hair loss | ||
06:29
alanhaggai left
|
|||
moritz_ | rakudo: my Str $x; $x = 4; | 06:30 | |
p6eval | rakudo c76d8d: OUTPUTĀ«Type mismatch in assignment; expected something matching type Str() but got something of type Int()ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
wayland | eternaleye_, he also has a Facebook | ||
eternaleye_ | That works. | ||
masak | jnthn: cool. | ||
moritz_ | wohoo | 06:31 | |
wayland | I just googled Steve Zdancewic, and his Facebook was 3rd on the list | ||
masak | jnthn: I know it's specced to be "Str()" and "Int()", but does it have to be there? it feels redundant somehow... | ||
jnthn: yes, I'm never satisfied :) | |||
06:31
agentzh left
|
|||
eternaleye_ | wayland: Now we just need to get him and Peng Li hooked on Perl 6. | 06:33 | |
wayland | eternaleye_: I don't think it's going to happen, but don't let me dissuade you from trying :) | 06:34 | |
Btw, he seems to be supervising more than one student. | 06:35 | ||
Also, it seems like Tene is working on one facet of it, so I'm not as worried as I was; it may end up not needing to be specced at all (much like Form.pm) | 06:37 | ||
moritz_ | reddit++ # I put a non-working reddit widget on my blog (relative vs. absolute URL), and one of the reddit admins saw that and wrote me a mail about it | ||
wayland | That's kinda cool | ||
wayland76 | Yay, real keyboard again :) | ||
06:39
agentzh joined
06:46
jhuni joined
06:47
iblechbot joined
|
|||
Tene | ... oops. I was going to work on my PCT presentation tonight. | 06:47 | |
Instead I spent the whole night on rakudo. | |||
masak | Tene, moritz: any insights into Match tree traversal? | 06:49 | |
moritz_ | masak: yes | ||
06:49
ejs joined
|
|||
moritz_ | thought not very good ones | 06:49 | |
I'll get you two links, just a sec... | 06:50 | ||
06:50
DemoFreak joined
|
|||
moritz_ | masak: here <nopaste.snit.ch/16420> I tried a different approach, and wrote down how it didn't work. pmichaud's answer: nopaste.snit.ch/16427 | 06:51 | |
masak | excellent, thanks. | ||
moritz_ slaps forehead | 06:53 | ||
I know what's wrong | |||
masak | even better. :) | ||
moritz_ | .chunks thinks that .from and .to are zero-based | ||
but of course they are based on self.from | |||
masak | ah. | 06:54 | |
moritz_ | rakudo: ' foo' ~~ /.*?<ident>/; say $/<ident>.chunks.perl | ||
p6eval | rakudo c76d8d: OUTPUTĀ«["~" => "foo"]ā¤Ā» | ||
moritz_ | rakudo: ' foo' ~~ /.*?(.(.)+)/; say $0.chunks.perl | 06:55 | |
p6eval | rakudo c76d8d: OUTPUTĀ«["~" => " ", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => " ",ā¤ text => " ",ā¤ from => 1,ā¤ to => 2,ā¤), 1 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => " ",ā¤ text => | ||
.." "... | |||
moritz_ | rakudo: ' foo' ~~ /.*?f(.(.)+)/; say $0.chunks.perl | 06:56 | |
p6eval | rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā» | ||
06:56
ejs left
|
|||
moritz_ | see, it produces two three 'o's altogether | 06:56 | |
06:56
ejs joined
|
|||
moritz_ | although all o's should add up to 2 | 06:56 | |
masak | I don't follow yet, but that's because I'm a bit disctracted right now. | 06:57 | |
moritz_ | rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl | ||
p6eval | rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā» | ||
masak | is it a bug? :) | ||
moritz_ | sure | ||
masak submits rakudobug | |||
moritz_ | title '.chunks doesn't work on submatchs' </humblesuggestion> | 06:59 | |
masak | fine. | ||
pugs_svn | r26548 | moritz++ | [t/spec] tests .caps and .chunks on submatches | 07:03 | |
moritz_ | tests are in t/spec/S05-capture/caps.t | ||
... and a fix is currently being tested | 07:05 | ||
man, why does it take so long to compile the setting? </sigh> | |||
masak | moritz_: you keep giving all these closing tags... where do you open them? :P | 07:07 | |
07:08
Jedai joined
|
|||
moritz_ | masak: in a paralllel universe, of course | 07:08 | |
masak should have seen that one coming | |||
moritz_: I'd like to see an XML parser that handles that. | |||
"Error: no corresponding opening tag, exhausted parallel universes." | 07:09 | ||
moritz_ | masak: give me a quantum computer and port Perl 6 to it, and I'll do that ;-) | ||
masak | quantum computing ā„ Perl 6. | 07:10 | |
(and yes, I've studied the former enough to know that's the case.) | |||
moritz_ | and yes, I've studied the later enough to know that's the case ;-) | 07:11 | |
masak | if we can only keep the idea of junctions pure until we get commercial quantum computing... | ||
07:11
japhb_ joined
|
|||
masak | "You did that in O(1) !? but... how?" "Well, this junctive construct sends things off to the QPU..." | 07:12 | |
07:12
japhb left
|
|||
moritz_ | you know that you can do primality test with junctions? | 07:12 | |
masak | aye. | ||
talk about "disruptive tech" right there. | 07:13 | ||
moritz_ | for 2..6 -> $x { say ?(none(2..$x) * any(2..$x) == $x) } | ||
rakudo: for 2..6 -> $x { say ?(none(2..$x) * any(2..$x) == $x) } | |||
p6eval | rakudo c76d8d: OUTPUTĀ«1ā¤1ā¤0ā¤1ā¤0ā¤Ā» | ||
masak | nice. | 07:14 | |
moritz_ | it's such a cool application of autothreading that I couldn't resist adding it to the test suite ;-) | ||
masak | :P | ||
relatedly, this article is sometimes a source of inspiration for me: c2.com/cgi/wiki?PimcPiflPire | 07:15 | ||
moritz_ | afk | 07:16 | |
07:21
zostay left,
zostay joined
|
|||
moritz_ | rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl | 07:28 | |
p6eval | rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā» | ||
moritz_ | not updated yet | 07:29 | |
masak realizes that lazy lists make pimc pifl pire less necessary, if not less impossible | 07:31 | ||
um, scratch that. I just saw the Fermat example. | 07:32 | ||
man. | |||
moritz_ | rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl | 07:36 | |
p6eval | rakudo 654500: OUTPUTĀ«["~" => "o", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā» | ||
07:38
azawawi joined
|
|||
azawawi | hello | 07:38 | |
szabgab | olleh | 07:39 | |
masak | ehllo | ||
moritz_ | rakudo: say 'hello'.split('').pick(*) | ||
p6eval | rakudo 654500: OUTPUTĀ«lloheā¤Ā» | ||
masak | :) | ||
wayland76 | Nice. I didn't know * could be used that way :) | 07:44 | |
masak | it can be used in whatever way you like. :) | ||
wayland76 | rakudo: pony(*) | 07:45 | |
p6eval | rakudo 654500: OUTPUTĀ«Could not find non-existent sub ponyā¤current instr.: '_block14' pc 66 (EVAL_16:44)ā¤Ā» | ||
wayland76 | Hmm. Lets try something simpler | ||
rakudo: money(*) | |||
p6eval | rakudo 654500: OUTPUTĀ«Could not find non-existent sub moneyā¤current instr.: '_block14' pc 66 (EVAL_16:44)ā¤Ā» | ||
wayland76 | I guess not :) | ||
rakudo: class Christmas { * } | 07:47 | ||
p6eval | rakudo 654500: ( no output ) | ||
wayland76 | Oh, wait, I see... | ||
masak | when Perl 6 is out, Christmas will be whatever. | ||
wayland76 | rakudo: use Wishful_Thinking; class Christmas { * } | 07:48 | |
p6eval | rakudo 654500: OUTPUTĀ«Can't find ./Wishful_Thinking in @INCā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
masak | Rakudo doesn't work on wishful thinking. :) | ||
wayland76 | Well, it was worth a go :) | 07:49 | |
rakudo: use things_Even_if_theyre_written | |||
p6eval | rakudo 654500: OUTPUTĀ«Can't find ./things_Even_if_theyre_written in @INCā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
wayland76 | There we go. Successful error message golf, anyway :) | 07:50 | |
07:51
broquaint joined
|
|||
moritz_ | masak: nopaste.snit.ch/16441 there you go. | 07:52 | |
masak | moritz_++ | ||
masak tries locally | 07:53 | ||
moritz_ | masak: needs the newest rakudo | ||
masak | ah, Match.pm changed. thanks. | 07:54 | |
living on the edge. | |||
wayland76 | Cool. Where's the action class idea specced? | 07:55 | |
moritz_ | yes, I've closed the .chunks ticket | 07:56 | |
wayland76: I don't think it's really specced yet... one of my TODO items | |||
wayland76: but it's used extensively in PCT based compilers | |||
Matt-W | Morning | ||
wayland76 | Oh, ok | ||
Is there a reason it's separate from the grammar? | |||
o/ | 07:57 | ||
Matt-W | So you can have another set of actions for the same grammar, I would have thought | ||
moritz_ | yes | 07:58 | |
or none at all | |||
wayland76 | Ah, of course | ||
moritz_ | speaking of which, my JSON grammar now produces the corret data structure for '{ "a" => 1}' | 07:59 | |
wayland76 | I was wondering if there was some way of integrating Form.pm with grammars, so that you could create an AST tree, and then output from it something semantically equivalent to the original | ||
And it looks like this will be how :) | |||
moritz_ | string escapes aren't done yet, so "a\t' won't work | ||
and it needs many more tests | 08:00 | ||
but since pmichaud++ fixed a segfault that was blocking me, it's very, very nice hacking | |||
wayland76 | I think this also means that I'll need less monkey patching to make Tree work :) | ||
Btw, can we do aspect-oriented programming? | 08:05 | ||
moritz_ | is there any paradigm we can't? :-) | 08:06 | |
(except purity, perhaps) | |||
wayland76 | Well, I know we can, but is there a better way to do it than what you did in your class there? :) | 08:07 | |
By "Better", I mean, more automatic, less code involved | |||
moritz_ | hey | ||
you could try | |||
you could try to use 'handles' to do it | 08:08 | ||
wayland76 | Oh, yeah, that would be cool, I think. | 08:09 | |
(Well, I know it would, if it works like we want it to :) ) | |||
moritz_ | class A { method h($/, @*params) { code from $h here } }; class Actions { has A $h TOP => 'h', FOO => 'h', ...;} | ||
wayland76 | Does this still work? class A { method h($/, @*params) { code from $h here } }; class Actions { has A $h handles *; } | 08:11 | |
...and then just override the ones you want to? | |||
masak | rakudo: if 1 {} elsif 2 {} | ||
p6eval | rakudo 654500: ( no output ) | ||
masak | rakudo: if 1 {} elseif 2 {} | ||
p6eval | rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near "elseif 2 {"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | 08:12 | |
masak submits a rakudobug about a nicer error message for that one | |||
wayland76 | if 1 {} else if 2 {} | ||
rakudo: if 1 {} else if 2 {} | 08:13 | ||
p6eval | rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near "else if 2 "ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | ||
Matt-W | wayland76: please explain 'integrate Form.pm with grammars' | ||
masak | yes, let's include that one too. | ||
08:13
alanhaggai_ is now known as alanhaggai
|
|||
wayland76 | Well, that's the thing -- I wanted to figure out some way to glue them together ("integrate" was probably poorly chosen), but I hadn't got further than thinking about it before I was sidetracked :) | 08:14 | |
Matt-W | I'm not sure what you'd be wanting to achieve | 08:15 | |
wayland76 | Have a look at Moritz' nopaste from a few lines before I made that statement (if you haven't already) -- | ||
Matt-W: Neither am I, but it sounds like the sort of thing that some instinct tells me will be useful. | 08:16 | ||
Ah, I know | |||
moritz_ | wayland76: you mean in terms of implementation? or exposing a grammar based API? | ||
wayland76 | XML to JSON converter | ||
pugs_svn | r26549 | szabgab++ | smartlink updates | 08:17 | |
wayland76 | Have a grammar for each, and an action class for each. Then parse a document of each, and output the AST via the action class (which uses Form.pm); presto -- auto conversion | ||
Well, I'm assuming here that an action class can be applied to an AST, rather than passed to parse(), but it'd work either way | 08:18 | ||
Matt-W | Hmm | ||
Form's use case is quite different | |||
What you need is some sort of generic framework for converting ASTs into string representations of themselves | |||
wayland76 | Yeah, I know. Maybe I should suggest FormAlike.pm :) | ||
Matt-W | backwards actions | ||
wayland76 | Yes, yes, exactly | 08:19 | |
Matt-W | Form could provide some of the mechanism, but you're better off looking at some sort of layout combinator library | ||
There's a good one in Haskell | |||
wayland76 | But we already have printf, pack, and Form.pm doing the same thing for different specialised domains | ||
So maybe something general that does all 3 of those, plus the tree outputting thing | |||
ok, do I google "layout combinator"? | 08:20 | ||
Matt-W | I'll find it | ||
We may need to see if we can unify this stuff | |||
But it might nto be possible without breaking the simple stuff | |||
wayland76 | Well, I should warn you, I'm not planning on working on it within the next month, so there's no pressure from my direction. | 08:21 | |
Matt-W | good | 08:22 | |
I want to make Form work as specced first :) | |||
masak | wayland76: I've heard jnthn talking about something along the lines of a backwards Perl 6 grammar. you might want to discuss with him too. | ||
Matt-W | haskell.org/ghc/docs/latest/html/li...hesPJ.html <- that's the API reference, with a link to a paper about it | ||
wayland76 | ok, thanks. jnthn may well get to it before I do :) | 08:23 | |
masak | rakudo: class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar") } }; A.new.foo | 08:25 | |
p6eval | rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā» | ||
azawawi | moritz_: regarding nopaste.snit.ch/16441 ; std seems to complain about it. | 08:26 | |
masak | is this kosher behaviour? or is it a known bug? or did I just discover something? | ||
moritz_ | azawawi: what does it complain about? | 08:27 | |
wayland76 | masak: What did you expect it to do? | ||
moritz_ | masak: I think it should print 42 again | ||
azawawi | moritz_: make [~] gather { ... } | ||
masak | moritz_: do you know if it's reported? | ||
moritz_ | masak: don't think so | ||
azawawi: so what's wrong with that? | |||
masak submits rakudobug, just in case | |||
wayland76 | rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("otherbar") } }; A.new.foo | ||
p6eval | rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā» | ||
azawawi | moritz_: let me check it again via tryfile... | 08:28 | |
wayland76 | rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("say otherbar") } }; A.new.foo | ||
p6eval | rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā» | ||
masak | rakudo: sub bar() { return 12 }; class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar") } }; A.new.foo | ||
p6eval | rakudo 654500: OUTPUTĀ«42ā¤12ā¤Ā» | ||
moritz_ | rakudo: class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar"); say "error: $!" } }; A.new.foo | 08:29 | |
masak | for some reason the eval resets to the outer namespace. | ||
p6eval | rakudo 654500: OUTPUTĀ«42ā¤ā¤error: Could not find non-existent sub barā¤Ā» | ||
wayland76 | Good idea :) | ||
rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("A::otherbar") } }; A.new.foo | |||
p6eval | rakudo 654500: OUTPUTĀ«42ā¤43ā¤Ā» | ||
moritz_ | ok, eval doesn't pick up outer namespaces | 08:31 | |
pasteling | "azawawi" at 212.38.130.254 pasted "std complaints..." (13 lines, 304B) at sial.org/pbot/36268 | 08:33 | |
08:33
cognominal_ left
|
|||
azawawi | moritz_: same thing; std does not parse it... | 08:34 | |
moritz_ | azawawi: well, I don't bother for now | ||
azawawi | moritz_: so is it an STD parsing bug? | 08:36 | |
moritz_ | azawawi: I don't know | 08:37 | |
as I said, I don't bother for now | |||
azawawi | moritz_: thx :) | ||
moritz_ | masak wants a working example, I gave him one :-) | ||
masak | azawawi: I don't see anything syntactically wrong with 'make [~] gather { ... }' | 08:38 | |
azawawi: if STD.pm has problems with that, it can talk to me about it. | |||
azawawi | masak: all i wanted is to see it in Padre Perl6 outline view :) | ||
masak | azawawi: I'm sure you'll be able to make the appropriate changes locally. | 08:39 | |
azawawi | masak: im checking if it is a whitespace problem... | ||
pugs_svn | r26550 | szabgab++ | improved liniking from X<> tags | 08:40 | |
azawawi | masak: yup, whitespace bug! | ||
08:42
hanekomu joined
|
|||
masak | azawawi: good catch. | 08:42 | |
azawawi: is the problem with STD.pm or Rakudo, would you say? | |||
azawawi | masak: i think std... | 08:43 | |
masak: for $/.chunks{ needs 2 spaces after chunks to work... | 08:44 | ||
pugs_svn | r26551 | szabgab++ | adding smartlinks and X<> tags | 08:45 | |
masak | sounds very much like a bug. | ||
azawawi | masak: needs one space to be exact... | 08:46 | |
masak | moritz_: ok. I went with your latest paste, and made it react correctly on 'pe:if' attributes. gist.github.com/103668 | 08:50 | |
moritz_: two things: (1) I'd like to reproduce the <ol> tag but with the 'pe:if' attribute removed. how do I do that? | 08:51 | ||
azawawi | TimToady: STD needs a space after $/.chunks (line 32) to parse nopaste.snit.ch/16441 | ||
08:53
DemoFreak left
|
|||
moritz_ | masak: you could try to extend $h to accept an optional $exclude parameter, and then prefix the take() with 'unless $exclude && $exclude eq .key' or so... | 08:54 | |
masak | moritz_: (2) at this point, actions again feel wrong, being bottom-up, whereas a template works top-down. I think your idea was to put some special objects in the match tree, representing if and for directives. did I get that right? these could then be iterated upon. but then I again have the problem of traversing a Match tree, something which I haven't succeeded in doing yet. | ||
moritz_: interesting idea. will try. | |||
moritz_ | masak: well, if you want to do it top down, you can always make() lists of chunks, not strings... | 08:55 | |
masak | moritz_: this is the part I still feel very uncertain about. | ||
moritz_ | masak: and then you traverse $/.ast, which is just a tree made of lists | ||
not a match tree | 08:56 | ||
masak | ok. | ||
moritz_ | the problem with buttom is that you run into trouble with things like if $variable { $do_soemthing_with_variable } | ||
masak | yes. | 08:57 | |
that's my point. | |||
moritz_ | if it's done buttom up, and immediately cast into strings, you don't have $variable available | ||
s/buttom/bottom-up/ | |||
masak | well, | ||
variables are another of those things that should be cast into special objects in the match tree. | 08:58 | ||
moritz_ | so remove the [~] | ||
in $h | |||
and you're mostly done | |||
masak | so we have: if and for directives, and variables. | ||
masak is re-inventing PAST | |||
moritz_ | indeed :-) | 08:59 | |
masak | I picture Hitomi, the real one, eventually being built on top of PAST somehow. | 09:00 | |
with custom PAST Node types. pmichaud++ for the idea. | |||
moritz_ | masak: well, PAST is not Perl 6, it's PCT | 09:01 | |
masak: you're on your best way to tying Web.pm to Rakudo | |||
masak | moritz_: well, perhaps. | ||
moritz_: that doesn't bother me very much. | 09:02 | ||
moritz_ doesn't like that | |||
masak | moritz_: let's aim for making Hitomi two-modal then. | ||
moritz_ | masak: it bothers me, because pugs showed us that implementations can die, even if they seem very lively while you code from them | ||
masak | moritz_: one mode that does things slowly, in pure Perl 6. | ||
moritz_ | s/from/for/ | ||
masak | moritz_: one mode that precompiles down into fast PIR. | 09:03 | |
I think we'll want something like that anyway. | |||
moritz_: what worries me is speed. here I am trying to replace a working templating system (HTML::Template) with one that does advanced tricks with XML, and essentially trades speed for purity. | 09:04 | ||
moritz_ | ok | ||
masak | moritz_: if I could get a purity boost _and_ a speed boost, that'd be awesome. | 09:05 | |
when it comes down to it, a template is just a bunch of loops, conditionals and variable accesses. that can be compiled down directly to PIR, and many of the checks and casts and stuff done in Rakudo can be thrown away. | 09:06 | ||
=> fast | |||
09:17
azawawi left
09:23
iblechbot left
09:25
agentzh left,
agentzh joined
|
|||
masak | moritz_: so, Hitomi will be a two-implementation project. making both implementations pass the same test suite will hopefully keep them from drifting away from each other. | 09:30 | |
moritz_ | masak: same as with Perl 6 :-) | 09:31 | |
masak | aye, a nice bit of symmetry there. :) | ||
moritz_ | fractals :-) | ||
masak | November is also dual-impl, but it doesn't do the test suite thing. | ||
moritz_ | the combinations explode exponentially :-) | 09:32 | |
masak | no wonder performance goes south. :P | 09:33 | |
09:35
jhuni left
09:46
masak left
|
|||
wayland | "bimodal" is the word you want :) | 09:53 | |
arnsholt | std: <a b c>>>.uc; | 09:54 | |
p6eval | std 26551: OUTPUTĀ«ok 00:05 42mā¤Ā» | ||
wayland | rakudo: <abc>>>.uc | ||
p6eval | rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near ">>.uc"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | ||
wayland | oops :) | ||
rakudo: <a b c>>>.uc; | |||
p6eval | rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near ">>.uc;"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | ||
arnsholt | I tested it in rakudo first (doesn't work) | 09:55 | |
09:55
amoc joined
|
|||
arnsholt | But it's a fun construct. Replaces some tedious map expressions | 09:55 | |
09:55
riffraff joined
|
|||
wayland | Great :) | 09:55 | |
I think it's going to take me months to stop thinking like a P5 programmer :) | 09:56 | ||
arnsholt | Months? Years! | 09:57 | |
wayland | Calvin (&Hobbes) once suggested that life should have a cover charge, to keep the riffraff out :) But we don't want that here | ||
arnsholt: agreed :) | |||
(for those who missed it, riffraff just joined the channel) | 09:58 | ||
arnsholt | Calvin and Hobbes are fun. I especially like that they're named after philosophers | ||
wayland | I have the 3-volume boxed set. That has almost everything except the fun comments in the 10th anniversary edition | 09:59 | |
arnsholt | Cool | ||
wayland | For some reason, Larry Wall reminds me of Bill Watterson | 10:00 | |
jnthn | ahojte | ||
wayland | hail jnthn! | ||
I presume that's slovak for "Ahoy"? | |||
arnsholt | Argh. For some reason I can't get rakudo to call my ancestor's implementation of an overloaded method | 10:01 | |
wayland | Most of my ancestors were born before computers :). My classes' ancestors, OTOH... | 10:02 | |
jnthn | wayland: It's "hi", but to many people. | 10:03 | |
wayland | arnsholt: What does it do, error, or fail silently...? | ||
jnthn | wayland: If it's just to one person it'd be just "ahoj" :-) | ||
wayland | Right | ||
But would it be more formality-suitable, as in "hello"? | 10:04 | ||
jnthn | No, ahoj[te]? is informal. | ||
wayland | ok | ||
jnthn | More formal is like "dobry den" | ||
wayland | den = day? | 10:05 | |
jnthn | yes, dobry = good | ||
wayland | ok | ||
mberends | similar to Croatian 'dobor dan' :) | 10:06 | |
jnthn | mberends: Yes. | ||
wayland | Doesn't one of the Germanic languages also have den=day? | ||
hanekomu | in vienna, some younger people use a kind of slang: "das ist dobre" to mean "this is good" | ||
mberends | NL=dag, DE=tag | 10:07 | |
hanekomu | but not widely used; maybe not widely understood | ||
wayland | mberends, guess I'm wrong then, unless it's Scandinavian, which I doubt | ||
hanekomu: is that 2 German words and one Slovak? (I'm monolingual English here, so I know nothing; sorry :) ) | 10:09 | ||
jnthn | wayland: yes | 10:10 | |
wayland76 | ok. Well, maybe I know something then. But not much :) | ||
jnthn | das ist = that is (or similar, my German ist nicht dobre ;-)) | ||
Matt-W | precisely that, actually :) | ||
mberends | hanekomu: the 'dobre' might also have slipped in from Slovenia | 10:11 | |
Matt-W | my German's pretty awful, but I remember the basics | ||
hanekomu | wayland: yes, "das ist" = "that is", dobre comes from Slovenia or Slovakia | ||
wayland76 | The closest I get is a dobro en.wikipedia.org/wiki/Dobro :) | 10:12 | |
"Das ist dobre" has a certain alliteration to it :) | |||
hanekomu | actually, come to think of it, i personally have only heard it said in this office, where the programmers have a rather earthy humour :) | ||
jnthn | These things have to start somewhere... ;-) | 10:13 | |
mberends | Slovenian slang for "excellent" borrows English to make "full dobor" :) | 10:15 | |
they sound quite funny saying it | |||
arnsholt | wayland: Depends on how I do it. callwith, callsame, nextsame and nextwith all fail (looks like rakudo doesn't implement that yet) | ||
jnthn | arnsholt: No, not yet. May, all being well. :-) | 10:17 | |
arnsholt | Saying Grammar.parse(@_, |%_) fails because that makes the invocant in Grammar.parse the Grammar protoobject, not my class | ||
I've tried some variations on self.$stuff, but none of them seem to work either | 10:18 | ||
wayland76 | Is there a way arnsholt can call his ancestor method? | ||
jnthn | grammar Foo { ... }; Foo.parse(...) ? | ||
wayland: From where? Within a subclass? | |||
You can do tricks with the meta-class. | 10:19 | ||
wayland76 | jnthn: I think that's what he wants -- hopefully he'll address the question | ||
jnthn | rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.^dispatch($x, "x"); | 10:20 | |
p6eval | rakudo 654500: OUTPUTĀ«2ā¤Could not locate a method 'B()<0xb6a06fc0>' to invoke on class 'A'.ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
arnsholt | I've got a grammar, and I'd like its parse() to set the action class automatically before handing control over to the real parse() in Grammar | ||
jnthn | rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.^dispatch("x", $x); | 10:21 | |
p6eval | rakudo 654500: OUTPUTĀ«2ā¤too many arguments passed (3) - 1 params expectedā¤current instr.: 'parrot;A;x' pc 171 (EVAL_24:73)ā¤Ā» | ||
jnthn | gah, I should actually go look at the signature... | ||
Matt-W | Calling your parent class' version of the method you're in the middle of overriding should be fairly simple, shouldn't it? | 10:22 | |
jnthn | Matt-W: Sure, when we get the things in place to do that. | ||
wayland76 | Matt-W: yes, but not implemented, if I understand correctly | ||
Matt-W | Ahah | ||
jnthn | rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.HOW.dispatch($x, "x"); | 10:23 | |
p6eval | rakudo 654500: OUTPUTĀ«2ā¤1ā¤Ā» | ||
jnthn | That one. | ||
jnthn needs coffee | |||
10:24
riffraff left
|
|||
Matt-W | So that says get me A's metaclass, and tell it to find method x and call that with $x as the invocant | 10:32 | |
? | |||
jnthn | Matt-W: Yes. | 10:33 | |
Matt-W | And so of course it finds A's x, because it only knows about that | ||
jnthn | Right. | ||
Matt-W | Looking forward to the proper syntax for that :) | ||
And I love the new type mismatch errors | 10:34 | ||
jnthn | Implementing it is in my next Hague Grant application... | ||
news.perlfoundation.org/2009/04/hag...t_tra.html for anyone interested in commenting, btw | |||
Matt-W | I haven't fixed it yet, but it gave me a much better idea of a bug in Form once it started complaining about Ints and Strs | ||
jnthn | Great. masak++ for asking for them | 10:35 | |
Matt-W | That looks like a great grant | 10:37 | |
Serious improvements to Rakudo | |||
I always get a good feeling about people wanting to pull hacks out of things and implement it properly | 10:38 | ||
10:40
eMaX_ left
10:41
cognominal joined
|
|||
arnsholt | Hmm. Calling Grammar.HOW.dispatch(self, "parse") in my grammar's parse() gets me a deep recursion error | 10:41 | |
jnthn | :-S | 10:44 | |
arnsholt: Reduce and file rakudobug, if you can. | |||
arnsholt | I'll try to remember that this evening. Unfortunately I have some schoolwork that desperately needs my attention =) | 10:46 | |
wayland76 | Sacrelige! Rakudo takes precedence over everything! :) | ||
(which is why I'm currently writing P5 code unrelated to P6) | 10:47 | ||
arnsholt | Heh | 10:48 | |
jnthn is doing $other_day_job and just encountered a 400+ line stored procedure. | 10:50 | ||
wayland76 | SQL? | ||
jnthn | Yes. | ||
wayland76 | Sounds like it needs plperl :) | 10:52 | |
jnthn | MS SQL server. ;-) | 10:54 | |
Matt-W | Ouch | 10:55 | |
Matt-W is writing up horrible forms requesting permission to use open source software we've been using for years, because some lawyer's decided we need to. | |||
jnthn | MS SQL Server ain't so bad IMO. | 10:56 | |
Granted I didn't play with many DBMS, but after MySQL it's an improvement. | |||
Matt-W | It's certainly more capable | 10:57 | |
baest | jnthn: well, almost anything is nice after MySQL :) PostgreSQL is really nice | ||
Matt-W | The only thing that stops people writing 400+ line stored procedures in MySQL is it not supporting them | ||
SamB | Matt-W: are they brain-dead ? | ||
the lawyers, I mean | |||
Matt-W | SamB: I think they're trained in the Microsoft Way | ||
SamB | the permission is already there | 10:58 | |
you should have insisted that they read it | |||
Matt-W | Also they don't understand how these things work | ||
10:58
wayland__ joined
|
|||
Matt-W | And some of them think all open source is GPL | 10:58 | |
10:58
wayland76 left,
wayland__ is now known as wayland76
|
|||
Matt-W | One day I'll work for a more enlightened company... | 10:59 | |
SamB | still, you shouldn't let them bully you like that! | ||
Matt-W | Oh for now I just waste my time doing that | ||
And use it as an excuse when they demand to know why bugs aren't being fixed | |||
Let my management turn up the heat on theirs | |||
Although my management tend to just say 'oh yes we need to do that' | |||
SamB | :-( | ||
Matt-W | On the bright side... it's lunchtime! | 11:00 | |
SamB | no, breakfast! | ||
wayland76 | 9pm here :) | ||
SamB | 7am here | ||
11:04
payload joined
11:12
Whiteknight joined,
wayland left
11:14
iblechbot joined
11:15
agentzh left
11:17
wayland joined
11:27
Whiteknight left
11:43
ruoso joined
|
|||
ruoso | Hello! | 11:47 | |
moritz_ | hi there | ||
wayland | o/ hi and goodnight | 11:53 | |
11:53
wayland left,
nbrown left
12:03
sri_kraih left
12:07
sri_kraih joined
12:10
amoc left
12:22
abra joined
12:32
amoc joined
12:35
alanhaggai left
12:47
synthetic joined
12:48
synthetic left
12:49
synthetic joined
12:53
alanhaggai joined,
smtms joined
12:56
PhatEddy joined
12:58
iblechbot left
|
|||
pmichaud | Good morning #perl6 | 13:01 | |
moritz_ | good day | 13:02 | |
PhatEddy | TimToady: if you are still interested and are around we have all parties needed to discuss where to put those ticket tests ... | 13:03 | |
PerlJam | good morning pmichaud | 13:04 | |
pmichaud | it's still a little early in TimToady.tz | ||
jnthn | morning pmichaud | 13:06 | |
Matt-W | hi pmichaud | ||
TimToady | well, except my current tz is somewhere rather east of here. :) | 13:08 | |
effective tz, not actual tz | |||
PerlJam | you live in the land of the rising sun if only in your mind? | 13:09 | |
PhatEddy | good morning everyone | ||
Matt-W | Time zone, apparently, is just a state of mind | 13:10 | |
TimToady | compared to my usual schedule, I running about EDT at the moment | ||
went to bed at 9:00 last night, usually 12:00 | |||
synthetic | Good morning everybody | 13:11 | |
I've been checking out rakudo lately and am impressed by it's feature completeness, but wondering why it's so slow. Is this due to parrot or is it just rakudo itself being pretty unoptimized currently? Hope some of the internals hackers could share some thoughts on that | 13:13 | ||
pmichaud | synthetic: it's a combination of things | ||
synthetic: parsing is still on the slow side, we know how to fix that | |||
moritz_ | basically rakudo contains no optimizations | 13:14 | |
except multi dispatch caching | |||
pmichaud | synthetic: execution speed is slow on the Parrot side -- some things which used to be fast were slowed down quite a bit with recent changes to Parrot, and I'm not sure when that will take place | ||
but overall we've been focusing on feature completeness more than execution speed (more) | 13:15 | ||
that's likely important, because as we add more features we often discover that any optimizations we might have spent time implementing would be invalidated by a later feature revision | |||
synthetic | so you're still confident that perl6 is gonna be one of the faster "agile" languages out there? Because this was one of the original goals of the implementation if got that correctly | ||
pmichaud | I'm confident that we can make it much faster than it is today, yes. | ||
synthetic | hehe | 13:16 | |
pmichaud | "one of the faster 'agile' languages" will depend on how someone wants to measure speed | ||
synthetic | I believe in you | ||
13:16
alanhaggai left
|
|||
TimToady | we've been planning for speed in providing the needed information to the optimizer, but nobody's written the optimizer yet. :) | 13:16 | |
moritz_ | I'm pretty sure that we'll never beat Perl 5 in terms of compilation speed | ||
pmichaud | otoh, we have more opportunities for pre-compilation :-) | 13:17 | |
Matt-W | I can live with that if we can run fast | ||
TimToady | probably not, but p5's compiler is mad | ||
PerlJam | perl6 will do things that are nigh impossible in other languages. For these things, that it can do them at all is amazing, so speed doesn't so much matter. :) | ||
TimToady | we plan to be disruptive in many ways, so there are some things that will take a hit | ||
and one of them is short-term performance | |||
moritz_ | Matt-W has a point - rakudo can precompile modules today, which perl5 can't | ||
synthetic | absolutely, perl6 is going to be one of if not THE most beautiful and compact languages of all time imho | 13:18 | |
PerlJam | moritz_: sure it can! | ||
Matt-W | Form's tests run massively faster if I precompile Test.pm | ||
and all the Form modules | |||
moritz_ | PerlJam: how? | ||
PerlJam | moritz_: sure ... make me figure out how to do it again ... :-) | ||
moritz_ | PerlJam: afaict there was a mechanism to dump and reload bytecode, but it was slower than compiling again | 13:19 | |
moritz_ is most interested to find out about it | |||
synthetic | does static typing help in going for performance? I'm wondering beacuse as I understand it type-checking is done completely at runtime!? Or can the JIT use that information in a good way? | ||
jnthn | fwiw, part of the dispatch work I'm planning for May should win us some speedups. | ||
PerlJam | I haven't tried it in about 8 or so years. I tried compiling several .pm to .pmc to see if it was an improvement. I'm pretty sure it wasn't or I would have remembered how to do it. | 13:20 | |
jnthn | synthetic: I expect that we'll be able to use the type information do eliminate a bunch of runtime checks, once we have an optimizer. | ||
As well as give more compile time errors about stuff that will innevitably fail at runtime. | |||
13:21
skids joined
|
|||
PerlJam | moritz_: in any case ... I can precompile modules ... with PAR ;-) | 13:22 | |
pmichaud | jnthn: oooh, Tene's patch in r38395 looks really good to me. Tene++ | ||
moritz_ | PerlJam: which makes startup even slower :) | ||
pugs_svn | r26552 | szabgab++ | create index of both X<> and C<> tags in the synopsis | 13:23 | |
13:23
DemoFreak joined
|
|||
PhatEddy | TimToady emailed some concerns yesterday evening about including RT ticket tests in the spec hierarchy ... | 13:24 | |
jnthn | pmichaud: Nice :-) | ||
pmichaud: So does .HLL work now? ;-) | |||
pmichaud | jnthn: from scrollback it appears that Tene got it mostly working, yes. | ||
PhatEddy: url or message id? | 13:25 | ||
pugs_svn | r26553 | ruoso++ | [re-smop] start of p6opaque... missing the DESTROYALL part... | ||
TimToady | well, I just noticed first that some Q:PIR had snuck into the t/spec, and of course STD doesn't like that | ||
pmichaud | I totally agree, Q:PIR doesn't belong in spec. | ||
TimToady | but there are also t/spec/ticket files | ||
where ticket seems to be RT specific | 13:26 | ||
if it's considered a temporary I don't know where to put this in the spec directory | |||
PhatEddy | all of the things you mention are scheduled for removal as of now ... | ||
TimToady | that's okay, but we already have an unclassified dir, I think | ||
pmichaud | I think there's an unclassified dir in t/ -- not sure about t/spec/ | ||
I hadn't noticed t/spec/ticket/ | 13:27 | ||
looking | |||
PhatEddy | the things in the spec/ticket directory have now been integrated into the actual spec tests ... | ||
TimToady | yeah, it's t/xx-unclassified | ||
PhatEddy | is that integration a problem? | ||
TimToady | *uncategoriezed | ||
moritz_ prefers integration | |||
TimToady | bleah | ||
need coffee | |||
synthetic | Would it make sense to have something like a NativeInt type, in addition to the regular Int? Where you would say: "I don't want any overflow checking and the kind of safeties that make Numbers slowish in interpreted languages normally! I know what I'm doing, just make it fast!" | 13:28 | |
moritz_ | we already have too many test files | ||
pmichaud | synthetic: "int" | ||
moritz_ | synthetic: we have, it's called 'int' | ||
pmichaud | synthetic: my int $a = 3; | ||
synthetic | 'int' as opsed to 'Int'? | ||
pmichaud | synthetic: yes. Also "num", "bool", etc. | ||
synthetic | ah nice | ||
PerlJam | synthetic: aye, lowercase types are "native" | ||
synthetic | getting more exited about perl6 every day ;) | 13:29 | |
read an article in he german CT last month, from moritz. Seems like it'S slowly getting real ;) | 13:30 | ||
13:30
abra left
|
|||
Matt-W | Oh it is | 13:30 | |
Sometimes I forget most people don't know it | |||
PerlJam | I think it's fairly real already. | ||
Real enough for a web server for instance. :) | 13:31 | ||
13:31
abra joined
|
|||
pmichaud | No, it's vaporware. I'm pretty sure I've read that somewhere. | 13:31 | |
PerlJam | pmichaud: don't believe everything you read on wikipedia | ||
synthetic | hehe, I have, but didn't believe for a second ;) | ||
good things take time | 13:32 | ||
pmichaud | PerlJam: oh, it wasn't on wikipedia. I think it was in the San Diego Union-Tribune | ||
and use.perl, and digg, and slashdot :-) | |||
oh, and reddit. | |||
Matt-W | There was an amazing discussion on LinkedIn about it | ||
In which someone claimed Perl 6 has abandoned being Perl | |||
TimToady | PhatEddy: to me, 'integration' means testing holistically, which doesn't really mean 'miscellaneous' or 'unclassified' | ||
pmichaud | ah, I must have missed the LinkedIn discussion. | 13:33 | |
Matt-W | because it's not based on regular expressions anymore | ||
PerlJam | Matt-W: what does that even mean? | ||
perl 5 isn't "based on regular expressions" either :) | |||
pmichaud | that means someone hasn't been looking very closely at Perl 6. | ||
PhatEddy | TimToady: unfortunately I don't understand the matter at that level of sophistication | ||
pmichaud | Given that its parser is heavily based on regular expressions far more than anything else :-) | ||
moritz_ | synthetic: actually there are two more Perl 6 articles to come (both in iX) | 13:34 | |
PhatEddy | TimToady: I just meant that all the tests are now in existing spec test files | ||
Matt-W | PerlJam: The best I could comprehend, he thought Perl 5 was based on regexps like Haskell is based on the lambda calculus | ||
PhatEddy | TimToady: and the spec/ticket files can all be removed without loss of tests | ||
literal | Matt-W: odd, one might argue that Perl 6 is more based on regular expressions (at least as Perl 6 understands them) | ||
Matt-W | PerlJam: Which, I know, makes no sense at all | ||
literal | what with the Perl 6 grammar and all | 13:35 | |
Matt-W | Mmm | ||
synthetic | moritz_: we get them on the job so I'll definitely not miss them | ||
Matt-W | I explained what was really going on | ||
moritz_ | PhatEddy: then remove them | ||
Matt-W | I'm not sure it was worth the effort, but now maybe at least one more person knows what's being done here | ||
PerlJam | literal: so ... perl 5 is like perl6's illiterate younger brother? :) | ||
literal | something like that | ||
skids | pmichaud: what's the disposition of inplace string ops in Parrot? I see various meanderings about getting rid of them. | 13:36 | |
literal | I think TimToady usually refers to Perl as female, though :) | ||
TimToady | moritz: but if the tickets are things that need to go into the spec somewhere... | ||
PerlJam | literal: like timezone, gender is a state of mind :) | ||
pugs_svn | r26554 | szabgab++ | add some X<> tags | 13:37 | |
TimToady | I can see a use for a holding area in t/spec that is not rt specific | 13:38 | |
13:38
eric256 joined
|
|||
TimToady | then people who don't have rakudo access can work on moving the tests | 13:38 | |
moritz_ | TimToady: they are in the spec tests already | ||
TimToady | course, if rakudo wants to keep the rt tests around anyway | ||
ah, okay | 13:39 | ||
just part of spec that rakudo turns off? | |||
moritz_ | probably fudged | ||
TimToady | gotcha | ||
in that case, yes, they don't need to be there | |||
ah, missed what PhatEddy said above, sorry for the confusion | 13:40 | ||
moritz_ | I keep t/spec/integration around for things that I can't figure out where to put them | ||
or things that aren't specced, but are common sense | 13:41 | ||
TimToady | I read that as "testing the integration", not as things needing to be integrated | ||
moritz_ | well, for example it tests the integration between 'if' and modules | ||
the spec doesn't say "an 'if' statement also works in modules", but we test for it nonetheless | 13:42 | ||
TimToady | I will at least admit that "integration" sounds classier than "miscellaneous" :P | ||
moritz_ | [particle]++ for the name | ||
PhatEddy | Just quickly - there is no place for the PIR test to go for the moment afaik - so in that one case I just plan to tack it on to the ticket - OK? | ||
TimToady | but if it means that, I'm okay with it | ||
moritz_ | PhatEddy: OK | ||
TimToady | backlogging, so don't say anything interesting :) | 13:44 | |
pugs_svn | r26555 | ron++ | removing ticket/ directory. tests now part of regular spec tests | 13:46 | |
TimToady | @tell masak I just need to implement the warning on class redefinition with a tuit of some sort | 13:49 | |
lambdabot | Consider it noted. | ||
pmichaud | PhatEddy: PIR tests can go into Rakudo's test dir | 13:50 | |
can I see the Q:PIR test in question? | |||
TimToady | t/spec/S12-class/basic.t | ||
pmichaud | oh, that test definitely does not belong in t/spec | 13:51 | |
it's clearly testing something about Rakudo, not about Perl 6 | |||
TimToady | we all have our little mental aberrations :) | ||
pmichaud | I'm not certain that the original ticket is actually a bug. | 13:52 | |
it really speaks more to Parrot design than Rakudo design, anyway. | |||
13:53
azawawi joined
|
|||
azawawi | hi | 13:53 | |
pmichaud | at the moment I think I'm going to declare RT #60496 "not a bug" and let it slide for now. We don't currently make any guarantees that Rakudo objects play nicely with Parrot 'isa' opcodes. | 13:54 | |
pugs_svn | r26556 | szabgab++ | add links to syn index | ||
PhatEddy | The ticket seems to ask whether parrot class isa should work like Perl 6 class isa. It might be sort of nice if it did but not necessary ... | ||
pmichaud | I agree it would be nice if it does. Eventually it hopefully will. But Parrot vtables don't map cleanly to Perl 6's methods. | 13:55 | |
We currently have to do lots of vtable-specific workarounds. | |||
Matt-W | Didn't I see something about that in jnthn's Hague Grant proposal? | 13:59 | |
pmichaud | I didn't see anything about it | 14:00 | |
14:01
wollmers joined
|
|||
jnthn | Only that method dispatch will layer better on top of Parrot. | 14:01 | |
14:01
zamolxes joined
14:02
alester joined
|
|||
pugs_svn | r26557 | pmichaud++ | [t/spec]: Remove Rakudo/Parrot-specific test. | 14:02 | |
eric256 | when you do a perl6 -v, where does the revision number come from? and shouldn't it list the git SHA-1 ? | ||
pmichaud | currently the revision number is coming from Parrot. | 14:03 | |
Yes, it should be something more useful. | |||
I'm open for patches or other suggestions. :-) | |||
wollmers | TimToady: I agree with moritz, that something like integration tests - cross specs - are necessary. | ||
TimToady | wasn't arguing with that | ||
pmichaud | I don't know how to get the git SHA-1 into the code. | 14:04 | |
eric256 | ahh okay, i was just reading wincent.com/a/about/wincent/weblog/...bers_i.php and it kind of recommends using (data "+y-%j") in addittion to the SHA-1, that would make it easier to look at too builds of perl6 and at least see which is newer | ||
eric256 goes to look | |||
wollmers | But at the moment the tests are incomplete and partly - more or less - in the wrong place. | ||
moritz_ | pmichaud: git log --pretty=format:%h|head -n1 | 14:05 | |
or %H if you want the full hash | |||
pmichaud | moritz_: that gets me the hash, yes -- how do I get that into the compiled code? ;-) | ||
I guess I need to make it part of gen_builtins.pir or some other generated file. | 14:06 | ||
TimToady | I also am not arguing with integration/ being used for misc pre-classified tests, as long as it's culturally understood | ||
moritz_ | pmichaud: yes, something like that | ||
pmichaud | we'll be refactoring src/gen_builtins.pir soon, so perhaps I can make it part of that. | 14:07 | |
There's also the tricky issue that not everyone gets Rakudo via git. | |||
moritz_ | pmichaud: `git log -1 --pretty=format:%h' actually | ||
hurm. | |||
PerlJam | write the SHA1 to a file in the tarball. | ||
wollmers | TimToady: We can put a note into README | ||
pmichaud | PerlJam: sure, but then we need to know when to read the SHA1 from the tarball and when to get it from git. | 14:08 | |
s/tarball/file/ | |||
azawawi | TimToady: STD needs a space after $/.chunks (line 32) to parse nopaste.snit.ch/16441. Any ideas why it is not parsing it? | ||
PerlJam | always get it from the file and make the build process regen the file each time. :) | ||
pmichaud | azawawi: Rakudo misparses that. | ||
azawawi: without the space, the brace would be a postcircumfix brace (like on a hash) | 14:09 | ||
the space is required to be valid Perl 6. | |||
azawawi | pmichaud: thx... | ||
wollmers | Ciao, servus to all - have to catch my train from Vienna to Erlangen. | 14:10 | |
moritz_ | wollmers: have fun... | ||
wollmers: if you told me that earlier, we could have met in Erlangen :-) | |||
pmichaud | PerlJam: which "build process"? | ||
moritz_ | I'll be there from Fr to Sun | 14:11 | |
pmichaud | PerlJam: you mean the Makefile should regen the file? | ||
PerlJam: or Configure.pl? | |||
PerlJam: or ... ? | |||
TimToady | wayland76: actually, .wrap was aimed squarely at AOP | ||
pmichaud | "was"? ;-) | 14:12 | |
wollmers | moritz_: I am from Vienna, but live in Erlangen since 2007. But this WE I will be in Albstadt. | ||
14:12
wollmers left
|
|||
moritz_ | wollmers: ok, we have to meet some time - I'm in Erlangen roughly twice a month | 14:13 | |
TimToady | azawawi: yes, what pmichaud said | 14:14 | |
wayland76: NOT what pmichaud said. :) | |||
szabgab | perlcabal.org/syn/index_C.html and perlcabal.org/syn/index_X.html | ||
pls check them out and let me know which way to improve them | 14:16 | ||
moritz_ | szabgab: some links occur multiple times under the same bullet point | 14:18 | |
pmichaud | szabgab: some of the titles have < > in them that probably need conversion to < > | ||
moritz_ | szabgab: it would be nicer to remove duplicates | ||
14:18
km2 left
|
|||
TimToady | a lot of the early S* have bullets where they ought to have headings, I expect | 14:18 | |
yowser | 14:19 | ||
std: if 1 {} elseif 2 {} | |||
p6eval | std 26557: OUTPUTĀ«##### PARSE FAILED #####ā¤Statements must be separated with semicolon at /tmp/DnBx1H8YRq line 1:ā¤------> if 1 {} elseif 2 {}ā¤ expecting spaceyā¤FAILED 00:02 35mā¤Ā» | ||
TimToady | there's a bogus message... | ||
pmichaud | looks like 'else' needs a >> or a <.nofun> or something | ||
PerlJam | pm: Hmm. As long as you don't put the .git dir in the tarball, you can use the presence of the .git to determine if you've got a tarball or a clone. for a tarball, use the value in the file, for a clone, regen the file at Configure.pl time. | 14:20 | |
TimToady | well, that's what "spacey" is supposed to be looking for | ||
pmichaud | PerlJam: does Windows use ".git" for its subdir? | ||
TimToady | but it must have backtracked and decided "else" is starting a new statement | ||
jnthn | pmichaud: yes | ||
pmichaud | the tarballs definitely don't get ".git". No need to include the entire history of Rakudo in the tarball :-) | 14:21 | |
TimToady | at least it's pretty clear *where* it failed | ||
jnthn | (expecting spacey)++ | ||
pmichaud | I was thinking of testing explicitly for "elseif" and issuing a message. | ||
since that's a common typo. | |||
maybe "else if" as well. | 14:22 | ||
jnthn | And common in other languages. | ||
As is else if | |||
TimToady | else if is more informative | ||
jnthn | Perl always felt like the odd one ut to me with using elsif | ||
TimToady | std: if 1 {} else if 2 {} | ||
p6eval | std 26557: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed block at /tmp/jZ9w8tiLdI line 1:ā¤------> if 1 {} else if 2 {}ā¤ expecting parameterized blockā¤FAILED 00:02 35mā¤Ā» | ||
moritz_ | that is also confusing. | ||
TimToady | troo | 14:23 | |
moritz_ | it's not a malformed block, it's not a block where a block is expected | ||
pmichaud | I think "use 'elsif'" would be more helpful there. | ||
TimToady | pot, kettle :P | ||
PerlJam | or change the language def to make "elseif" and "else if" forms equivalent to "elsif" ;) | 14:24 | |
14:26
iblechbot joined
|
|||
jnthn | Indeed! That Perl 5 only lets you write elsif is a clear violation of TMTOWTDI. | 14:26 | |
;-) | |||
TimToady | every time we add more tokens, the parser is going to slow down more, so there's a tradeoff between perfect error messages and performance, unless we can do an elseif check lazily after it has failed already | ||
pmichaud | in this case, it would only slow down after parsing 'if', yes? | 14:27 | |
TimToady | yes | ||
pmichaud | as opposed to the general case where we introduce a slowdown on every term or something like that. | ||
TimToady | well, but also we have to recompile STD.pmc every time, currently | ||
and it gets longer | |||
but precompilation will fix that, mostly | |||
pmichaud | it's a reasonable consideration, I agree. | ||
14:28
synthetic left
|
|||
moritz_ | that's why I suggested a more general (but still helpful) error message | 14:31 | |
pugs_svn | r26558 | szabgab++ | remove duplicate links from index_X.html pages | 14:36 | |
14:37
justatheory joined
14:38
kidd left
14:42
ejs left
14:43
sri_kraih_ joined
14:44
mmpf is now known as mattp
14:47
ejs joined
|
|||
pugs_svn | r26559 | lwall++ | [STD] be clearer about else\s*if and missing blocks | 14:49 | |
14:52
nihiliad joined
14:53
sri_kraih left,
masak joined
14:55
azawawi left,
LylePerl left
14:57
PhatEddy left
15:01
km2 joined
15:02
ejs1 joined
|
|||
pugs_svn | r26560 | szabgab++ | smartlinks: by default hide snippets | 15:03 | |
15:03
Psyche^ joined
|
|||
Tene | pmichaud: we could ask git to write out the revision ID, date of the commit, or whatever else you want to a file when it's checked out. | 15:04 | |
pmichaud: I can set that up if you want. | |||
pmichaud | ooh, that would be nice. | ||
Tene | Just tell me what information you want | ||
pmichaud: the hll branch is up to date with master and passes most of the tests. Lemme nopaste the test summary report... | 15:05 | ||
pmichaud | have git write src/builtins/revision.pir | 15:06 | |
in that, have it do | |||
.const str RAKUDO_REVISION "<value>" | |||
er | |||
.const string RAKUDO_REVISION "<value>" | |||
15:07
[particle] joined,
[particle] left
|
|||
pmichaud | Tene: (test summary) that's quite a few failures... but I suspect it's due to hll branch being from an older version of Rakudo | 15:07 | |
my approach would be to start migrating some of the changes from hll back into master, but leave things running in 'parrot' | 15:08 | ||
Tene | pmichaud: no, I pulled the updates from master. | ||
15:08
[particle] joined
|
|||
Tene | I tried running a few of those tests directly, and they segfaulted partway through. | 15:08 | |
pmichaud | brb | 15:09 | |
back | 15:10 | ||
it seems to me as though we _ought_ to be able to make changes to trunk, and simply switch .HLL on/off to try things out | 15:11 | ||
Tene | pmichaud: there are several files that currently have mixed Perl6 and parrot content | ||
15:11
ejs left
|
|||
pmichaud | hmm. Perhaps we should refactor those. | 15:12 | |
Tene | and ClassHOW.pir currently needs to grab some items from the perl6 HLL namespace | ||
9or needs better refactor, as discussed in its header POD | |||
pmichaud | I guess what would help is seeing a diff of the hll branch from master | 15:13 | |
15:13
exodist joined
|
|||
moritz_ | git diff master | 15:14 | |
15:14
ruoso left
|
|||
PerlJam | Tene: how do you tell git to create a file on clone? | 15:15 | |
pmichaud | wouldn't it need to also update the file on 'pull' ? | ||
PerlJam | that too. | ||
AFAIK, when you clone a repo, you don't get the hooks in your clone. | |||
Tene | PerlJam: you can set a filter that can intercept and modify the contents when git is updating the file. | 15:16 | |
pmichaud | + info = get_root_global ['parrot'], 'Hash' | ||
that looks wrong to me. | |||
I think it should be get_root_namespace | |||
Tene | PerlJam: you can also set an attribute on a file telling git to do keyword expansion on a file when you export an archive with git-archive | 15:17 | |
PerlJam | Tene: Oh! I know about that, but I blocked it out because I associate it with trying to do the equivalent of $Id$ and such from RCS/CVS | ||
15:17
hercynium left
|
|||
PerlJam | yes, evil keyword expansion | 15:17 | |
Tene | PerlJam: there's something specific for $id$ | ||
and there's something else for generic filtering | |||
15:18
pmurias joined
15:19
Patterner left,
Psyche^ is now known as Patterner
|
|||
pmichaud | Tene: The call to "!fixup_routine_type" is probably better done with a subid anyway. | 15:20 | |
Tene | Sure, okay. I didn't know what to do there. | ||
pmichaud | that eliminates the need for the 'perl6' lookup in ClassHOW.pir | ||
PerlJam | git attributes. I still don't think I get how they'll be applied on clone or fetch. But it gives me something to look at . | ||
15:23
ejs1 left
|
|||
pmichaud | Okay. All of the places where new 'Hash' was converted to get_root_global need to be using get_root_namespace instead. | 15:24 | |
Tene | I'd really prefer the output of 'git describe' instead | 15:25 | |
Hmm... maybe during the build process. | |||
pmichaud: how does "<most-recent tag>-<numbe of commits since that tag>-<short git id>" look to you? | 15:26 | ||
i.e. | |||
2009-04-45-g7d37176 | |||
pmichaud | 2009-04-45 looks too much like a date. | ||
maybe commas or colons or semis or something? | |||
moritz_ | 2009-04:45:g7d37176 | ||
Tene | That's what you get for using dates as tags. ;) | ||
yeah, I'll play around with it. | 15:27 | ||
[particle] | get rid of the dash | ||
pmichaud | dates often make the best tag. It's real easy to say "how old is the 2009-04 release", it's much harder to say "when was Rakudo #3 released"? | ||
Tene | pmichaud: yes, I know. i was teasing. :) | ||
pmichaud | and, of course, everyone knows exactly when Parrot 1.9 will be coming out, right? ;-) | 15:28 | |
one potential problem with "most-recent-tag" is that when I build the tarball I might not have tagged it yet. | 15:29 | ||
I suppose we could build the tarball twice -- once for testing and then again for the official one. | 15:30 | ||
PerlJam | pm: how do you build the tarball? | ||
pmichaud | pj: "make release VERSION=2009-04" | ||
PerlJam | you could have the makefile tag it for you. | ||
pmichaud | see also docs/release_guide.pod | ||
PerlJam: we generally want to make a "test tarball" to make sure the tarball is correct before tagging anything. | 15:31 | ||
i.e., we should only tag *after* we've verified that the tarball is correct, builds properly, etc. | |||
15:31
M_o_C joined
|
|||
moritz_ | pmichaud: tagging can be easily reverted, unless you've pushed it | 15:32 | |
pmichaud | even so, I'm not sure I see a huge benefit to auto-tagging. | ||
We also tag the release names. | |||
moritz_ | ok | ||
15:32
Patterner is now known as Guest97338,
Guest97338 is now known as Patterner
|
|||
pmichaud | at some point it might end up being "make release VERSION=2009-04 NAME=Bratislava" | 15:32 | |
PerlJam | pmichaud: mediate the tagging with an environment variable. :) | ||
pmichaud | but that's *really* low priority at the moment. | 15:33 | |
15:33
eMaX joined
|
|||
pmichaud | i.e., the current 'make a release' process isn't terribly onerous or broken, so I don't see a strong need to introduce more things to worry about. | 15:33 | |
eMaX | moin | ||
moritz_, cool article series in IX tnx for that | |||
moritz_ | eMaX: is the May issue out already? | 15:34 | |
eMaX | yes got it today | ||
moritz_ | cool | 15:35 | |
pmichaud | moritz++ | ||
moritz_ | I'm going to submit the last one (on regexes and grammars) tonight or tomorrow | 15:36 | |
pmichaud | oh, that reminds me -- I need to make my yapc::eu talk submissions. | ||
jnthn | oh noes, I forgot about that too... | 15:38 | |
pmichaud | anyone doing the "cool stuff in Perl 6" talk? | ||
jnthn | I'm not sure what to talk about. | ||
15:38
eMaX left
|
|||
pmichaud | aka "The Perl 6 Express"? ;-) | 15:38 | |
jnthn | Dare I submit a talk about a Perl 6 module I didn't write yet? | ||
Well, I could give a talk like that there... | 15:39 | ||
pmichaud | jnthn: why not? I submitted talks about a compiler I hadn't written yet :-) | ||
jnthn | I pondered submitting one on roles... | ||
hehe! | |||
moritz_ | "role plays" | ||
pmichaud | I'm planning to submit a regexes/grammars talk, unless someone else wants to do that. | 15:40 | |
a talk on roles would be excellent. | |||
I think it's often a good idea for there to be an introductory Perl 6 talk aimed at P5 programmers | |||
as in "here's cool stuff you can do in Perl 6 today" | 15:41 | ||
masak | so far, I've submitted two talk proposals. one on Web.pm, one on grammars and rules. | ||
lambdabot | masak: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
masak | ooh, a message! | ||
@messages | |||
lambdabot | TimToady said 1h 52m 14s ago: I just need to implement the warning on class redefinition with a tuit of some sort | ||
literal | what's the difference between roles/traits and mixins? | 15:42 | |
masak | TimToady: ah. | ||
pmichaud | masak: if you're doing grammars and rules, I won't step on that talk then. | ||
masak | literal: compile time and run time, respectively. | ||
pmichaud: well, supposing it gets accepted. | |||
pmichaud | masak: I'm sure that some talk on regexes and grammars will be accepted. | ||
literal | masak: but in Perl 6, a trait is compile time while role is runtime? | 15:43 | |
mberends | I'm willing to talk about P6 for P5 programmers if nobody else does. | ||
masak | pmichaud: I think I'll focus on whole parser examples, picking them apart and showing the neat stuff. | ||
mberends: nice! | |||
pmichaud | I have so many things I _can_ talk about, so I prefer not to take the stage away from others who might give talks. | 15:44 | |
masak | literal: no, I think the reverse is the case. | ||
literal | ok | ||
PerlJam | pm: talk about how there's going to be an alpha "production release" of rakudo by the end of the year ;) | 15:46 | |
pmichaud | pj: that sounds like a lightning talk. :-) | ||
moritz_ | or a general rakudo roadmap/vision talk | ||
pmichaud | already submitting that one "Hacking Rakudo Perl" | ||
TimToady | traits are applied at compile time, roles are applied at either compile or run time | ||
moritz_ | another nice lightning talk woudl be the "the #perl6 eco system" | 15:47 | |
pmichaud | oooh, I like that. | ||
I still think I'd like to put together a lightning talk about "the waterbed theory of Perl 6 pain" | |||
moritz_ | lol | ||
masak | :) | ||
"pain is pushed towards the implementers" | 15:48 | ||
PerlJam | pm: the waterbed is really filled with acid, so watch where you push and how hard? | ||
jnthn | <picture of tormented implementers> | ||
masak | o_O | ||
pmichaud | pj: well, in some sense our goal is going to be to cut a hole in the waterbed to let the pain out :-) | ||
jnthn | OK, I will submit one on roles, and Grammar::Generate; | ||
(that is total two talks) | |||
pmichaud | I'll submit "Hacking Rakudo Perl", and a "blank slot" | ||
TimToady | "vicarious suffering" is the theological term | 15:49 | |
pmichaud | where I'll let the organizers choose a topic | ||
I wish more of my suffering was vicarious. :-) | |||
PerlJam | pmichaud: all you have to do is find more people to delegate to. | 15:50 | |
pmichaud | s/more people/some masochists/ # ?? | ||
TimToady | vicars :) | ||
PerlJam | one of the criticisms I've heard about rakudo is that it's tied to parrot and that parrot is somehow broken. (I've heard this a few times, but never with any specifics) I wonder if this is another "perl is dead" meme on the rise. | 15:51 | |
TimToady | maybe we need to start a "perl is undead" meme | 15:52 | |
15:52
jradzuweit joined,
jhorwitz joined
|
|||
TimToady | vampiric suffering... | 15:53 | |
PerlJam | "zombie perl" sounds like a good title for a talk :) | ||
[particle] | about pugs? | ||
pmichaud | "We the implementors will bear any burden, pay any price, to meet the Perl 6 vision. We shall conduct ourselves so that a thousand years from now, when Perl 6 is finally released, people will look back and say 'This was their finest hour.'" (Okay, did I mix too many speeches in that? ;-) | ||
PerlJam | lol | ||
diakopter | Perl skipped Christmas and went straight to Easter | ||
TimToady | what about "Ask not..." | ||
pmichaud | I learned to "Ask not..." a long time ago. | ||
TimToady | but still, a pastiche would be a great lightning talk | 15:54 | |
[particle] | p5p and p6p are one community separated only by a common language. | ||
[particle] mixes in more quotes | 15:55 | ||
pmichaud | okay, Perl 6 quotes is my lightning talk for the year :-) | ||
with special emphasis on pain management :-) | |||
unless I come up with yet another really cool technical hack like LOLPAST :-) | 15:56 | ||
jnthn | PerlJam: Parrot sure ain't perfect, but it's hardly like there aren't people improving it and it's not like the Rakudo devs are incapable of fixing it either. | ||
literal | are you guys talking about the YAPC::EU on August 3rd? | ||
jnthn | And it ain't, well, *that* bad. | ||
pmichaud | literal: yes. Call for presentations ends tomorrow. | 15:57 | |
TimToady | if it ain't broke, unbork it... | ||
Tene | pmichaud: a solution that only works when you generate your tar with git-archive wouldn't be good enough, right? | ||
[particle] | parrot is the worst virtual machine for perl 6, except all the others. | ||
pmichaud | Tene: I'm more interested in something that works when people do git-checkouts. | 15:58 | |
Tene | right, okay. | ||
pmichaud | generating the tar is low-volume, and doesn't affect anyone but the person generating the tar. | ||
so I don't care if that's automatically built. | |||
indeed, in some sense the "make release" target can override whatever git does. | |||
masak wouldn't mind seeing more vicars in Perl 6 development | |||
TimToady | we'll settle for suckers who might develop into vicars | 15:59 | |
Tene | okay, I can get the id in like: "$Id: 035c8abedeb532b38bf9ed1399e054896bca9e20 $" | ||
which would need to be trimmed before printing | |||
pmichaud | Tene: that's fine. | 16:00 | |
trimming is easy. | |||
as is any other sort of manipulation we might want to do. | |||
Tene | include it from gen_builtins.pir ? | 16:02 | |
pmichaud | sure. | 16:03 | |
Tene | oh, that happens automatically. | ||
pmichaud | or even if it just generates the file, I can put the include in | ||
right now I'm primarily interested in getting the id generated. | |||
Tene | pushed | 16:04 | |
you might need to rm it and then git checkout src/builtins/revision.pir this time, as the gitattributes file came down in the same commit | 16:05 | ||
PerlJam | ls | 16:06 | |
oops | |||
16:06
ejs joined
|
|||
pmichaud | oops: command not found | 16:06 | |
Tene | ... huh | ||
That's totally not what we want at all | |||
that shows the git id of the blob that holds that file | 16:07 | ||
not what we want at all. :) | |||
PerlJam | Tene: and it *only* works on checkout, not on clone or fetch. (AFAICT) | ||
16:10
masak left
|
|||
eric256 | i haven't backlogged yet, but wouldn't it make the most since to do the git at make/compile time? that way if i checkoutone version, modify it and then make, i'll have a different revisino number than anyone else? | 16:10 | |
PerlJam gets the feeling that the bang/buck ratio is only decreasing. | 16:11 | ||
pmichaud | eric256: we have to handle the case where someone didn't obtain rakudo via 'git'. (But PerlJam's "check for .git directory" works for that.) | ||
eric256: and you're probably describing where someone checks out a version, modifies it, commits, and then builds | 16:12 | ||
eric256 | PerlJam: it definitly sounds more difficult than i was expecting ;) | ||
pmichaud: thats exactly what i was describing ;) | |||
Tene | okay, really need to get to work now, srsly | 16:13 | |
[particle] | cute overload: www.getmiro.com/adopt/ | 16:19 | |
16:26
Umeaboy joined
|
|||
mberends | @tell masak nice quick intro: developer.apple.com/tools/rubyonrails.html | 16:31 | |
lambdabot | Consider it noted. | ||
16:38
ZuLuuuuuu joined
16:50
zamolxes left
17:00
alanhaggai joined,
pmurias left
17:06
abra left
17:12
japhb_ left
17:16
hanekomu left
17:23
kidd joined
17:26
alanhaggai left,
iblechbot left
17:27
alanhaggai joined
|
|||
pugs_svn | r26561 | lwall++ | [multidimensional.t] typo in plan | 17:30 | |
17:34
eMaX joined
|
|||
eMaX | re | 17:34 | |
moritz_, is it possible to have these articles electronically? | 17:35 | ||
pugs_svn | r26562 | lwall++ | [t] junctional types not currently allowed before param var | 17:44 | |
r26563 | lwall++ | [STD] combine fulltypename with typename | 17:45 | ||
moritz_ | eMaX: no, I had to assign the copyright to Heise | 17:47 | |
eMaX: and if they don't put it online, I can't | |||
eMaX: but of course you can write them a mail and ask if they'd publish it | |||
17:56
barney joined
17:59
M_o_C left
18:03
japhb joined
18:07
eMaX left
18:12
eMaX joined
18:16
amoc left
18:19
alanhaggai left
18:20
ruoso joined
18:21
iblechbot joined
18:23
amoc joined
18:24
eMaX left
18:43
clkao left,
hcchien left,
clkao joined
18:45
hcchien joined
|
|||
pugs_svn | r26564 | lwall++ | [STD] hack in duplicate checking for typenames | 18:46 | |
18:48
hcchien left,
clkao_ joined,
clkao left
18:51
hcchien joined
|
|||
TimToady | @tell masak interestingly, now that I actually implemented the warning, class Int {} is not a redef of CORE::Int; it just hides it | 18:51 | |
lambdabot | Consider it noted. | ||
jnthn | TimToady: ...does that apply to all core classes? And why? | ||
18:52
eMaX joined
|
|||
jnthn | Is CORE::Int actually lexical and a lexical import? And if so, does defining a class Int { ... } both install it in the namespace and the lexpad? | 18:52 | |
pmichaud | afaik, all "core" items are actually lexical. | 18:53 | |
TimToady | if you say class Int, it defaults to our, which adds Int to both MyCurrentPackage and MyCurrentLexpad | 18:54 | |
jnthn | OK, I wasn't aware of the second bit. | ||
TimToady | but doesn't intersect with any outer definition | 18:55 | |
if you say my class you only get the lexical | |||
jnthn | So basically most class lookups are lexical? | ||
TimToady | yes | ||
moritz_ | rakudo: say (hash ( 2 => 3 )).WHAT | ||
TimToady | even ones starting GLOBAL:: | ||
[particle] | my class lookups are lexical | ||
p6eval | rakudo 5646df: OUTPUTĀ«Hash()ā¤Ā» | ||
pmichaud | in general, most name lookups are lexical, I think. | ||
18:56
LylePerl joined
|
|||
[particle] | our class lookups are lexical { ... } | 18:56 | |
TimToady | and (pretty much) all the package names visible to your scope are visible via their lexical aliases | ||
[particle] | std: our class lookups are lexical { ... } | ||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed ourā¤Malformed classā¤Unable to parse class definition at /tmp/slmj9TJDIM line 1:ā¤------> our class lookups are lexical { ... }ā¤ expecting traitā¤FAILED 00:02 56mā¤Ā» | 18:57 | |
pmichaud | all(our base is :belong<us>) | ||
[particle] | ah, i thought there was an 'are' alias for 'is' | ||
std: our class lookups is lexical { ... } | |||
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
moritz_ | std: our class stuff is weird { ... } | 18:58 | |
TimToady | std: class Int {} | ||
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
TimToady | std: class Int {}; class Int {} | ||
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/2DtZFMSQ03 line 1:ā¤------> class Int {}; class Int {}ā¤ Name Int redeclared at /tmp/2DtZFMSQ03 line 1:ā¤------> class Int {}; class Int {}ā¤ok 00:02 35mā¤Ā» | ||
18:58
clkao_ left
|
|||
TimToady | std: class CORE::Int {} | 18:58 | |
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/COdLncinab line 1:ā¤------> class CORE::Int {}ā¤ok 00:02 35mā¤Ā» | ||
18:58
hcchien left
|
|||
moritz_ | if we warn twice it's more effective. | 18:58 | |
18:59
hcchien joined
|
|||
TimToady | warns once for the package conflict and once for the lexical | 18:59 | |
jnthn | TimToady: GLOBAL doesn't imply namespace even? | ||
TimToady | std: my class Int {}; my class Int {}; | ||
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/6T3DCGnL8A line 1:ā¤------> my class Int {}; my class Int {};ā¤ok 00:02 35mā¤Ā» | ||
TimToady | see, only one | 19:00 | |
should probably say which symbol table the conflict was in... | |||
jnthn | Is CORE::Int thus Int in the namespace CORE? | ||
TimToady | or anywhere inside it | ||
jnthn | And it's imported lexically as Int by default? | ||
TimToady | remember that the Setting is *outside* of everything lexically | ||
19:00
clkao joined
|
|||
TimToady | no importing is necessary | 19:00 | |
pmichaud | jnthn: we run inside the setting's lexical scope. | 19:01 | |
jnthn | OK, but class CORE::Int { } puts Int into the lexical scope? | ||
19:01
barney left
|
|||
pmichaud | so CORE::Int is Int in the CORE namespace, and it's "imported" into the setting. | 19:01 | |
i.e., it appears in the setting as lexical "Int" | |||
jnthn | oh, so some importing needed after all.... | 19:02 | |
TimToady | only if Int is declared outside of CORE | ||
19:02
zamolxes joined
|
|||
pmichaud | I'm not sure I follow that last statement. | 19:02 | |
TimToady | CORE can define things inline in its lexical scope if it wants to | 19:03 | |
if CORE says 'my class Int' there's no importing necessary into Int | |||
s/Int/CORE | |||
pmichaud | sure, but then the Setting is lexically nested inside of CORE? | ||
TimToady | CORE *is* the outermost setting | 19:04 | |
no nesting | |||
pmichaud | okay. | ||
how do we get to GLOBAL, then? | |||
TimToady | CORE::GLOBAL | ||
pmichaud | got it. | ||
and GLOBAL isn't really at the "root" of our package space | |||
TimToady | depends on how you define "package" | 19:05 | |
pmichaud | so if a p6 program does: class Int { ... } it really becomes CORE::GLOBAL::Int | ||
TimToady | but note that CORE::PROCESS is also not in GLOBAL | ||
only if they do it in the main program | 19:06 | ||
that is, where GLOBAL is the current package | |||
pmichaud | right. | ||
(I meant in "main", didn't make it explicit) | |||
19:06
keta joined
|
|||
TimToady | anyway, you can see how most of these names fit together in CORE.pad | 19:06 | |
pmichaud | so, could one do... class Int is CORE::Int { ... } ? | 19:07 | |
TimToady | which is presumably a representation of (part of) the compiled output of CORE.pm | ||
which isn't there yet | |||
that would derive from CORE::Int, presumably | |||
pmichaud | it would be a lexical/package form of augmenting Int? | 19:08 | |
TimToady | yes | ||
pmichaud | as opposed to "augment", which does monkeypatching? Cool. | ||
I think I actually start to understand some of this. :-| | |||
TimToady | std: augment Foo {} | ||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augmentā¤In "augment" declaration, typename Foo must be predeclared (or marked as declarative with :: prefix) at /tmp/wqV5oLcr7i line 1:ā¤------> augment Foo {}ā¤FAILED 00:02 35mā¤Ā» | ||
TimToady | std: augment Int {} | ||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augment at /tmp/B8sChRTiLR line 1:ā¤------> augment Int {}ā¤ expecting any of:ā¤ multi_declaratorā¤ typenameā¤FAILED 00:02 35mā¤Ā» | ||
TimToady | std: augment class Int {} | 19:09 | |
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
TimToady | std: augment class Foo {} | ||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augmentā¤Malformed classā¤Can't augment a non-existent type at /tmp/ZSDkYTsszC line 1:ā¤------> augment class Foo {}ā¤ expecting nameā¤FAILED 00:02 35mā¤Ā» | ||
TimToady | that's more like it | ||
std: supersede class Foo {} | |||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed supersedeā¤Malformed classā¤Can't supersede a non-existent type at /tmp/X6n0imRGPN line 1:ā¤------> supersede class Foo {}ā¤ expecting nameā¤FAILED 00:02 35mā¤Ā» | ||
TimToady | std: supersede class Int {} | ||
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
moritz_ | std: augment role Int { } | ||
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
jnthn | That'd not pass the semantic checker. :-) | 19:10 | |
TimToady | doesn't do the semantic check | ||
std: constant foo = 42; augment subset foo {} | 19:11 | ||
p6eval | std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/1rLvag7hb2 line 1:ā¤------> constant foo = 42; augment subset foo {}ā¤ expecting any of:ā¤ infix or meta-infixā¤ infix stopperā¤ | ||
..standard... | |||
PerlJam | TimToady: heh! I was just typing that up | ||
TimToady | std: constant foo = 42; augment subset foo where {} | ||
p6eval | std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā» | ||
TimToady | std: enum Foo <bar baz>; supersede subset baz where 42; | 19:13 | |
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name bar redeclared at /tmp/cIkCjQqLoC line 1:ā¤------> enum Foo <bar baz>; supersede subset baz where 42;ā¤ Name baz redeclared at /tmp/cIkCjQqLoC line 1:ā¤------> enum Foo <bar baz>; supersede subset baz where 42;ā¤ok 00:02 | ||
..35mā¤Ā» | |||
TimToady | ooh, a bug | ||
std: enum A <b c> | 19:14 | ||
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name b redeclared at /tmp/0gBmPos8rr line 0:ā¤------> ā¤ Name c redeclared at /tmp/0gBmPos8rr line 0:ā¤------> ā¤ok 00:02 35mā¤Ā» | ||
TimToady | cool | ||
std: role Foo[::T] {...} | 19:15 | ||
p6eval | std 26564: OUTPUTĀ«ok 00:02 37mā¤Ā» | ||
TimToady | std: role Foo[::T] {...}; role Bar[::T] {...} | ||
p6eval | std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name T redeclared at /tmp/tU8HpoN4bA line 1:ā¤------> role Foo[::T] {...}; role Bar[::T] {...}ā¤ok 00:02 37mā¤Ā» | ||
TimToady | another buglet | ||
moritz_ | is there anything implemented in rakudo that lets me convert a hex string to a number? | 19:16 | |
ie "FF" -> 255 | |||
s/ie/eg/ | 19:17 | ||
pmichaud | rakudo: say +":16<ff>" | ||
TimToady | yes, ord() :P | ||
p6eval | rakudo 5646df: OUTPUTĀ«255ā¤Ā» | ||
pmichaud | rakudo: my $x = 'ff'; say :16($x); | ||
p6eval | rakudo 5646df: OUTPUTĀ«255ā¤Ā» | ||
TimToady | rakudo: my $x = 'ff'; say :16($x) | ||
p6eval | rakudo 5646df: OUTPUTĀ«255ā¤Ā» | ||
TimToady | looks like that works too | 19:18 | |
pmichaud | s1n++ | ||
PerlJam | moritz_: URL decoding? | 19:19 | |
moritz_ | PerlJam: JSON decoding | ||
pmichaud | Fargo, North Decoding. | ||
(nm.) | 19:20 | ||
TimToady | keep trying | ||
or better yet, don't | |||
moritz_ | ;-) | ||
19:21
bacek_ left
19:22
JarJarBinks left
19:23
mikehh_ joined
|
|||
[particle] steals pmichaud's dakoda ring | 19:23 | ||
speling-- | |||
jnthn loves the smell of garlic bread cooking | 19:24 | ||
jnthn -> dinner, back in a bit | |||
TimToady | FNORD is actually short for Fargo, North Dakota | ||
which is why neither of them are really there | |||
moritz_ | if <foo>* matches zero times in a regex, should $<foo> be an empty array? or undef? | 19:25 | |
rakudo: '' ~~ m/<ident>*/ && say $<ident>.WHAT | |||
p6eval | rakudo 5646df: OUTPUTĀ«Failure()ā¤Ā» | 19:26 | |
TimToady | should probably just be Nil | ||
moritz_ | but why? then $<ident> is false even though the rule match | 19:27 | |
TimToady | it's also funny to ask what it matches if the pattern matches multiple times | ||
pmichaud | well, $/ could be true even if $<ident> is false. | 19:28 | |
you're really asking for two different things. | |||
moritz_ | not quite | ||
when the top level regex matches the empty string, $/ is true | |||
when <ident>* matches the empty string, $<ident> is false | |||
pmichaud | But I don't think of <ident>* as "matching" the empty string. | 19:29 | |
in the sense that it matched zero times. | |||
which means "no matches" | |||
moritz_ | why not? | ||
TimToady | it returns a Nil | ||
it's not matching a string in any case | |||
suppose | |||
[ <ident> xxx ]* / | |||
er, with a / on the front | 19:30 | ||
it can match 0 or more idents, but they aren't even contiguous | |||
so you can't argue that $<ident> should return the string convered | |||
*coverd | |||
* | |||
(not that the pattern makes sense...) | 19:31 | ||
moritz_ | i think I see your point | ||
TimToady | $<ident> is known statically to return a list of some sort | ||
but that list might be Nil | |||
moritz_ | ok | ||
TimToady | question is, suppose it matches 2 idents | ||
does $<ident> then match *either* of them? | 19:32 | ||
[particle] | especially if <ident> has subrules with alternations | ||
TimToady | as if you said @$<ident> | ||
moritz_ | why should $<ident> match *anything*? it's not a regex | ||
TimToady | arrays do literal disjunctive match | ||
same as < a b c > | |||
moritz_ | ah, inside the regex | ||
TimToady | so @ident could match any of a list of idents | 19:33 | |
moritz_ | I was thinking about closure all the tiime | ||
TimToady | should $ident work the same? | ||
if it happens to be a list? | |||
moritz_ | do you mean $<ident>? | ||
if yes, sounds sane | 19:34 | ||
if not, you lost me ;-) | |||
TimToady | I meant any scalar variable containing a list | ||
including $<ident> | |||
moritz_ | ok | ||
TimToady | we already look at $foo to see if it's a Regex | ||
moritz_ | sounds sane, but I haven't put much thought into it | ||
TimToady | and if not, treat as a string | ||
so we could special-case other types too | 19:35 | ||
moritz_ | "smart interpolation" | ||
TimToady | alternately, we could force people to say @$foo if they mean it | ||
moritz_ | speaking of which... is interpolation of hashes still in S05? | ||
TimToady | since the disjunction is a bit surprising if they don't expect it | ||
which goes without saying... | |||
pmichaud | :-) | 19:36 | |
19:36
mikehh left
|
|||
TimToady | um, I'm not terribly interested in regex hashes these days | 19:36 | |
pmichaud | me neither :-) | ||
TimToady | we should probably just reserve them | ||
pmichaud | +1 | ||
moritz_ | +1 | ||
19:37
eternaleye_ left
|
|||
moritz_ | rakudo: '' ~~ m/<ident>*/ && say $/.perl | 19:37 | |
p6eval | rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "",ā¤ text => "",ā¤ from => 0,ā¤ to => 0,ā¤)ā¤Ā» | 19:38 | |
moritz_ | rakudo: 'a' ~~ m/a<ident>*/ && say $/.perl | ||
p6eval | rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "a",ā¤ text => "a",ā¤ from => 0,ā¤ to => 1,ā¤)ā¤Ā» | ||
19:38
Gothmog_ joined
|
|||
moritz_ | rakudo: 'ab' ~~ m/a<ident>*<foo=ident>/ && say $/.perl | 19:39 | |
p6eval | rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "ab",ā¤ text => "ab",ā¤ from => 0,ā¤ to => 2,ā¤ named => {ā¤ 'foo' => Match.new(ā¤ ast => "b",ā¤ text => "b",ā¤ from => 1,ā¤ to => 2,ā¤ ),ā¤ },ā¤)ā¤Ā» | ||
pugs_svn | r26565 | lwall++ | [S05] reserve hash notation | 19:40 | |
literal | hm, :16<ff> interpolates? as part f what? :scalar? | 19:42 | |
rakudo: say Q:scalar/:16<ff>/ | |||
p6eval | rakudo 5646df: OUTPUTĀ«Colons cannot be used as delimiters in quoting constructs at line 1, near ":scalar/:1"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | 19:43 | |
literal | rakudo: say Q :scalar / foo :16<ff> bar / | ||
p6eval | rakudo 5646df: OUTPUTĀ«Colons cannot be used as delimiters in quoting constructs at line 1, near ":scalar / "ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | ||
pmichaud | rakudo only understands a few of the adverbial quoting modifiers | 19:45 | |
that said, :16<ff> doesn't interpolate. | |||
+":16<ff>" isn't interpolation, it's numification. | 19:46 | ||
rakudo: say ":16<ff>"; | |||
p6eval | rakudo 5646df: OUTPUTĀ«:16<ff>ā¤Ā» | ||
pmichaud | rakudo: say +":16<ff>"; | ||
p6eval | rakudo 5646df: OUTPUTĀ«255ā¤Ā» | ||
literal | oh, I see | ||
pmichaud | rakudo: say +":16<ff> bottles of beer on the wall"; | ||
p6eval | rakudo 5646df: OUTPUTĀ«255ā¤Ā» | ||
jnthn | rakudo: say "{+":16<ff>"} bottles of beer ont he wall"; | 19:57 | |
p6eval | rakudo 5646df: OUTPUTĀ«255 bottles of beer ont he wallā¤Ā» | ||
jnthn | nice, plenty spare for me... | ||
pmichaud | rakudo: say "{:16<ff>} bottles of beer on the wall"; | 20:00 | |
p6eval | rakudo 5646df: OUTPUTĀ«255 bottles of beer on the wallā¤Ā» | ||
TimToady | phone | ||
20:01
keta left,
FurnaceBoy joined
20:10
ispy_ joined
|
|||
meppl | good night | 20:15 | |
20:16
meppl left
20:18
hercynium joined
|
|||
arnsholt | pmichaud: You mentioned that you had a patch for double quoted strings in regexes the other day. Does that handle variable interpolation? | 20:37 | |
20:41
ruoso left,
angoladon joined
20:45
Umeaboy left
20:46
angoladon left,
jhorwitz left
20:51
ispy_ left
|
|||
pmichaud | arnsholt: no. (also we don't even handle bare scalars in regexes yet) | 20:53 | |
I'm not sure what it would take/require to get double-quoted strings to do that. | |||
20:54
ejs1 joined
|
|||
pugs_svn | r26566 | moritz++ | [t/spec] correctet test for .chunks on submatches | 20:55 | |
r26567 | moritz++ | [t/spec] tests for RT #62838 | |||
20:56
bacek joined
|
|||
pugs_svn | r26568 | moritz++ | [t/spec] tests for RT #65096, autothreading over Array parameters | 21:00 | |
arnsholt | pmichaud: Yeah, I've been juggling that problem about in my head lately | 21:02 | |
jnthn | At the very least, emiting a find_lex for 'em and setting the outer properly, I'd guess. | 21:03 | |
arnsholt | The fact that double quotes should inherit interpolation semantics from the enclosing language makes it even more interesting | 21:04 | |
21:04
payload left
21:07
Limbic_Region joined
|
|||
TimToady | in the long run, you have to do it like STD does... | 21:07 | |
21:08
ejs left
|
|||
arnsholt | Which means I should probably go look at STD.pm | 21:08 | |
Be right back =) | |||
TimToady | yeah, sure | ||
[particle] | there you go, scaring off contributors again.... | 21:10 | |
21:10
FurnaceBoy left
21:12
skids left
|
|||
arnsholt | Not scaring off. To be entirely honest, I quite like grammars actually | 21:13 | |
21:13
ZuLuuuuuu left
|
|||
moritz_ too | 21:14 | ||
but they are a bit tricky, at time | |||
s | |||
TimToady | especially this one, when it comes to polymorphic quoting languages passed down through regexen | 21:15 | |
pugs_svn | r26569 | moritz++ | [t/spec] tests for make() in action stubs | ||
TimToady | the important thing to note is $*LANG | ||
pmichaud | in the case of PGE and Rakudo, we need Rakudo to override PGE's default double-quote rule and instead make a call to the double-quote parsing routine inside of Rakudo's grammar | 21:17 | |
and after it's parsed, return it back as something that PGE can then convert to code to evaluate the double-quoted string at runtime and perform a match on the result | |||
Tene | pmichaud: did you notice a difference in spectest speed in the .HLL branch? | 21:18 | |
or was it just my imagination? | |||
pmichaud | Tene: haven't gotten quite that far yet. Still trying to get rakudo to build. | ||
I don't know. Was your imagination faster or slower? | |||
arnsholt | Yeah, that's the direction my brain was headed as well. PGE has to be given the information needed to parse double quoted strings, closures and the like | ||
Tene | it seemed like hll branch was slower. | ||
BUT, it was late at night. | 21:19 | ||
pmichaud | I think I might expect that. | ||
moritz_ | rakudo: say eval 'module A { if 3 { 5 } else { 6 } }' | 21:20 | |
p6eval | rakudo 39e45d: OUTPUTĀ«_block34ā¤Ā» | ||
pmichaud | merging this back to trunk (and getting it to work) is proving to be a pain | ||
moritz_ | rakudo: say eval 'module A { if 3 { 5 } else { 6 } }'.WHAT | ||
p6eval | rakudo 39e45d: OUTPUTĀ«ā¤Ā» | ||
moritz_ | huh? | ||
any idea what's going on here? | |||
Tene | moritz_: it returned the module. | ||
which is a block | |||
moritz_ | hm | 21:21 | |
ok | |||
jnthn | rakudo: say (eval 'module A { if 3 { 5 } else { 6 } }').WHAT | ||
p6eval | rakudo 39e45d: OUTPUTĀ«Code()ā¤Ā» | ||
PerlJam | rakudo: say eval "string".WHAT # is what you asked for the first time. | ||
p6eval | rakudo 39e45d: OUTPUTĀ«ā¤Ā» | ||
Tene | rakudo; my $x = eval 'module A { 1 }'; say $x() | ||
PerlJam | rakudo: "string".WHAT.say | ||
p6eval | rakudo 39e45d: OUTPUTĀ«Str()ā¤Ā» | ||
pmichaud | rakudo: "string".WHAT.eval.say | ||
p6eval | rakudo 39e45d: OUTPUTĀ«Method 'eval' not found for invocant of class ''ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā» | 21:22 | |
Tene | rakudo: my $x = eval 'module A { 1 }'; say $x() | ||
p6eval | rakudo 39e45d: OUTPUTĀ«1ā¤Ā» | ||
Tene | see? | ||
pmichaud | I think it'll be easier for me to make modifications to master going forward than to try to backpatch them in from the hll branch and wonder what's breaking. | 21:23 | |
(and why) | |||
jnthn | (scheduling) I will do my other catch-up Rakudo Day this week on Friday. (not tomorrow...too many distractions...) | 21:26 | |
pugs_svn | r26570 | moritz++ | [t/spec] tests for "if" and "eval" iin packages, RT #64072 and RT #65238 | 21:27 | |
Tene | pmichaud: okay, I will get branch merged into master | 21:28 | |
pmichaud | Tene: I still think it's easier to go the other way. | 21:29 | |
working on it now. | |||
Tene | oh, "it will be easier" | ||
I misread. | |||
TimToady | rakudo: "string".WHAT.perl.eval.say | 21:30 | |
p6eval | rakudo 39e45d: OUTPUTĀ«Method 'eval' not found for invocant of class 'String'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā» | ||
pmichaud | at some point I think we had decided .eval wouldn't be a method on Any. | 21:31 | |
TimToady | rakudo: "string".WHAT.perl.say | ||
p6eval | rakudo 39e45d: OUTPUTĀ«Str()ā¤Ā» | ||
pmichaud | (we can of course switch back) | ||
moritz_ | pmichaud: re my grammar/actions methods from last night, I've fixed .chunks a few hours ago, and prepared a small demo for masak | ||
TimToady | .perl of a protoobject probably *shouldn't* have the () | ||
pmichaud | moritz_: excellent. Are things working better now? | 21:32 | |
moritz_ | yes. | ||
TimToady | unless we guarantee that .() on a protoobject returns the protoobject itself | ||
pmichaud | I agree, shouldn't have the (). | ||
rakudobug. | |||
jnthn | Agree. | ||
And the type errors will be nicer as a result. ;-) | |||
PerlJam | speaking of which ... how do I get the class name without the () now? | ||
pmichaud | jnthn: oh, the type errors use .perl ? | ||
moritz_ | the problem was that when I wrote .chunks, I didn't have in mind that on sub matches .from and .to aren't aligned with the start of the string | ||
pmichaud | moritz_: I guessed that was the case :-) | 21:33 | |
jnthn | pmichaud: aye | ||
pmichaud | cool. | ||
PerlJam: class name w/o () is .perl, probably | |||
jnthn | rakudo: sub foo(Int @x) { }; my Str @a = <a b c>; foo@a) | 21:34 | |
p6eval | rakudo 39e45d: OUTPUTĀ«Statement not terminated properly at line 1, near "@a)"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» | ||
jnthn | rakudo: sub foo(Int @x) { }; my Str @a = <a b c>; foo(@a) | ||
p6eval | rakudo 39e45d: OUTPUTĀ«Parameter type check failed; expected something matching Positional[Int()] but got something of type Array() for @x in call to fooā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
jnthn | Once Array is parametric, it should report Array[Int] | ||
I think. | |||
:-) | |||
PerlJam | rakudo: class X {}; my $x = X.new; $x.perl.say; | 21:35 | |
p6eval | rakudo 39e45d: OUTPUTĀ«X.new()ā¤Ā» | ||
PerlJam | no, that appears to be worse :) | ||
[particle] | rakudo: class X {}; my X $x .= new; $x.perl.print | ||
p6eval | rakudo 39e45d: OUTPUTĀ«X.new()Ā» | ||
moritz_ | PerlJam: X.WHAT.perl should do it | 21:37 | |
PerlJam: but does not, as per bug above | |||
so, did anybody submit that? | |||
pmichaud | actually, X.perl is sufficient | ||
since X is already a protoobject | 21:38 | ||
moritz_ | right | ||
pmichaud | I'll submit. | ||
submitted. | 21:39 | ||
[particle] | you mean 'masaked'. | 21:41 | |
much like when a ticket is done and awaiting tests, it's 'moritzed'. | |||
moritz_ | ;-) | 21:42 | |
jnthn is glad he picked a vowelless nick so it can't be turned into a catchy-sounding verb. | |||
pmichaud | I suspect that it's not far from "jnthn" to "hackathon" | 21:43 | |
moritz_ | jnthnd? | ||
pmichaud | masaked can be "submitting blog post with no verbs" | ||
[particle] | when someone submits a grant report and request at the same time, it's 'jnthning' | ||
pmichaud | jnthnd can be "submitting blog post with no vowels" | ||
Tene | edit distance of 6 | ||
between jnthn and hackathon | 21:44 | ||
jnthn | [particle]: It wasn't exactly at the same time. There were approx 2 minutes between the two. | ||
moritz_ | pmichaud: sbmittng blg pst wth n vwls? | ||
pmichaud | *submttng | ||
*sbmttng | |||
moritz_ | arg! | ||
jnthn | ts hrd t wrt wtht vwls. | ||
Tene | try wrtng n hbrw | 21:45 | |
pmichaud | $blog_post .= subst( /<[aeiou]>/, '') | ||
PerlJam | nt f y dsbl thm n y kybrd | ||
jnthn | hbrw r rbc | ||
[particle] | shouldn't that be missing every other y? | ||
moritz_ | M N R BLGPST TNG R VWLS! | ||
[particle] | hrmm, a vowelless lolcode variant... | 21:46 | |
PerlJam | [particle]: no, but s:2nd/y/yr/ | ||
[particle] | M N YR CD, TN YR VWLS! | 21:47 | |
PerlJam | [particle]: honestly, I see very little difference without the vowels ;) | ||
moritz_ | code vs. blogpost | 21:48 | |
21:48
payload joined,
iblechbot left
|
|||
moritz_ | or did you mean difference between normal lolspeak and vwllss? | 21:48 | |
PerlJam | aye | ||
jnthn | CN HZ CHZBRGR? | 21:49 | |
[particle] | MGWTF? | ||
jnthn | kplzthnx | ||
.oO( OH HAI doesn't work out too well without vowels ) |
21:50 | ||
PerlJam | jnthn: it just become a new meme | 21:51 | |
jnthn | Well, #perl6 creating a new meme makes a change from 4chan... | ||
moritz_ | H H? | 21:52 | |
PerlJam | H H! | 21:53 | |
pmichaud | In wiki.github.com/rakudo/rakudo/steps...te-a-patch , didn't we determine that using git send-email wouldn't play well with RT headers? | 21:55 | |
moritz_ | we did | 21:56 | |
which is why I wrote the mail-patch branch | |||
pmichaud | can we fix the instructions there somehow? | ||
or update them, or whatever? | |||
I'm not sure how to do that. | |||
(I'm not sure what it should be updated to) | |||
(I know how to update the wiki page :-) | 21:57 | ||
PerlJam | Does rakudo grok class data? | ||
moritz_ | just change it to "write a mail to [email@hidden.address] and attach that file" | ||
until I've got the mail script sorted out | 21:58 | ||
Tene | moritz_: we have sockets in rakudo now... we could write a little script to send mail. | ||
:) | |||
pmichaud | updated. moritz++ | 21:59 | |
moritz_ | ... unless we want to report broken sockets | ||
and might I add that sockets aren't tested atm? | |||
and I can't see how I could test them... | |||
qx would help | |||
or non-blocking sockets | 22:00 | ||
Tene | if we had fork, it would help... | ||
moritz_ | fork. on windows. I don't even want to think about that | ||
Tene | can has fork opcode in parrot? | ||
no? | |||
is windows non-forkable? | 22:01 | ||
moritz_ | afaict windows doesn't come with work. | ||
s/work/fork/ | |||
jnthn | I often find windows pretty forked. | ||
moritz_ | ;-) | ||
jnthn | ;-) | ||
moritz_ | perl 5 emulates fork() with threads. | ||
japhb | moritz_: I think your original spelling was correct | ||
jnthn | But now, it's process model doesn't really do forking as such. | ||
*no | |||
moritz_ | japhb: ;-) | 22:02 | |
22:02
kane_ joined
|
|||
mberends | I'm trying to finish a sockets test script that runs a few bash & lines to fork into client and server processes. Tricky. | 22:02 | |
PerlJam | rakudo: class X { my $.x = 5; method foo { $.x++ }; }; my $x = X.new; $x.foo; say X.x; | 22:04 | |
p6eval | rakudo 96de99: OUTPUTĀ«Cannot assign to readonly variable.ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā» | ||
PerlJam | That should work, right? | ||
moritz_ | no | 22:05 | |
PerlJam | por que no? | ||
moritz_ | with $!x inside the method it should work | ||
$.x means "use the accessor" | |||
and that is read-only | |||
pmichaud | $.x is a read-only accessor | ||
moritz_ | another Perl 6 FAQ entry. | ||
PerlJam | I don't know why I was thinking that $.x made things rw. That's an odd thing to just suddenly get stuck in your head. | 22:09 | |
22:09
eric256 left
|
|||
Tene | is there a reason that it defaults to ro? | 22:09 | |
moritz_ | it's not that odd. You declare '$.x', then you expect that you can modify that somehow | ||
Tene: sanity ;-) | 22:10 | ||
Tene | i've always felt that that's a kind of sketchy decision to require 'is rw' instead of 'is ro'. | ||
moritz_: explain? | |||
pmichaud | generally we should explicitly give permission for external agents to modify the value. | ||
instead of assuming they modify the value and having to explicitly close it off. | 22:11 | ||
moritz_ | Tene: same reason why you use lexical variables - to protect your data from being changed accidentally | ||
Tene | that's what $! vs $. is for, in my mind. | ||
pmichaud | that's different. | ||
$. says "give me an accessor" | |||
$! says "don't provide an accessor | |||
Tene | Exactly. | 22:12 | |
so you're already saying "I want to share this with the world'. | |||
pmichaud | but an accessor doesn't have to default to being a rw accessor. | ||
22:12
ejs1 left
|
|||
moritz_ | actually they don't, in most programming languages | 22:13 | |
pmichaud | sharing something with the world doesn't mean "I want to let the world modify it" :-) | ||
Tene | "i want to share, but only kinda" is a middle ground that I don't think I'd see very often. | ||
pmichaud | actually, providing read-only accessors is the more common case, to my mind. | ||
well, perhaps not. | |||
Tene | BUT, sure, my programming style or experience or whatever might be unusual. I make no claims to normality. | ||
:) | |||
moritz_ | Tene: for the user there's no difference between a method and a ro-accessor... | ||
pmichaud | anyway, I'm find with saying "is rw" as opposed to "is readonly" | 22:14 | |
moritz_ | Tene: so it's much easier for the programmer to change the implementation later on without changing the interface if it's ro | ||
Tene | OK | ||
22:14
mberends left
22:17
kane__ left
22:25
[particle] left
22:30
wknight8111 joined
22:32
justatheory_ joined
22:45
wknight8111 left
22:47
justatheory left
22:48
skids joined
22:52
fridim_ joined
22:55
ben joined
23:04
rocket_guatemala joined
|
|||
rocket_guatemala | hey, I saw the camelia logo on the perl6-projects.org/ site and I thought of doing another interpretation, i have uploaded it on www.flickr.com/photos/58912287@N00/3487448432/, comments are welcomed | 23:07 | |
fridim_ | what about www.ardensgames.com/www_root_isbent...270x87.png ? :) | 23:09 | |
rocket_guatemala | I tried to get the same spirit of this one, svn.pugscode.org/pugs/misc/camelia.svg | 23:11 | |
fridim_ | yes, horrible | 23:12 | |
rocket_guatemala | :) | 23:13 | |
23:22
nihiliad left,
exodist left
23:27
jradzuweit left
23:50
km2 left,
km2 joined,
km2 left
23:51
DemoFreak left
23:58
hercynium left
|