Voodoo Compiler Changelog

New in version 1.0.2

November 15th, 2012
  • Compatibility with Ruby 1.9, in addition to Ruby 1.8; make test now reports the number of passed and failed tests.
  • The many-vars test has been split into many-args, many-args-tail, and many-locals.

New in version 1.0.1 (January 31st, 2012)

  • This version adds a number of improvements to the parser, which now reports source code locations for all errors and can report multiple errors inside blocks, functions, and conditionals. Several tests for the parser have been added.
  • This release fixes a parse error on statements followed by comments and a problem which caused the parser to fail on empty input.

New in version 1.0.0 (January 16th, 2012)

  • 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.

New in version 0.7.0 (January 17th, 2011)

  • 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", 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.

New in version 0.6.3 (November 22nd, 2010)

  • This release introduces 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.
  • Additionally, 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.

New in version 0.6.2 (May 20th, 2010)

  • This release fixes bugs in the implementations of set-word for i386 and AMD64 and adds tests for the cases that previously did not work correctly.