Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
83 lines (54 sloc) 2.86 KB
# Copyright (C) 2001-2007, Parrot Foundation.
=head1 NAME
docs/faq.pod - Parrot FAQ
=head1 GENERAL QUESTIONS
=head2 What is Parrot?
Parrot is a virtual machine for dynamic languages such as PHP, Perl, Python,
Ruby, Scheme, Tcl, etc. It compiles and executes bytecode, but is also designed
to act as an interpreter.
=head2 Why did you call it "Parrot"?
The name "Parrot" started with Simon Cozens's April Fool's Joke
(L<http://www.perl.com/pub/a/2001/04/01/parrot.htm>) where Larry Wall and Guido
van Rossum announced the merger of the Perl and Python languages.
A year later, when we were looking for a name for our virtual machine that
could run both Perl and Python, it seemed like a perfect fit.
=head2 Is Parrot the same as Perl 6?
No. Perl 6 is just one of the languages that will run on Parrot. For
information about Perl 6 on Parrot (a.k.a Rakudo), see L<http://rakudo.org/>.
=head2 Can I use Parrot today?
Yes.
Although Parrot is currently still under development, Parrot has been usable for
a long time. The primary way to use Parrot is to write Parrot Intermediate
Representation (PIR), described in L<PDD19|docs/pdds/pdd19_pir.pod>.
PIR is a high-level assembly language. See the L<examples> directory.
=head2 When can I expect to use Parrot with a I<real> programming language?
While the languages that are shipped with our pre-release versions of
parrot are in varying states of development, many of them are quite
functional. See L<https://github.com/parrot/parrot/wiki/Languages>
for information about the various languages that are targeting parrot.
=head2 What language is Parrot written in?
While much of the build system currently uses perl 5.8.0, the parrot
runtime is C89.
=head2 Why register-based and not stack-based?
Stack-based virtual machines and interpreters (JVM, .NET, Perl5, etc) are
both common and successful. However, register-based implementations give
us a number of benefits: Less code needed to manipulate the stack
frequently, access to decades of optimization for register-based hardware,
and a minimization of stack overflow security problems. For many
programmers, our register architecture just I<feels> more normal than
doing everything on a stack too.
=head2 Why aren't you using external tool or library I<X>?
The most common issues are:
=over 4
=item License compatibility
Parrot uses the Artistic License 2.0, which is compatible with
the GNU GPL. This means you can combine Parrot with GPL'ed code.
=item Platform compatibility
Parrot has to work on most of Perl 5's platforms, as well as a few of its own.
Perl 5 runs on eighty platforms; Parrot must run on Unix, Windows, Mac OS (X
and Classic), VMS, Crays, Windows CE, and Palm OS, just to name a few. Among
its processor architectures will be x86, SPARC, Alpha, IA-64, ARM, and 68x00
(Palms and old Macs). If something doesn't work on all of these, we can't use
it in core Parrot.
=back
=cut