Camelia, the Perl 6 bug

IRC log for #parrot, 2011-10-12

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:01 cotto http://colinm.org/language_checklist.html
00:17 dukeleto hilarious
00:18 Util Excellent
00:22 Patterner +1
00:23 dukeleto Useful slides about having a "hack day" http://www.slideshare.net/chei​lmann/innovating-with-hackdays
00:59 l3l1p joined #parrot
01:00 l3l1p joined #parrot
01:25 bluescreen joined #parrot
01:44 dalek parrot: f3a9b26 | jkeenan++ | src/ (2 files):
01:44 dalek parrot: [codingstd] Trim lines to meet standard (without simultaneously causing failures in c_parens.t).
01:44 dalek parrot: review: https://github.com/parrot/parrot/commit/f3a9b26db0
01:48 benabik joined #parrot
02:37 alvis_ joined #parrot
02:38 bubaflub joined #parrot
03:26 davidfetter joined #parrot
03:47 rfw joined #parrot
04:21 dalek parrot: 353b6ac | petdance++ | src/pmc/nativepccmethod.pmc:
04:21 dalek parrot: consting local arguments
04:21 dalek parrot: review: https://github.com/parrot/parrot/commit/353b6ac3ef
04:21 dalek parrot: 77f8586 | petdance++ | src/hash.c:
04:21 dalek parrot: removed unused comparison functions
04:21 dalek parrot: review: https://github.com/parrot/parrot/commit/77f8586c0b
04:30 benabik joined #parrot
05:33 dalek parrot: 75ac424 | petdance++ | src/packfile/api.c:
05:33 dalek parrot: removed two unused fucntions
05:33 dalek parrot: review: https://github.com/parrot/parrot/commit/75ac4243ee
06:05 SHODAN joined #parrot
06:17 contingencyplan joined #parrot
06:57 baest joined #parrot
06:58 SHODAN joined #parrot
07:03 baest joined #parrot
07:29 lateau__ joined #parrot
07:40 nbrown joined #parrot
08:06 alin joined #parrot
08:14 lucian joined #parrot
09:08 PacoLinux_ joined #parrot
09:33 schmooster joined #parrot
10:20 lucian joined #parrot
10:22 not_gerd joined #parrot
10:22 not_gerd hello, #parrot
10:34 alin joined #parrot
10:34 dalek tapir: c7b4f83 | fperrad++ | setup.pir:
10:34 dalek tapir: (no commit message)
10:35 dalek tapir: review: https://github.com/leto/tapir/commit/c7b4f836e8
10:40 azawawi joined #parrot
10:42 alvis_ joined #parrot
11:36 azawawi left #parrot
11:37 Psyche^ joined #parrot
12:04 whiteknight joined #parrot
12:04 whiteknight good morning, #parrot
12:07 not_gerd joined #parrot
12:46 pjcj joined #parrot
13:10 bubaflub joined #parrot
13:15 AzureSto_ joined #parrot
13:28 benabik joined #parrot
13:29 benabik o/ #parrot
13:38 whiteknight hello benabik
13:40 benabik Hey whiteknight!  How's things?
13:40 nbrown joined #parrot
13:45 whiteknight pretty good benabik, you?
13:45 benabik Getting frustrated at my (lack of) thesis, but otherwise good.
14:06 not_gerd fyi, links to both Dan's 'Parrot post-mortem' and whiteknight's 'Smoke Clears' blog postings turned up in a HN discussion on Dart ( http://news.ycombinator.com/item?id=3098435 , subthread http://news.ycombinator.com/item?id=3098670 )
14:27 whiteknight that post-mortem blog from Dan is always amazingly insightful. I've read it a few times now
14:28 dukeleto ~~
14:31 whiteknight so many of the comments to that post are even more insightful than the post itself
14:32 Coke is that the one where he ... I'm trying to think of a polite way to say this.
14:32 Coke ... where he basically said "this is why I'm not working on parrot anymore" ?
14:33 moritz the one where he wrote that leo had f*cked up parrot, basically
14:33 dukeleto blarg
14:34 * moritz can't comment on any of that, it was way before my involvement with parrot or perl 6
14:34 dukeleto parrot development feels like it has slowed down lately
14:37 Coke dukeleto: haven't seen many commit messages, if that's how you're counting, no.
14:37 Coke I personally have been focusing on various perl6 implementations spectesting, and trying to get the rakudo ticket queue back down to a manageable size.
14:38 Coke (how the hell do I keep ending up on ticket duty? Must be secretly rewarding or something. :P)
14:38 Coke I need to get back to muddle.
14:38 Coke I had the very basics working. You can upload data, it gets parsed, and you can see the re-gen'd TAP.
14:39 dmalcolm joined #parrot
14:40 * benabik wants more time to work on PACT or lexicals, but doesn't have the time.
14:44 nopaste joined #parrot
14:44 not_gerd what's the status of migrating 6model into Parrot?
14:48 whiteknight not_gerd: no status. I had started with a copy+paste migration, but have been rethinking that
14:49 whiteknight if there is interest, we can continue down that path and see where it leadsd us
14:50 logie joined #parrot
15:03 not_gerd whiteknight: what are the reasons for not going ahaed with the c+p migration?
15:03 not_gerd waiting for m0?
15:08 dukeleto not_gerd: c+p migration?
15:08 dukeleto cotto: ping
15:08 not_gerd dukeleto: copy+paste
15:10 dukeleto not_gerd: ah
15:11 dukeleto cotto: i like https://github.com/parrot/parrot/wiki/​CPU-and-VM-Instruction-Set-Comparison , but i feel like it needs a tiny bit more instructions for people to help fill it out
15:12 whiteknight not_gerd: I was moving forward with it pretty blindly, but I started to think that maybe just dumping the code in place might not be as good as rewriting it from the ground up to be properly integrated
15:12 whiteknight not_gerd: 6model really wants to have some major changes to the vtable structure and the opcodes, and doing that in a naive way could get ugly
15:12 dukeleto i am surprised that the thread about converting to a github wiki didn't get more responses
15:13 dukeleto I will take that as a "yes, let's use a github wiki already"
15:13 dukeleto because I frakking hate the trac wiki
15:13 benabik I'm not a huge fan of trace in general.
15:13 whiteknight dukeleto: I'm ambivalent. I like the idea, but I don't want to do a bunch of work for it. I support it if other people want to do it
15:13 benabik *trac  (stoopid autocorrect)
15:13 dukeleto benabik: yeah, me neither. But converting ticket systems is a nightmare
15:13 benabik dukeleto: I'll believe it.
15:13 whiteknight I don't like trac at all either. I would be perfectly happy migrating the whole shebang to github
15:14 dukeleto whiteknight: you aren't allowed to do wiki migrations.
15:14 whiteknight what I like about the github wiki is that you can download it as a git repo and edit it locally using your favorite editor
15:14 dukeleto but also, a large part of our trac wiki is old and wrong and confusing and stupid and actively hampers new developers getting on board
15:14 whiteknight so that's neat
15:14 dukeleto and that is bad news bears
15:14 dukeleto whiteknight: yes, the fact that you can use and edit the wiki without a net connection is *huge*
15:15 dukeleto whiteknight: i see the wiki migration as a good task for people wanting to get involved with parrot. They will learn a good cross-section of stuff
15:15 whiteknight If I had my way, I would move everything to github and get off OSL entirely
15:15 dukeleto the OSL infrastructure isn't looking too good these days
15:15 whiteknight the parrot.org website could be moved to the github pages
15:16 dukeleto whiteknight: i am all for it. I frakking hate drupal
15:16 whiteknight it's not that it's not good. OSL is awesome. It's more indepth than we really need and requires more input from us than we should have to spend on it
15:16 whiteknight maintaining drupal is a hassle, and we don't get anything from it
15:16 * dukeleto is filling with lots of frakking hate for stuff this morning
15:16 whiteknight we basically use it as a very complicated way to post release announcements
15:17 whiteknight If we go the github route, everybody with a github account already has a blog waiting to be used, everything is git, etc
15:17 dukeleto OSL is awesome, but they are amazingly understaffed and I am not sure how much longer they will be able to host all the projects they currently host
15:18 whiteknight I don't have any reason to suspect they are under staffed or unmaintainable
15:18 benabik I do try to use parrot.org to post about my parrot work.
15:23 not_gerd whiteknight: I don't know if there's much value in properly 6model-izing the PMC infrastructure so you only have to do it again once m0 lands
15:23 not_gerd (assuming m0 gains some traction and not become vaporware)
15:23 whiteknight not_gerd: We want 6model as soon as possible because of the features and performance benefits it brings
15:24 whiteknight plus, getting the shape of the architecture in place before M0 comes is good so we know what M0 needs to support at the outset
15:24 whiteknight if we can use 6model to start deleting other, older code, that helps the migration effort as well
15:25 dukeleto For instance, this page is totally useless: http://trac.parrot.org/parrot/wiki/DeveloperTools
15:26 * dukeleto deletes the wrong stuff, and there is almost nothing left
15:27 dukeleto how do people usually run the parrot test suite under valgrind these days?
15:28 dukeleto we should probably also have something on the gcc compile farm running the test suite under valgrind as well
15:31 not_gerd whiteknight: ie your plan is to re-implement PMCs on top of 6model instead of having 6model on top/next to the PMC infrastructure (as NQP currently does)?
15:32 alvis_ From one who is trying to "get up to speed on parrot," please let me second dukeleto's remarks.
15:32 alvis_ I've spend weeks, digging through docs, trac, etc., running into blind alley after blind alley.
15:32 whiteknight not_gerd: Initially, my plan is to reimplement Class/Object/PMCProxy PMC types using 6model
15:33 whiteknight that should make most PMC usages from HLLs automatically using 6model
15:33 dukeleto alvis_: please, ask us questions in here or on parrot-dev. We won't bite :)
15:33 alvis_ Then, when I decide on a course of action with which to contribute, I'm told: Naw, we're really not doing that any more.
15:33 dukeleto alvis_: have you seen this? https://github.com/parrot/parrot/wiki/_pages
15:34 dukeleto alvis_: can you give me the concrete example of what happened?
15:34 alvis_ dukeleto: Thank you.  I will.
15:34 dukeleto i just deleted the DeveloperTools page on the trac wiki and converted the small bit of usefulness there to the github wiki
15:34 * dukeleto fights the good fight
15:36 alvis_ dukeleto: Sure, several: (1) Many of the tickets on trac are from 2008, 2009, or 2010 and, so, if your new (or returning), you think, "Ok, I can take one of these low priority things and work on it."
15:37 alvis_ But, then, you find, nope, everything's moved away from it.
15:37 whiteknight yeah, we severely need to delete a bunch of old tickets
15:37 alvis_ (2) Converting from perl5 tests to pir, but, no, pir is now out-of-favor.
15:37 whiteknight alvis_: if you send us links to the bad ones, we'll kill with great fire
15:37 dukeleto alvis_: this is the problem with tickets. They don't have a self-desctruct button
15:38 dukeleto alvis_: some test would still be valuable to convert to PIR
15:38 alvis_ (3) Much of the docs on parrot.org are just ... old.
15:38 whiteknight yes, converting from Perl5 to PIR, where possible, is still good to do
15:38 dukeleto alvis_: basically, we don't want people to start writing new languages and libraries with PIR, but PIR still has good use inside parrot core
15:38 whiteknight and that's my point with parrot.org: It's too hard to keep it updated!
15:39 dukeleto alvis_: what kind of stuff are you interested in hacking with parrot?
15:39 dukeleto alvis_: a language in particular? A new language? a new library?
15:39 not_gerd whiteknight: your 6model branch is based on perl6/nqp? or on 6model/c?
15:39 alvis_ dukeleto: Yeah, I agree.  And I do plan on contributing.  I just gotta get my bearings.
15:39 dukeleto alvis_: we have lots of stuff for you to do, but we get an F currently in making that info easily available to newcomers
15:39 whiteknight not_gerd: I stole the C code from perl6/nqp repo
15:39 alvis_ dukeleto: agreed.
15:39 dukeleto alvis_: can you successfully run "make test" and "make smoke" to submit a test report? That is a good step.
15:39 whiteknight not_gerd: I figure that's the one that's actually used by Rakudo now
15:40 alvis_ dukeleto: Yes and sure.  I just figured there were already a'lot of folks submitting smoke tests.
15:41 jsut_ joined #parrot
15:42 not_gerd whiteknight: 6model/c is based on perl6/nqp as well (more)
15:42 not_gerd don't know if its easier to rip out parrot-specific struff from the nqp version or to add it to the C version
15:42 alvis_ dukeleto: To answer your question about languages.  My intent was to port a new language, currently enjoying rapid and development on the JVM, to Parrot.
15:43 alvis_ dukeleto: What started me looking into Parrot's guts was trying to figure out how to write persistent, immutable data structures for the language.
15:43 not_gerd (where parrot-specific should be read as PMC-dependence)
15:44 dukeleto alvis_: what is this language?
15:44 alvis_ dukeleto: And, as I trying to figure that out, there's just a'lot of out-dated, incorrect, and inconsistent docs, verbiage, yada, yada.
15:44 benabik alvis_: Oooh, persistent, immutable data is neat.  Parrot needs more support for that.
15:45 * benabik wants a functional language in Parrot.
15:45 * benabik adds that to the list of "yeah, I'll do that someday".
15:45 * dukeleto just sent a reply to parrot-dev. The wiki is in migration.
15:45 benabik dukeleto: Step 1: Add link to new wiki from old.
15:45 alvis_ Well ..., I haven't really talked to the developer's about it yet ('cause I wanted to make the arguments with some core stuff first), but it's clojure.
15:46 dukeleto benabik: already done, buddy ;)
15:46 alvis_ benabik: Right, I agree.  It's way cool stuff. :)
15:48 benabik I had a random thought about using Keys as cons cells.  :-D
15:48 dukeleto whiteknight: how is jaesop coming along?
15:49 dukeleto whiteknight: would like to help, but i don't really know what needs doing
15:49 whiteknight dukeleto: I haven't touched it since last week. It's where it was last we talked
15:49 alvis_ But the developers are all out of the Java/JVM, C#/CLR side of the world, and I'm outta the C/Perl side of the world.  So ..., I wanna port it to something with some "real" performance, i.e, Parrot.
15:49 whiteknight dukeleto: what it could most use now is more tests
15:49 whiteknight dukeleto: especially tests for bits of the runtime, behaviors of objects, etc
15:51 dukeleto did somebody say tests?
15:51 dukeleto whiteknight: i assume it uses rosella?
15:51 whiteknight dukeleto: yessir
15:52 whiteknight here's a good example of tests written in javascript: https://github.com/Whiteknight/ja​esop/blob/master/t/stage0/loops.t
15:52 alvis_ whiteknight: Ok, on the converting tests from perl5 to pir.
15:55 alvis_ benabik: What I _need_ is HAMT, and the only way I can think of doing it is in C. (Though, with winxedxx, that might be a route.)
15:56 whiteknight HAMT?
15:56 benabik "Hash array mapped trie"?
15:56 alvis_ benabik: Yup.
15:57 alvis_ Need it to support immutability.
15:58 benabik shoot.  I was working on the wrong schedule.  GTG>
15:58 alvis_ And to maintain consistency with the JVM implementation.
16:13 dukeleto alvis_: sounds like HAMT is something that could go into https://github.com/whitekni​ght/parrot-data-structures
16:15 dukeleto whiteknight: if you give me a commit bit to jaesop, i will deliver some tests to you
16:15 alvis_ whiteknight: Right.  I've been looking at that.  I've cloned it and have been poking around in it a'bit.
16:16 dukeleto whiteknight: or i can fork. whatevs
16:18 alvis_ Anyway, I appreciate everyone's effort. Truly. And I'll start pointing out and submitting some things to parrot-dev (maybe even submit a patch or two along the way. :)
16:43 dukeleto good vim trick using ack : http://zackhobson.com/2011/09/02/vim-ack-grep.html
16:44 dukeleto alvis_: we appreciate constructive criticism, and good lord, we need a lot
17:05 fperrad joined #parrot
17:37 dukeleto ~~
17:37 Coke aloha: msg mj41 that I've killed the Taptinder client. ping me when the server comes back online and I'll restart the client.
17:37 aloha Coke: OK. I'll deliver the message.
17:37 Coke dukeleto: (converting ticket systems) just do me a favor and don't ask me for help. ;)
17:38 Coke I do recommend if you convert to github that you NOT do it manually.
17:40 dukeleto Coke: i hear ya. I remember when you converted us from RT to Trac.
17:41 Coke (which, I contend, was a horrible idea. I should have fought it then. ;)
17:41 Coke well, horrible is strong. unnecessary is closer.
17:51 whiteknight I don't think we need to do a ticket migration wholesale like we did last time
17:51 whiteknight I mean, trac is already closed down to ticket creation from new users, so it's basically dead where it is. If we say "open new tickets in github", that will be enough to get the process moving
17:52 whiteknight I'll move the tickets I own, since github is where I want to be looking at them, and I'll dig through trac and start deleting cruft
17:52 whiteknight other users can do the same, if they are so inclined
17:53 tadzik so you guys are now ditching trac completely?
17:53 whiteknight tadzik: nothing official yet. It's a direction I would like to go in, but we hardly have concensus on the poin
17:53 whiteknight point
17:53 tadzik I see
17:54 whiteknight ideally, I would like to ditch most of our current infrastructure. parrot.org is a hard-to-maintain drupal instance that causes us more hassle than we need. trac is increasingly hard to maintain and inferior in many respects to what github provides, etc'
17:55 whiteknight the fact that months later we still don't have even a rudimentary plugin in place to deal with trac ticket spam is a problem, and it's not for lack of looking
17:57 whiteknight Every month doing the documentation update portions of releases is a hassle, server administration is a hassle, etc. If these things were all git repos and if all Parrot team members had commit access, things would be a lot easier
18:04 benabik Back!
18:07 cotto ~~
18:12 benabik Github has changed!  The sky is falling!  Aaahh!
18:12 sorear whiteknight: how easy is it to export github's issues?
18:12 benabik ( https://github.com/blog/958-the-code-tab )
18:12 cotto oh noes!
18:14 benabik Oh, hey.  This Fork Queue thing is kinda awesome.  Never knew it existed.
18:15 cotto the branch switcher makes up for the ugly orange and then some
18:17 dukeleto yay, issues per organization on github: https://github.com/blog/959-iss​ues-dashboard-for-organizations
18:17 dukeleto benabik: fork queues are lovely
18:18 benabik help.github.com doesn't have a search bar.  :-(
18:18 * moritz wants all issues and pull requests for all repos where I have commit access, on a single page
18:19 benabik Oh.  Or I can click the ? on the fork queue page.  Lovely.
18:19 benabik moritz: +1
18:28 bubaflub whiteknight or anyone discussing moving tickets off trac - I know GitHub has an API to create tickets, and Net::Trac (https://metacpan.org/module/Net::Trac) looks useful.  do we want a script to glue the two together to transfer tickets?
18:29 benabik There are some ticket migration tools in existence.
18:29 Coke yes. please do not migrate tickets onesy twosy.
18:29 benabik Most of them seemed to be one-off type scripts.
18:31 cotto a couple hours hacking in Perl and suddenly PHP feels like a toy again
18:32 tadzik :)
18:34 nine green_threads, now with Zero Overhead (TM)
18:34 tadzik wooo
18:35 cotto nine++
18:35 cotto I guess that'd be ten.
18:36 bubaflub nine: you mentioned two approaches to getting zero overhead in your email to parrot-dev - which one did you take?
18:41 nine bubaflub: the scheduler alarm gets set the first time, when a second task is put into the queue. Also in Parrot_cx_next_task I check if there are other tasks left and if not I do not set the next scheduler alarm.
18:44 dalek nqp: 05affcf | moritz++ | / (4 files):
18:44 dalek nqp: Merge pull request #23 from ruz/regexp-fixes
18:44 dalek nqp:
18:44 dalek nqp: Fixes for character classes in regexes
18:44 dalek nqp: review: https://github.com/perl6/nqp/commit/05affcfdbe
18:45 whiteknight nine++
18:45 whiteknight bubaflub: a script to move tickets is fine. We still need to take some time to review old tickets and throw away the garbage
18:46 whiteknight of course, if we had some kind of "ticket review guidelines" written up somewhere, that would be a good start
18:46 whiteknight bubaflub: if you can find a way to move the tickets, that would be fine while we work on review guidelines
18:46 bubaflub whiteknight: i'll hack around and see what i can get
18:46 bubaflub but i agree that review guidelines would be nice
18:47 bubaflub and more focus on our docs / tickets / plans would be great
18:51 Coke closing tickets in place is awesome, of course.
18:52 whiteknight a big part of our problem is that we have too many tickets, and too many tickets which either aren't closable or should already have been closed
18:52 whiteknight keeping track of 100 tickets is easy enough. Keeping track of several hundred tickets spread out onto multiple pages of the website is impossible
18:53 Coke Here are some guidelines: Is it a patch? if so, does it still apply? if not, regretfully inform the OP and close the ticket, thanking them. Is it an old build problem? give the OP 2 weeks to tell you it's still happening. If they don't get back to you, regretfully close the ticket. Does the ticket require a spec decision? assign to cotto. Does the ticket report a bug with code? run the code. if the output changes, say so. if it's the same, sa
18:54 moritz Coke: cut off after "if it's the same, sa"
18:54 moritz probably "say so"
18:54 Coke code? run the code. if the output changes, say so. if it's the
18:54 Coke same, say so, but only if it's been a year since the ticket was
18:54 Coke updated.
18:54 Coke that should let you close a few.
18:55 Coke for a while, we were keeping code cleanup tasks in RT. kill those.
18:55 Coke for a while, we were creating tickets for roadmap items with the thought that we'd use trac's roadmap feature. we don't, really. kill those.
18:56 whiteknight yes, TODO items and roadmap items should not be tickets
18:57 whiteknight those kinds of things need too much discussion and too much visibility to be jammed into just another ticket
18:58 cotto cute.  Dart needs google's special gclient tool to download from vcs and then fails to build
18:59 Coke I think TODOs are ok in moderation, but are probably better served by a task list on the wiki somewhere.
18:59 Coke moritz: should we kill TODO tickets on rakudo and move them into the NOMMAP?
19:00 moritz Coke: not sure... probably not
19:00 Coke moritz: plenty more tickets to kill with the current guidelines, anyway.
19:01 moritz +1
19:02 cotto a good ticket killing spree sounds great
19:06 whiteknight a TODO note in the code, exactly where it needs to be and with enough relevant information, can be much better than a ticket
19:10 Coke whiteknight: yes. at some point someone converted all those to RTs, and now, at least, I think it was a mistake. At the time I /think/ I was ambivilent.
19:20 whiteknight Coke: live and learn. We would be stupid if we didn't recognize mistakes and refuse to re-make them
19:20 whiteknight or, at least try to avoid them
19:23 contingencyplan joined #parrot
19:40 benabik joined #parrot
20:18 rblackwe left #parrot
21:10 wagle_ joined #parrot
21:28 jsut joined #parrot
21:39 soh_cah_toa joined #parrot
21:41 nbrown joined #parrot
21:48 GodFather joined #parrot
21:52 PacoLinux joined #parrot
22:08 dukeleto ~~
22:09 GodFather joined #parrot
22:10 GodFather joined #parrot
22:14 soh_cah_toa_ joined #parrot
22:23 PacoLinux joined #parrot
22:32 whiteknight joined #parrot
22:33 Felipe joined #parrot
22:38 whiteknight good evening, #parrot
22:50 cotto hi, whiteknight
22:51 whiteknight hello cotto
23:18 particle1 joined #parrot
23:25 cotto http://www.slideshare.net/olvemaudal/deep-c - and I thought I knew C.
23:27 cotto though much of C programming is "don't do that"
23:30 not_gerd joined #parrot
23:30 whiteknight I knew almost all of that, but good programming practices can help you avoid that kind of crap without worry
23:30 not_gerd hello, #parrot
23:30 cotto speaking of knowing things, here's not_gerd
23:31 whiteknight not_gerd!
23:32 cotto say "hi" while !gerd
23:32 not_gerd it's nice to feel appreciated...
23:33 not_gerd saw in the logs that you were discussing the deep-c slides...
23:33 not_gerd I didn't go through them all, but did they mention the leadig-underscore issue?
23:33 not_gerd ^leading
23:33 not_gerd (pet peeve of mine)
23:36 whiteknight where they conflict with assembly symbols?
23:38 not_gerd most uses of leading underscores are forbidden by the C standard because they are reserved, but no one seems to care
23:38 not_gerd (mostly out of ignorance, imo)
23:41 not_gerd using _ + upper case is especially bad because that's what new language keywords use
23:41 not_gerd eg _Bool, _Generic, _Atomic, _Thread_local,...

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

Parrot | source cross referenced