Ivory Language Homepage

Overview

The Ivory Programming Language is a modern programming language designed for low- to mid-level systems programming. The aim of the language is to provide systems programmers with a more modern, more advanced tool. The Ivory language aims to provide the direct control and simplicity necessary for systems programming, while also providing a higher level of expressive power and more powerful language features.

Current Status

The language's designer, Eric McCorkle (who also wrote this page) has been working on this project in earnest for about 8 months now. Work took place before that time, though it was mostly brainstorming. The bootstrap compiler is being written in Standard ML-New Jersey. The bootstrap compiler's frontend is nearly finished at this point, but is in the process of being reviewed and refactored by Eric to bring it completely up to speed with the current state of the language.

The language design itself is almost nearly complete, and is ready for review and discussion. It is by no means set in stone at this point, but a great deal of thought has been given to each semantic rule, so any changes will need to be duly justified. At this time, the language incorporates almost all of the features Eric originally desired. A few, however, have yet to be addressed (most notably inline assembly).

The bootstrap compiler so far has been tested to a degree, but the changes in the formal specification of the language have made it difficult to write a comprehensive test suite. This will have to be done once the compiler's frontend reaches stability.

Additionally, the bootstrap compiler needs a backend. Given the number of good-quality compiler backends in existence today, it would be silly to try to write one ourselves. However, there should be some discussion as to which one is preferable.

In the future, once the bootstrap compiler is complete, the native compiler will need to be written.

People

  • Eric McCorkle, language designer
  • No one else yet

How to Get Involved

This project has just gone public. To get involved, email the designer, Eric McCorkle directly using sourceforge.

Anyone interested in working on the bootstrap compiler must know SML, end of story. Additionally, it is strongly recommended that they have read Andrew Appel's Modern Compiler Implementation in ML, and preferably have taken a compiler course based on that book.

Anyone interested in the general design is welcome to submit input, provided their input is beneficial. There are certain aspects of this language that will not change, and repeated demands for features that would compromise the core objective, such as intrinsic dynamic allocation and garbage collection, threading, real-time types, and other features only detract from beneficial discourse. Languages in general tend to attract two attitudes: one that sees them as the One True Way (tm), and another which sees them as a tool, suited and designed for a particular task, and unfit for certain other tasks. We are interested in the second type.

Finally, anyone interested in documenting or designing the web pages is more than welcome to sumbit their work.

Documents