The highlight of this release is that all known 64bit ABI violations have been fixed. In addition, string literal support in the SHOW statement has been implemented. Also, the code generation does not emit library functions that were never called. Finally, a nasty bug in the 64bit itoa function where stack space for locals was not reserved so the stack was getting corrupted and mysterious crashes would occur but only if you used an integer that was large (which wrote on more of the stack).
I am happy to announce that mutant version 2.18 has been released. This contains an all-new symbol table module that can properly handle nested scopes. It also contains a huge number of fixes to the code generation for both 16bit DOS and 64bit linux. The parser has been updated to ensure that the last line of a function body is a RETURN statement. I have tried to verify the 16bit DOS code uses only 808 instructions. I have tried to ensure the 64bit linux code obeys the AMD64 ABI rules for large code model programs, with the one exception that I still don't have the stack alignment guarantees implemented.
I have released a snapshot of the current working code for mutant. It's still quite rough and buggy, but both the DOS and 64bit code generation is much improved. I have uploaded the mutant-2.18a21.tar.xz snapshot for people who would like to see the new code without having to use mercurial.
Just when you thought you had it all, BASICK is released. This is an unstructured BASIC interpreter for the 1980's style BASIC that I used when I first learned to program. The Python-3.3.x, PHP-5.4.x, and Ruby-1.9.x versions work for the demonstration programs. The lua version is not yet finished. The only statements missing to be 1.0 are FOR/NEXT/STEP and READ/DATA. This BASIC has no support for strings or floats at all, but does support one-dimensional zero-based integer indexed arrays. Have fun!
Now it is tested on non-linux platforms, and a bad bug in the scanner's newline handling is fixed. Also, for non-linux people, a .ZIP file is now available.
Mutant is the replacement for the old Burapha Compiler Kit. Instead of using an interpreted intermediate language, mutant generates NASM 2.X output that uses system calls directly without the need for any other libraries. Mutant -2.13 can emit code for 16bit DOS, x86 Linux, or x86_64 Linux. This GPLv2 software is used to teach my students about compilers.
The phase2 code has been added to cvs; this is
a python compiler for a pico logo-like language.
This includes an interpreter to directly run
the asm-style output and display graphics with
PyGTK. This version was developed during this
semester as an example for the students, and
as it stands is still quite simple and easy enough
to read for people wishing to learn about compilers and interpreters.
Ok, the first cut at the GUI part of the interpreter written in Java is in cvs. Getting the layout managers to do anything intuitive is impossible. If you have a better way [using just java; no Visual Age or Jbuilder] to get the layout to behave, I'm open to suggestions.
Version 0.65 has been released. This version has a lot of structural cleanup in the interpreter. There should be no user visible changes.