Status As Of June 30, 2006

HLVM has made significant progress in the last month. Here is the status of HLVM as of Subversion revision #358.

General Update

  • The first release (0.1) was made on June 13th, 2006. This release provided the "Hello World" functionality. For details, please see the Release Notes.
  • Since the release we've been working on making HLVM "Turing Complete" (using the usual loose definition).
  • We are now about half way through the 0.2 functionality set.

Functionality Changes

  • There are now 138 node types in the AST. Most of these are the new arithmetic and Boolean operators.
  • A full set of arithmetic operators for both integer and floating point arithmetic was implemented.
  • Constant values for simple types are implemented, but not yet for container types.
  • A full set of Boolean operators for comparisons and other logic was implemented.
  • There are now four types of loop operators, a select (if) operator, automatic variables and function call.
  • Nested blocks and loops are correctly handled including the use of the break and continue operators.
  • The "void" type was removed in favor of just using a null type pointer as necessary. This gets around issues with "type has no size" problems. Without void, all types have a size.
  • The HLVM run-time is now only dependent on APR. Previously it depended on LLVM as well but this turned out to be problematic for linking.
  • A new hlvm-config program was written as the beginnings for a standard *-config program. Currently it can dump out the Node IDs (useful for debugging) and a few of the configured variables.
  • The validation pass is now much more discerning with significant improvements in the checking it does.

Test Case Changes

  • There is a new test suite named "invalid" which tests to make sure that HLVM tools will generate appropriate error messages on invalid input and not let invalid trees be used. There are 21 test cases in this new suite.
  • The number of xml2xml test cases increased to 29 in order to test the construction of the new AST nodes for arithmetic and looping.
  • The number of "return0" test cases increased to 16 to test code generation for more situations.
  • There is now a new "suites" option available to scons and "SUITES" for the Makefile. This controls which test suites you want to run. For example, the command make check SUITES=return0 will run just the return0 test suite. Similarly for the scons invocation except with "suites".

Documentation Changes

  • Saem is working on an XSLT program for translating Relax/NG grammars with annotations into XHTML. This will be how we document that AST in the future.
  • Much of the documentation that was on the public web site has now been incorporated into the docs directory of the HLVM source repository. This makes it auto-update, keeps it included in releases, and removes the need to use frames in the main web site.
  • The build system was significantly enhanced and documented. The Developers Guide now contains a complete list of commands used to build a "sane" development environment including all the dependent software packages.
  • Doxygen generation was implemented using SCons.
  • A new FAQ was started to describe the differences between HLVM and other virtual machines. It sill has some significant holes in it. Suggests would be welcome.

Platform Support Changes

  • Several new users got HLVM building on Mac OS/X.
  • Reid got HLVM to build on Fedora Core 5.

Other Changes and News

  • David started working on a Lisp -> AST program to explore ideas about how to create the front end lexical and grammatical analysis portions of HLVM.
  • The source directory structure was flattened out so that there is only one level of directories under the hlvm source directory.
  • HLVM is now built with the GCC -pedantic flag ensuring the code can be compiled on many compilers.
  • The build system now places all object files in the build directory. This keeps the source directory nice and clean and makes it possible to get rid of all generated output by removing the build directory.

Back To Status Index