<!--#set var="title" value="Status As Of August 1, 2006" -->
<!--#include virtual="/incl/header.incl" -->
<h1>Status As Of August 1, 2006</h1>
<p>HLVM is steadily progressing towards release 0.2. Here is the 
status of HLVM between revisions #359 and #438.</p>
<h2>General Update</h2>
<ul>
  <li>Work is steadily progressing towards the 0.2 release. We are now about
  75% done for the 0.2 release.</li>
  <li>Most of the 0.2 milestones have already been accomplished. What remains 
  is to finish up the real number arithmetic operators, finish the test case 
  generator (and any bugs it turns up), and implement JIT execution via
  LLVM.</li>
  <li>Lines Of Code in HLVM: 31044</li>
  <li>Lines Of Doc  in HLVM: 3282</li>
  <li>Code Productivity: 443 loc/day</li>
  <li>Total Productivity: 490 lines/day</li>
  <li>Progress slowed a bit in July as Reid had to attend to an out-of-town
  consulting engagement for two weeks.</li>
</ul>
<h2>Functionality Changes</h2>
<ul>
  <li>There are now 127 node types in the AST. This is down a bit from the
  previous status update since the intrinsics were removed as separate node
  types. Instead, they are just named instances of other node types.
  </li>
  <li>There is now an intrinsic type name tokenizer. The RNG file is in the
  <tt>hlvm/AST/Intrinsics.rng</tt> file.
  <li>All ConstantValue classes except ConstantExpression are implemented. It 
  is now possible to represent a constant of all the types HLVM currently 
  supports.</li>
  <li>Resolved confusion about Arguments, Parameters, NamedTypes, NamedValues,
  etc.</li>
  <li>Removed the Alias type as it wasn't useful. Each type definition is an
  alias for a type.</li>
  <li>Removed the "atom" element from the XML syntax. It was redundant as we
  now just use "intrinsic" directly.</li>
  <li>Octet types and their literal constants are now implemented.</li>
  <li>Bundles may no longer have empty content.</li>
  <li>Significant improvements were made to the validation of AST trees.</li>
  <li>The LLVMGenerator.cpp file got simplified by splitting out the LLVMEmitter
  class which handles the LLVM instantiation and code generation state.</li>
  <li>Linkables are now Constants because the address of a linkable (variable
  or function) is constant (after linking).</li>
  <li>Type resolution was re-implemented. It now handles recursive types
  properly and is somewhat transparent.</li>
  <li>The node dumper was vastly improved. It now uses new interfaces in the
  PassManager to allow dumping of individual nodes (types, variables, functions,
  operators, etc). You can access it from the debugger via 
  <tt>hlvm::dump(Node*)</tt> function.</li>
  <li>The IndexOp operator was broken into a two operators: GetIndexOp and 
  GetFieldOp. The former for UniformContainerTypes, the latter for 
  DisparateContainerTypes. This simplifies the whole business of indexing the
  container types.</li>
  <li>The ReferenceOp was renamed to GetOp since it is so frequently and the
  word "get" more accurately describes its function.</li>
  <li>Function argument handling is now implemented.</li>
  <li>There is a new ConvertOp for type conversion of first-class values. It is
  akin to the LLVM CastInst. Code generation for non-first-class values has not
  yet been implemented.</li>
  <li>The NInf, PInf, and NaN operators have been removed. There is no need to
  provide operators for these values. Instead the IsPInf, IsNInf, and isNan
  operators can be used to determine if a floating point value is one of the
  special values.</li>
</ul>
<h2>Test Case Changes</h2>
<ul>
  <li>The main focus in the past month has been to get the automated test case
  generator to generate better test cases. It now generates HLVM programs that
  use most of the defined operators and types. Not all of them, however, result
  in compilable tests. This will be remedied soon.</li>
  <li>Numerous bugs have been found and fixed as a result of the test case
  generator</li>
</ul>
<h2>Documentation Changes</h2>
<ul>
  <li>Not much progress here. Although it looks like I will be writing the
  reference manual for the AST nodes soon.</li>
  <li>One significant change: Chandler Carruth validated the "sanity" build
  instructions in the Developer's Guide. He made several suggestions and
  corrections to the documentation to ensure correct building of HLVM and all
  its dependent software.</li>
</ul>
<h2>Other Changes and News</h2>
<ul>
  <li>None.</li>
</ul>
<p><a href="/docs/status/index.html">Back To Status Index</a></p>
<!--#include virtual="/incl/footer.incl" -->
