Forum
2008-01-27
I have just released version 1.0.1 of the Voodoo Compiler.
The Voodoo Compiler is an implementation of the Voodoo programming language, designed to simplify the generation of efficient machine code for multiple target platforms. Currently, i386, AMD64, ARM, and MIPS (big-endian and little-endian) are supported.
Version 1.0.1 is a maintenance release, and contains the following improvements:
* The parser now reports source code locations for all errors.
* The parser can now report multiple errors inside blocks, functions, and conditionals.
* Several tests for the parser have been added.
The following bugs have been fixed:
* parse error on statements followed by comments (3479478)
* parser would fail on empty input
- View this thread (0 comments)
I have just released version 1.0.0 of the Voodoo Compiler.
The Voodoo Compiler is an implementation of the Voodoo programming language, designed to simplify the generation of efficient machine code for multiple target platforms. Currently, i386, AMD64, ARM, and MIPS (big-endian and little-endian) are supported.
Highlights of the new release are:
* ARM code generator: The compiler can now generate assembly and ELF object code for the ARM architecture.
* Improved error reporting: more errors are detected, and errors are reported in easier to understand error messages.
* Validator module: this new module can be used to validate generated Voodoo code. It is used by the parser to validate parsed code.
* Feature interface: features of the implementation can be queried both programmatically and from the command line.
- View this thread (0 comments)
I have just released version 0.7.0 of the Voodoo compiler. This release adds the following new features:
Blocks: these provide scopes in which local variables may be defined with let. Such variables exist from the end of the let statement until the end of the block. Blocks can occur in any place where an action can occur. They are started with block and ended with end block.
Chained conditionals: it is now possible to write else if<test>, instead of requiring a nested if in the else clause.
Shift and rotate: shift actions (asr, bsr, shl, shr) and rotate actions (rol, ror) have been added.
Return without value: return may now be used without specifying an expression to evaluate. This causes an undefined value to be returned from the function.
- View this thread (0 comments)
I have just released version 0.6.3 of the Voodoo compiler. Although this is primarily a bug-fix release, I also snuck in a 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.
Some bugs were uncovered in the way strings were encoded in generated assembly code. These bugs have been fixed, and version 0.6.3 now handles strings containing all 256 possible byte values correctly.
- View this thread (0 comments)
For a number of years now, I have been walking around with the idea of devising a file format that is flexible enough that it can be used for a variety of purposes, and efficient enough that it doesn't take up a lot of space and can be used for storing and processing of large amounts of data.
I have finally sat down and written up a draft of this idea. It's called FFFF (like Fast FFF, my generic textual format). There is much work to be done yet, but this should be enough for a first draft.
The next step is to write some software to actually use the format, to see how it performs in practice. Using the experience gathered with this experimental software, the format can then be refined and improved.
There are some ideas I have that aren't in the draft yet. In no particular order:
- Adding IEEE floating points as a data type
- An import directive to import a bunch of definitions - like the language directive, but leaving the active encoding and definitions in place
- A minimal subset, just enough to indicate the language being used without all the baggage you don't need if you are going to use a different language anyway
- Compression. Chunks of data can be compressed using a specified compression algorithm. To keep implementation bloat down, I will standardize on a single compression algorithm; probably one of gzip, BWT (bzip2), or LZMA
- View this thread (0 comments)