Hello,<br><br>I have been working on a proposal for Google's Summer of Code with LLVM. I have pasted the proposal below, and I would welcome any feedback before I submit it. I am very excited about the prospect of working on this with LLVM!
<br><br>-Chandler<br><br>----<br># Proposal for Google Summer of Code Project<br><br>## Prototype INC Compiler<br><br>###  Abstract <br><br>This project will develop a prototype front end for a new language, INC (INC's 
<br>Not C: <a href="http://chandlerc.net/INC/">http://chandlerc.net/INC/</a>), on top of the world-class Low-Level Virtual <br>Machine (LLVM: <a href="http://llvm.org/">http://llvm.org/</a>) compiler infrastructure. It will bring a new 
<br>and valuable language to LLVM and help solidify the front end toolkit into  a<br>more robust solution for compiler development. Additionally, it will ground <br>the language's design in a concrete implementation and provide a starting point
<br> for a polished and fully functional standard implementation of the it.<br><br>The INC language is a new object-oriented and low-level system programming <br>language. It has influences from the structural and object-oriented 
<br>programming. The language provides a modern and robust platform for developing <br>performance-oriented and system-level applications and libraries. Overarching <br>goals of the language include near-orthogonality, simplicity, clarity of 
<br>syntax, and avoiding implicit behaviors. My Master's thesis at Wake Forest <br>University includes the development and specification of INC.<br><br>###  Deliverables <br><br>*  A C++ parsing library for INC  <br>*  A compiler combining the parsing library with LLVM for code generation  
<br>*  Accompanying documentation for the parsing library, compiler  <br>   construction, and compiler use  <br>*  A draft specification of the language based directly on my thesis  <br><br>###  The INC Language <br><br>INC is most similar to C++ and derives much of its inspiration from the good, 
<br>the bad, and the ugly aspects of that language. INC has a similar <br>object-oriented structure and procedural syntax. It begins to differentiate <br>itself by offering significantly improved code readability and maintainability 
<br>to the code. The syntax is simpler and more concise than C++, avoiding <br>subtleties that can be easily confused. This also reduces the learning curve of<br> INC, making it less prone to programmer errors.<br><br>The language also expands on the concept of operator overloading. It does away 
<br>with implicit operator precedence allowing operator definitions to define <br>completely new operators. It focuses on a safer multiple inheritance system <br>rather than template-driven instantiation to unify common code. Lastly, it 
<br>re-thinks and simplifies memory management, providing a more integrated view of<br> memory, pointers, and arrays. All of these features help INC address issues <br>with real-time applications, numerical computation, and high-performance 
<br>computing, as well as general purpose and system programming. Examples and more<br> detailed explanations of these features are available on the INC website.<br><br>###  Existing Research and Work <br><br>I have done extensive research on this language, first as an undergraduate at 
<br>Wake Forest University, and currently as a Master's student there. The project <br>grew into my thesis under the direction of Dr. Todd Torgersen, and I will have <br>completed an initial draft including a full specification of the language by 
<br>the end of the academic year. I have been consulting heavily with Reid Spencer,<br> the lead developer of LLVM's front end toolkit, regarding my thesis work since <br>beginning it during the summer of 2006. He has provided insight and guidance in 
<br>ensuring the language will be a good fit for LLVM as a compiling <br>infrastructure. I began helping with LLVM as well in December of 2006 to <br>familiarize myself with the project's structure and organization.<br>
<br>I am also involved with several other open source projects. I am the primary <br>developer of several upcoming open projects for Retina Software,  a<br>cross-platform game technology company I co-founded. I am working with  a
<br>student group in a class to design an open source software construction tool <br>called RCons. I work actively with Gentoo Linux, eINIT, and Retrospectiva <br>providing feedback, testing, filing and fixing bugs. I have helped with 
<br>dvd::rip, Trac, and Bitten in the past in similar roles.<br><br>###  Proposed Project for the Summer of 2007 <br><br>I propose to work with the LLVM project to craft a front end to parse and <br>compile INC, a new language I have been developing for the past 3 years. LLVM's
<br> will provide much of the semantic translation for the language through its <br>Abstract Syntax Tree (AST). It also has mechanisms to translate the AST into an<br> intermediate representation which can be transformed, optimized, and lowered to
<br> target-specific assembler instructions. Together these form a full featured <br>compiler infrastructure that will make the implementation of a front end  a<br>reasonable and effective project for a summer.<br><br>The front end will consist of a general parsing library for the language. This 
<br>library will be well documented and usable in other projects such as a syntax <br>directed editor or code validation tools. A compiling tool will then utilize <br>this parsing system to generate LLVM's AST structures. This tool will be 
<br>documented both in its use and its integration into LLVM's AST and the parsing <br>library. Finally, a draft specification, as implemented in the prototype <br>compiler, will be released as part of the deliverables.
<br><br>This project's scope is limited to a prototype compiler. It is not intended to <br>be feature complete or production ready. It must provide sufficient <br>functionality to compile non-trivial programs and demonstrate the language's 
<br>base feasibility. It must also form a good starting point for further <br>implementation work.<br><br>###  Schedule for Project <br><br>The first six weeks of the project will be focused on framework development, <br>
achieving minimal functionality, and testing. The classic ``Hello World'' <br>program will be the target for this phase, providing a baseline of <br>functionality, and a test for integration with all components. This will also 
<br>form a clear metric for mid-term evaluation of the project.<br><br>Weeks 1 and 2:<br>    Establish a parsing framework in the library, basic   file loading, the<br>    most basic syntax constructs, and XML parse tree output   for testing.   
<br><br>Week 3:<br>    Integrate syntax constructs for ``Hello World'' program, and   verify<br>    parsing through the tree output.   <br><br>Weeks 4, 5, and 6:<br>    Establish compilation tool using parsing library,   and connect syntax
<br>    constructs used in ``Hello World'' to semantic   counterparts in the LLVM<br>    AST, including resolving the system IO semantics   and implementation. <br><br>The second six weeks will focus on component-wise expansion of the framework
<br>to  support the desired prototype features. Each aspect will be tested as it is <br>added to the relevant framework to ensure a working final product. It will <br>culminate in the working prototype compiler and provide a clear benchmark for 
<br>overall success of the project. <br><br>Weeks 7 and 8:<br>    Extend parsing to support prototype subset of syntax,   and verify every<br>    construct using XML parse tree output.   <br><br>Weeks 9, 10, 11, and 12:<br>
    Move through each syntax construct   implementing it semantically<br>    through LLVM, and verify generated code   through a test suite for each<br>    construct.<br>