The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

docs/parrot.pod - Parrot

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.

Documentation

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

intro.pod

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

overview.pod

An overview of the Parrot architecture and design.

running.pod

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

faq.pod

The Parrot FAQ.

glossary.pod

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

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

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, pdd03_calling_conventions.pod specifies Parrot's inter-routine calling conventions.

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.

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!)

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.

vtables.pod

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

embed.pod

Describes the embedding subsystem in excruciating detail.

jit.pod

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

memory_internals.pod

An introduction to the Parrot GC subsystem

parrotbyte.pod

The Parrot bytecode format.

packfile-perl.pod, packfile-c.pod

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

strings.pod

A description of the string implementation.

tests.pod

Hints on writing tests for the Parrot interpreter.

debug.pod

A beginner's guide to debugging the Parrot executable.

debugger.pod

Documentation for pdb, the Parrot debugger.

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), Cygwin, Win32, Tru64, OpenVMS (Alpha), Solaris (Sparc), FreeBSD (x86).

Authors

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

  • Chip Salzenberg (chip@pobox.com) is the chief architect. The mental institution he escaped from to accept the role is still searching for him.

  • Dan Sugalski (dan@sidhe.org) was the chief architect for the first 5 years of the project. Parrot is largely his brainchild.

  • Leopold Toetsch (lt@toetsch.at) is the current release manager.

  • 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.

  • Many, many other people have contributed their time and expertise to the Parrot project; see the CREDITS file for details.

Web pages

See:

for more information.