# $Id$ =head1 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 L Languages that work with the unified languages test suite will have their test results listed under the smokes marked 'languages'. =head1 List of languages =head2 APL =over 4 =item Description APL =item Status Provides support for a variety of monadic/dyadic operators, character vectors, floats, int, and 1-D vectors. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location L =back =head2 BASIC/compiler =over 4 =item Description BASIC Compiler =item Status Most of the samples work. =item Last verified with parrot version 0.3.0 =item Location C =back =head2 abc =over 4 =item Description Basic calculator. See L Implemented with the Parrot compiler tools PGE and TGE. =item 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. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 befunge =over 4 =item Description Functioning -93 interpreter (input routines may be funky). =item Status Samples working, README explain how to build/use. (waiting for Parrot objects for a befunge-98 version). Part of languages smoke testing. =item Last verified with parrot version 0.6.1 =item Location C =back =head2 bf =over 4 =item Description bf. See L. =item Status Passes all tests. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 c99 =over 4 =item Description PGE grammar for C99. =item Status Parser is complete. More work on backend(s) is needed. =item Last verified with parrot version 0.5.3 =item Location C =back =head2 Cardinal =over 4 =item Description Implementation of Ruby 1.9 =item Status Parser is pretty complete. Decent support for aggregates and classes. Minimal class hierarchy. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Chitchat =over 4 =item Description Smalltalk compiler =item Status Parser is decent. Everything else is nonexistant. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Scheme to PIR with Chicken =over 4 =item Description Patching Chicken so that PIR is generated. =item Status Last modified in 2005. The website says: The compiler dumps out code, but I have not yet tried running the code yet. There are a few design issues left before the code can start running, and I am discussing these issues on the chicken-users and parrot-internals mailing lists. =item Last verified with parrot version Unknown =item Location L =back =head2 Cola =over 4 =item Description Java like language with some hybrid Perl features like regex operators planned. See also L. =item Status Somewhat functioning, some samples working, lacks IO routines. Not longer actively developed. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Common Lisp =over 4 =item Description Aspires to implement a significant subset of the Common Lisp language. =item Status Working for some simple forms. Due to some broken features, most of the bootstrapping code has been commented out. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 .Net To PIR Translator =over 4 =item Description Translates .Net bytecode to PIR. =item Status Much is left to do, but it's complete enough to tranlate 75% of the .Net class library. =item Last verified with parrot version 0.4.15 =item Location C =back =head2 Eclectus =over 4 =item Description A Scheme to PAST compiler implemented in Scheme. Bootstrapping is planned. =item Status Planned. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 ECMAScript =over 4 =item Description Implementation of ECMAScript 3 (a JavaScript standard) =item Status Parser is complete. Simple arithmetic and function calls work. Much work needed on parse actions and data types (PMCs or classes. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 forth =over 4 =item Description forth =item Status Broken in 0.5.0; relies on a non-existant opcode =item Last verified with parrot version ?? =item Location C =back =head2 HQ9+ =over 4 =item Description A joke language. See L =item Status Works and is mostly complete. Based on PCT. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Jako =over 4 =item 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 L. =item 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. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 JSON =over 4 =item Description Implements JSON with the PCT. JSON is a data description (sub) language. Running the pct-based JSON language, just input some string on the command line, like [1, 2, 3], and the output is dumped to stdout. =item Status unknown =item Last verified with parrot version not verified =item Location C =back =head2 Kea Common Lisp =over 4 =item Description Kea Common Lisp is an implementation of ANSI Common Lisp that is based on CMU Common Lisp (see L). The chief goal of the Kea Common Lisp project is to provide easy interoperability between Lisp and the other dynamic languages hosted on Parrot. =item 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. =item Last verified with parrot version 0.4.15 =item Location L =back =head2 lazy-k =over 4 =item Description lazy-k is a pure functional programming language according to the SKI calculus. See also L =item Status Working, but not complete. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 lolcode =over 4 =item Description Beginnings of an LOLCODE compiler, based on the spec described at L =item Status VISIBLE and BTW "work" =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Lua =over 4 =item Description Lua 5.1 interpreter implemented with PCT and TGE. Lua 5.1 Standard Libraries (a large subset) implemented in PIR. =item Status Part of languages smoke testing. See details in F or at L. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Monkey, an implementation of Lua on Parrot =over 4 =item Author Klaas-Jan Stol =item 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 L =item Status Simple examples are working. The current version is 0.2.2. =item Last verified with parrot version 0.2.x =item Location L The Lua PMCs are in C. =back =head2 Parrot m4 =over 4 =item Description Port of GNU m4 to PIR. =item 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. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 miniperl =over 4 =item Description miniperl =item Status Written by Jeff Goff. Unmaintained. Removed from trunk of Parrot subversion repository. =item Last verified with parrot version Unknown =item Location Up to revision 12805 of the Parrot subversion repository: C =back =head2 NQP =over 4 =item Description Not Quite Perl : lite-Perl6 implemented with PCT =item Status In progress. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Ook =over 4 =item Description Functioning compiler targeting PASM. =item Status Samples working, README explain how to build/use. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 parrot_compiler =over 4 =item Description An example on how the builtin PASM, PIR and PAST compilers can be used from within PASM and PIR programs. =item Status Working. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Rakudo =over 4 =item Description This is a PCT based implementation of Perl 6. Actively developed, =item Status Part of languages smoke testing. =item Last verified with Parrot version 0.6.4 =item Location C L =back =head2 Pheme =over 4 =item 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. =item 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. =item Last verified with Parrot version 0.6.4 =item Location C =back =head2 Pipp =over 4 =item Description Pipp is Parrot's PHP. One idea of Pipp is to have side by side comparison of different parsing and tree transformation strategies. Currently there are three variants: phc, PGE and ANTLR3. =item Status Started. =item Last verified with parrot version 0.6.4 =item Location C =item Wiki L =back =head2 PIR =over 4 =item Description A PIR compiler using Parrot compiler tools. =item Status Fairly complete, about 95%. Note that this implementation is not exactly the same as the language as accepted by IMCC. =item Last verified with parrot version 0.4.15 =item location languages/PIR =back =head2 PJS =over 4 =item 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.). =item Status Started. =item Last verified with parrot version 0.4.14 =item Location L =item Wiki L =back =head2 Punie =over 4 =item Description Perl1 implemented in PIR with the PCT =item Status So far, Punie handles constants (strings, integers, floats), variables, print statements, conditionals, do blocks, comma lists, and some basic math and logic ops. Parser is 90% complete; waiting for more PAST support. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Pynie =over 4 =item Description A Python compiler for Parrot implemented with PCT =item Status Functions and simple expressions are working. =item Last verified with parrot version 0.6.2 =item Location C =back =head2 Python =over 4 =item Description python =item Status Mostly working except for classes/exec/import. For licensing reasons, not in parrot's svn tree. =item Last verified with parrot version 0.0.11 =item Location L =back =head2 regex =over 4 =item Description regex =item Status Working but fairly minimal. Part of languages smoke testing. Almost all tests are succeeding. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Scheme =over 4 =item Description A Scheme to PIR compiler implemented in Perl 5. =item 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. =item Last verified with parrot version 0.6.1 =item Location C =back =head2 Squaak =over 4 =item Description Squaak is not Squeak =item Status An example languages from the PCT tutorial. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Tcl ("partcl") =over 4 =item Description A from scratch implementation of a Tcl 8.5 compiler in parrot. =item 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) =item Last verified with parrot version 0.6.4 =item Location C. =item Issues L =back =head2 unlambda =over 4 =item Description unlambda is a pure functional programming language with mostly eager evaluation following the SKI calculus (+ a few extensions) See also L =item Status Working. Part of languages smoke testing. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 URM =over 4 =item Description URM, Universal register machine. =item Status Functioning, all examples working. Language standard is stable and not expected to change soon. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 WMLScript Translator =over 4 =item 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. =item Status Part of languages smoke testing. See details in F. =item Last verified with parrot version 0.6.4 =item Location C =back =head2 Zcode =over 4 =item Description Infocom's Z-machine. See also L. =item Status 25 out of 66 Z3 opcodes all or mostly done. A long way from Zork. 3 out of 4 test files working. =item Last verified with parrot version 0.4.15 =item Location C =back =head1 Defunct languages This section will eventually be removed, for now serves as a pointer to some older implementations. =head2 Amber Scripting language inspired by Eiffel and Ruby. Original version targeted parrot, current version is self-contained. The PMCs for amber were in the repository until 0.6.1. L =head2 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 (C) prior to 0.4.10, after having been broken since 0.0.11. Parakeet is also the name of a project the extends the Jikes RVM in order to run Parrot bytecode. See L. =head2 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 C prior to 0.5.1. =head2 Cardinal The version at L has been superseded by the one in the repository. (See above) =head2 Perl 5 From r16836 up to r25231 F served as a repository for some Perl 5 - specific functionality that was heavily used in early parrot development. =head2 Pint An experimental implementation of PHP. Described at L, but no updates since August 2004, and the link to source is a 404. =head2 Plumhead Plumhead was the PHP on Parrot implementation. It has been renamed to Pipp. =head2 Ruby Removed from trunk of Parrot subversion repository. Up to revision 12805, located in C. =head2 SFL Simple functional language. A quickly abandoned attempt. See L =head2 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. L =head2 TAP (Test Anything Protocol) A parser for the Test Anything Protocol Was located in C, removed in r26661.