Strangely Consistent

Musings about programming, Perl 6, and programming Perl 6

Yapsi 2010.11 Released!

It is with a contagious joviality that I announce on behalf of the Yapsi development team the October... hm... November 2010 release of Yapsi, a Perl 6 compiler written in Perl 6.

You can download it here.

Yapsi is implemented in Perl 6. It thus requires a Perl 6 implementation to build and run. This release of Yapsi has been confirmed to work on all releases of Rakudo Star to date.

Yapsi is an "official and complete" implementation of Perl 6. The fact that it's official means that its author has claimed that it's official for over half a year now, and not once been contradicted. Hence, it must be so. The fact that it's complete means that the code has the same volume (in cubic centimeters) as its packaging.

This month's release brings you mostly bug fixes... BUT it also comes with compatibility for the long-awaited Tardis debugger (sold separately) which allows ordinary mortals to jump backwards in time!

$ export PERL6LIB=path/to/yapsi/lib:path/to/tardis/lib

$ bin/tardis -e 'my $a = 42; my $b; { $b = 5 }'
# Compiling...
# Running...
# Finished. Ticks: 0..3
> go 1
$a = 42
$b = Any()
> go 3
$a = 42
$b = 5
> go 1
$a = 42
$b = Any()
> ^C

For a complete list of changes, see doc/ChangeLog.

Quite a lot of features are within reach of people who are interested in hacking on Yapsi. See the doc/LOLHALP file for a list of 'em.

Yapsi consists of a compiler and a runtime. The compiler generates instruction code which the runtime then interprets. (If this sounds tricky, think of an assembly line where little toy soldiers are constructing tiny toy-soldier-sized assembly lines, and so on all the way down to the scale of quantum foam. Now THAT's tricky!) The format used to represent the instructions in Yapsi are called SIC. Being of questionable merit from the beginning, SIC changes all the time, except for the property that it changes all the time, which has tended to be quite predictable. Even that, however, may change over time. Anyway, don't expect the SIC of next month to look anything like the SIC of this month. It might, but don't expect it.

An overarching goal for making a Perl 6 compiler-and-runtime is to use it as a server for various other projects, which hook in at different steps:

Another overarching goal is to optimize for fun while learning about parsers, compilers, and runtimes. So far that goal is on track, and more.

Have the appropriate amount of fun!