Perl 6 - the future is here, just unevenly distributed

IRC log for #parrot, 2014-12-19

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
03:10 kid51_ joined #parrot
03:13 kid51__ joined #parrot
07:52 FROGGS joined #parrot
08:30 rurban joined #parrot
09:20 dalek parrot/gc-gh1159: 1e416f1 | rurban++ | / (9 files):
09:20 dalek parrot/gc-gh1159: [core] add INTERPINFO_MAX_GENERATIONS api
09:20 dalek parrot/gc-gh1159:
09:20 dalek parrot/gc-gh1159: Returns the defined constant for gms (changed from 4 to 3), or 0.
09:20 dalek parrot/gc-gh1159: Allow -DGC_MAX_GENERATIONS=n to be set via --ccflags.
09:20 dalek parrot/gc-gh1159: benchmarked with parrot-bench: 3 and 4 are the best, 8 is also interesting.
09:20 dalek parrot/gc-gh1159:
09:20 dalek parrot/gc-gh1159: Todo string collects in t/op/gc-leaky-call.t and ..box.t
09:20 dalek parrot/gc-gh1159:   There's no apparent need to collect strings, when none are
09:20 dalek parrot/gc-gh1159:   allocated during a cycle.
09:20 dalek parrot/gc-gh1159:   But add a collectable string for the lulz
09:20 dalek parrot/gc-gh1159: review: https://github.com/parrot/parrot/commit/1e416f1bbf
09:20 dalek parrot/gc-gh1159: 2249402 | rurban++ | / (3 files):
09:20 dalek parrot/gc-gh1159: [gc] enable on_dirty_list assertion, document pobj flags
09:20 dalek parrot/gc-gh1159:
09:20 dalek parrot/gc-gh1159: and improve the GH #1159 testcase. It was too slow
09:20 dalek parrot/gc-gh1159: review: https://github.com/parrot/parrot/commit/2249402a43
09:20 dalek parrot/gc-gh1159: 45758d2 | rurban++ | src/gc/gc_gms.c:
09:20 dalek parrot/gc-gh1159: [gc] Change semantics of GC_MAX_GENERATIONS
09:20 dalek parrot/gc-gh1159:
09:20 dalek parrot/gc-gh1159: GC_MAX_GENERATIONS=3 means now 3 generations: 0,1,2.
09:20 dalek parrot/gc-gh1159: It was too odd and head-scratching to define 4 for max 3 generations
09:20 dalek parrot/gc-gh1159: review: https://github.com/parrot/parrot/commit/45758d20a3
09:41 rurban I think I fixed the GC bug now
09:42 rurban g d
09:54 dalek parrot/smoke-me/gc-gh1159: 6aa5188 | rurban++ | / (3 files):
09:54 dalek parrot/smoke-me/gc-gh1159: [gc] fix the GC regression GH #1159 in resizablepmcarray
09:54 dalek parrot/smoke-me/gc-gh1159:
09:54 dalek parrot/smoke-me/gc-gh1159: Always do PARROT_GC_WRITE_BARRIER with rpa unshift, even with the fast case.
09:54 dalek parrot/smoke-me/gc-gh1159: The same with resize skip, where only the right side is adjusted.
09:54 dalek parrot/smoke-me/gc-gh1159: Just skip the WB when the old size == new size.
09:54 dalek parrot/smoke-me/gc-gh1159:
09:54 dalek parrot/smoke-me/gc-gh1159: This should fix the gc errors on small machines with big programs.
09:54 dalek parrot/smoke-me/gc-gh1159: parrot-bench is now 1.2% slower.
09:54 dalek parrot/smoke-me/gc-gh1159: review: https://github.com/parrot/parrot/commit/6aa51883f9
10:09 rurban nope, still failing on one machine
10:10 travis-ci joined #parrot
10:10 travis-ci parrot/parrot#1413 (smoke-me/gc-gh1159 - 6aa5188 : Reini Urban): The build passed.
10:10 travis-ci Change view : https://github.com/parrot/​parrot/commit/6aa51883f931
10:10 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44556881
10:10 travis-ci left #parrot
11:29 bighugedog joined #parrot
12:34 kid51 joined #parrot
12:54 dalek parrot/smoke-me/cast-cage: 5d7b1e7 | rurban++ | / (2 files):
12:54 dalek parrot/smoke-me/cast-cage: ChangeLog + fix a doc link
12:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/5d7b1e7ebf
12:54 dalek parrot/smoke-me/cast-cage: ff7a48b | rurban++ | / (6 files):
12:54 dalek parrot/smoke-me/cast-cage: [cage] Fix c++ Wcast-qual and -Wunused-result, PTR_UNCONST
12:54 dalek parrot/smoke-me/cast-cage:
12:54 dalek parrot/smoke-me/cast-cage: in the io and string api.
12:54 dalek parrot/smoke-me/cast-cage: We really need to bypass the const qualifier for our io api.
12:54 dalek parrot/smoke-me/cast-cage: Add a new PTR_UNCONST macro.
12:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/ff7a48b226
12:54 dalek parrot/smoke-me/cast-cage: 3bf3da4 | rurban++ | / (7 files):
12:54 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes
12:54 dalek parrot/smoke-me/cast-cage:
12:54 dalek parrot/smoke-me/cast-cage: undeclared snprintf
12:54 dalek parrot/smoke-me/cast-cage: duplicate declarations
12:54 dalek parrot/smoke-me/cast-cage: unused vars
12:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/3bf3da41c5
12:54 dalek parrot/smoke-me/cast-cage: ef8c480 | rurban++ | / (12 files):
12:54 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes
12:54 dalek parrot/smoke-me/cast-cage:
12:54 dalek parrot/smoke-me/cast-cage: remove some -Wunused-variable and unneeded function calls, io cleanup
12:54 dalek parrot/smoke-me/cast-cage: fix one logical autoflush error in Parrot_io_open
12:54 dalek parrot/smoke-me/cast-cage: add pbc_merge_annotations to pbc_merge,
12:54 dalek parrot/smoke-me/cast-cage: remove some dead functions: setup_imcc, do_a_better_error_message,
12:54 dalek parrot/smoke-me/cast-cage:   Parrot_pcc_add_invocant
12:55 dalek parrot/smoke-me/cast-cage: use switch for gc_get_info (I trust the compilers not to overdo it)
12:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/ef8c480afc
12:55 dalek parrot/smoke-me/cast-cage: 7e222bb | rurban++ | / (6 files):
12:55 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes: ops, imcc.y
12:55 dalek parrot/smoke-me/cast-cage:
12:55 dalek parrot/smoke-me/cast-cage: remove unneeded variables and signature function calls
12:55 dalek parrot/smoke-me/cast-cage: regenerate the parser,
12:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/7e222bb122
12:55 dalek parrot/smoke-me/cast-cage: 0493f08 | rurban++ | src/platform/generic/io.c:
12:55 dalek parrot/smoke-me/cast-cage: [io] re-enable async io on linux
12:55 dalek parrot/smoke-me/cast-cage:
12:55 dalek parrot/smoke-me/cast-cage: linux is Obsolete (not POSIX compliant)
12:55 dalek parrot/smoke-me/cast-cage: http://sourceforge.net/p/pr​edef/wiki/OperatingSystems/
12:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/0493f08556
12:55 dalek parrot/smoke-me/cast-cage: 1127005 | rurban++ | / (2 files):
12:55 dalek parrot/smoke-me/cast-cage: [cage] remove more redundant duplicate declarations
12:55 dalek parrot/smoke-me/cast-cage:
12:55 dalek parrot/smoke-me/cast-cage: in dynpmc: see GH #741
12:55 dalek parrot/smoke-me/cast-cage:
12:55 dalek parrot/smoke-me/cast-cage: src/vtables.c: Parrot_gbl_initialize_core_pmcs is already declared now
12:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/1127005f4b
12:55 dalek parrot/smoke-me/cast-cage: 42c1390 | rurban++ | src/ (2 files):
12:55 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes: interp
12:55 dalek parrot/smoke-me/cast-cage:
12:55 dalek parrot/smoke-me/cast-cage: remove unneded num_thr
12:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/42c1390163
13:08 travis-ci joined #parrot
13:08 travis-ci parrot/parrot#1414 (smoke-me/cast-cage - 42c1390 : Reini Urban): The build passed.
13:08 travis-ci Change view : https://github.com/parrot/p​arrot/compare/5d7b1e7ebf94^...42c1390163fa
13:08 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44570311
13:08 travis-ci left #parrot
13:31 Util #ps time
13:48 dalek parrot/smoke-me/cast-cage: 222dbec | rurban++ | / (6 files):
13:48 dalek parrot/smoke-me/cast-cage: [cage] undo instable PTR_UNCONST, fix codingstd
13:48 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/222dbec1eb
13:51 dalek parrot: 2586ee4 | rurban++ | t/stress/gc.t:
13:51 dalek parrot: [test] add easily repro GC testcase for GH #1159
13:51 dalek parrot: review: https://github.com/parrot/parrot/commit/2586ee4521
13:51 dalek parrot: 1e416f1 | rurban++ | / (9 files):
13:51 dalek parrot: [core] add INTERPINFO_MAX_GENERATIONS api
13:51 dalek parrot:
13:51 dalek parrot: Returns the defined constant for gms (changed from 4 to 3), or 0.
13:51 dalek parrot: Allow -DGC_MAX_GENERATIONS=n to be set via --ccflags.
13:51 dalek parrot: benchmarked with parrot-bench: 3 and 4 are the best, 8 is also interesting.
13:51 dalek parrot:
13:51 dalek parrot: Todo string collects in t/op/gc-leaky-call.t and ..box.t
13:51 dalek parrot:   There's no apparent need to collect strings, when none are
13:51 dalek parrot:   allocated during a cycle.
13:51 dalek parrot:   But add a collectable string for the lulz
13:51 dalek parrot: review: https://github.com/parrot/parrot/commit/1e416f1bbf
13:51 dalek parrot: 2249402 | rurban++ | / (3 files):
13:51 dalek parrot: [gc] enable on_dirty_list assertion, document pobj flags
13:51 dalek parrot:
13:51 dalek parrot: and improve the GH #1159 testcase. It was too slow
13:51 dalek parrot: review: https://github.com/parrot/parrot/commit/2249402a43
13:51 dalek parrot: 45758d2 | rurban++ | src/gc/gc_gms.c:
13:51 dalek parrot: [gc] Change semantics of GC_MAX_GENERATIONS
13:51 dalek parrot:
13:51 dalek parrot: GC_MAX_GENERATIONS=3 means now 3 generations: 0,1,2.
13:51 dalek parrot: It was too odd and head-scratching to define 4 for max 3 generations
13:51 dalek parrot: review: https://github.com/parrot/parrot/commit/45758d20a3
13:51 dalek parrot: 6aa5188 | rurban++ | / (3 files):
13:51 dalek parrot: [gc] fix the GC regression GH #1159 in resizablepmcarray
13:51 dalek parrot:
13:51 dalek parrot: Always do PARROT_GC_WRITE_BARRIER with rpa unshift, even with the fast case.
13:51 dalek parrot: The same with resize skip, where only the right side is adjusted.
13:51 dalek parrot: Just skip the WB when the old size == new size.
13:51 dalek parrot:
13:51 dalek parrot: This should fix the gc errors on small machines with big programs.
13:51 dalek parrot: parrot-bench is now 1.2% slower.
13:51 dalek parrot: review: https://github.com/parrot/parrot/commit/6aa51883f9
13:54 dalek parrot/smoke-me/cast-cage: 5b43001 | rurban++ | / (6 files):
13:54 dalek parrot/smoke-me/cast-cage: [cage] Fix c++ Wcast-qual and -Wunused-result, PTR_UNCONST
13:54 dalek parrot/smoke-me/cast-cage:
13:54 dalek parrot/smoke-me/cast-cage: in the io and string api.
13:54 dalek parrot/smoke-me/cast-cage: We really need to bypass the const qualifier for our io api.
13:54 dalek parrot/smoke-me/cast-cage: Add a new PTR_UNCONST macro.
13:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/5b4300103e
13:54 dalek parrot/smoke-me/cast-cage: b71b78a | rurban++ | / (7 files):
13:54 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes
13:54 dalek parrot/smoke-me/cast-cage:
13:54 dalek parrot/smoke-me/cast-cage: undeclared snprintf
13:54 dalek parrot/smoke-me/cast-cage: duplicate declarations
13:54 dalek parrot/smoke-me/cast-cage: unused vars
13:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/b71b78ae8f
13:54 dalek parrot/smoke-me/cast-cage: 34a5204 | rurban++ | / (11 files):
13:54 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes
13:54 dalek parrot/smoke-me/cast-cage:
13:54 dalek parrot/smoke-me/cast-cage: remove some -Wunused-variable and unneeded function calls, io cleanup
13:54 dalek parrot/smoke-me/cast-cage: fix one logical autoflush error in Parrot_io_open
13:54 dalek parrot/smoke-me/cast-cage: add pbc_merge_annotations to pbc_merge,
13:54 dalek parrot/smoke-me/cast-cage: remove some dead functions: setup_imcc, do_a_better_error_message,
13:54 dalek parrot/smoke-me/cast-cage:   Parrot_pcc_add_invocant
13:54 dalek parrot/smoke-me/cast-cage: use switch for gc_get_info (I trust the compilers not to overdo it)
13:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/34a52040c4
13:54 dalek parrot/smoke-me/cast-cage: b8558c9 | rurban++ | / (6 files):
13:54 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes: ops, imcc.y
13:54 dalek parrot/smoke-me/cast-cage:
13:54 dalek parrot/smoke-me/cast-cage: remove unneeded variables and signature function calls
13:54 dalek parrot/smoke-me/cast-cage: regenerate the parser,
13:54 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/b8558c96fc
13:54 dalek parrot/smoke-me/cast-cage: a611766 | rurban++ | src/platform/generic/io.c:
13:55 dalek parrot/smoke-me/cast-cage: [io] re-enable async io on linux
13:55 dalek parrot/smoke-me/cast-cage:
13:55 dalek parrot/smoke-me/cast-cage: linux is Obsolete (not POSIX compliant)
13:55 dalek parrot/smoke-me/cast-cage: http://sourceforge.net/p/pr​edef/wiki/OperatingSystems/
13:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/a611766b59
13:55 dalek parrot/smoke-me/cast-cage: 8fab150 | rurban++ | / (2 files):
13:55 dalek parrot/smoke-me/cast-cage: [cage] remove more redundant duplicate declarations
13:55 dalek parrot/smoke-me/cast-cage:
13:55 dalek parrot/smoke-me/cast-cage: in dynpmc: see GH #741
13:55 dalek parrot/smoke-me/cast-cage:
13:55 dalek parrot/smoke-me/cast-cage: src/vtables.c: Parrot_gbl_initialize_core_pmcs is already declared now
13:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/8fab150056
13:55 dalek parrot/smoke-me/cast-cage: 949fdfb | rurban++ | src/ (2 files):
13:55 dalek parrot/smoke-me/cast-cage: [cage] more --cage fixes: interp
13:55 dalek parrot/smoke-me/cast-cage:
13:55 dalek parrot/smoke-me/cast-cage: remove unneded num_thr
13:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/949fdfba89
13:55 dalek parrot/smoke-me/cast-cage: 4788480 | rurban++ | / (6 files):
13:55 dalek parrot/smoke-me/cast-cage: [cage] undo instable PTR_UNCONST, fix codingstd
13:55 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/4788480b98
14:03 travis-ci joined #parrot
14:03 travis-ci parrot/parrot#1415 (smoke-me/cast-cage - 222dbec : Reini Urban): The build has errored.
14:03 travis-ci Change view : https://github.com/parrot/parrot/c​ompare/42c1390163fa...222dbec1ebc9
14:03 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44575164
14:03 travis-ci left #parrot
14:15 travis-ci joined #parrot
14:15 travis-ci parrot/parrot#1416 (master - 6aa5188 : Reini Urban): The build passed.
14:15 travis-ci Change view : https://github.com/parrot/parrot/c​ompare/d0d0694462ce...6aa51883f931
14:15 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44575533
14:15 travis-ci left #parrot
14:28 travis-ci joined #parrot
14:28 travis-ci parrot/parrot#1417 (smoke-me/cast-cage - 4788480 : Reini Urban): The build passed.
14:28 travis-ci Change view : https://github.com/parrot/parrot/c​ompare/222dbec1ebc9...4788480b9879
14:28 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44575927
14:28 travis-ci left #parrot
15:34 dalek parrot/smoke-me/cast-cage: 2793557 | rurban++ | tools/dev/parrot.supp:
15:34 dalek parrot/smoke-me/cast-cage: [tools] add gc_gms_is_pmc_ptr/trace_mem_block to parrot.supp valgrind
15:34 dalek parrot/smoke-me/cast-cage:
15:34 dalek parrot/smoke-me/cast-cage: suppressions
15:34 dalek parrot/smoke-me/cast-cage: review: https://github.com/parrot/parrot/commit/279355737e
15:45 dalek parrot: 5b43001 | rurban++ | / (6 files):
15:45 dalek parrot: [cage] Fix c++ Wcast-qual and -Wunused-result, PTR_UNCONST
15:45 dalek parrot:
15:45 dalek parrot: in the io and string api.
15:45 dalek parrot: We really need to bypass the const qualifier for our io api.
15:45 dalek parrot: Add a new PTR_UNCONST macro.
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/5b4300103e
15:45 dalek parrot: b71b78a | rurban++ | / (7 files):
15:45 dalek parrot: [cage] more --cage fixes
15:45 dalek parrot:
15:45 dalek parrot: undeclared snprintf
15:45 dalek parrot: duplicate declarations
15:45 dalek parrot: unused vars
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/b71b78ae8f
15:45 dalek parrot: 34a5204 | rurban++ | / (11 files):
15:45 dalek parrot: [cage] more --cage fixes
15:45 dalek parrot:
15:45 dalek parrot: remove some -Wunused-variable and unneeded function calls, io cleanup
15:45 dalek parrot: fix one logical autoflush error in Parrot_io_open
15:45 dalek parrot: add pbc_merge_annotations to pbc_merge,
15:45 dalek parrot: remove some dead functions: setup_imcc, do_a_better_error_message,
15:45 dalek parrot:   Parrot_pcc_add_invocant
15:45 dalek parrot: use switch for gc_get_info (I trust the compilers not to overdo it)
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/34a52040c4
15:45 dalek parrot: b8558c9 | rurban++ | / (6 files):
15:45 dalek parrot: [cage] more --cage fixes: ops, imcc.y
15:45 dalek parrot:
15:45 dalek parrot: remove unneeded variables and signature function calls
15:45 dalek parrot: regenerate the parser,
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/b8558c96fc
15:45 dalek parrot: a611766 | rurban++ | src/platform/generic/io.c:
15:45 dalek parrot: [io] re-enable async io on linux
15:45 dalek parrot:
15:45 dalek parrot: linux is Obsolete (not POSIX compliant)
15:45 dalek parrot: http://sourceforge.net/p/pr​edef/wiki/OperatingSystems/
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/a611766b59
15:45 dalek parrot: 8fab150 | rurban++ | / (2 files):
15:45 dalek parrot: [cage] remove more redundant duplicate declarations
15:45 dalek parrot:
15:45 dalek parrot: in dynpmc: see GH #741
15:45 dalek parrot:
15:45 dalek parrot: src/vtables.c: Parrot_gbl_initialize_core_pmcs is already declared now
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/8fab150056
15:45 dalek parrot: 949fdfb | rurban++ | src/ (2 files):
15:45 dalek parrot: [cage] more --cage fixes: interp
15:45 dalek parrot:
15:45 dalek parrot: remove unneded num_thr
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/949fdfba89
15:45 dalek parrot: 4788480 | rurban++ | / (6 files):
15:45 dalek parrot: [cage] undo instable PTR_UNCONST, fix codingstd
15:45 dalek parrot: review: https://github.com/parrot/parrot/commit/4788480b98
15:46 dalek parrot: 2793557 | rurban++ | tools/dev/parrot.supp:
15:46 dalek parrot: [tools] add gc_gms_is_pmc_ptr/trace_mem_block to parrot.supp valgrind
15:46 dalek parrot:
15:46 dalek parrot: suppressions
15:46 dalek parrot: review: https://github.com/parrot/parrot/commit/279355737e
15:46 dalek parrot: 918d8ca | rurban++ | / (33 files):
15:46 dalek parrot: Merge branch 'smoke-me/cast-cage'
15:46 dalek parrot: review: https://github.com/parrot/parrot/commit/918d8ca5e6
15:46 dalek parrot: 0d8d1fc | rurban++ | ChangeLog:
15:46 dalek parrot: ChangeLog for smoke-me/cast-cage merge
15:46 dalek parrot: review: https://github.com/parrot/parrot/commit/0d8d1fc2d5
15:50 travis-ci joined #parrot
15:50 travis-ci parrot/parrot#1418 (smoke-me/cast-cage - 2793557 : Reini Urban): The build passed.
15:50 travis-ci Change view : https://github.com/parrot/parrot/c​ompare/4788480b9879...279355737e02
15:50 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44586004
15:50 travis-ci left #parrot
16:05 travis-ci joined #parrot
16:05 travis-ci parrot/parrot#1419 (master - 0d8d1fc : Reini Urban): The build passed.
16:05 travis-ci Change view : https://github.com/parrot/parrot/c​ompare/6aa51883f931...0d8d1fc2d592
16:05 travis-ci Build details : http://travis-ci.org/parrot/parrot/builds/44587336
16:05 travis-ci left #parrot
16:21 FROGGS joined #parrot
19:45 rurban joined #parrot
19:48 FROGGS joined #parrot
20:48 diginet joined #parrot
21:01 diginet joined #parrot
21:06 diginet joined #parrot
21:53 lauleon joined #parrot
21:59 lauleon1 joined #parrot
23:48 kid51 joined #parrot

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

Parrot | source cross referenced