HLVM Overview

The High Level Virtual Machine (HLVM) is currently under development. To monitor the progress of HLVM as it develops, you can utilize these resources:

Written Status UpdatesSource Code Progress
  • Status Updates: approximately monthly updates on the statuf of HLVM.
  • Releases: release notes, release media, SVN access
  • Plans: current release plans, status of current release, past releases
  • Latest Sources: A browsable source tree that is synchronized with the source repository.
  • Commits Archive: an email archive of the Subversion commits history
  • IRC Channel: come and talk to the developers on-line

HLVM is a language designer's toolkit. It's goal is to take care of the many compilation, optimization and runtime details needed in a language system. Here is how we envision HLVM when it is completed (written in present tense for simplicity):

  1. Based on LLVM (Low Level Virtual Machine). LLVM is HLVM's sister project. HLVM gains tremendous capability from LLVM in the areas of code generation, optimization, bytecode facilties, JIT compilation, target machine support, etc.
  2. Dynamic Compilation. HLVM supports "dynamic" languages, i.e. those that that have run-time compilation or interpretation as a language feature. For example, languages that support an eval function that compiles or interprets a source language statement (or entire program) at run-time.
  3. Language Designer's Toolkit. HLVM provides a complete language designer's toolkit for creating new programming languages. A plug-in model is used to allow a language front end to be executed at run-time. A language plug-in handles the process of translating from the language's source code into the HLVM Abstract Syntax Tree (AST) representation. After that, HLVM handles all aspects of code generation, bytecode storage, JIT execution or interpretation, and native compilation.
  4. Common Runtime. HLVM supports a common runtime for a variety of programming languages including Ruby, Python, Perl, Jython, Haskell, Prolog, and others.
  5. Language Interoperability Framework. Because HLVM uses the same facilities to implement the execution of different source languages, it is also a language interoperability framework. All language plug-ins translate source code into the same AST. This means they can interoperate. It doesn't mean they will interoperate. Language plug-ins that make use of the HLVM runtime library for common constructs (e.g. "string") will enhance the language's ability to interoperate with other languages.
More InfoHLVM On The Net