Parrot Virtual Machine

The Parrot Virtual Machine is a runtime engine for use with dynamic programming languages such as Perl, Python, Ruby and PHP. While originally designed for use with version 6 of the Perl programming language, it has expanded to a general-purpose dynamic virtual machine to host multiple high-level languages.

Parrot has been designed, in part, for ease of use by programmers and language designers. A series of tools called the Parrot Compiler Tools (PCT) have been designed that facilitate the creation of new languages for Parrot. These tools aide in creating new dynamic programming languages or implementing old languages on Parrot.

This book is going to introduce the reader to the Parrot Virtual Machine and the Parrot programming environment. We will discuss the creation of programs in the PIR and PASM languages and we will also discuss how to create new languages that compile to the Parrot platform. We will also talk about Parrot itself, and introduce the reader to Parrot's internals, which are released under an open source license and can be modified by able volunteers.

Introduction To Parrot

 * Introduction
 * Building Parrot
 * Running Parrot

Programming For Parrot

 * Parrot Programming
 * Parrot Assembly Language
 * Parrot Intermediate Representation
 * Polymorphic Containers (PMCs)
 * Multithreading and Concurrency
 * Exception Handling
 * Classes and Objects
 * The Parrot Debugger

Parrot Compiler Tools

 * Parrot Compiler Tools
 * Parrot Grammar Engine
 * Not Quite Perl
 * Optables and Expressions
 * Advanced PGE
 * Building A Compiler
 * HLL Interoperation

Parrot Hacking

 * Parrot Internals
 * IMCC and PIRC
 * Run Core and Opcodes
 * Memory and Garbage Collection
 * PMC System
 * String System
 * Exception Subsystem
 * IO Subsystem
 * JIT and NCI
 * Parrot Embedding
 * Extensions
 * Packfiles

Appendices

 * PIR Reference
 * PASM Reference
 * PAST Node Reference
 * Languages on Parrot
 * HLLCompiler Class
 * Command Line Options
 * Built-In PMCs
 * Bytecode File Format
 * VTABLE List

"Squaak" Language Tutorial

 * Squaak Tutorial
 * Introduction
 * Poking in Compiler Guts
 * Squaak Details and First Steps
 * PAST Nodes and More Statements
 * Variable Declaration and Scope
 * Scope and Subroutines
 * Operators and Precedence
 * Hashtables and Arrays
 * Wrap-Up and Conclusion

Resources

 * Resources
 * Licensing

Виртуальная машина Parrot