| <!--#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" --> |