Original Sourceforge Proposal

This is the original proposal submitted to sourceforge.net

The goal of the Ivory Programming language is to provide a highly flexible, modern programming language for use in low- to mid-level systems programming. Traditionally, languages tend to be designed for either high-level "software engineering" type roles, or low-level "systems" roles. Languages designed for higher-level work, while adequate for an application-programming role, tend to be too abstract to deal with the concerns inherent to the implementation of systems and frameworks. Languages designed for systems work tend to be older, less expressive, and less supportive of proper style and organization. As such, systems programming has acquired a stigma of being inherently rife with "dirty hacks", bad style, and poor organization. Furthermore, though systems programming could benefit greatly from more expressive modern language features, it has been left behind by such developments because of the lack of modern systems languages.

The Ivory language aims to provide a new language suited for systems programming. The language is designed around the concerns inherent to systems programming: minimal runtime, simple translations, and very direct control. Ivory is designed, first and foremost around the principle that it should be possible to build an OS kernel or freestanding program from the language without any external runtime (with the exception of a loader of some kind). This being said, Ivory aims to provide features found in modern languages, and to do away with unnecessary programming structures that have traditionally resulted in more harm than good. Ivory provides features such as exceptions, inner functions, modules and templates, and other powerful features. The language also provides some features found in managed code systems, which can be used if desired through special type flags. Lastly, the language disposes of troublesome features which either cause more harm than good, or have become obselete with the advent of modern compiler technology.

The Ivory language is syntactically similar to C, though with a number of non-trivial changes. The Ivory bootstrap compiler is a compiler frontend being written in SML, and is 100% portable. The native language compiler frontend will be written in Ivory itself, and will also be 100% portable. Both compiler frontends will support a variety of compiler backends (C--, MLRISC, GCC), though the decsion on exacty which is preferable is yet to be made. Finally, once the compiler is fully implemented, there will be a need for a number of "third-party" type tools, such as emacs modes, documenting tools, and others. All software will be released under the BSD license.

At this time, the bootstrap compiler frontend is mostly written, though it is undergoing revision for stylistic and organizational concerns (primarily to make it more suitable to team work). The compiler frontend is sufficiently complete to define the language and its semantics, and a 100% context-free grammar exists. Additionally, there is about 70 pages of K & R-like documentation on the language, though some of it needs updating. At this point, the language design itself needs peer review and polishing. The bootstrap compiler frontend is near operational and is being changed to reflect some changes in the design of the language. The largest task is the design and implementation of the compiler backend interface.

Hopefully, the Ivory language will become a valuable tool for systems programming, allowing systems programmers to use a more powerful, more expressive tool that is still perfectly suited to their task.