MiniPerl6 (mp6) is a subset of Perl 6, which was designed as a light
bootstrapping language. The initial bootstrap used v6.pm and was then
self-hosted in Perl 5.

MiniPerl6 is now self-hosted both in SBCL Lisp and in Perl 5.

A developer can modify the compiler source code (written in MiniPerl6)
and recompile either with the Perl 5 or with the SBCL backend. The
backends can cross-compile to each other.

MiniPerl6 can be downloaded from the Pugs repository:

$ svn checkout http://svn.pugscode.org/pugs pugs
$ cd pugs/v6/v6-MiniPerl6

You can create an executable binary using these commands:

$ sh lisp-util/create-core-image.sh
$ sbcl --load mp6-lisp-create-core-image.lisp
$ chmod +x mp6-lisp
$ ./mp6-lisp -e ' class Main { say "hello, World!" } '
 ... lisp compiler warnings
hello, World!

The bootstrapping procedure for both "perl" and "lisp" backends can be
tested with:

$ sh perl5-util/bootstrap-perl5.sh
$ diff -r lib5 lib5-tmp   #  should show no differences

$ sh lisp-util/bootstrap-lisp.sh
... lisp compiler warnings
$ diff -r liblisp liblisp-tmp   #  should show no differences

Links:

2006.11.04
MiniPerl6 compiler structure
http://pugs.blogs.com/photos/visiolization/mp6bootstrap.html

2006.11.02 - MiniPerl6 design
http://pugs.blogs.com/pugs/2006/11/miniperl6_and_u.html

2007.10.19 - KindaPerl6 in Lisp (KindaPerl6 is a Perl 6 compiler
written in MiniPerl6)
http://pugs.blogs.com/pugs/2007/10/kindaperl6-now-.html

v6.pm (Perl 6 in Perl 5)
http://search.cpan.org/dist/v6/lib/v6.pm

- Flávio S. Glock

Reply via email to