HLVM Release Notes (0.1)

  1. Introduction
  2. What's New
    1. New Features
    2. Significant Changes
    3. Platform Support
  3. Known Problems
  4. Installation Notes

Author: Reid Spencer.

Welcome to the High Level Virtual Machine (HLVM). This document contains the release notes for HLVM. Here we describe what's new, what changed, what platforms are supported, known problems, and installation notes.

This document can be updated as things are discovered after the software is released. If you are reading this from the release files, you should go to the HLVM Releases Site to read the most recent version. If you are reading this from the SVN sources, the release notes apply to the next release of HLVM, not the most recent release.

For information on upcoming releases and future plans, please refer to the HLVM Release Plans page.

For more information on HLVM, please visit the main HLVM web site. If you have questions or comments, you should send them to the HLVM Developers List

This is the first public release of the High Level Virtual Machine. This is a very early pre-release, version 0.1. That is, HLVM is not complete yet and it doesn't do very much. The main goal for this release was to get HLVM to run the "Hello, World" program, which it does. However, completing that goal means that two things are in place: (1) the build system and (2) the basic architecture of the project.

This release is probably only of interest to the HLVM developers and those who are just crazily interested in virtual machine technology. This software is being released early because of our release policy which follows Linus Torvald's philosophy: Release Early, Release Often. Essentially, we define feature sets for upcoming releases in small increments. When those features are completed we release it to the public. This requires the developers to quickly cycle through the entire software development life cycle and ensures that HLVM never gets too far off course or loses quality.

New Features In HLVM 0.1

Since this is the first release of HLVM, everything in HLVM is new! However, here are the main things accomplished in this release:

  1. Build System. A build system based on scons was implemented and currently handles building the software, running the test suite, generating the documentation, participating in code generation, compiling the runtime with LLVM, and installing the final product.
  2. Basic Architecture. We have defined several libraries for HLVM:
    • AST. This library provides the implementation of the Abstract Syntax Tree which is the heart of the HLVM implementation. These classes form a multi-way tree that is used as the representation of the user's program.
    • Base. This library provides common utilities shared across all of HLVM.
    • Reader. This library will contain readers to translate a variety of on-disk format into the in-memory AST nodes. Currently there is only an implemented reader for XML.
    • Writer. This library will contain writers to translate from the in-memory AST nodes to a variety of on-disk formats. Currently there is only an implemented writer for XML. This library complements the Reader library and the two libraries should be synchronized in the formats they read and write.
    • Pass. This library provides a mechanism for making a pass over the AST nodes and various pass implementations. Currently, only a rudimentary verification pass has been implemented. In the future this library will contain optimization passes and other AST->AST passes.
    • CodeGen. This library provides code generation passes. This is a separate library because none of thse passes produce AST nodes. Instead, they translate the AST into some other form, from which translation back to AST is not possible. Currently a rudimentary code generator for LLVM is provided. In the future there may be other code generators for generating XHTML documentation, C code, etc.
    • Runtime. This library provides the HLVM runtime. This is the component of HLVM that is linked with the user's program to provide services to it. Currently, the HLVM runtime provides a few functions for handling output and command line arguments so that the "Hello, World" program could be implmented.
  3. Tools. HLVM has a set of executable tools built from the libraries that HLVM provides. Currently, the tool set includes:
    • hlvm. This tool provides an implementation of the HLVM Runtime as a stand alone executable. Currently it doesn't do much but tell you its version and provide help with options
    • hlvm-xml2xml. This tool converts HLVM XML input into the AST tree nodes and then back out to HLVM XML again. This is used mainly as a test driver to ensure construction and pass management is working in HLVM without invoking other parts of the sytsem.
    • hlvm-compiler. This tool converts HLVM XML into LLVM bytecode or LLVM assembly code. In the future it may be able to compile HLVM into any of the other forms that HLVM supports as well as create stand-alone programs.
  4. Test Suite. HLVM provides a test suite that uses Deja-Gnu to automate the tests. Currently the test suite provides two kinds of tests. The xml2xml test suite uses the hlvm-xml2xml tool to validate that HLVM can generate its input to its output. These are fundamental tests that ensure the stability of the AST.
  5. The return0 test suite uses the hlvm-compiler to generate an executable program from XML source, execute it, and assert that the program returns 0. Right now there's only a few programs in this category but there will be many more in the future.

Significant Changes in HLVM 0.1

There have been no changes since the last release.

Platform Support

HLVM is known to work on the following platforms:

  1. x86 machines running Linux (FC3, FC5, SuSE)
  2. PPC machines running Mac OS/X (10.4 Tiger)

HLVM probably runs on many other operating systems and hardware but the developers have not yet tried them. If you are successful in bulding HLVM on another platform, please let us know!

The main known problem with this release is that there isn't enough of HLVM implemented to be useful in any significant way.

Please see the Getting Started Guide that accompanies these relese notes.