# Copyright (C) 2001-2005, The Perl Foundation.
# $Id: /mirror/trunk/docs/parrot.pod 32875 2008-11-19T00:42:35.037586Z infinoid  $

=head1 NAME

docs/parrot.pod - Parrot

=head1 The Parrot Bytecode Interpreter

Parrot is a common bytecode format and interpreter for dynamic languages; it is
designed to run Perl 6 code efficiently, but is also intended to be
language-agnostic.

=head2 Documentation

The Parrot documentation is spread across a wide range of files.  Good starting
points are:

=over 4

=item F<intro.pod>

An introductory article on what Parrot is and how to do some interesting things
with it.

=item F<overview.pod>

An overview of the Parrot architecture and design.

=item F<running.pod>

Brief descriptions of the different executables and how to run them.

=item F<faq.pod>

The Parrot FAQ.

=item F<glossary.pod>

A guide to some of the jargon that crops up repeatedly in Parrot development
(and in the documentation...)

=back

More detailed information on the design and implementation of Parrot can be
found in:

=over 4

=item F<pdds/>

This subdirectory contains all of the current Parrot Design Documents (PDDs).
These are intended to be detailed guides to the design of the various Parrot
subsystems; for instance, F<pdd03_calling_conventions.pod> specifies Parrot's
inter-routine calling conventions.

=item F<ops/>

This subdirectory contains documentation files that are created from the
corresponding opcode files at build time. These files describe what each opcode
does and specify what arguments they take.

=item F<pmc/>

This subdirectory contains documentation on several of the PMC types available
to Parrot. Currently only a few of the available PMCs have been documented.
(Patches welcome!)

=item F<dev/>

This subdirectory contains a number of files discussing various implementation
decisions made during the course of the development of Parrot. The intent is to
keep discussion of implementation-specific issues separate from the basic
design issues discussed in the PDDs.

=item F<vtables.pod>

A brief introduction to the vtable at the heart of all PMCs, and how to
implement your own PMC type.

=item F<embed.pod>

Describes the embedding subsystem in excruciating detail.

=item F<jit.pod>

A brief description of Parrot's Just-In-Time compiler.

=item F<memory_internals.pod>

An introduction to the Parrot GC subsystem

=item F<parrotbyte.pod>

The Parrot bytecode format.

=item F<packfile-perl.pod>, F<packfile-c.pod>

The APIs for accessing packed bytecode files (packfiles) from Perl and C.

=item F<strings.pod>

A description of the string implementation.

=item F<tests.pod>

Hints on writing tests for the Parrot interpreter.

=item F<debug.pod>

A beginner's guide to debugging the Parrot executable.

=item F<debugger.pod>

Documentation for C<parrot_debugger>, the Parrot debugger.

=back

=head2 Supported Platforms

Parrot compiles and runs on a large number of platforms, including all common
ones. The Parrot team is committed to supporting the following combinations as
"core platforms": Linux (x86), Win32 (x86), OS X (x86 and PPC), Cygwin, Tru64,
OpenVMS (Alpha), Solaris (Sparc), FreeBSD (x86).

=head2 Authors

Parrot is developed and maintained by the members of the
C<parrot-porters@perl.org> mailing list. The list is archived at:
L<http://nntp.perl.org/group/perl.perl6.internals>

=over 4

=item * Allison Randal is the chief architect.

=item * Chip Salzenberg (C<chip@pobox.com>) was the second chief architect.

=item * Dan Sugalski (C<dan@sidhe.org>) was the chief architect for the first
I<5 years> of the project.  Parrot is largely his brainchild.

=item * Leopold Toetsch (C<lt@toetsch.at>) was the release manager for some
time. This position is currently rotated through several members of the
project team.

=item * Simon Cozens, Jeff Goff and Steve Fink were the release managers 
for releases 0.0.1 - 0.0.4, 0.0.5 - 0.0.8, and 0.0.9 - 0.0.11 respectively.
They have all subsequently recovered.

=item * Many, many other people have contributed their time and expertise
to the Parrot project; see the F<CREDITS> file for details.

=back

=head2 Web pages

See:

=over 4

=item * L<http://www.parrotcode.org/>

=item * L<http://dev.perl.org/>

=item * L<http://svn.perl.org/>

=back

for more information.

