Questions we ought to be able to answer

Christoph Otto christoph at mksig.org
Sun Jul 17 00:07:36 UTC 2011


On Sat, 16 Jul 2011 16:35 -0400, "James E Keenan" <jkeen at verizon.net>
wrote:
> I'm preparing to give a talk on Parrot at FOSSCON in Philadelphia next
> Saturday.  This preparation makes me realize how much I don't
> understand about Parrot.  More specifically, how many questions I
> can't give concise answers to.  And, as I suggested in my YAPC talk, I
> suspect I'm not alone.
>
> So here are some questions I'd like to be able to answer.  They are
> not necessarily important questions.  Their order is simply that in
> which they came into mind.  You will probably have better questions
> for which you need answers; feel free to ask them.
>
> 1. Who first came up with the idea of Parrot as a register-based VM?
>    Was there extensive discussion at that time of the merits of
>    register machines vs. stack machines?
>
> [On #IRC, allison attributed this to Simon Cozens and Dan Sugalski.
> Can anyone provide more detail?]

Wikipedia's entry on stack machines will serve you well here.  I
wouldn't talk about more than the basics.  It's really not that big of a
deal.  The decision was made when Parrot was first started and would be
very difficult to change today, even if there were a compelling reason.
Compared to other design decisions built in to Parrot, this is one has a
fairly minor impact on Parrot's performance.

>
> 2. Describe in one sentence the purpose of Winxed.
>
> 3. A Winxed snapshot has recently been included in the Parrot
>    distribution for the first time, and a winxed object is now linked
>    to the parrot executable during compilation.  In one sentence,
>    answer: What is the criterion for determining why "external"
>    software such as Winxed is included in Parrot in that way?

This isn't quite accurate.  A winxed fakecutable (Parrot bytecode
wrapped in C code and compiled into a standalone executable that uses
libparrot) is build and installed as part of Parrot's build process.
winxed is never linked into libparrot, though it is available to anyone
who's installed a full Parrot install.

Winxed is included with Parrot because it provides a better language
interface for creating PIR code.  If you want to know what "better"
means, take a look at some PIR code and some winxed code.  (winxed's
test suite has plenty of examples.)  I'm confident that the difference
will be apparent to anyone with any kind of programming experience.

The criteria for inclusion are fuzzy and should probably stay that way.
If enough people think it makes sense, it'll probably happen.

>
> 4. Describe in one sentence the purpose of NQP.  Describe in another
>    sentence the current status of the various flavors of NQP (nqp, nqp-
>    rx, etc.).

It's for building compilers using PCT.  There's an old nqp called "nqp",
a less old "nqp-rx" and the current iteration, also called "nqp".  The
newest one is where nearly all active development happens, though we can
probably get fixes for nqp-rx (which is bundled in Parrot).  Apart from
historical context, "nqp" refers to the currently developed version.

>
> 5. Is this an accurate and complete description of the type of files
>    which the 'parrot' executable can process? .pir .pasm .pbc

yes

>
> 6. Do we have a program which clearly demonstrates the concept of
>    interoperability of high-level languages implemented in Parrot?

nope.  Tene did some work on this, but we haven't given it
sufficient attention.  Once we're on 6model, expect a renewed
emphasis on hll interop.



More information about the parrot-dev mailing list