# $Id: LANGUAGES_STATUS.pod 23099 2007-11-26 21:18:44Z bernhard $
=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<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'.
=head1 List of languages
=head2 Amber for parrot
=over 4
=item Description
Scripting language inspired by Eiffel and Ruby.
=item 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
=item Last verified with parrot version
0.4.2
=item Location
http://xamber.org/.
The Amber PMCs are in C<languages/amber>.
=back
=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.5.0
=item Location
L<languages/APL>
=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<languages/BASIC/compiler>
=back
=head2 abc
=over 4
=item Description
Basic calculator. See http://en.wikipedia.org/wiki/Bc_%28Unix%29
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.5.0
=item Location
C<languages/abc>
=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.5.0
=item Location
C<languages/befunge>
=back
=head2 bf
=over 4
=item Description
bf. See http://en.wikipedia.org/wiki/Brainfuck.
=item Status
Passes all tests. Part of languages smoke testing.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/bf>
=back
=head2 c99
=over 4
=item Description
PGE grammar for C99.
=item Status
Parser is pretty complete.
Needs optok help.
=item Last verified with parrot version
0.4.6
=item Location
C<languages/c99>
=back
=head2 Cardinal
=over 4
=item Description
Implementation of Ruby CVS Head 1.9
=item Status
Parser is pretty complete.
Generates PIR for basic Ruby programs
=item Last verified with parrot version
0.4.9
=item Location
C<languages/cardinal>
=back
=head2 Cola
=over 4
=item Description
Java like language with some hybrid Perl features like regex operators planned.
See also L<http://en.wikipedia.org/wiki/Cola_programming_language>.
=item Status
Functioning, all samples working, lacks IO routines
=item Last verified with parrot version
0.0.11
=item Location
C<languages/cola>
=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.5.0
=item Location
C<languages/lisp>
=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<languages/dotnet>
=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.5.0
=item Location
C<languages/eclectus>
=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<languages/forth>
=back
=head2 HQ9plus
=over 4
=item Description
A joke language. See L<http://www.cliff.biffle.org/esoterica/hq9plus.html>
=item Status
Works and is mostly complete.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/HQ9plus>
=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<http://en.wikipedia.org/wiki/Jako_(programming)>.
=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.5.0
=item Location
C<languages/jako>
=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 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.
=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
http://rgrjr.dyndns.org/lisp/kea-cl/
=back
=head2 lazy-k
=over 4
=item 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
=item Status
Working, but not complete. Part of languages smoke testing.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/lazy-k>
=back
=head2 Lua
=over 4
=item Description
Lua 5.1 interpreter implemented with PGE/TGE/Partridge and friends.
Lua 5.1 Standard Libraries (a large subset) implemented in PIR.
=item Status
Part of languages smoke testing.
See details in F<languages/lua/doc/status.pod> or at
L<http://www.parrotcode.org/talks/LuaOnParrot.pdf>.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/lua>
=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
http://kjs.home.fmf.nl/lua2pir/
=item Status
Simple examples are working. The current version is 0.2.2.
=item Last verified with parrot version
0.2.x
=item Location
http://kjs.home.fmf.nl/parrot/
The Lua PMCs are in C<languages/lua>.
=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.5.0
=item Location
C<languages/m4>
=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<languages/miniperl>
=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.5.0
=item Location
C<languages/nqp>
=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.5.0
=item Location
C<languages/ook>
=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.5.0
=item Location
C<languages/parrot_compiler>
=back
=head2 Perl 5
=over 4
=item 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.
=back
=head2 Perl 6 parser/compiler
=over 4
=item 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!
=item Status
Part of languages smoke testing.
=item Last verified with Parrot version
0.5.0
=item Location
C<languages/perl6>
=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.5.0
=item Location
C<languages/pheme>
=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<http://users.fulladsl.be/spb1622/pjs/>
=item Wiki
L<http://www.perlfoundation.org/parrot/index.cgi?javascript>
=back
=head2 Plumhead
=over 4
=item 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.
=item Status
Started.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/plumhead>
=item Wiki
L<http://www.perlfoundation.org/parrot/index.cgi?plumhead>
=back
=head2 Pugs
=over 4
=item Description
Perl 6 compiler written in Perl 6 and Haskell with multiple backends
=item Status
Basic IO and control flow elements; mutable variables; assignment.
=item Last verified with parrot version
0.4.4
=item Location
http://pugscode.org/
=back
=head2 Punie
=over 4
=item Description
Perl1 implemented in PIR with the help of
TGE, Tree Grammar Engine, and PGE, Parrot Grammar Engine.
=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.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/punie>
=back
=head2 Pynie
=over 4
=item Description
A Python compiler for Parrot, based on PGE and TGE.
=item Status
Functions and simple expressions are working.
=item Last verified with parrot version
0.4.9
=item Location
C<languages/pynie>
=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
http://pirate.tangentcode.com/
=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.5.0
=item Location
C<languages/regex>
=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.5.0
=item Location
C<languages/scheme>
=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.5.0
=item Location
C<languages/tcl>
=back
=head2 TAP (Test Anything Protocol)
=over 4
=item Description
A parser for the Test Anything Protocol
=item Status
See Parrot RT for details. Search for [TAP]
=item Last verified with parrot version
0.4.6
=item Location
C<languages/tap>
=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 http://www.madore.org/~david/programs/unlambda/
=item Status
Working. Part of languages smoke testing.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/unlambda>
=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.5.0
=item Location
C<languages/urm>
=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<languages/WMLScript/doc/status.pod>.
=item Last verified with parrot version
0.5.0
=item Location
C<languages/WMLScript>
=back
=head2 Zcode
=over 4
=item Description
Infocom's Z-machine. See also http://en.wikipedia.org/wiki/Z-machine.
=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<languges/Zcode>
=back
=head1 Defunct languages
This section will eventually be removed, for now serves as a pointer to
some older implementations.
=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<languages/parakeet>)
prior to 0.4.10, after having been broken since 0.0.11.
=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<languages/BASIC/interpreter> prior to 0.5.1.
=head2 Cardinal
The version at <http://rubyforge.org/projects/cardinal/> has been superseded
by the one in the repository. (See above)
=head2 Pint
An experimental implementation of PHP. Described at
L<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.
=head2 Ruby
Removed from trunk of Parrot subversion repository. Up to revision 12805,
located in C<languages/ruby>.
=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<http://homepage.mac.com/matt.kennedy/Span>
syntax highlighted by Code2HTML, v. 0.9.1