Camelia, the Perl 6 bug

IRC log for #parrot, 2009-08-02

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:15 dalek pynie: r79 | Bradley.Sif++ | trunk/.gitignore:
00:15 dalek pynie: Added a .gitignore file for those folks using git-svn.  Presumably will
00:15 dalek pynie: not bother anyone using other svn clients.
00:15 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=79
00:20 Tene bkuhn: to do OO stuff in pynie properly, i need to be able to override :vtable('invoke')
00:22 bkuhn Tene: Which feature of Python's OO system needs that?  (I know that's a very basic question, but the answer will help me understand Parrot's vtable system, which I don't yet. ;)
00:23 Tene bkuhn: to instantiate an object of class Foo, you do it like:
00:23 Tene f = Foo()
00:23 Tene so you either need:
00:23 Tene 1) The parser detects type names and generates different code for class instantiation
00:23 Tene which is awkward, and I don't like it
00:24 AndyA joined #parrot
00:24 Tene or 2) You override 'invoke' for pynie class objects
00:24 bkuhn ah, yes, this makes sense.
00:24 Tene which is correct, IMO
00:24 bkuhn I agree with you that (2) is preferred.
00:24 Tene you can't override invoke in PIR classes in parrot right now.  You will be able to after pcc_rewiring branch
00:31 Whiteknight you can't triple stamp a double stamp
00:31 Tene That... looks like words.
00:31 Whiteknight Tene: pcc_rewiring won't make that work immediately, just makes it possible
00:31 Tene Whiteknight: Okay, sure.
00:31 Whiteknight will take additional work to make invoke DTRT
00:32 * Tene nods.
00:40 dalek pynie: r80 | Bradley.Sif++ | trunk/ (2 files):
00:40 dalek pynie: Lambda expressions do not form closures properly unless 'newclosure' pir opcode
00:40 dalek pynie: is used.
00:40 dalek pynie: Closes Launchpad Bug #407838
00:40 dalek pynie: review: http://code.google.com/p/pynie/source/detail?r=80
01:23 dalek TT #896 created by jimmy++: [patch]consting socket_win32.c
01:32 TiMBuS joined #parrot
01:32 dalek parrot: r40369 | whiteknight++ | trunk (3 files):
01:32 dalek parrot: [TT #895] some fixes to the new experimental code. Some bad pointer arithmetic was causing segfaults when I test these. Fix some problems, not all.
01:32 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40369/
01:48 JimmyZ joined #parrot
01:51 sekimura joined #parrot
02:23 dalek parrot: r40370 | NotFound++ | trunk/src/exceptions.c:
02:23 dalek parrot: [cage] add some comments and minor fixes to r40363 additions, JimmyZ++
02:23 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40370/
02:27 ttbot NotFound: Parrot trunk/ r40370 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/63430.txt
02:29 NotFound Oh, my fault, sorry.
02:30 NotFound I definitely must not commit nothing when I'm almost sleeping :O
02:32 Whiteknight yeah, I have that same problem :()
02:35 janus joined #parrot
02:36 dalek parrot: r40371 | NotFound++ | trunk/src/exceptions.c:
02:36 dalek parrot: [cage] fix C90 violation, ttbot++
02:36 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40371/
02:40 dalek parrot: r40372 | whiteknight++ | trunk/src/gc (2 files):
02:40 dalek parrot: [TT #895] If I had a dollar for every typo, I could afford to quite my job and work on Parrot full-time (where I would make even more typos, and thus, more money). This new attributes allocator now passes all tests that I have thrown at it locally
02:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40372/
02:41 NotFound Whiteknight: I attached a patch to TT #895 with the current state. Pass all tests except the random packfilefixupentry failures.
02:42 NotFound Enough for today :O
02:42 Whiteknight oh awesome
02:43 Whiteknight I want to do some benchmarks, I think this new GC allocator could speed things up pretty considerably
02:43 NotFound I doed an attempt with your allocator, but crasehd. I see that you already fixed several things.
02:44 Whiteknight yeah, it passes all tests I've done so far
02:44 Whiteknight I think we can replace most calls to mem_sys_allocate with the new allocator for big speed savings
02:44 NotFound I'd like to give it another try, but I'm too tired. Goddnight.
02:44 Whiteknight yes, goodnight
03:03 abesapien joined #parrot
03:29 theory joined #parrot
03:31 tetragon joined #parrot
03:41 JimmyZ joined #parrot
04:15 Andy joined #parrot
04:34 jdv joined #parrot
04:57 cotto when imcc dies, I'm not going to miss its crappy line misnumbering
05:05 dukeleto is there a way to reverse a string in an S register or do I need a String pmc?
05:14 jan joined #parrot
05:28 cotto I don't see an opcode for it.
05:29 cotto You'll probably need to use the pmc's method.
05:41 dalek parrot: r40373 | petdance++ | branches/depends:
05:41 dalek parrot: Andy's branch to work on dependency building
05:41 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40373/
05:45 abesapien joined #parrot
05:45 JimmyZ joined #parrot
05:51 dalek parrot: r40374 | petdance++ | branches/depends/config/gen/makefiles (2 files):
05:51 dalek parrot: first stab at getting makedepend working
05:51 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40374/
06:57 quek joined #parrot
07:26 JimmyZ joined #parrot
08:39 mberends joined #parrot
08:49 dalek rakudo: f76b3c7 | masak++ | src/builtins/ (2 files):
08:49 dalek rakudo: [src/builtins] some PIR simplifications
08:49 dalek rakudo: JimmyZ++ for the patch.
08:49 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​76b3c77fb63029c2e09a7f720f5a9972d2c7366
08:49 dalek rakudo: e89cc1e | masak++ | src/parser/grammar.pg:
08:49 dalek rakudo: [src/parser/grammar.pg] aligned more with STD.pm
08:49 dalek rakudo: This makes a few of the tests in S03-operators/hyper.t unfudgeable.
08:50 dalek rakudo: JimmyZ++ for the patch.
08:50 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​89cc1e09b8b3e453836609912078d35f0d1c08e
09:05 MoC joined #parrot
09:39 flh joined #parrot
10:13 bacek joined #parrot
10:19 bacek o hai
10:36 quek left #parrot
10:40 quek joined #parrot
10:45 mikehh_ joined #parrot
11:06 clinton joined #parrot
11:27 dalek parrot: r40375 | bacek++ | branches/keys_cleanup/src/pmc/addrregistry.pmc:
11:27 dalek parrot: [pmc][cage] Remove AddrRegistery.get_pmc_keyed. It's unused and broken.
11:27 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40375/
11:27 dalek parrot: r40376 | bacek++ | branches/keys_cleanup (2 files):
11:27 dalek parrot: [cage] Drop KEY_iterator_FLAGS. It's not used anymore
11:27 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40376/
11:28 abesapien joined #parrot
11:31 AndyA joined #parrot
11:36 kid51 joined #parrot
11:37 dalek parrot: r40377 | bacek++ | branches/keys_cleanup/src/key.c:
11:37 dalek parrot: Fix marking next key in key_next. bacek-- for stupid mistake in "if" rewrite.
11:37 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40377/
11:37 bacek_ joined #parrot
11:45 nopaste "mikehh" at 90.209.201.180 pasted "PATCH for src/gc/mark_sweep.c to pass codetest" (42 lines) at http://nopaste.snit.ch/17452
11:47 mikehh_ src/gc/mark_sweep.c FAILed t/codingstd/c_function_docs.t and t/codingstd/linelength.t
11:48 kid51 Ah!, you answered my question before I asked it!
11:49 kid51 mikehh_  Did you apply for a commit bit yet?
11:53 mikehh_ my printer is not working yet - so I am waiting to submit a CLA - I do it tomorrow I hope
11:54 dalek parrot: r40378 | jkeenan++ | trunk/src/gc/mark_sweep.c:
11:54 dalek parrot: [codingstd] Applying patch submitted by mikehh for line length and c function docs.
11:54 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40378/
11:56 bacek mikehh++
11:58 joeri joined #parrot
12:00 Whiteknight joined #parrot
12:07 dalek parrot: r40379 | bacek++ | branches/keys_cleanup/include/parrot/key.h:
12:07 dalek parrot: [docs] Add little bit of description of KEY_flags.
12:07 dalek parrot: It should save few hours for anyone else who will try to understand Keys mistery.
12:07 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40379/
12:12 dalek tracwiki: v3 | bacek++ | KeysRefactor
12:12 dalek tracwiki: Scrap initial KeysRefactor</a> idea.
12:12 dalek tracwiki: https://trac.parrot.org/parrot/wiki/K​eysRefactor?version=3&amp;action=diff
12:21 bacek good localtime Whiteknight
12:22 Whiteknight hello bacek
12:22 Whiteknight how are you doing today?
12:23 bacek Great. I just scrapped another idea how to make parrot better :)
12:28 bacek Anyone working on PARROT_EXPORT/PARROT_API separation?
12:31 dalek parrot: r40380 | whiteknight++ | trunk/src/gc (2 files):
12:31 dalek parrot: [TT #895] Some more cleanups to the fixed-size allocation thing. Also, add two new functions to the GC API to act as mem_sys_allocate/mem_sys_free replacements in some situations.
12:31 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40380/
12:33 ttbot whiteknight: Parrot trunk/ r40380 i386-linux-thread-multi make error http://tt.ro.vutbr.cz/file/cmdout/63842.txt
12:35 bacek mj41++ # ttbot rulez!
12:36 Whiteknight it is a nice bot
12:36 Whiteknight (except when it's pointing out my mistakes)
12:38 not_ttbot Whiteknight: U BROK BUILD IN r40380!!!
12:38 Whiteknight yeah I know, fixing it now
12:39 Whiteknight I built and ran tests BEFORE I saved my changes to the file
12:39 NotFound Whiteknight: hello, I'm playing with the attribute allocator
12:40 Whiteknight NotFound: It's still rough, but should be alright most of the time
12:40 NotFound Whiteknight: main problem is that it doesn't zero initialize.
12:40 bacek Whiteknight: consider to learn git. You can hide some of your mistakes :)
12:40 Whiteknight NotFound: can add that easily. You want it?
12:41 dalek parrot: r40381 | whiteknight++ | trunk (4 files):
12:41 dalek parrot: [TT #895] fix some problems caused by typos in my last commit
12:41 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40381/
12:41 NotFound Whiteknight: that's debatable, but I think that having them zero initializes avoid the need to do that in init and init_pmc in a lot of cases.
12:41 * bacek getting popcorn and waiting for ttbot :)
12:42 Whiteknight NotFound: I'll add it now for PMC attributes. It's trivial
12:43 Whiteknight There are two interfaces to the allocator: one for PMC attributes (that will zero-initialize) and one for other structures (that won't)
12:43 bacek msg mj41 Can you add link to coverage report into TapTinder "Bookmarks"?
12:43 purl Message for mj41 stored.
12:54 NotFound I'm seeing that the initial context is created before the initialization of the gc subsystem. Bad smell to me.
12:55 Whiteknight NotFound: what do you mean?
12:56 NotFound In inter_create create_initial_context is called before Parrot_gc_initialize
12:56 dalek TT #897 created by bacek++: Review test coverage and add more tests or deprecate unused functionality.
12:57 Whiteknight hmmm, yes, that is weird
13:35 dalek parrot: r40382 | kjs++ | trunk/compilers/pirc/src/pircompiler.h:
13:35 dalek parrot: Add a STRING pointer to lexer which will temporarily be used for storing STRINGs that are created inthe lexer. Once PIRC is completely changed to use StRINGs instead of C strings, it can be stored in yylval union in the parser.
13:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40382/
13:35 kj joined #parrot
13:39 dalek parrot: r40383 | whiteknight++ | trunk/src/gc (3 files):
13:39 dalek parrot: [TT #895] initialize PMC attribute structures on suggestion from NotFound++. Cleanup some unused structure fields.
13:39 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40383/
13:39 Whiteknight and now it's time for breakfast
13:39 bacek Yay! kj welcome back :)
13:39 kj thanks bacek :-)
13:39 kj that was my first commit from my mac
13:40 * bacek feeling guilty
13:41 bacek I'm going to predate pirc in favour of PCT-based PIR compiler.
13:43 tetragon joined #parrot
13:43 bacek Just because I dislike "pure C" very much...
13:45 kj what's predate?
13:46 dalek parrot: r40384 | kjs++ | trunk/compilers/pirc/src (2 files):
13:46 dalek parrot: store the STRING created by the lexer in the temporary sval field in the lexer struct. Once PIRC has been converted, it can be stored in yylval->sval, but for now, we need to duplicate this functionality using STRINGs instead of C strings
13:46 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40384/
13:47 bacek kj: I've got few local changes to bring pirc up-to-date with "modern" pir (but they are very "raw")
13:47 kj pirc, or pct-based pir compiler?
13:47 bacek pirc
13:47 kj has pir changed?
13:47 kj i wasn't aware of any syntactical changes
13:47 bacek "pir" by it self - not.
13:48 kj what kind of changes?
13:48 bacek But something like ".tailcall" was introduced recently
13:48 kj pirc has that
13:48 kj .tailcall exists quite some time already i think
13:48 kj no?
13:48 bacek My copy of PCT PIR has that too :)
13:49 kj pir.y:1887
13:49 kj (line)
13:49 kj i havent been away *that* long ;-)
13:50 bacek ~6 month is something like "forever" :)
13:50 kj haha yes
13:50 kj well havent been away, but just lurking
13:51 bacek And there is "full functional" Packfile PMCs now to implement emitting PBC from PCT PIR.
13:51 kj cool
13:51 bacek (We just need "SerializebleSub" for finish it)
13:51 kj eh, so the PBC generating stuff, where is that?
13:52 kj cause pirc's bc generator is almost complete, except for some bits here and there which has bugs, esp. with STRING and NUM constants
13:52 bacek t/pmc/packfile*.t
13:52 bacek pirc doesn't support Keys afaiu.
13:53 kj that could be yes
13:54 kj well, complex keys
13:54 kj simple keys should work
13:54 kj i remember seeing it working
13:55 bacek Many parts of parrot relying on "complex keys"...
13:55 bacek http://github.com/bacek/pir/tree/master
13:56 kj pirc doesn't support syntax like "pf = new ['Packfile']
13:56 kj "
13:56 bacek There is my changes to original PIR compiler. Any objections/thoughts/ideas?
13:56 bacek (At github)
13:57 NotFound Unfurtunately packfile pmc tests stills fails randomly at least on amd64 builds.
13:57 bacek NotFound: yak... How "randomly"?
13:58 NotFound bacek: sometimes they fail, sometimes don't. I think it may depend on tidal waves or something.
13:59 kj sorry not really familiar with github ... takes a while
13:59 bacek NotFound: I suspect hash keys order and GC...
14:00 bacek kj: github isn't trivial. But I'm still waiting for commit access to /languages...
14:01 NotFound Whiteknight: have you commited some debugging messages in the allocator?
14:01 kj seems alright to me. i'm not familiar with all pge syntax, like ":: [" in sub_def
14:04 bacek "::" is for block backtracking
14:05 bacek Just premature optimisation.
14:07 bacek Oh... It's tomorrow already...
14:07 * bacek must sleep
14:07 purl $bacek->sleep(8 * 3600);
14:08 bacek good night
14:09 JimmyZ night bacek
14:22 HG` joined #parrot
14:30 dalek parrot: r40385 | NotFound++ | trunk/src/interp/inter_create.c:
14:30 dalek parrot: [core] initialize gc subsystem before contexts and pio
14:30 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40385/
14:41 kj joined #parrot
14:44 Whiteknight NotFound: I may have.
14:47 dalek parrot: r40386 | whiteknight++ | trunk/src/gc/mark_sweep.c:
14:47 dalek parrot: [TT #895] remove an errant debugging message that I committed last time. Thanks NotFound++
14:47 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40386/
14:47 dalek parrot: r40387 | NotFound++ | trunk/t/src/extend.t:
14:47 dalek parrot: [t] put check for interpreter before his usage
14:47 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40387/
14:54 Psyche^ joined #parrot
15:07 bkuhn joined #parrot
15:10 bkuhn Hey, I want to check if a register contains a sub.  What's the recommended method for checking that?
15:16 Zak joined #parrot
15:17 NotFound What's the last test in t/src/extend.t trying to check? He's creating two main interpreters, which is explictly forbidden in several docs.
15:21 dalek parrot: r40388 | NotFound++ | trunk/t/src/extend.t:
15:21 dalek parrot: [t] flush stdout before potential crashes
15:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40388/
15:21 cotto bkuhn, from C or PIR?
15:22 bkuhn cotto: PIR, but I think I figured it out:     typeof $P50, $P26
15:22 bkuhn
15:22 bkuhn $P50 will have "Sub" if it's a sub
15:22 bkuhn s/it's/$P26/
15:22 cotto yeah, as long as you're not worried about subclasses
15:24 bkuhn cotto: subclasses of "Sub" ?
15:24 bkuhn Is there a better way?  I sort of want to know if something is "callable"
15:26 dalek partcl: r563 | coke++ | trunk/runtime/builtin/binary.pir:
15:26 dalek partcl: Convert sub-dispatch to a switch. use .const for options setup.
15:26 dalek partcl: review: http://code.google.com/p/p​artcl/source/detail?r=563
15:28 cotto I'd expect there to be a pmclass declaration for that, but it looks like there isn't.
15:28 cotto something like "pmclass Sub does sub need_ext"
15:28 cotto That's a little surprising.
15:32 Coke .
15:44 JimmyZ joined #parrot
15:50 dalek TT #898 created by cotto++: r40313 introduces a memory leak
15:51 Zak joined #parrot
16:02 mberends joined #parrot
16:04 NotFound cotto: I don't see the problem in #898. The vtable created becomes the reponsability of whichever calls for it.
16:09 mikehh codetest FAIL, All others PASS (pre/post-config, smolder, nqp_test, fulltest) at r40388 - Ubuntu 9.04 i386
16:13 theory joined #parrot
16:15 dalek parrot: r40389 | NotFound++ | trunk/src/gc/mark_sweep.c:
16:15 dalek parrot: [cage] missing ASSERT_ARGS
16:15 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40389/
16:41 Whiteknight joined #parrot
16:48 kid51 joined #parrot
17:25 HG` joined #parrot
17:50 Coke bah. heredocs don't work inside macros.
17:54 hudnix joined #parrot
17:55 dalek rakudo: c57fbd7 | moritz++ | t/spectest.data:
17:55 dalek rakudo: [t/spectest.data] remove a test that was merged; add a few newly passing tests
17:55 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​57fbd7f9aa06471501dba1ff23c7079102e520d
17:55 dalek rakudo: ed636b8 | moritz++ | t/spectest.data:
17:55 dalek rakudo: one more passing test file, KyleHa++
17:55 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​d636b8802bad874c832bd5621e8cf34acd167b8
18:18 dalek TT #899 created by coke++: heredocs in a macro argument broken.
18:21 dalek parrot: r40390 | jkeenan++ | trunk/src/gc/api.c:
18:21 dalek parrot: [codingstd] Adjust documentation so that all functions pass c_functions test.
18:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/40390/
18:32 quek left #parrot
18:33 dalek cardinal: 550139a | (Joeri Samson)++ |  (2 files):
18:33 dalek cardinal: Respect $, when joining, and set $, when cardinal starts
18:33 dalek cardinal: Signed-off-by: Ted Reed <ted.reed@gmail.com>
18:33 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/550139a3187ca8a1b20790e9a6262ef92a90425d
18:34 dalek cardinal: a61bd4b | (Joeri Samson)++ | src/classes/Array.pir:
18:34 dalek cardinal: Fill array with nil values when assigning to an index > length
18:34 dalek cardinal: Signed-off-by: Ted Reed <ted.reed@gmail.com>
18:34 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/a61bd4bf6756ba33afc33d92f1a0bf5ca994c6bb
18:53 chromatic joined #parrot
19:20 tetragon joined #parrot
19:30 desertm4x joined #parrot
19:39 MoC joined #parrot
19:51 joeri left #parrot
20:22 kid51_at_dinner left #parrot
20:22 kid51_at_dinner joined #parrot
20:27 asciiville joined #parrot
21:15 mikehh All tests PASS (pre/post-config, smolder, nqp_test, fulltest) at r40390 - Ubuntu 9.04 i386
21:25 iblechbot joined #parrot
21:31 Tene Is there anyone around willing to review a patch to add a 'poll' method to the socket pmc?
21:53 dukeleto joined #parrot
22:01 dalek partcl: r564 | coke++ | trunk/runtime/builtin/string.pir:
22:01 dalek partcl: Use .const sub to declare the list of options
22:01 dalek partcl: review: http://code.google.com/p/p​artcl/source/detail?r=564
22:10 dukeleto joined #parrot
22:15 bacek joined #parrot
22:20 chromatic joined #parrot
22:23 Tene purl: msg pmichaud I'm having trouble putting non-rakudo objects into a hash because of src/classes/Pair.pir:55, which calls .item() on the value.
22:23 purl Message for pmichaud stored.
22:31 dukeleto joined #parrot
22:33 Tene purl: msg pmichaud I can't do @a>>.foo() for any method that returns non-parrot objects because !dispatch_method_parallel calls .'Scalar'() on the return value of the method.
22:33 purl Message for pmichaud stored.
22:37 nillo joined #parrot
22:38 rg1 joined #parrot
22:43 pmichaud Tene: noted
22:44 Tene pmichaud: do you know if there's a reason that src/setting/IO/Socket/INET.pm adds an additional $.listener attribute instead of reusing $!PIO from src/setting/IO/Socket.pm ?
22:45 pmichaud I don't know if there's a reason, no.
22:45 Tene Okay.
22:46 pmichaud would it be that the listener socket needs to be separate from the one that does the normal comms?
22:46 Tene I'll investigate a bit more and then commit the fix later tonight.
22:46 Tene No, it shouldn't be.
22:50 pmichaud how would INET.pm reuse $!PIO, ooc?
22:54 japhb pmichaud: did you give any further thought to the Parrot modules landscape?  You mentioned wanting to tank on our general idea a bit ....
22:54 pmichaud I haven't had a good opportunity to look at it further, no.  I keep getting sidetracked by other "issues"
22:55 japhb I was going to tease you about that, but I'm guessing you've probable gotten past the point that it's funny any more ...  :-/
23:16 mikehh joined #parrot
23:29 bacek joined #parrot
23:47 cotto Is there a way that one PIR-level instruction can turn into two identical opcodes?
23:52 treed If each opcode does only half the job that the instr needs?
23:52 * treed is mostly talking out of his ass there.
23:55 dalek partcl: r565 | coke++ | trunk/runtime/builtin/string.pir:
23:55 dalek partcl: Convert a few helper subs to use hllmacros
23:55 dalek partcl: review: http://code.google.com/p/p​artcl/source/detail?r=565

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

Parrot | source cross referenced