blob: 9e0c78c4a7f6da4c404668e839d1dcf673faaff0 [file] [log] [blame]
<!--#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" -->