Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-05-06

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 r0bby joined #perl6
00:12 Eevee joined #perl6
00:57 mncharity joined #perl6
01:00 pugs_svnbot r20371 | lwall++ | [STD] now does double quotes under new quoting regime
01:00 pugs_svnbot r20371 | lwall++ | [STD] with debugging turned off can now parse about 2000 chars/sec
01:00 pugs_svnbot diff: http://dev.pugscode.org/changeset/20371
01:06 mncharity re ruby to python compiler, and "He must have lost a bet, I can think of no other reason", perhaps the same reason there may be a EmitDirectToPython.pm as soon as elf is passing lots-of t/.  Sometimes you have a python platform or a python shop, but wish to use a different language/compiler/libraries.
01:06 TimToady I wonder if it can translate Rails to Python :)
01:07 mncharity my fuzzy recollection is rubinius's experience suggests Rails is a rather high hurdle.
01:07 TimToady ah well, as soon as I get bored with STD, I can start writing all the OtherLang-to-Perl6 translators, since P6 is a superset of everythign else... :)
01:08 TimToady did you see I'm parsing about 2000c/s now?
01:08 Auzon including Perl 6, apparently ;)
01:09 TimToady I base that on parsing the first 3000 chars of radix.t in about 1.5 seconds
01:09 mncharity for all(@languages) { implement("real implementation","translator for porting","p6 backend","p6 backend where your still working in $_") }
01:10 Auzon What does that "benchmark" mean?
01:10 mncharity 2kc/s :)  nifty!
01:11 TimToady means I could theoretically parse STD.pm in about 50 seconds now
01:11 TimToady except it blows up on the first :foo<bar>
01:11 Auzon parse it with Rakudo?
01:11 TimToady no, with STD5
01:11 Auzon Oh.
01:11 Auzon Cool.
01:12 TimToady I've been refactoring the quoting sublanguages, but only have '' and "" so far, so the <> of adverbials blows up still
01:13 TimToady I need to figure out a better way of invoking a subrule of another language though, where that other language may be anonymous
01:13 mncharity re '',"", ah, I was just wondering about my evening.  sync EXPR, punt name() since that's going to be refactored(?), and... sync ''/"" or wait?
01:13 mncharity ah, ok.  that sounds like a wait.
01:14 TimToady <.cursor_fresh($lang).rule> is a bit long, but that's basically what happens underneath
01:15 TimToady cursor_fresh is an internal name, but a lousy one if it's to be outward facing
01:15 TimToady basically any subrule <foo> calls .cursor_fresh, it's just that if it's a sublanguage, .cursor_fresh takes that language as an optional argument
01:16 TimToady so I probably just need some syntactic relief
01:16 mncharity hmm.  interesting.  I was also wondering if being able to switch between compilers might be a desirable near-term feature.  so "featureful but slow" could be mixed with "critical path must be fast" code.
01:16 TimToady but <$lang.foo> isn't quite right
01:17 TimToady well, that's what I'm finally trying to figure out the linkage for
01:17 mncharity compiler != parser, but... looks like tweakability might be important earlier than one might think.  might use such a mechanism for sublangs.
01:17 TimToady I have to generate a subcursor for a subrule anyway, so that's the logical place to rebless the cursor into a different language for the following lexical scope
01:18 mncharity hmm...
01:18 TimToady well, I'm definitely trying to eat my own dogfood here with respect to '' "" rx// etc.
01:18 TimToady those are all derived grammars now
01:18 mncharity <OtherLanguage::foo>  ...
01:18 TimToady has to be able to take it from $lang
01:19 mncharity <$($lang)::foo>
01:19 TimToady which could have several other mixed in languages since the last time it was named anything in particular
01:19 TimToady I also have to officially keep track of what is a language so I know the granulatity of my lexer cache
01:20 TimToady *granularity
01:20 mncharity <$($lang.WHAT)::foo> ?
01:20 TimToady that doesn't spell "relief"
01:20 mncharity lol
01:21 TimToady It's something more like the recursive <!...> and <foo=...> syntax
01:21 TimToady so <mumble/foo>
01:22 mncharity so  <Foo::bar>  for a grammar "class" Foo,  and <$foo/bar> for an instance $foo of a grammar?
01:23 TimToady mumble/ is a placehoder
01:23 mncharity nod
01:23 TimToady s:nth//l/
01:25 mncharity why does $lang need to be kept track of?
01:25 Ched- joined #perl6
01:25 mncharity it doesn't seem like remembering it could affect dispatch.  so that leaves
01:25 mncharity passing information between rules/actions, which would suggest a context var.
01:25 TimToady certainly it affects dispatch
01:26 mncharity some rule's subrule<hee> can't depend on the $lang which was used to reach that rule, no?
01:27 TimToady certainly it can
01:27 mncharity ???!???
01:27 TimToady THAT'S WHAT PERL6 IS ALL ABOUT!!!!!
01:27 mncharity hmm, let me rephrase...
01:28 TimToady when you say <infix> you don't know what language's set of infixes you're getting
01:28 TimToady it all depends on what class the cursor is blessed into
01:28 mncharity the identity of the rule hee invoked by a rule a's saying <hee> is uniquely determined by the grammar to which hee and a belong.  it cannot be affected by a grammar or other variable $lang.  no?
01:29 mncharity s/belong/ class the cursor is blessed into/
01:29 mncharity err, no!
01:30 mncharity um, s/belong/belong (the grammar instance)/
01:30 mncharity it's not yet clear to me why the cursor would need blessing.
01:30 TimToady to switch to an instance of a different grammar
01:30 TimToady by default cursor_fresh just propagates the current grammar
01:32 mncharity grammar B {...}  grammar A { rule aa{<B::foo>} }  <-- switching to a different grammar.  (though not necessarily an _instance_ of a different grammar?)
01:34 mncharity I've never been clear on regex's handling of classes/grammars versus instances of same.
01:34 TimToady that doesn't rebless the cursor, so B::foo will end up running with A's dispatch instead of B's, if it calls any subrules of its own
01:35 TimToady it's like saying $object->B::meth in Perl 5
01:35 TimToady all it does is tell it where to look for meth, but the object is still an A object
01:36 TimToady to really switch parsers it must be fed $object->mutate_to_B->meth
01:36 TimToady which is what .cursor_fresh is doing
01:36 TimToady which, interestingly, is not the original purpose of .cursor_fresh
01:37 TimToady it was rather to isolate the parsing of the submatch object so we don't confuse it with the current matcher's Match object
01:37 mncharity apparently I still fundamentally don't understand regex.
01:37 TimToady (and _SUBSUME re-incorporates the sub-object's match as a capture into the current outer cursor)
01:38 TimToady well, I only just came to this a few days ago, so I'm not surprised.  :)
01:38 mncharity lol
01:38 TimToady you'll notice all the funky .prior stuff is gone from Cursor5 now
01:38 TimToady that was all just bogus thinking
01:39 TimToady and why I could never get submatches to install themselves correctly into the parent Match
01:40 TimToady it's amazing how much refactoring can be triggered by trying to Get It To Actually Work Right
01:40 mncharity indeed
01:40 mncharity the discipline of the real
01:40 mncharity so...
01:41 TimToady yes, and that's why I've had to write my own regex engine again, after all
01:41 TimToady it's punishment for cargo-culting Henry's regexes into Perl in the first place
01:42 mncharity :)  I've stopped making myself "I will never, ever, write another regex engine" commitments.  Broken too many times. :/
01:42 mncharity re Henry's regexp, lol
01:43 TimToady one issue I haven't resolved yet is backtracking control
01:43 TimToady at the moment I'm using "lazy" lists
01:43 TimToady which would be okay if I were actually implementing this in P6
01:43 TimToady but the lists aren't really lazy in P5
01:44 TimToady they're just out there somewhere on the stack
01:44 TimToady which makes it really hard to wipe out a bunch of options that you decide you never want to use
01:45 mncharity hmm.  generator with out-of-band tweaking?
01:45 TimToady so I may end up having to switch back from list context everywhere to scalar, and just have lazy list objects, just so I can address backtracking control of :: and :::
01:45 * mncharity doesn't understand the current execution model well enough to usefully comment
01:46 TimToady the current model doesn't actually backtrack anywhere in the sense of "returning to a previous stack frame"
01:46 TimToady all previous decision points are represented by cursors in a list
01:47 TimToady and failure to match is just throwing away parts of some list
01:47 mncharity so then why is :: and ::: hard?
01:47 TimToady some of the lists I want to throw away are off in other stack frames
01:48 mncharity ah...
01:48 TimToady so I may need to have some mechanism to invalidate cursors in the abstract
01:48 TimToady and then when the cursor finally gets activated, it wakes up and says, "oops, got trimmed, fail"
01:49 mncharity so options are exceptions, or returning a "please discard cursors until you find X" flag value.
01:49 TimToady but in that case, I need a naming scheme to keep track of active/forgotten cursors
01:50 TimToady something like that, but how do you name X?
01:51 TimToady probably can just deal with it in terms of match depth, I think
01:51 mncharity oh, or "oops, trimmed, fail"...  though does it really need to wake up.  re X, let's see, been here before, what did yare do...
01:51 TimToady and the difference between ::, :::, and <commit> is just what depth/shallowness to aim for
01:52 TimToady assuming I don't have multiple cursors in flight that are triming to different depths at the same time...
01:53 TimToady so now I get to write an exception engine from scratch as well :/
01:53 mncharity re as well, LOL :)
01:53 mncharity sorry
01:54 mncharity re name X,
01:56 TimToady well, it's probably just the rule name, "if you aren't ._BRACKET (for ::) or .thisrule (:::) or .outerrule (for <commit>), peel back"
01:57 TimToady well, it's not .BRACKET, but whatever contains alternatives...
01:57 mncharity looks like yare just skips up through groups by prepending/removing "jump " prefixes to the exception.
01:59 mncharity btw, do regex have "code to execute we backtracking past here"?
01:59 mncharity *have a "..." construct?
02:00 TimToady well, that would be a generalization of this
02:02 TimToady I think it suffices to return some kind of "I failed successfully" cursor on the end of the list
02:02 TimToady as long as every scope knows to deal with it when it tries to use it to continue
02:03 TimToady at some level might actually involve trapping with eval {...} in p5, if I don't want to have an explicit test everywhere
02:05 TimToady well, ratchet quantifiers turn out to be fairly trivial under this model.  it's just taking .[0] on the list of cursors :)
02:05 mncharity oy
02:06 TimToady and the difference between greedy and parsimonious is simply whether you do a reverse on the list frist
02:06 TimToady *first
02:08 TimToady where the non-laziness of p5 shows through is that if you use .*? it wants to build cursors for all possibilities to the end of the file before examining the short ones for successful continuation
02:08 TimToady with real gather/take it would only generate those extra cursors lazily
02:08 mncharity 'list to be reversed' all in one stack frame?
02:09 mncharity is it possible to generate them shortest first?
02:10 TimToady not only is it possible, it's a requirement
02:10 TimToady _PLUSg is defined as reverse $self->_PLUSf($block, @_);
02:11 TimToady you have to do the _PLUSf algorithm to find out the maximum possible greediness before you can start there
02:11 TimToady in essence .* has to always do .*? internally first
02:12 TimToady that becomes more obvious with <random>* has to do multiple <random>*? first because you don't know how long each random will be
02:12 mncharity ah, ok.  hmm.
02:13 TimToady with . you can theoretically cheat because you know how each . is going to match without scanning left-to-right
02:13 TimToady and, in fact, Henry's package cheats just that way
02:14 mncharity nod
02:16 TimToady ah, was trying to remember what the 'f' was for--it was "frugal"
02:16 TimToady easier to type than parsimonious
02:18 yewenbin joined #perl6
02:18 TimToady gotta go take kid to karate...
02:19 mncharity cheers.  /me hacks on STD_red...
02:22 eternaleye joined #perl6
02:35 azure joined #perl6
02:41 azure1st a
02:44 azure1st left #perl6
02:45 azure1st joined #perl6
02:46 azure a
02:51 azure a
02:52 azure a
02:54 azure1st left #perl6
02:55 rindolf joined #perl6
02:55 azure1st joined #perl6
02:56 azure1st a
02:56 azure1st left #perl6
02:59 azure1st joined #perl6
02:59 azure1st a
03:00 Auzon azure1st: What are you doing?
03:01 mncharity TimToady: (1) in EXPR/reduce/chain, perhaps should check for $<sym> in addition to $<prec>?  and cease to push the op on chain?  then '3 eq 4 ne 5' parses as  eq(3,ne(4,5))
03:01 azure1st change my nick
03:04 azure1st joined #perl6
03:07 TimToady mncharity: that's not what you want
03:08 TimToady yo uwant it to mean 3 eq 4 and 4 ne 5
03:09 TimToady it's just a variant of 1 < $x == $y < 42
03:09 alanhaggai joined #perl6
03:16 azure1st i want to join the perl6 dev but i don't know what to do ,  I know perl just a little.
03:18 Tene azure1st: what do you know?
03:21 azure1st I used perl process some txt changed, txt trans  mysql or sqlite.
03:22 azure1st at the most time i use php
03:22 Tene azure1st: some work that needs to be done right now is reorganizing and categorizing and cleaning up the pugs test suite into the official perl 6 test suite
03:25 azure1st ok, how to do it. my english is not very well,so i speak slowly.
03:27 Tene azure1st: I think there should be some files talking about it in t/spec in the pugs repo.  I'm not entirely sure what needs to be done or what to tell you to do right now.
03:27 Tene I can probably find out tomorrow, if someone hasn't already answered before then.
03:30 mncharity re '3 eq 4 and 4 ne 5', ah, ok.  but is currently  ne(3,eq,4,ne,5)  or some such.
03:34 azure1st oh
03:35 azure1st it's the time to the lunch  i will back in one hour!
03:38 alanhaggai_ joined #perl6
03:50 drbean joined #perl6
04:03 mncharity TimToady: when expect_term is at pos 1 in " {}", stdstopper is true (before { and after \s).  should expect_term succeed or fail?
04:03 * mncharity struggles with  'do {}'
04:06 SamB joined #perl6
04:06 TimToady do is not parsed with EXPR at that point
04:08 mncharity statement_prefix:do -> statement -> EXPR.   at least that's what a std.rb draft is doing with 'do 3;'
04:09 TimToady but I think we're missing a statement_control:block
04:09 mncharity blocks currently show up as circumfix pblock
04:09 TimToady or maybe not
04:10 TimToady but the whitespace should already be eaten
04:10 TimToady so EXPR should only see "{...}"
04:10 TimToady so shouldn't be treated as a terminator
04:11 TimToady gotta go pick up kid from karate now...
04:11 mncharity if EXPR sees "{}", then stdstopper called from expect_term in loop is true.  thus the question of
04:11 mncharity whether that should be deadly or no.
04:12 mncharity re karate, ok.  just about end of day.
04:12 mncharity sigh.  a slow process.
04:14 mncharity epiphany: all this parser stuff is too difficult, we should just use s-expressions.
04:14 mncharity just kidding.
04:18 spinclad combinators!  SKI  \o/
04:19 mncharity *weary grin*
04:20 spinclad and feed it trees, not strings -- no parsing at all then
04:20 mncharity down with monads!  up with arrows!
04:20 spinclad rah rah rah
04:21 mncharity it could make that grinding noise as you feed it trees and it spews out sawdust
04:21 spinclad ah, that would be the K combinator, aka the chipper
04:22 mncharity p6, the new particleboard
04:22 mncharity lol
04:24 mncharity thanks spinclad :)
04:24 spinclad glad to provide some chaos on my way to bed
04:25 spinclad g'night, all
04:25 mncharity indeed.
04:25 mncharity ditto & :)
04:30 peepsalot joined #perl6
04:51 Psyche^ joined #perl6
05:11 rindolf joined #perl6
06:01 Psyche^ joined #perl6
06:14 pugs_svnbot r20372 | lwall++ | [STD] more progress in handling :qq etc. as mixins
06:14 pugs_svnbot diff: http://dev.pugscode.org/changeset/20372
06:45 iblechbot joined #perl6
07:04 azure1st left #perl6
07:08 azure1st joined #perl6
07:13 elmex joined #perl6
07:36 lambdabot joined #perl6
08:08 pugs_svnbot r20373 | moritz++ | [svn-search] catch errors in indexer
08:08 pugs_svnbot diff: http://dev.pugscode.org/changeset/20373
08:13 riffraff joined #perl6
08:16 charsbar joined #perl6
08:18 meteorjay joined #perl6
08:35 masak joined #perl6
08:36 charsbar joined #perl6
08:56 Schwern joined #perl6
09:12 masak joined #perl6
09:27 IllvilJa joined #perl6
11:20 lisppaste3 joined #perl6
11:27 wknight8111 joined #perl6
11:37 rdice joined #perl6
12:28 pbuetow joined #perl6
12:34 obra TimToady: http://feeds.feedburner.com/~r/boingboing/i​Bag/~3/284423043/howto-make-a-chili-m.html
12:34 lambdabot Title: HOWTO make a chili mister - Boing Boing, http://tinyurl.com/3o4qad
12:52 meppl joined #perl6
13:04 kanru joined #perl6
13:05 alanhaggai joined #perl6
13:25 TJCRI joined #perl6
13:26 ispy_ joined #perl6
13:31 rdice joined #perl6
13:38 alanhaggai_ joined #perl6
13:40 Lorn joined #perl6
14:04 mncharity joined #perl6
14:08 mncharity could someone who knows how please kick dev.pugscode.org?   the svn changesets are all Internal Server Error.  thanks!
14:10 mncharity TimToady: so what is the "RightThing" story on 'do {}'?   should expect_term be successfully matching at the { despite stdstopper returning true there?
14:15 mncharity It looks like the same issue occurs with "\n{3;}\n".
14:23 pugs_svnbot r20374 | jnthn++ | [spectest] Fudge S12-class/basic.t for Rakudo, and add an extra instantiation test.
14:23 pugs_svnbot diff: http://dev.pugscode.org/changeset/20374
14:31 mncharity re "fudge", curious... "To perform in an incomplete but marginally acceptable way,"[FOLDOC] vs "1 present in a vague way, especially to mislead. 2 manipulate (facts or figures) so as to present a desired picture."[OED(c)].  And my default binding is "faking scientific data".
14:34 alester joined #perl6
16:35 irclogbot_backup joined #perl6
16:35 Topic for #perl6is now http://pugscode.org/ | nopaste: http://sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: http://irc.pugscode.org/
16:49 ilbot2 joined #perl6
16:49 Topic for #perl6is now http://pugscode.org/ | nopaste: http://sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: http://irc.pugscode.org/
16:49 ilbot2 joined #perl6
16:49 Topic for #perl6is now http://pugscode.org/ | nopaste: http://sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: http://irc.pugscode.org/
17:22 d4l3k_ joined #perl6
17:22 wolv_ joined #perl6
17:22 cjfields joined #perl6
17:22 PerlPilot joined #perl6
17:23 meppl good night
17:29 pmichaud_ joined #perl6
17:33 eternaleye joined #perl6
17:44 cjfields joined #perl6
18:43 CMA joined #perl6
18:45 cotto joined #perl6
18:47 lambdabot joined #perl6
19:00 iblechbot joined #perl6
19:04 syle joined #perl6
19:13 moritz_ [particle]: ping
19:15 armagad joined #perl6
19:17 [particle] hi-o moritz_
19:17 [particle] ooh, a goldfinch 1m away :)
19:17 moritz_ [particle]: do you have some thoughts regarding GSoC and SVN branches?
19:17 [particle] spring++
19:18 [particle] moritz_: you mean for collecting Auzon's commits?
19:18 moritz_ aye
19:18 * Auzon is here in case that helps
19:18 moritz_ it seems to be the recommended way
19:18 [particle] we *could* stick a branch in the pugs repo
19:18 [particle] however, i believe judicious use of commit message tags will suffice
19:18 moritz_ but would that be useful?
19:19 moritz_ I mean a branch
19:19 [particle] well, for example, we could add a makefile target to rakudo for 'gsoctest' that pulls from the branch instead of the trunk
19:19 moritz_ so, assuming we take the commit message tags...
19:20 moritz_ how do we deliver the deliverable (aka patches) to google?
19:20 [particle] i like tagging messages better.
19:20 [particle] we can use svn diff tools
19:20 Auzon Same here. If we were to branch, it'd make reorganizing a pain.
19:20 moritz_ we can't assume that Auzon's patches alone will be make up a clean diff
19:21 [particle] right, so we submit a series of diffs
19:21 moritz_ so should we just make a complete diff of t/ and tell google "90% was Auzon's work, see $list for details"?
19:23 [particle] we can get a list via svn log of each commit auzon did, and produce diffs of each
19:23 [particle] i'm looking for specific info on what google expects
19:24 [particle] do you have a link handy?
19:24 moritz_ no
19:24 moritz_ I just read eric's mail
19:24 [particle] here in terms of service:http://code.google.com/ope​nsource/gsoc/2008/tos.html
19:24 lambdabot Title: Google Summer of Code - Google Code
19:24 moritz_ "Google expects us to deliver "your code"
19:24 moritz_ at program completion, which might mean that you need your own branch
19:24 moritz_ (depending on whether your project is new code or not) to make it easy
19:24 moritz_ to create a nicely-bounded changeset."
19:25 [particle] i see "To provide Google with a copy of the finished project code  which may be publicly hosted by Google."
19:26 [particle] to me, i think a set of diffs qualifies. i'll ask leslie, though.
19:26 moritz_ the "finished project code" is the result in my eyes, not the diff
19:27 [particle] sure, could be that, too
19:27 kyrbe joined #perl6
19:27 kyrbe left #perl6
19:27 [particle] Auzon: have you submitted the TPF CLA yet?
19:28 Auzon No, I have not.
19:28 * Auzon puts that on his todo list
19:29 [particle] thx
19:32 REPLeffect joined #perl6
19:35 [particle] i suppose auzon could develop in a private branch and synchronize with trunk frequently
19:36 [particle] then his work would be in one place.
19:36 [particle] still, there would by synchronization commits interspersed
19:36 moritz_ aye, it doesn't solve the problem
19:37 pmurias joined #perl6
19:38 [particle] message sent to google mentors list
19:41 moritz_ did you CC me?
19:42 [particle] ah, no. are you subscribed to google-summer-of-code-mentors-list@ ?
19:43 moritz_ no
19:43 [particle] ah. you should be :)
19:43 [particle] @googlegroups.com
19:43 lambdabot Unknown command, try @list
19:44 [particle] time to reboot my xp vm into sp3
19:44 [particle] let's see if it makes me happy or sad
19:45 pmurias mncharity: re blocked: if you are blocked and can't add any features the other way forward would be to remove a cludge/hack ;)
20:00 sscaffidi joined #perl6
20:05 [particle]ventus joined #perl6
20:25 meppl joined #perl6
20:27 mj41 joined #perl6
20:35 rhr joined #perl6
20:35 [particle]ventus moritz_: Auzon: http://groups.google.com/group/goog​le-summer-of-code-mentors-list/brow​se_thread/thread/46ed29bb7878e16f
20:35 lambdabot Title: Google Summer of Code Mentors List | Google Groups, http://tinyurl.com/6xeffu
20:36 Auzon I can't see that :-/
20:36 aindilis joined #perl6
20:38 moritz_ only open for members :(
20:38 [particle]ventus ok, i'll forward the mail to you after lunch &
20:38 moritz_ no hurry ;)
20:38 Auzon thanks
21:13 stevan__ joined #perl6
21:21 larsen_ joined #perl6
21:21 xerohg joined #perl6
21:31 [particle]ventus joined #perl6
21:34 rdice left #perl6
21:38 barney joined #perl6
21:51 meppl good night
21:52 moritz_ meppl: didn't you say that some 4 hours ago already? ;-)
21:52 cjfields joined #perl6
21:53 Eidolos joined #perl6
21:53 meppl moritz_, yea, but i couldnt sleep
21:54 moritz_ d'oh
21:54 moritz_ good luck this time ;)
22:10 * CMA esta ausente: at high scholl
22:16 luqui joined #perl6
22:19 lidden joined #perl6
22:24 c0nspiracy joined #perl6
22:27 gbacon joined #perl6
23:16 eternaleye joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo