<!--#set var="title" value="Release Plans" -->
<!--#include virtual="/incl/header.incl" -->
<h1>HLVM Release Plans</h1>
<div class="warning">
WARNING: This document is <em>always</em> a work in progress.
</div>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#releases">Release Index</a>
    <ol>
      <li><a href="#upcoming">Upcoming Releases</a></li>
      <li><a href="#completed">Completed Releases</a></li>
    </ol>
  </li>
  <li><a href="#status">Release Status</a>
    <ol>
      <li><a href="#current">Current Release</a></li>
      <li><a href="#previous">Previous Releases</a></li>
    </ol>
  </li>
  <li><a href="#features">Feature Definitions</a></li>
</ol>

<div class="author">
  <p>Author: <a href="mailto:rspencer@reidspencer.com">Reid Spencer</a>.</p>
</div>

<h2><a name="introduction">Introduction</a></h2>
<div class="text">
  <p>This document contains the Release plans for HLVM. Each release is broken
  down into a set of high-level features that we are intending to implement in
  that release. For each release, we describe the features and provide a
  completion matrix to help you track the progress.</p>
  <p>One of the reasons we publish this information is so that developers can
  see where they might be able to help. If you have an interest in implementing
  one of the features, please contact us.</p>
  <p><b class="warning">NOTE: </b>
  This document is ephemeral. We change it all the time. It gets updated 
  with our current plans for the definition of a release. As such, referring 
  to it often will help you understand where HLVM is going in upcoming 
  releases.  However, <em>nothing</em> within these plans should be relied 
  upon or taken as a committment from the developers. Open Source projects 
  proceed as time and talent permits and this one is no exception. We are 
  simply trying to provide you with information about what is likely to 
  occur in the next few releases.</p>
</div>

<h2><a name="releases"></a>Release Index</h2>
<div class="text">
  <table>
    <tr>
      <th style="width:15%">Release</th>
      <th style="width:60%">Description</th>
      <th style="width:10%">Status</th>
      <th style="width:15%">Links</th>
    </tr>
    <tr>
      <td>0.1</td>
      <td>Hello World, AST Construction, Build System</td>
      <td>100%</td>
      <td><a href="#f0_1">Features</a>&nbsp;<a href="#s0_1">Status</a></td>
    </tr>
    <tr>
      <td>0.2</td>
      <td>Turing Complete, JIT Execution</td>
      <td>55%</td>
      <td><a href="#f0_2">Features</a>&nbsp;<a href="#current">Status</a></td>
    </tr>
    <tr>
      <td>0.3</td>
      <td>Front End Library, Object Model, Interpreted Execution</td>
      <td>1%</td>
      <td><a href="#f0_3">Features</a></td>
    </tr>
    <tr>
      <td>0.4</td>
      <td>Ruby Front End</td>
      <td>0%</td>
      <td><a href="#f0_4">Features</a></td>
    </tr>
    <tr>
      <td>0.5</td>
      <td>Scheme Front End</td>
      <td>0%</td>
      <td><a href="#f0_5">Features</a></td>
    </tr>
    <tr>
      <td>0.6</td>
      <td>Python Front End</td>
      <td>0%</td>
      <td><a href="#f0_6">Features</a></td>
    </tr>
    <tr>
      <td>0.9</td>
      <td>Quality Enhancements, Pre-Beta Touchups</td>
      <td>0%</td>
      <td><a href="#f0_9">Features</a></td>
    </tr>
  </table>
</div>

<h2><a name="status">Release Status</a></h2>
<div class="text">
  <p>This section provides the status for the current and previous releases.</p>
</div>

<h3><a name="current">Current Status (Release 0.2)</a></h3>
<div class="text">
  <p>The table below shows the status of the current release. Click the feature
  name to get a complete description of the feature.</p>
  <table>
    <tr><th>Feature</th><th>Feature</th><th>Feature</th></tr>
    <tr>
      <td><a href="#integer">Integer Arithmetic Operators</a><br/>Done.</td>
      <td><a href="#boolean">Boolean Arithmetic Operators</a><br/>Done.</td>
      <td><a href="#floating">Floating Point Arithmetic Operators</a><br/>
        Done except for code generation to integrate with runtime.</td>
    </tr><tr>
      <td><a href="#controlflow">Control Flow Operators</a><br/>Done.</td>
      <td><a href="#blocknest">Block Nesting</a><br/>Done.</td>
      <td><a href="#aggrconst">Aggregate Constants</a><br/>Done.</td>
    </tr><tr>
    <td><a href="#textops">Text Operators</a><br/>
      String operators defined. Text operators to follow.</td>
      <td><a href="#args">Program Arguments</a><br/>Changed to argc/argv.</td>
      <td><a href="#jit">JIT Compilation</a><br/>Not Started.</td>
    </tr><tr>
      <td><a href="#tcgen">Test Case Generator</a><br/>
        85% A few generation bugs remain.</td>
      <td></td>
      <td></td>
    </tr>
  </table>
</div>

<h3><a name="released">Previous Releases</a></h3>
<div class="text">
  <p>This section lists the final status information for previous releases.</p>
</div>
<h4><a name="s0_1">Release 0.1 (Hello World)</a></h4>
<div class="text">
  <table>
    <tr><th>Feature</th><th>Feature</th><th>Feature</th></tr>
    <tr>
      <td><a href="#buildenv">Build Environment</a>
        <br/>SCons is working well. All targets necessary for building, testing,
        document generation, and installation are completed.
      </td>
      <td><a href="#testharn">Test Harness</a>
        <br/>Dejagnu test harness implemented with 2 types of tests based on
        available tools. This will grow as HLVM grows.
      </td>
      <td><a href="#ASTNodes">AST Nodes</a>
        <br/>61 node classes implemented. The type system is complete. More
        operators are defined than code generation permits.
      </td>
    </tr><tr>
      <td><a href="#XMLReader">XML Reader</a>
        <br/>Correctly reads and validates all 61 AST node classes implemented 
        so far.
      </td>
      <td><a href="#XMLWriter">XML Writer</a>
        <br/>Correctly generates XML for all 61 AST node classes implemente so
        far.</td>
      <td><a href="#xml2xml">hlvm-xml2xml</a>
        <br/>Done. This tool will gain functionality as the XML Reader and XML
        Writer libraries implement more node types to read/write.
      </td>
    </tr><tr>
      <td><a href="#compiler">hlvm-compiler</a>
        <br/>Sufficient code generation capabilities for "Hello, World"
      </td> 
      <td><a href="#vm">hlvm</a>
        <br/>Provides output for "Hello World". Provides options processing.
      </td>
      <td><a href="#ASTsuite">AST Test Suite</a>
        <br/>16 tests written in 2 categories.
      </td>
    </tr><tr>
      <td colspan="3"><a href="#HelloWorld">Hello World</a><br/>Done.</td>
    </tr>
  </table>
</div>

<h2><a name="features">Feature Definitions</a></h2>
<div class="text">
  <p>This section defines the individual features for all releases.</p>
</div>

<h3><a name="f0_1">Release 0.1 Features (Hello World)</a></h3>
<div class="text">
  <ol>
    <li><a name="buildenv"><em>Build Environment</em></a>. 
    A multi-platform build system so software can be compiled properly.</li>
    <li><a name="testharn"><em>Test Harness</em></a>. 
    A deja-gnu based test framework to manage and execute the large number of 
    test cases needed to verify that the HLVM system is working correctly.</li>
    <li><a name="ASTNodes"><em>AST Nodes</em></a>.
    Define and implement several (not all) AST nodes. The most fundamental 
    nodes should be implemented: structuring, functions, blocks, arithmetic 
    operators, constants, etc. The list will be expanded in subsequent releases.
    </li>
    <li><a name="XMLReader"><em>XML Reader</em></a>.
    A library to read in an XML representation of the AST and generate the AST
    C++ Nodes.</li>
    <li><a name="XMLWriter"><em>XML Writer</em></a>.
    A library to write out an XML representation of the Abstract Syntax
    Tree.</li>
    <li><a name="xml2xml"><em>hlvm-xml2xml</em></a>.
    A program to convert XML AST documents back into XML. This tests the correct
    construction of the AST as well as the pass management features.</li>
    <li><a name="ASTsuite"><em>AST Test Suite</em></a>.
    A suite of XML based test files need to be developed for use with the
    hlvm_xml2xml program. All implemented aspects of the AST must be covered by
    one or more test cases.</li>
    <li><a name="compiler"><em>hlvm-compiler</em></a>.
    A program to compile HLVM sources into something executable. This release
    0.1 vesion will read in XML AST files and produce LLVM bytecode. Other 
    options will be added in the future.</li>
    <li><a name="vm"><em>hlvm machine</em></a>.
    This program provides the runtime environment for executing HLVM
    programs. This 0.1 version will read an LLVM bytecode file and JIT execute 
    it. More features later.</li>
    <li><a name="HelloWorld"><em>Hello World</em></a>.
    Sufficient capabilities will be added to the runtime and compiler in order
    to get the "Hello, World" program running.</li>
  </ol>
</div>

