For your reference here is The Parrot Main Site and here is the Perl 6 Architecture Site Now on to some questions:

  • From parrot_assembly.pod in the Parrot distribution we read the following:
    Parrot's's bytecode can be thought of as a form of machine language for a virtual super CISC machine. It makes sense, then, to define an assembly language for it for those people who may need to generate bytecode directly, rather than indirectly via the perl (or any other) language.
    And the obvious question is: why would a software machine closely emulating CISC architecture be expected to execute as efficiently on RISC machines?

    Does it make any sense to create a low-level machine modeled on one-architecture instead of a high-level architecture which can flexibly optimize to either architecture?

    Hell, if you want a nice pseudo-assembly language, GCC has compiled to RTL (register transfer language) for years, supporting C, Objective C, and C++. When we just need to code a RTL -> JVM and RTL -> CRL converter

  • Given that the proposed "low-level" architecture is probably too low for flexible optimization, it seems that a high or intermediate language would be better off as target. And, given that Bigloo Scheme satisfies the stated Perl 6 VM requirements such as speed (Bigloo is as fast as C), flexible target (Bigloo compiles to JVM and C and can also be interpreted, why not do a truly open source thing and simply push Bigloo Scheme in the backend and compile to it?

    But instead it was decided to create a whole new project and use C and a machine-like language. Why?

  • Also, I thought Parrot was not "stack-based" If that is the case then why does Overview.pod say this:
    Registers will be stored in register frames, which can be pushed and popped onto the register stack. For instance, a subroutine or a block might need its own register frame.


    In reply to 3 Criticisms of the Parrot Project for Perl 6 by princepawn

    Title:
    Use:  <p> text here (a paragraph) </p>
    and:  <code> code here </code>
    to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.