Camelia, the Perl 6 bug

IRC log for #parrot, 2011-02-25

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:05 worr left #parrot
00:09 ShaneC totally random question, anyone know who wrote gumbybrain?
00:16 kid51 joined #parrot
00:20 kid51 ~~
00:37 dalek parrot/opsc_full_parse: 0dea075 | bacek++ | t/compilers/opsc/03-past.t:
00:37 dalek parrot/opsc_full_parse: Update test to more strict grammar.
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/0dea0756f1
00:37 dalek parrot/opsc_full_parse: 51b672f | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
00:37 dalek parrot/opsc_full_parse: Fix PASTing of sym<call>
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/51b672fa66
00:37 dalek parrot/opsc_full_parse: 2efc409 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
00:37 dalek parrot/opsc_full_parse: Add array initializer to declarator.
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/2efc409b7f
00:37 dalek parrot/opsc_full_parse: f4d8bdd | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
00:37 dalek parrot/opsc_full_parse: Add struct to type_declarator
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/f4d8bdda03
00:37 dalek parrot/opsc_full_parse: aa2a676 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
00:37 dalek parrot/opsc_full_parse: Store initializer and array_size in PAST::Var declaration
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/aa2a6766d4
00:37 dalek parrot/opsc_full_parse: e5bae8c | bacek++ | compilers/opsc/src/Ops/Op.pm:
00:37 dalek parrot/opsc_full_parse: Macro calls has "macro" type now.
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/e5bae8c942
00:37 dalek parrot/opsc_full_parse: 1fad0c3 | bacek++ | compilers/opsc/src/Ops/Op.pm:
00:37 dalek parrot/opsc_full_parse: Process PAST::Var declarations
00:37 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/1fad0c39b6
00:48 kid51 msg whiteknight: In whiteknight/imcc_compreg_pmc branch I am getting no failures.  And the only test I see for pir_error_output_is() is can_ok.
00:48 aloha OK. I'll deliver the message.
00:49 whiteknight why do I always see problems with that test, and you do not see them?
00:49 whiteknight that is troublsome
00:49 kid51 Run on linux/i386, no --optimize (but none of that should affect this kind of test).  paste?
00:50 whiteknight the build is currently broken while I fix some things. I'll send you a paste tomorrow if it's still a problem
00:51 kid51 the build is broken?  but I just did a fresh checkout and built!
00:51 kid51 doing smolder atm
00:52 whiteknight oh, wait. the g++ build is broken. I may have fixed the C build
00:56 kid51 with gcc builds, but plenty of test failures:  http://smolder.parrot.org/app/​projects/report_details/10861
00:57 whiteknight expected
00:57 dmalcolm left #parrot
00:58 kid51 Is aloha not delivering private messages?
00:59 cotto_work msg kid51 good question
00:59 aloha OK. I'll deliver the message.
00:59 kid51 ~~
00:59 whiteknight I just got one
00:59 kid51 ok, I got that.
00:59 cotto_work there you go
00:59 kid51 I guess people just haven't been sending me responses ;-)
01:01 nopaste "kid51" at 192.168.1.3 pasted "whiteknight/imcc_compreg_pmc: where 'make' fails during all-g++ build" (1 line) at http://nopaste.snit.ch/34046
01:01 kid51 lemme try that again; got no line breaks.
01:03 whiteknight to fix the g++ build I need to make a major change to the recursive tailcall optimizer
01:04 whiteknight of course, I don't think that optimizer is used or well tested, so I won't know if I break it
01:04 whiteknight I'm seriously considering disabling that particular optimization for now
01:05 nopaste "kid51" at 192.168.1.3 pasted "compreg branch: g++ build failures" (41 lines) at http://nopaste.snit.ch/34047
01:05 kid51 mucho mejor
01:05 whiteknight yeah, that's the function. move_regs
01:06 whiteknight so I need to decide how to fix it
01:06 whiteknight cotto_work: you have any opinions on it?
01:06 cotto_work -Ofire
01:07 whiteknight ....lolparse?
01:07 cotto_work imcc optimizations are pretty broken.  Is the code in question hit during the build?
01:07 cotto_work "optimize it with fire"
01:07 whiteknight okay, that's what I was hoping the answer would be
01:07 whiteknight there will be a lot of fire
01:08 kid51 mikehh: ping
01:08 cotto_work It's a stupid tuit sink to have broken optimization code that requires developers to figure out if it's working and how to fix it.
01:10 cotto_work I'd also like to know what plobsing thinks about it, since he's been knee-deep in imcc guts on more than one occasion.
01:10 bubaflub joined #parrot
01:11 whiteknight i always like hearing what plobsing has to say
01:11 cotto_work yes
01:13 dalek parrot/whiteknight/imcc_compreg_pmc: b041f97 | Whiteknight++ | / (3 files):
01:13 dalek parrot/whiteknight/imcc_compreg_pmc: nuke the recursive tailcall optimizations from orbit
01:13 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/b041f97211
01:13 whiteknight pwn
01:16 dalek parrot/whiteknight/imcc_compreg_pmc: 1c3b05d | Whiteknight++ | / (2 files):
01:16 dalek parrot/whiteknight/imcc_compreg_pmc: fix a stupid bug in the new IMCC API. The G++ build is now fixed
01:16 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/1c3b05d353
01:16 cotto_work whiteknight: are those functions run during normal use?
01:17 whiteknight which functions? the tailcall optimization ones?
01:17 cotto_work the ones that just went away in your branch
01:18 whiteknight no, they were only used if somebody called IMCC with "Sub" optimizations enabled
01:18 cotto_work I suspect not but I want to be sure we're not losing anything of value.
01:18 whiteknight I think that's "-OS"
01:19 plobsing I used to be in favour of optimizations in IMCC. We had some pretty shiny things in there. But, the tight coupling is killing it. And the amount of information available to IMCC is no greater than available in PBC. It would be interesting to try to revive those (old ideas, new code) to work stand alone on bytecode. IMCC would then become "only" an assembler.
01:20 whiteknight yes, that's what I would prefer by far
01:20 whiteknight IMCC just doesn't do it well enough to justify all the extra cruft and complexity
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: 023e9a8 | Whiteknight++ | t/src/embed/api.t:
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: fix t/src/embed/api.t with g++
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/023e9a8a9c
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: ffc089e | Whiteknight++ | / (93 files):
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: fix merge in optimizer.c
01:25 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/ffc089e7c8
01:26 whiteknight that merge was surprisingly painless
01:27 cotto_work git++
01:27 whiteknight git++, yes. Also, it goes to show that I'm not working in a particularly popular area of the system
01:29 nopaste "Whiteknight" at 192.168.1.3 pasted "Perl_Test.t failure for kid51++" (43 lines) at http://nopaste.snit.ch/34054
01:30 whiteknight if plobsing weren't making a few related fixes there, nobody would be touching IMCC
01:41 cotto_work plobsing: do you happen to have an idea what the vtable swap ticket ( http://trac.parrot.org/parrot/ticket/569 )is about?  It seems like a concept you might be familiar with.
01:42 kid51 whiteknight:  Will look at that failure ... but now ...
01:42 plobsing sorry, I have no idea. and the link provided as the description is borkededead
01:42 kid51 is now known as kid51_at_dinner
01:43 plobsing protip: providing an actual description for tickets dramatically increases the odds anyone will know what it is about.
01:43 cotto_work wfm.  I'll reject it.
01:47 whiteknight +1
01:48 cotto_work done
01:56 whiteknight left #parrot
01:57 dalek TT #569 closed by cotto++: vtable swap (e.g. bignum)
01:57 dalek TT #569: http://trac.parrot.org/parrot/ticket/569
02:35 bubaflub left #parrot
02:35 kid51_at_dinner is now known as kid51
02:37 dalek parrot: d6d3418 | petdance++ | tools/dev/nci_thunk_gen.pir:
02:37 dalek parrot: note that ret_object is unused to quite warnings
02:37 dalek parrot: review: https://github.com/parrot/parrot/commit/d6d3418ed9
02:40 kid51 We now have 1500 closed tickets in the Trac system.
02:40 ttbot Parrot d6d3418e MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/29404
02:44 ttbot Parrot d6d3418e MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/29422
02:45 kid51 Uh-oh, who did a bad thing?
02:46 plobsing looks like d6d3418 isn't quite right
02:46 kid51 msg Andy Windows doesn't like d6d3418
02:46 aloha OK. I'll deliver the message.
02:46 kid51 msg petdance Windows doesn't like d6d3418
02:46 aloha OK. I'll deliver the message.
02:48 kid51 msg whiteknight On box where you are getting Parrot_Test.t failure, call: perl -MTest::Builder -E 'say $Test::Builder::VERSION;'  Let's see what we can rule out.
02:48 aloha OK. I'll deliver the message.
02:51 dalek parrot: f11f934 | bacek++ | tools/dev/nci_thunk_gen.pir:
02:51 dalek parrot: Fix previous commit.
02:51 dalek parrot: review: https://github.com/parrot/parrot/commit/f11f934500
02:53 cotto ~~
02:59 kid51 msg whiteknight AFAICT, the only difference in your Parrot_Test.t failure between the "got" ("STDERR is") and the "expected" ("not") is the trailing whitespace in the two lines that start '# #' -- once after 'foo' and once after '/bar/' -- which I suspect may be our efforts to accommodate too many versions of Test::Builder
02:59 aloha OK. I'll deliver the message.
03:00 dalek parrot: b9dcad0 | bacek++ | t/op/gc-non-recursive.t:
03:00 dalek parrot: Don't lie in test. Just skip it.
03:00 dalek parrot: review: https://github.com/parrot/parrot/commit/b9dcad0d00
03:12 mikehh kid51: you rang sir - (only here briefly)
03:12 sorear I think "vtable swap" means morph
03:20 plobsing sorear: ok, what does morph mean?
03:25 cotto It seems to amount to calling Parrot_pmc_reuse with a new pmc type.
03:43 sorear plobsing: take existing pmc, install new vtable and resize slot storage if needed
03:44 sorear unlike C++ objects, PMCs can change their type without changing their identity
03:45 kid51 mikehh:  As a recent Release Manager, would you like to glance at http://trac.parrot.org/parrot/ticket/1159 and see if what I did works for you?
03:45 kid51 I'll cc you.  No rush.
03:46 kid51 msg whiteknight Still need your feedback on http://trac.parrot.org/parrot/ticket/1948
03:46 aloha OK. I'll deliver the message.
03:46 * kid51 must sleep
03:46 sorear who is in charge of the bigint pmcs?
03:49 mikehh kid51: I'll have a look at it - but have to go now
03:52 kid51 left #parrot
04:05 mtk left #parrot
04:07 cotto Can someone clarify tt 1212?  jnthn seems to be saying that fh.eof works exactly like it should.
04:09 cotto eof returning true when there's nothing more to be read is the expected (and documented, afaict) behavior.
04:11 cotto s/true/false/ would make sense, but nobody's mentioned that in the ticket
04:11 mtk joined #parrot
04:17 cotto jnthn, ping
04:31 cotto seen jnthn
04:31 aloha jnthn was last seen in #perl6 1 days 5 hours ago joining the channel.
04:51 dalek parrot: cba535a | petdance++ | src/pmc/nci.pmc:
04:51 dalek parrot: removed unused variable
04:51 dalek parrot: review: https://github.com/parrot/parrot/commit/cba535aa07
04:51 dalek parrot: 027c663 | petdance++ | src/pmc/packfilebytecodesegment.pmc:
04:51 dalek parrot: removing unused vars
04:51 dalek parrot: review: https://github.com/parrot/parrot/commit/027c663e90
04:51 dalek parrot: 946692a | petdance++ | src/ops/ (5 files):
04:51 dalek parrot: consting local variables
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/946692ae0b
04:52 dalek parrot: 4264641 | petdance++ | src/pmc/packfileopmap.pmc:
04:52 dalek parrot: removed unused variables, and consted local vars
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/42646412d6
04:52 dalek parrot: d63dabe | petdance++ | src/embed/api.c:
04:52 dalek parrot: removed unused variable
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/d63dabe93e
04:52 dalek parrot: 3841cd8 | petdance++ | src/gc/gc_gms.c:
04:52 dalek parrot: removed unused vars, and consted many pointers
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/3841cd8f45
04:52 dalek parrot: acc2926 | petdance++ | src/nci/signatures.c:
04:52 dalek parrot: Removed a dead var
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/acc2926db0
04:52 dalek parrot: 7e38731 | petdance++ | src/gc/fixed_allocator. (2 files):
04:52 dalek parrot: removed unused vars, and shimmed up an interp arg
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/7e38731430
05:24 dalek parrot: f0a50b0 | petdance++ | frontend/parrot/main.c:
05:24 dalek parrot: removing und vars
05:24 dalek parrot: review: https://github.com/parrot/parrot/commit/f0a50b0fbe
05:24 dalek parrot: 314f233 | petdance++ | frontend/pbc_merge/main.c:
05:24 dalek parrot: removed unused var and unused parameters from pbc_merge_debugs()
05:24 dalek parrot: review: https://github.com/parrot/parrot/commit/314f233f42
05:37 dalek parrot: 9aff00f | petdance++ | src/ops/core_ops.c:
05:37 dalek parrot: regenerated .c code for the ops
05:37 dalek parrot: review: https://github.com/parrot/parrot/commit/9aff00f015
05:44 dalek parrot: c159d22 | petdance++ | src/dynoplibs/ (3 files):
05:44 dalek parrot: consting local vars
05:44 dalek parrot: review: https://github.com/parrot/parrot/commit/c159d22e8e
06:15 rurban_ joined #parrot
06:17 dalek parrot/opsc_full_parse: dcf3108 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
06:17 dalek parrot/opsc_full_parse: Add fake :pirop to infix operators.
06:17 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/dcf3108385
06:17 dalek parrot/opsc_full_parse: 72ce1af | bacek++ | compilers/opsc/src/Ops/ (2 files):
06:17 dalek parrot/opsc_full_parse: Emit more C code. Subject to heavy refactor
06:17 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/72ce1af0b4
06:18 rurban left #parrot
06:18 rurban_ is now known as rurban
06:21 dalek parrot/opsc_full_parse: dcedab9 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
06:21 dalek parrot/opsc_full_parse: Replace french quotes with angle brackets. NQP doesn't handle them well.
06:21 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/dcedab90f5
06:22 nopaste "bacek" at 192.168.1.3 pasted "New shiny opsc!" (134 lines) at http://nopaste.snit.ch/34055
06:23 bacek_at_work cotto, look! It's alive! :)  http://nopaste.snit.ch/34055
06:27 cotto bacek_at_work, !!!
06:28 bacek_at_work cotto, not finished (of course :)
06:31 cotto bacek_at_work, anything I could hack on now that I finally have a few tuits?
06:33 cotto That's a pretty fast parse too.
06:34 cotto Is it anywhere near parsing a core or dynop .ops file?
06:45 bacek_at_work cotto, it was used to pass 02-parse-all-ops.t
06:45 bacek_at_work now it's failing. More tweaks of grammar required...
06:45 bacek_at_work t/compilers/opsc/02-parse-all-ops.t (Wstat: 0 Tests: 19 Failed: 8)
06:45 bacek_at_work Failed tests:  1, 3, 5, 7-11
06:46 bacek_at_work cotto, you can work on PASTing other statement_control things. Like "for", "while", etc
06:46 cotto ok
06:49 cosimo left #parrot
06:50 dalek parrot/opsc_full_parse: 9276bae | bacek++ | compilers/opsc/src/Ops/ (2 files):
06:50 dalek parrot/opsc_full_parse: Introduce pirop mapping for infix operators with angles
06:50 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/9276baec1e
06:50 cosimo joined #parrot
06:50 cosimo left #parrot
06:54 bacek_at_work bacek@illusion:~/src/parrot (opsc_full_parse) $ prove t/compilers/opsc/02-parse-all-ops.t
06:54 bacek_at_work t/compilers/opsc/02-parse-all-ops.t .. ok
06:54 bacek_at_work All tests successful.
06:54 bacek_at_work cotto, yeah :)
06:54 dalek parrot/opsc_full_parse: 22d4963 | bacek++ | compilers/opsc/src/Ops/ (2 files):
06:54 dalek parrot/opsc_full_parse: Add more mappings
06:54 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/22d496347c
06:58 cotto I blink and suddenly you've fixed another batch of tests.
06:58 cotto bacek++
07:07 dalek parrot/opsc_full_parse: 73901a3 | bacek++ | t/compilers/opsc/03-past-declarator.t:
07:07 dalek parrot/opsc_full_parse: Fix test for new PAST generation
07:07 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/73901a3875
07:07 dalek parrot/opsc_full_parse: 32621f4 | bacek++ | t/compilers/opsc/03-past.t:
07:07 dalek parrot/opsc_full_parse: Fix test
07:07 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/32621f4aee
07:14 cotto those tests are messy
07:15 bacek_at_work cotto, which one?
07:15 dalek parrot/opsc_full_parse: 98bf4e4 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
07:15 dalek parrot/opsc_full_parse: PASTing of circumfix:sym<( )>
07:15 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/98bf4e4018
07:16 cotto 03-past.t
07:21 cotto I have while past generation implemented.  What'd be a good way to test it?
07:21 cotto and for
07:22 bacek_at_work I think 03-past can go
07:22 bacek_at_work It's from "old" opsc
07:22 bacek_at_work I just made it pass without big effort
07:23 bacek_at_work New tests are 01-parse-body and 02-past-declarator
07:23 bacek_at_work (Bad names but whatever)
07:23 cotto wfm
07:25 bacek_at_work anyway, time to loose _at_work suffix
07:26 bacek_at_work cotto, you can also implement PASTing of ternary operator
07:46 theory left #parrot
07:47 nopaste left #parrot
07:51 [hudnix] joined #parrot
07:51 hudnix left #parrot
07:54 nopaste joined #parrot
08:04 dalek parrot/opsc_full_parse: 89cc7b5 | cotto++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
08:04 dalek parrot/opsc_full_parse: untested past generation for while and for loops
08:04 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/89cc7b5959
08:04 dalek parrot/opsc_full_parse: 668cbd8 | cotto++ | t/compilers/opsc/03-past-declarator.t:
08:04 dalek parrot/opsc_full_parse: add some basic tests for while and for
08:04 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/668cbd8519
08:04 AzureStone left #parrot
08:05 AzureStone joined #parrot
08:18 bacek ~~
08:18 cotto ohai
08:18 bacek cotto++ # hooray :)
08:18 bacek Don't forget about for(;;) {} :)
08:21 cotto that seems to cause a failure
08:22 bacek looks like it's not parsed properly
08:24 benabik left #parrot
08:24 cotto likely not
08:24 cotto dibs
08:24 bacek cotto, fixed.
08:24 dalek parrot/opsc_full_parse: 645e19b | bacek++ | / (2 files):
08:24 dalek parrot/opsc_full_parse: Made all parts of 'for' optional
08:24 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/645e19bff9
08:24 bacek But I probably broke pasting
08:25 cotto can EXPR not be empty?
08:25 bacek nope
08:25 bacek EXPR is always non-empty thingy
08:28 dalek parrot/opsc_full_parse: cbb3c58 | bacek++ | / (2 files):
08:28 dalek parrot/opsc_full_parse: Implement parsing of do-while
08:28 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/cbb3c582a8
08:34 dalek parrot/opsc_full_parse: 1924519 | bacek++ | t/compilers/opsc/01-parse-body.t:
08:34 dalek parrot/opsc_full_parse: Fix test.
08:34 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/1924519648
08:38 dalek parrot/opsc_full_parse: 75805cc | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
08:38 dalek parrot/opsc_full_parse: Fix PASTing of <for>
08:38 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/75805cc781
08:44 ShaneC1 joined #parrot
08:47 cotto aloha, clock
08:47 cotto aloha, clock?
08:47 aloha cotto: LAX: Fri, 00:47 PST / CHI: Fri, 02:47 CST / NYC: Fri, 03:47 EST / UTC: Fri, 08:47 UTC / LON: Fri, 08:47 GMT / BER: Fri, 09:47 CET / TOK: Fri, 17:47 JST / SYD: Fri, 19:47 EST
08:47 cotto aloha, clock???
08:47 cotto aloha, clock!
08:57 ShaneC1 left #parrot
08:58 JimmyZ joined #parrot
09:04 dalek parrot/opsc_full_parse: 0fc4ee3 | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:04 dalek parrot/opsc_full_parse: Poor-man Perl6-style multi-dispatch emulation.
09:04 dalek parrot/opsc_full_parse:
09:04 dalek parrot/opsc_full_parse: Yes, I do want something like "multi method process(PAST::Op $op { where .pasttype eq 'if' })"
09:04 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/0fc4ee3317
09:05 lucian joined #parrot
09:15 dalek parrot/opsc_full_parse: 93c9ffb | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:15 dalek parrot/opsc_full_parse: Rewrite pasttype<call> slightly
09:15 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/93c9ffb503
09:19 dalek parrot/opsc_full_parse: 9695d75 | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:19 dalek parrot/opsc_full_parse: Rename process_body_chunk to to_c. Huffman encoding ftw.
09:19 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/9695d759b1
09:36 lucian left #parrot
09:48 JimmyZ left #parrot
10:57 dalek parrot/opsc_full_parse: 0209085 | bacek++ | compilers/opsc/src/Ops/Op.pm:
10:57 dalek parrot/opsc_full_parse: Remove unused variable
10:57 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/0209085630
10:57 dalek parrot/opsc_full_parse: 8579cac | bacek++ | t/compilers/opsc/0 (2 files):
10:57 dalek parrot/opsc_full_parse: Rename test file to squeeze in new one.
10:57 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/8579cac9bf
10:57 dalek parrot/opsc_full_parse: 3c54d3c | bacek++ | t/compilers/opsc/07-op-to-c.t:
10:57 dalek parrot/opsc_full_parse: Add skeleton for generating C from Op.
10:57 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/3c54d3cde2
10:57 dalek parrot/opsc_full_parse: 01cccfd | bacek++ | t/compilers/opsc/07-op-to-c.t:
10:57 dalek parrot/opsc_full_parse: Add first real test for emitting C from Ops::Op.
10:57 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/01cccfd8d8
11:04 dalek parrot/opsc_full_parse: 5cbbac3 | bacek++ | t/compilers/opsc/07-op-to-c.t:
11:04 dalek parrot/opsc_full_parse: Add more tests for emitting C from Op. With gracefully handling errors.
11:04 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/5cbbac3d82
11:08 JimmyZ joined #parrot
11:13 M_o_C joined #parrot
11:14 dalek parrot/opsc_full_parse: d277e61 | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:14 dalek parrot/opsc_full_parse: Add emitting of 'while'
11:14 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/d277e612d1
11:14 dalek parrot/opsc_full_parse: 67ce75d | bacek++ | / (2 files):
11:14 dalek parrot/opsc_full_parse: Implement emitting of 'for'
11:14 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/67ce75d14b
11:23 dalek parrot/opsc_full_parse: 0993287 | bacek++ | t/compilers/opsc/07-op-to-c.t:
11:23 dalek parrot/opsc_full_parse: Indent code. No functional changes.
11:23 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/0993287f23
11:30 JimmyZ left #parrot
11:34 dalek parrot/opsc_full_parse: 17824c5 | bacek++ | / (3 files):
11:34 dalek parrot/opsc_full_parse: Handle (some) prefix ops
11:34 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/17824c55fc
11:37 bacek cotto, why don't you sleep???
11:37 bacek ooops
11:38 bacek window scrolled...
11:40 woosley joined #parrot
11:41 dalek parrot/opsc_full_parse: ef738a8 | bacek++ | t/compilers/opsc/07-op-to-c.t:
11:41 dalek parrot/opsc_full_parse: Add test for infix:<*>
11:41 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/ef738a84c7
11:52 mtk left #parrot
11:59 M_o_C left #parrot
11:59 mtk joined #parrot
11:59 allison left #parrot
12:00 allison joined #parrot
12:09 JimmyZ joined #parrot
12:17 M_o_C joined #parrot
12:19 M_o_C left #parrot
12:21 JimmyZ left #parrot
12:23 bluescreen joined #parrot
12:46 lucian joined #parrot
13:13 JimmyZ joined #parrot
13:30 whiteknight joined #parrot
13:31 whiteknight good morning, #parrot
13:36 moritz good morning whiteknight, TCIF
13:40 whiteknight TCIF?
13:41 whiteknight ah nevermind
13:41 whiteknight yes, fridays are good
13:51 whiteknight I think I have the last remaining IMCC bug figured out in my head
13:51 whiteknight fixing it is probably not trivial, but at least I have a plan now
14:09 whiteknight is anybody else seeing problems in t/compilers/data_json/*.t? Sometimes when I run that test it hangs. Twice it crashed the VM
14:10 whiteknight I'm not sure if it's a function of my branch being different from master or what
14:14 Coke smolder gives you a half decent interface to find that out.
14:15 Coke http://smolder.parrot.org/app/p​rojects/test_file_history/1/299 - all green
14:15 Coke http://smolder.parrot.org/app/p​rojects/test_file_history/1/300 - all green.
14:15 Coke so, at first glance, it's just you.
14:16 rurban_ joined #parrot
14:18 rurban left #parrot
14:18 rurban_ is now known as rurban
14:25 whiteknight this particular problem causes the test to hang. It doesn't complete and wouldn't submit a report
14:25 whiteknight and like I said, on two occasions It brought down my entire machine, and then you can't submit a smoke report
14:28 tadzik what kind of pmc is the one that is sent to the :main sub?
14:28 whiteknight tadzik: At the moment, I think it's an RSA
14:28 whiteknight but it may be FSA or RPA
14:29 whiteknight tadzik: I would *love* to be able to put in an alternate front-end that could insert a Hash instead. Or RPA and Hash
14:29 tadzik whiteknight: how can I check the length of it, are they all implementing some common interface?
14:30 whiteknight "$I0 = elements $P0"
14:30 whiteknight and to get the type, it's "$S0 = typeof $P0"
14:33 tadzik shouldn't
14:34 tadzik .return (1)
14:34 Coke $I0 = elems $P0
14:34 tadzik make the program return 1?
14:34 Coke the program or the sub?
14:34 tadzik the program, if it's a main sub
14:34 NotFound The simple way has the advantage that you can build more elaborate schemas on it.
14:34 Coke tadzik: no. use exit 1
14:34 tadzik ok
14:52 bluescreen left #parrot
14:57 whiteknight tadzik: No, the return values from :main are ignored
15:04 Andy joined #parrot
15:10 tadzik https://github.com/parrot/par​rot/blob/master/api.yaml#L11 -- aren't these two redundant?
15:11 Andy ping kid51
15:15 dalek parrot/whiteknight/imcc_compreg_pmc: 81f7bfc | Whiteknight++ | compilers/imcc/main.c:
15:15 dalek parrot/whiteknight/imcc_compreg_pmc: fix the reentrant compile logic and put it back in place. However, this doesn't seem to win us back the failed tests and I don't know why
15:15 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/81f7bfcc8b
15:17 whiteknight this last set of test failures is proving to be the most frustrating
15:21 JimmyZ left #parrot
15:24 tadzik nxp-rx: say "new 'Complex'" ~~ / new \[?'Complex'\]? / # why doesn't this match?
15:39 bluescreen joined #parrot
15:42 dalek parrot/tewk/select: c210acb | tewk++ | src/pmc/hash.pmc:
15:42 dalek parrot/tewk/select: Hash pmc gets set_pmc_keyed_int and delete_keyed_int
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/c210acbdf0
15:42 dalek parrot/tewk/select: 6bc6496 | tewk++ | / (9 files):
15:42 dalek parrot/tewk/select: Select PMC
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/6bc6496dec
15:42 dalek parrot/tewk/select: 197c6d0 | tewk++ | src/pmc/select.pmc:
15:42 dalek parrot/tewk/select: Removed no_ro, whitespace fixes
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/197c6d05cd
15:42 dalek parrot/tewk/select: 3d8aa6c | tewk++ | src/pmc/select.pmc:
15:42 dalek parrot/tewk/select: Removed unneeded fd_set *r_ attributes from Select PMC
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/3d8aa6c987
15:42 dalek parrot/tewk/select: 4c52a81 | cotto++ | src/pmc/select.pmc:
15:42 dalek parrot/tewk/select: code cleanup; no functional changes
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/4c52a81048
15:42 dalek parrot/tewk/select: f8b2c75 | cotto++ | src/pmc/select.pmc:
15:42 dalek parrot/tewk/select: more code cleanup; still no functional changes
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/f8b2c751ea
15:42 dalek parrot/tewk/select: ecccba0 | cotto++ | / (2 files):
15:42 dalek parrot/tewk/select: rename data_hash to fd_map, update METHODs and tests
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/ecccba0b18
15:42 dalek parrot/tewk/select: 667539c | cotto++ | src/pmc/select.pmc:
15:42 dalek parrot/tewk/select: ATTR alloc/free isn't needed with auto_attrs
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/667539c72e
15:42 dalek parrot/tewk/select: 53688c9 | tewk++ | / (2 files):
15:42 dalek parrot/tewk/select: Fix getmaxfd test
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/53688c9ae6
15:42 dalek parrot/tewk/select: 1a3b6c6 | tewk++ | / (2 files):
15:42 dalek parrot/tewk/select: make timeout a FLOATVAL
15:42 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/1a3b6c6d83
15:42 tewk Wow that happens everytime I rebase?
15:44 whiteknight only if you're lucky
15:46 plobsing don't rebase publicly visible stuff. some people consider it rude.
15:52 woosley left #parrot
16:08 jan joined #parrot
16:08 jsut joined #parrot
16:12 jsut_ left #parrot
16:17 Patterner left #parrot
16:18 Psyche^ joined #parrot
16:18 Psyche^ is now known as Patterner
16:20 dmalcolm joined #parrot
16:21 theory joined #parrot
16:25 whiteknight Blah. I may need to enlist some help on this last IMCC bug
16:26 whiteknight I simultaneously have no idea why I get a bug in my branch, and I can't understand why it works in master
16:27 whiteknight which implies that maybe I don't even really know what the cause is
16:44 cotto_work ~~
16:47 whiteknight hello cotto_work
16:47 whiteknight welcome to my personal hell
16:48 Andy I thought IMCC was going away.
16:49 whiteknight Andy: It's a long road to get there
16:49 whiteknight and the road is not paved
16:49 whiteknight and there have been no bathrooms in site for like 60 miles
16:49 Andy OK, so I should still continue to ignore it?
16:49 whiteknight what do you mean ignore it?
16:49 Andy I haven't been fixing compiler warnings or anything else in it.
16:50 whiteknight yeah, you can continue to ignore it for that
16:50 whiteknight It is going out, slowly but steadily
16:51 Andy Aren't some of the GCs going away, too?
16:55 whiteknight I don't even know what we have in there. I think that everything that was going away already has
16:55 Hackbinary joined #parrot
16:56 whiteknight bacek may be better to ask about that, at this point
16:58 Hackbinary|2 joined #parrot
17:01 cotto_work Andy: I don't think any of the current GCs are on the chopping block.  You might be thinking of the fact that we've recently made bacek++'s new generational gc the default.
17:01 Hackbinary hello #parrot
17:01 whiteknight hello Hackbinary
17:01 cotto_work squaak
17:01 Andy I just don't want to bother cleaning up GC code that's goin' away.
17:02 Andy But it sounds like that won't be the case.
17:03 cotto_work Andy: correct
17:06 Coke Andy: You have a pending pull request on bobby-tables, btw.
17:06 Andy huh
17:06 Andy link?
17:06 Coke https://github.com/petdance/bobby-tables/pulls
17:06 Andy ooh yeah, I saw that.
17:06 Andy haha, I assumed that was for ack.
17:07 Andy I just saw the CF and thought it must be ack.
17:10 Andy thanks, Coke http://bobby-tables.com/coldfusion.html
17:12 Coke crap! Now that I see the HTML, I see a bug. ;)
17:12 Coke where it says name      = "status",
17:12 Coke we need a line after that with:
17:13 Coke value = form.status,
17:13 Coke want another pull request?
17:15 Andy looking
17:16 Andy after name = "status" and before cfsqltype?
17:16 dalek parrot: c27d1da | petdance++ | / (2 files):
17:16 dalek parrot: removed interp from a static, and shimmed up interps in other public functions where interp was not used
17:16 dalek parrot: review: https://github.com/parrot/parrot/commit/c27d1da9d6
17:18 Andy like this, Coke? http://bobby-tables.com/coldfusion.html
17:21 Coke perfecto.
17:24 Andy Thanks.
17:27 dalek parrot: d5ae072 | cotto++ | src/io/buffer.c:
17:27 dalek parrot: typo fix in docs
17:27 dalek parrot: review: https://github.com/parrot/parrot/commit/d5ae072060
17:27 dalek parrot: 8c0d19c | cotto++ | src/ (2 files):
17:27 dalek parrot: fewer lies in the io api docs
17:27 dalek parrot: review: https://github.com/parrot/parrot/commit/8c0d19cc9d
18:01 hercynium joined #parrot
18:12 ShaneC left #parrot
18:18 fperrad joined #parrot
18:28 sorear FWIW, the current .eof behavior sounds like the classic "Pascal" eof.
18:44 cotto_work ?
18:49 sorear http://www.informatik.uni-hamburg.de/RZ/softwar​e/SUNWspro/pascal/lang_ref/ref_io.doc.html#592 # this looks promising
18:52 cotto_work an hll can add that behavior if it's warranted.
18:56 ShaneC joined #parrot
19:19 cotto_work bacek: ping
19:29 * Coke discovers he is still a parrot-dev owner at launchpad.
19:31 Coke msg kid51 - why downgrade the severity on #1015? a segfault is pretty serious, especially when you can trigger it from PIR-or-higher.
19:31 aloha OK. I'll deliver the message.
19:38 plobsing_ joined #parrot
19:39 mtk left #parrot
19:43 plobsing left #parrot
19:45 mtk joined #parrot
19:58 Eclesia joined #parrot
19:58 Eclesia hi
19:59 tadzik hi
20:00 nopaste "tadzik" at 192.168.1.3 pasted "Cardinal build error" (24 lines) at http://nopaste.snit.ch/34133
20:00 tadzik why would adding a get_bool method and vtable to a class break cardinal?
20:01 tadzik http://wklej.org/id/482572/txt/ -- here's what I've changer
20:03 plobsing_ maybe whatever is throwing the exception depends on arrays only being true when they contain 1 or more items
20:03 tadzik that'd not be Ruby
20:05 jsut_ joined #parrot
20:05 plobsing_ but that is FPA, from which your array inherits (why else would you be using RPA.shift()?)
20:08 tadzik nah, that's RPA
20:08 plobsing_ RPA isa FPA
20:08 tadzik arrayproto = cardinalmeta.'new_class'('CardinalArray', 'parent'=>'parrot;ResizablePMCArray CardinalObject')
20:08 tadzik oh, ok
20:08 plobsing_ not the most intuitive of inheritance structures, but that's just how we roll around here aparently.
20:09 jsut left #parrot
20:10 dalek parrot/param-stmt: ed8c74c | plobsing++ | compilers/imcc/imc (3 files):
20:10 dalek parrot/param-stmt: move per-param code into per-param rule
20:10 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/ed8c74ccd6
20:10 dalek parrot/param-stmt: 8d01902 | plobsing++ | compilers/imcc/ (2 files):
20:10 dalek parrot/param-stmt: remove unused ITADDR
20:10 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/8d019027ae
20:10 dalek parrot/param-stmt: cac9e0e | plobsing++ | compilers/imcc/ (2 files):
20:10 dalek parrot/param-stmt: remove unused ITALIAS
20:10 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/cac9e0eaf9
20:10 dalek parrot/param-stmt: 412ce6c | plobsing++ | compilers/imcc/instructions.h:
20:10 dalek parrot/param-stmt: remove unused ITSAVES
20:10 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/412ce6c60d
20:10 dalek parrot/param-stmt: fbe0b62 | plobsing++ | compilers/imcc/ (5 files):
20:10 dalek parrot/param-stmt: handle param unpacking in param parsing code, not being sub code
20:10 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/fbe0b62f92
20:11 dalek parrot/param-stmt: 155bbe5 | plobsing++ | / (3 files):
20:11 dalek parrot/param-stmt: combine .param into statement handling so it can occur anywhere within a sub
20:11 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/155bbe5de4
20:11 dalek parrot/param-stmt: c8ee0cb | plobsing++ | compilers/imcc/imc (2 files):
20:11 dalek parrot/param-stmt: unecessary variable is unecessary
20:11 dalek parrot/param-stmt: review: https://github.com/parrot/parrot/commit/c8ee0cb9d2
20:20 whiteknight plobsing: what's the story with that branch?
20:21 whiteknight ...I wish there was a way to tell github not to produce diffs of the flex/bison generated files
20:21 whiteknight because...damn
20:21 bluescreen left #parrot
20:22 tadzik .githubignore (:
20:24 plobsing_ whiteknight: it implements .param as a statement, such that it can occur in the middle of a sub. We had previously discussed this as desirable in the context of exceptions.
20:24 plobsing_ is now known as plobsing
20:25 whiteknight oh, nice
20:25 whiteknight That would make it much much easier to prototype my "several small arg fetching ops" idea
20:25 whiteknight I still think it would be a win
20:26 plobsing I was going to discuss with you before merging. How close is your imcc work?
20:27 whiteknight plobsing: I'm stuck on a particularly nasty bug
20:28 whiteknight plobsing: coretest passes all important tests. NQP builds and passes all tests. I'm failing a few tests that look related to PGE
20:28 whiteknight if I can get over this last set of failures I think we're golden
20:28 whiteknight plobsing: Do you have a few minutes to take a look at it? I think some fresher eyes may catch what I am missing
20:29 plobsing sounds fun. I guess I'll merge this branch and have a look at your bugs when I get the chance. I'm AFK for a couple hours in a bit.
20:30 whiteknight okay
20:31 whiteknight t/compilers/pge/regression.t shows the easiest way to get to the failure
20:31 whiteknight I think it has to do with calling IMCC recursively. the inner call calls imc_cleanup, and then the outer call tries to use some of the variables which have been freed
20:31 whiteknight the problem is that the logic works the same way in master, so I don't understand it
20:32 whiteknight I'll be staring at it tonight too
20:38 Tene tadzik: did someone answer your question?
20:38 tadzik Tene: not quite
20:39 Tene tadzik: a common pattern you'll see is approximately: while (foo) { i = shift foo; do shit with i }
20:39 Tene where foo = some array
20:39 Tene but, y'know, in PIR instead
20:40 Tene if RPA is hll_mapped to CardinalArray, you'll see this problem
20:40 Tene (which it should be)
20:40 Tene (maybe)
20:40 Tene So: 1) check if there's an hll_map for that
20:41 Tene 2) check out the code in stc/classes/String.pir and verify that that's what's going on (I'm pretty sure it is)
20:41 Tene 3) change the logic there to check the number of elements or whatever
20:41 Tene or get an iterator instead
20:41 Tene (another common pattern, slightly better)
20:42 Tene there's an opcode for that, I think?  get_iter?  or a method on the RPA class and friends?
20:42 Tene so: foo_i = iter foo; while(foo_i) { i = shift foo_i; do shit with i }
20:43 Tene change it to be like that is probably the solution, i'm pretty sure
20:43 Tene tadzik: does that make sense?
20:47 tadzik Tene: no idea. Will investigate in the near time
20:47 Tene tadzik: Great; let me know if I can do anything more to help.
20:48 Tene tadzik: My only real concern here is why src/gen_grammar.pir is calling into cardinal code... that seems a little weird to me.
20:54 tadzik actions generate Cardinal objects?>
20:58 dalek parrot: 86b6c03 | petdance++ | src/gc/gc_ms (2 files):
20:58 dalek parrot: shimmed an unused interp
20:58 dalek parrot: review: https://github.com/parrot/parrot/commit/86b6c0382d
21:26 whiteknight left #parrot
21:29 Tene tadzik: they shouldn't
21:30 Tene tadzik: I think that the grammar might be running in the cardinal hll instead of the parrot hll, maybe.  I haven't checked.
21:30 Tene I'm pretty sure it is, actually.
21:30 Tene if so, hll_mapping may cause issues
21:30 Tene which, if so, we may need to adjust that to run the compiler in the _cardinal hll or something, which I wanted to do someday anyway.
21:31 Tene but, if we fix whatever is crashing there, it may just work anyway
21:31 Tene in which case we can just ignore it for now
21:45 bacek Good morning, humans
21:46 bacek cotto, pong
21:53 hercynium left #parrot
21:57 cotto_work bacek: Do you have anything in opsc that you can offload?
21:57 cotto_work and good morning to you
21:57 cotto_work or is it already so perfect that my attempts to touch it could only result in making it worse ;)
22:08 * Tene excited to work on Parrot over this weekend.
22:10 bacek cotto_work, todo list for opsc: 1) Finish pasting; 2) Finish Op.to_c for new PAST; 3) Implement C macros; 4) Emit LLVM.
22:10 bacek cotto_work, steps 3 and 4 are "optional" :)
22:11 bacek cotto, for steps 1 & 2 - there is few prefix/postfix ops which are not handled. And sym<concat>
22:14 bacek Jump on this train. I probably will not have much time over weekend to do anything for parrot
22:14 cotto_work I will.  It'll be fun.
22:15 bacek afk # breakfast
22:17 rurban_ joined #parrot
22:20 rurban left #parrot
22:20 rurban_ is now known as rurban
22:36 donaldh joined #parrot
22:58 Andy left #parrot
23:01 lucian_ joined #parrot
23:03 lucian left #parrot
23:25 kid51 joined #parrot
23:25 lucian_ left #parrot
23:25 lucian joined #parrot
23:34 donaldh left #parrot
23:35 dalek TT #356 closed by jkeenan++: better detect cpuarch with possible cmdline overrides
23:35 dalek TT #356: http://trac.parrot.org/parrot/ticket/356
23:41 whiteknight joined #parrot
23:46 Eclesia pfiu, starting to look like something :) http://eria.wikidot.com/
23:47 Eclesia I wasn't imagining I was that hard to be precise when defining a language
23:48 lucian Eclesia: i'm doing it in VDM, it's not too bad i guess
23:49 Eclesia vdm ?
23:49 lucian Eclesia: Vienna Development Method
23:49 lucian a language/framework to formally define and prove stuff
23:50 cotto_work keep plenty of sausage and chocolate on hand?
23:50 lucian especially useful for defining context abstract syntax and context conditions
23:51 Eclesia learn a language to define a language, that's always funny ^^
23:51 lucian Eclesia: indeed
23:51 lucian although VDM is mostly just an extension of mathematical language
23:52 cotto_work It makes me sad that nobody told me about that during college.  It looks interesting.
23:52 lucian it's a bit hand-wavy
23:52 lucian cotto_work: it's somewhat obscure. my lecturer happens to be one of its main developers
23:52 lucian the ascii concrete syntax is really crap, but conceptually it's an interesting languge
23:54 * Eclesia will skip vdm
23:56 lucian the way i see VDM is a nice effort towards comfortable, real-world, formal definition
23:59 Eclesia vdm makes me think of the french abbreviation for "Vie de Merde" == "shitty life" . You are right we can say it's a real-world definition :D

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

Parrot | source cross referenced