<h3><a name="f0_2">Release 0.2 Features (Turing Complete)</a></h3>
<div class="text">
  <ol>
    <li><a name="integer"><em>Integer Operators</em></a>. Extend the AST
    library to support all the integer arithmetic operators 
    such as add, subtract, multiply, divide, modulo, increment, decrement, 
    bitwise operations, etc. Provide LLVM code generation support for these
    operators.</li>
    <li><a name="boolean"><em>Boolean Operators</em></a>. Extend the AST
    library to support all the boolean operators such as and, or, not, and
    the six comparison operators. Provide LLVM code generation support for these
    operators.</li>
    <li><a name="floating"><em>Floating Point Operators</em></a>. Extend the AST
    library to support all the floating point arithmetic operators such as add,
    subtract, multiply, divide, etc. Also include the operators that imply
    library functions or LLVM intrinsics such as sqrt, power, etc.  Provide LLVM
    code generation support for these operators.</li>
    <li><a name="controlflow"><em>Control Flow Operators</em></a>. Extend the
    AST library to support a set of control flow operators (if,while,for,switch)
    and provide LLVM code generation for them.</li>
    <li><a name="#blocknest"><em>Block Nesting</em></a><br/>Implement correct
    code generation for nested blocks, block results, function results, return
    operator, control flow operators with nested blocks, etc.</li>
    <li><a name="#aggrconst"><em>Aggregate Constants</em></a><br/>Complete the
    implementation of literal constants to include the aggregate constants for
    pointers, arrays, vectors, structures and continuations. Also implement 
    literal constants for the missing simple types: enumerator, any, range, 
    octet, character, etc.</li>
    <li><a name="textops"><em>Text Operators</em></a>. Extend the AST
    library to provide a complete set of operators for manipulating strings of
    text and the LLVM code generation for them.</li>
    <li><a name="validate"><em>Validate Pass</em></a>. Finish the implementation
    of the ValidatePass so that AST trees can be fully validated after
    construction.</li>
    <li><a name="args"><em>Program Arguments</em></a>. Extend the Runtime
    library to correctly pass an HLVM program's arguments as an HLVM array of
    text.</li>
    <li><a name="tcgen"><em>Test Case Generator</em></a>. Write a test case
    generator program that randomly generates test cases based on specifications
    of operator complexity, type complexity, and size. Integrate this generator
    with the dejagnu test framework to check a few random cases on each run of
    the "check" target.</li>
    <li><a name="jit"><em>JIT Compilation</em></a>. Extend the Runtime library
    to support just-in-time compilation and execution via LLVM's JIT 
    facilities.</li>
  </ol>
</div>

<h3><a name="f0_3">Release 0.3 Features (Front End)</a></h3>
<div class="text">
  <ol>
    <li><a name="frontend"><em>Front End Library</em></a>.
    Add a new library to make it easy to build front end languages. The library
    will assist with: lexical analysis, parsing, AST node generation, etc.</li> 
    <li><a name="interp"><em>Interpreter</em></a>.
    We will introduce the HLVM interpreter in this release. It will interpret
    AST nodes directly and execute them.</li>
  </ol>
</div>

<h3><a name="f0_4">Release 0.4 Features (Ruby)</a></h3>
<div class="text">
  <ol>
    <li><a name="ruby"><em>Ruby Features</em></a>.
    Add sufficient nodes to the system to support the language features of
    Ruby.</li>
    <li><a name="rubytest"><em>Ruby Tests</em></a>.
    Add test cases that exercise the features added for Ruby. These are XML
    based test cases, not Ruby source</li>
  </ol>
</div>

<h3><a name="f0_5">Release 0.5 Features (Scheme)</a></h3>
<div class="text">
  <ol>
    <li><a name="scheme"><em>Scheme Features</em></a>.
    Add sufficient nodes to the system to support the language features of
    Scheme.</li>
    <li><a name="schemetest"><em>Scheme Tests</em></a>.
    Add test cases that exercise the features added for Scheme. These are XML
    based test cases, not Ruby source</li>
  </ol>
</div>

<h3><a name="f0_6">Release 0.6 Features (Python)</a></h3>
<div class="text">
  <ol>
    <li><a name="python"><em>Python Features</em></a>.
    Add sufficient nodes to the system to support the language features of
    Python.</li>
    <li><a name="pythontest"><em>Python Tests</em></a>.
    Add test cases that exercise the features added for Scheme. These are XML
    based test cases, not Python source</li>
  </ol>
</div>

<h3><a name="f0_9">Release 0.9 Features (Quality)</a></h3>
<div class="text">
  <ol>
    <li><a name="refactor"><em>Refactoring</em></a>.
    Review the entire HLVM source base and re-factor to common components
    with the goal of software reuse and shrinkage of library sizes.</li>
    <li><a name="fulltest"><em>Full Test Suite</em></a>.
    Ensure that HLVM is covered by a full test suite that tests every aspect of
    its functionality.</li>
    <li><a name="quality"><em>Quality</em></a>.
    Improve quality of HLVM at both compile and run times. This feature ensures
    that HLVM will properly handle corner conditions, error situations,
    exceptions, etc.</li>
    <li><a name="optimize"><em>Performance Optimization</em></a>.
    Analyze the compile and run time environments to ensure they are running at
    optimal speeds. Ensure that the generated code can be optimized to run
    efficiently.</li>
    <li><a name="docs"><em>Documentation</em></a>.
    Write sufficient documentation to cover usage of HLVM and programming with
    HLVM</li>
  </ol>
</div>
<!--#include virtual="/incl/footer.incl" -->
