|ANN: Voodoo Compiler v0.6.3 Released email@example.com (Robbert Haarman) (2010-11-21)|
|From:||Robbert Haarman <firstname.lastname@example.org>|
|Date:||Sun, 21 Nov 2010 17:59:25 +0100|
|Posted-Date:||21 Nov 2010 23:06:10 EST|
I have just released version 0.6.3 of the Voodoo compiler, hosted at
encoded in the generated assembly code so that all 256 possible byte
values are handled correctly.
In addition to bugfixes, version 0.6.3 contains one new feature:
at-expressions. By prefixing a label, local variable, or integer with an
@, the value is treated as an address, and the word stored at that
address is returned. For example, if foo is a label, @foo returns
the machine word stored at that label's address.
Voodoo is a programming language designed to be a thin abstraction layer
over the native instructions of your CPU, without getting in the way.
This way, Voodoo can be used as a target language for compilers,
providing good performance and support for multiple platforms, without
requiring the compiler writer to implement a full back-end for every
target platform. As such, the primary audience for Voodoo is programming
language implementors. A description of the Voodoo programming language
can be found at http://inglorion.net/documents/designs/voodoo/
The Voodoo compiler is an implementation of the Voodoo programming
language, currently supporting i386, AMD64, and MIPS (little-endian and
big-endian). It provides a compiler program that compiles Voodoo source
code to machine code for multiple target platforms, as well as a Ruby
module that can be used to generate machine code without the
intermediate step of Voodoo source code.
Currently, Voodoo can be used to express simple imperative programs.
I have been working on a project called Antimony, which builds on
top of Voodoo and extends it with nested expressions, as well as
providing a module infrastructure that can be used to further extend
the language, for example with named constants, macros, namespaces,
and hopefully anything else you might think of. All this compiles
down to Voodoo, which means it can be ported to a new platform by
writing a Voodoo code generator for that platform - which can be
done in a weekend.
To make Voodoo more useful as a target language, it is desirable to
implement support for creating dynamic libraries, as well as to better
support features such as automatic memory management and continuations.
These are areas I have been working on, but I have run into some
snags, which I will elaborate on in separate messages.
A number of ideas from the early days of Voodoo are still on the planned
features list. One of these features is support for integers with
specific widths and byte orders, e.g. 16-bit little-endian integers,
32-bit big-endian integers, etc. This will likely be implemented by
providing operations to load and store such values, while computation
is performed on native machine words as it is now.
A code generator for ARM is also planned, but I will probably not
work on that until a number of other features have been added. If
someone else would like to take up the task, they would, of course,
be more than welcome to do so.
As always, your feedback is appreciated. Thanks for reading, and
have a nice day!
There are two ways of constructing a software design. One way is to make
it so simple that there are obviously no deficiencies. And the other way
is to make it so complicated that there are no obvious deficiencies.
-- C.A.R. Hoare
Return to the
Search the comp.compilers archives again.