<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

<channel>
<title><![CDATA[Perl 6: Parrot]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?parrot</link>
<description></description>
<pubDate>Sat, 13 Mar 2010 16:25:10 -0000</pubDate>
<webMaster>synedra@gmail.com</webMaster>
<generator>Socialtext Workspace v2.14.7.2</generator>

<item>
<title><![CDATA[Parrot]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?parrot</link>
<description><![CDATA[<div class="wiki">
<div class="nlw_phrase"><table class='toc'><tr><td><div class="wiki">
<h3 id="contents">Contents: []</h3>
<ul>
<li><span class="nlw_phrase"><a title="section link" href="#core_ideas">Core Ideas</a><!-- wiki: {link: [] Core Ideas} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="#design">Design</a><!-- wiki: {link: [] Design} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="#toolkit">Toolkit</a><!-- wiki: {link: [] Toolkit} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="#languages">Languages</a><!-- wiki: {link: [] Languages} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="#organisation">Organisation</a><!-- wiki: {link: [] Organisation} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="#name">Name</a><!-- wiki: {link: [] Name} --></span></li>
</ul>
</div>
</td></tr></table><!-- wiki: {toc: } --></div><br /><br /><p>
Parrot is the VM (a software virtual machine) that was originally designed for only Perl 6. It's design and evolution is driven by 3</p>
<h3 id="core_ideas">Core Ideas</h3>
<ul>
<li><strong>Optimized for dynamic languages</strong> like Perl, Python and Ruby. Dynamic languages know during runtime much more about a program. Let's take advantage of that.</li>
<li><strong>Interoperability</strong>: any part of any program can written in any implemented language. Your program can use the libraries of all languages.</li>
<li><strong>Modularity</strong>: all parts can be changed independently and there are on several levels API to plug in optimizer.</li>
</ul>
<h3 id="design">Design</h3>
<ul>
<li>its register based unlike other major VM (JavaVM, .Net) that are stack based. That can make switches between routines, threads and programs much faster.</li>

<ul>
<li>some registers like int (integer) and num (floating point) can be maped to hardware CPU register</li>
<li>string and <a href="http://www.perlfoundation.org/perl6/index.cgi?pmc" title="(40 months) PolyMorphic Container or Parrot Magic Cookies are a type of register that holds objects. ">PMC</a> (Parrot magic cookie or polymorphic container) allow to do more higlevel stuff with registers</li>
</ul>
<li>it has several native languages: <a href="http://www.perlfoundation.org/perl6/index.cgi?PASM" title="[click to create page]" class="incipient">PASM</a> (Parrot Assembler) and <a href="http://www.perlfoundation.org/perl6/index.cgi?pir" title="(40 months) [Parrot] intermediate representation or PIR is one of Parrot s native languages. It s very close to ...">PIR</a> (Parrot Intermediate Representation) which will be of course compiled to Parrot bytcode. In some cases distribution of a program as one bytecode file will be much easier and also attractive for companies, which don't like to reveal there Perl source code.</li>
</ul>
<h3 id="toolkit">Toolkit</h3>
<p>
To make an implementation of a HLL (high level language) for Parrot very easy, the Parrot design team developed the <a href="http://www.perlfoundation.org/perl6/index.cgi?pct" title="(40 months) or [Parrot] Compiler Toolkit is a set mostly in [PIR] written software, aimed to help implementors o...">PCT</a> (Parrot Compiler Toolkit) including <a href="http://www.perlfoundation.org/perl6/index.cgi?nqp" title="(40 months)  Not Quite Perl (NQP) is a subset of Perl 6, clearly not intended as a Perl 6 implementation [Implem...">NQP</a>, a subset of Perl 6 in which not only people, who are more used to HLL, can code far more productive, than in PIR.</p>
<h3 id="languages">Languages</h3>
<p>
PCT is used by many implmentations, most important of them is naturally <a href="http://www.perlfoundation.org/perl6/index.cgi?rakudo" title="(40 months) The Rakudo Perl 6 Compiler http rakudo.org ( rakudo for short) targets the Parrot Virtual Machine [P...">Rakudo</a>, the Perl 6 compiler. But there are also others like Python, Ruby, PHP, over 30 in total. For more detailed info see <a href="http://www.perlfoundation.org/perl6/index.cgi?parrot_compiler" title="(40 months) are sofware packages mostly written with [PCT], sometimes [PIR], that enable Parrot to understand an...">Parrot Compiler</a>.</p>
<p>
Also the Perl 6 compiler <a href="http://www.perlfoundation.org/perl6/index.cgi?pugs" title="(37 months) Pugs is an implementation of Perl 6, started by the lovely [Audrey Tang], that ended the long Dark A...">Pugs</a>, that is written in Haskell, can emit back end cod for several targets, including Parrot.</p>
<p>
<a href="http://www.perlfoundation.org/perl6/index.cgi?blizkost" title="(40 months) [Blizkost] embeds the Perl 5.10 interpreter into [Parrot] with the primary aim to get access to some...">Blizkost</a> is not a compiler but the original Perl 5.10 interpreter, incorporated into Parrot.</p>
<h3 id="organisation">Organisation</h3>
<p>
Because Parrot's user base extends well beyond the Perl community that created it, the Parrot Foundation was founded in late 2008. This simplifies some organization and funding issues for Perl Foundation folks, while likewise making life easier for Parrot Foundation folks. Here are the new homes for these Parrot-related pages:</p>
<ul>
<li>The <a target="_blank" title="(external link)" href="https://trac.parrot.org/parrot/wiki">Official Parrot Wiki<!-- wiki-renamed-hyperlink "Official Parrot Wiki"<https://trac.parrot.org/parrot/wiki> --></a></li>
<li>The <a target="_blank" title="(external link)" href="http://www.parrot.org/">Parrot Home Page<!-- wiki-renamed-hyperlink "Parrot Home Page"<http://www.parrot.org/> --></a></li>
</ul>
<ul>
<li><a target="_blank" title="(external link)" href="http://perl6.cz/wiki/Perl_6_and_Parrot_links#Parrot_Sketch_-_Weekly_Parrot_related_IRC_meetings">Weekly Parrot related IRC meetings<!-- wiki-renamed-hyperlink "Weekly Parrot related IRC meetings"<http://perl6.cz/wiki/Perl_6_and_Parrot_links#Parrot_Sketch_=-_Weekly_Parrot_related_IRC_meetings> --></a></li>
</ul>
<h3 id="name">Name</h3>
<p>
The idea came from Simon Cozens, former editor of perl.com. In 2001 he installed there a carefully prepared <a target="_blank" title="(external link)" href="http://www.perl.com/pub/a/2001/04/01/parrot.htm">April Fools' joke<!-- wiki-renamed-hyperlink "April Fools' joke"<http://www.perl.com/pub/a/2001/04/01/parrot.htm> --></a> about <a href="http://www.perlfoundation.org/perl6/index.cgi?larry_wall" title="(40 months) aka TimToady Inventor of Perl http perl.org , patch, rn and some other very useful stuff. He receive...">Larry Wall</a> and <a target="_blank" title="(external link)" href="http://www.python.org/~guido/">Guido van Rossum<!-- wiki-renamed-hyperlink "Guido van Rossum"<http://www.python.org/~guido/> --></a> announcing to join Perl and Python and calling the new language Parrot. And as life follows art Parrot will join Perl and Python in a way both communities can life with.</p>
</div>
]]></description>
<author>Herbert Breunung</author>
<guid isPermaLink="true">http://www.perlfoundation.org/perl6/index.cgi?parrot</guid>
<pubDate>Sat, 13 Mar 2010 16:25:10 -0000</pubDate>
</item>

</channel>
</rss>