What's this? ^

Most language implementations that target parrot are listed here. At least the implementations that live in the 'languages' directory of the parrot repository should be covered.

No author information is given here. This is because maintainers should be tracked in the respective languages/*/MAINTAINER files, and we don't want to repeat ourselves.

For current status of some languages see also http://smoke.parrotcode.org/smoke/

Languages that work with the unified languages test suite will have their test results listed under the smokes marked 'languages'.

List of languages ^

Amber for parrot ^

Description

Scripting language inspired by Eiffel and Ruby.

Status

Incomplete - but all examples and test cases are working. Estimated progress towards release 1.0: language constructs 47%, libraries 6%, documentation 4%, robustness 6%. See also http://xamber.org/history.html

Last verified with parrot version

0.4.2

Location

http://xamber.org/.

The Amber PMCs are in languages/amber.

APL ^

Description

APL

Status

Provides support for a variety of monadic/dyadic operators, character vectors, floats, int, and 1-D vectors. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

"APL" in languages

BASIC/compiler ^

Description

BASIC Compiler

Status

Most of the samples work.

Last verified with parrot version

0.3.0

Location

languages/BASIC/compiler

abc ^

Description

Basic calculator. See http://en.wikipedia.org/wiki/Bc_%28Unix%29 Implemented with the Parrot compiler tools PGE and TGE.

Status

Some failures due to Parrot compiler tools changes. A former implementation in languages/bc has been removed in revision 16528. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/abc

befunge ^

Description

Functioning -93 interpreter (input routines may be funky).

Status

Samples working, README explain how to build/use. (waiting for Parrot objects for a befunge-98 version).

Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/befunge

bf ^

Description

bf. See http://en.wikipedia.org/wiki/Brainfuck.

Status

Passes all tests. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/bf

c99 ^

Description

PGE grammar for C99.

Status

Parser is pretty complete. Needs optok help.

Last verified with parrot version

0.4.6

Location

languages/c99

Cardinal ^

Description

Implementation of Ruby CVS Head 1.9

Status

Parser is pretty complete. Generates PIR for basic Ruby programs

Last verified with parrot version

0.4.9

Location

languages/cardinal

Cola ^

Description

Java like language with some hybrid Perl features like regex operators planned.

See also http://en.wikipedia.org/wiki/Cola_programming_language.

Status

Functioning, all samples working, lacks IO routines

Last verified with parrot version

0.0.11

Location

languages/cola

Common Lisp ^

Description

Aspires to implement a significant subset of the Common Lisp language.

Status

Working for some simple forms. Due to some broken features, most of the bootstrapping code has been commented out.

Last verified with parrot version

0.5.0

Location

languages/lisp

.Net To PIR Translator ^

Description

Translates .Net bytecode to PIR.

Status

Much is left to do, but it's complete enough to tranlate 75% of the .Net class library.

Last verified with parrot version

0.4.15

Location

languages/dotnet

Eclectus ^

Description

A Scheme to PAST compiler implemented in Scheme. Bootstrapping is planned.

Status

Planned.

Last verified with parrot version

0.5.0

Location

languages/eclectus

forth ^

Description

forth

Status

Broken in 0.5.0; relies on a non-existant opcode

Last verified with parrot version

??

Location

languages/forth

HQ9plus ^

Description

A joke language. See http://www.cliff.biffle.org/esoterica/hq9plus.html

Status

Works and is mostly complete.

Last verified with parrot version

0.5.0

Location

languages/HQ9plus

Jako ^

Description

C/Perl like language, first compiler for Parrot. The intent is to have a block-structured language that is higher level than IMC, but still exposes the underlying virtual machine rather directly, in the hope that this will eventually be useful for coding extensions to the VM in a language more natural than IMC.

See also http://en.wikipedia.org/wiki/Jako_(programming).

Status

The compiler Works, and the language and examples include subroutines and global constants and variables. NCI also works. The Jako examples are tested during smoke testing. The 'queens' example currently has problems and is therefore not tested.

Has a low-tech hand-coded lexer and parser, and the ability to spit out the parse tree as XML for debugging. Syntax is a bit rigid, but includes forms that will be familiar to Perl programmers.

Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/jako

Kea Common Lisp ^

Description

Kea Common Lisp is an implementation of ANSI Common Lisp that is based on CMU Common Lisp (see http://www.cons.org/cmucl/). The chief goal of the Kea Common Lisp project is to provide easy interoperability between Lisp and the other dynamic languages hosted on Parrot.

Status

The runtime is incomplete, being at the level of a simple desk calculator with an eccentric syntax, but the cross-compiler already supports most of the core semantic repertoire. The cross-compiler is almost capable of compiling itself; when that happens, EVAL will become suddenly much more powerful, and Kea will be able to grow rapidly.

Last verified with parrot version

0.4.15

Location

http://rgrjr.dyndns.org/lisp/kea-cl/

lazy-k ^

Description

lazy-k is a pure functional programming language according to the SKI calculus. See also http://homepages.cwi.nl/~tromp/cl/lazy-k.html

Status

Working, but not complete. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/lazy-k

Lua ^

Description

Lua 5.1 interpreter implemented with PGE/TGE/Partridge and friends.

Lua 5.1 Standard Libraries (a large subset) implemented in PIR.

Status

Part of languages smoke testing.

See details in languages/lua/doc/status.pod or at http://www.parrotcode.org/talks/LuaOnParrot.pdf.

Last verified with parrot version

0.5.0

Location

languages/lua

Monkey, an implementation of Lua on Parrot ^

Author

Klaas-Jan Stol

Description

Making Lua work on Parrot. Implemented in C. The lexer is built with Flex. The Parser is built with Bison. TreeCC is used to generate the code for creating the Abstract Syntax Tree.

There is also a Lua bytecode to PIR compiler at http://kjs.home.fmf.nl/lua2pir/

Status

Simple examples are working. The current version is 0.2.2.

Last verified with parrot version

0.2.x

Location

http://kjs.home.fmf.nl/parrot/

The Lua PMCs are in languages/lua.

Parrot m4 ^

Description

Port of GNU m4 to PIR.

Status

Functioning for handcrafted test cases. Loading frozen state is currently broken. Far from complete. Revision 0.0.14

Part of languages smoke testing.

Development is stalled. Takers are welcome. Some tests fail.

Last verified with parrot version

0.5.0

Location

languages/m4

miniperl ^

Description

miniperl

Status

Written by Jeff Goff. Unmaintained. Removed from trunk of Parrot subversion repository.

Last verified with parrot version

Unknown

Location

Up to revision 12805 of the Parrot subversion repository: languages/miniperl

NQP ^

Description

Not Quite Perl : lite-Perl6 implemented with PCT

Status

In progress.

Last verified with parrot version

0.5.0

Location

languages/nqp

Ook ^

Description

Functioning compiler targeting PASM.

Status

Samples working, README explain how to build/use. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/ook

parrot_compiler ^

Description

An example on how the builtin PASM, PIR and PAST compilers can be used from within PASM and PIR programs.

Status

Working. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/parrot_compiler

Perl 5 ^

Description

Primarily a repository for some perl5-specific functionality that was heavily used in early parrot development. This code is not slated for use with the Perl 6 implementation, and core parrot PMCs exist that provide much of the functionality here.

This directory may be removed in a future release.

Perl 6 parser/compiler ^

Description

This is a Perl 6 parser/compiler, an early version (no version numbers yet). It's still very early, only simple expressions and functions are available. If you're in a hurry to write "real Perl 6" programs, you might try looking at Pugs -- http://www.pugscode.org. Or, you can send patches and contributions to the one being built here!

Status

Part of languages smoke testing.

Last verified with Parrot version

0.5.0

Location

languages/perl6

Pheme ^

Description

It's not Scheme, it's Pheme! Pheme is a cleaned-up, partially implemented Lisp-2 compiler inspired by Scheme and built with TGE and PGE.

Status

Pheme handles function calls, a few built-in-PIR primitives, and atoms and lists. It also runs its tests written in pure Pheme. It is nearly to the point of being able to define the rest of the standard library in terms of its builtins.

Last verified with Parrot version

0.5.0

Location

languages/pheme

PIR ^

Description

A PIR compiler using Parrot compiler tools.

Status

Fairly complete, about 95%. Note that this implementation is not exactly the same as the language as accepted by IMCC.

Last verified with parrot version

0.4.15

location

languages/PIR

PJS ^

Description

PJS is a JavaScript (ECMAScript) implementation. It makes use of flex/bison for parsing. It can only do basic things right now (variables, if-else, loops, try-catch-finally, eval, etc.).

Status

Started.

Last verified with parrot version

0.4.14

Location

http://users.fulladsl.be/spb1622/pjs/

Wiki

http://www.perlfoundation.org/parrot/index.cgi?javascript

Plumhead ^

Description

The Plumheaded Parakeet aims to become an implementation of PHP on Parrot. The grand idea is to have side by side comparison of different parsing and tree transformation strategies. Currently there are three variants: phc, PGE and ANTLR3.

Status

Started.

Last verified with parrot version

0.5.0

Location

languages/plumhead

Wiki

http://www.perlfoundation.org/parrot/index.cgi?plumhead

Pugs ^

Description

Perl 6 compiler written in Perl 6 and Haskell with multiple backends

Status

Basic IO and control flow elements; mutable variables; assignment.

Last verified with parrot version

0.4.4

Location

http://pugscode.org/

Punie ^

Description

Perl1 implemented in PIR with the help of TGE, Tree Grammar Engine, and PGE, Parrot Grammar Engine.

Status

So far, Punie handles constants (strings, integers, floats), variables, print statements, conditionals, do blocks, comma lists, and some basic math and logic ops.

Last verified with parrot version

0.5.0

Location

languages/punie

Pynie ^

Description

A Python compiler for Parrot, based on PGE and TGE.

Status

Functions and simple expressions are working.

Last verified with parrot version

0.4.9

Location

languages/pynie

Python ^

Description

python

Status

Mostly working except for classes/exec/import. For licensing reasons, not in parrot's svn tree.

Last verified with parrot version

0.0.11

Location

http://pirate.tangentcode.com/

regex ^

Description

regex

Status

Working but fairly minimal. Part of languages smoke testing. Almost all tests are succeeding.

Last verified with parrot version

0.5.0

Location

languages/regex

Scheme ^

Description

A Scheme to PIR compiler implemented in Perl 5.

Status

Works as far as implemented. Lists, functions and closures are working but many functions are missing implementation. Works with the current calling conventions. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/scheme

Tcl ("partcl") ^

Description

A from scratch implementation of a Tcl 8.5 compiler in parrot.

Status

Passes nearly 25% of tcl's (lightly converted) test suite, using a Test::More like harness. (Doesn't run quite enough of tcl yet to simply use tcltest.tcl)

Last verified with parrot version

0.5.0

Location

languages/tcl

TAP (Test Anything Protocol) ^

Description

A parser for the Test Anything Protocol

Status

See Parrot RT for details. Search for [TAP]

Last verified with parrot version

0.4.6

Location

languages/tap

unlambda ^

Description

unlambda is a pure functional programming language with mostly eager evaluation following the SKI calculus (+ a few extensions)

See also http://www.madore.org/~david/programs/unlambda/

Status

Working. Part of languages smoke testing.

Last verified with parrot version

0.5.0

Location

languages/unlambda

URM ^

Description

URM, Universal register machine.

Status

Functioning, all examples working. Language standard is stable and not expected to change soon.

Last verified with parrot version

0.5.0

Location

languages/urm

WMLScript Translator ^

Description

Translates WMLScript bytecode to PIR.

The language WMLScript is a subset of ECMAScript (ie JavaScript). WMLScript defines also an bytecode interpreter (stack based), a binary format.

Status

Part of languages smoke testing.

See details in languages/WMLScript/doc/status.pod.

Last verified with parrot version

0.5.0

Location

languages/WMLScript

Zcode ^

Description

Infocom's Z-machine. See also http://en.wikipedia.org/wiki/Z-machine.

Status

25 out of 66 Z3 opcodes all or mostly done. A long way from Zork. 3 out of 4 test files working.

Last verified with parrot version

0.4.15

Location

languges/Zcode

Defunct languages ^

This section will eventually be removed, for now serves as a pointer to some older implementations.

Parakeet ^

Parakeet was a Forth that was extremely machine specific to the Parrot VM. Parakeet also had a lot of features not found in standard Forth, like local variables, nested words and classes and (as a result) nested compile-time and run-time lexical word, class and variable scopes.

Removed from the repository (languages/parakeet) prior to 0.4.10, after having been broken since 0.0.11.

BASIC/interpreter ^

BASIC interpreter was written in PASM, and used the global stack. It was last verified working in 0.0.11 before it was removed from languages/BASIC/interpreter prior to 0.5.1.

Cardinal ^

The version at <http://rubyforge.org/projects/cardinal/> has been superseded by the one in the repository. (See above)

Pint ^

An experimental implementation of PHP. Described at http://www.akbkhome.com/blog.php/View/44/Latest_in_Vapourware_PintCompiler__dbdo.html, but no updates since August 2004, and the link to source is a 404.

Ruby ^

Removed from trunk of Parrot subversion repository. Up to revision 12805, located in languages/ruby.

Span ^

Span can be most concisely described as Smalltalk for C++, C#, and Java programmers. It features an object system modeled on the Smalltalk object system and a language syntax designed to be easy to learn for developers of C-like languages. Last verified against parrot 0.1.11. http://homepage.mac.com/matt.kennedy/Span


parrot