Ivory is an embedded domain specific language (EDSL) which aims to provide a systems-level programming language that removes some common pitfalls of programming in C, without sacrificing expressivity.
The following paper describes the Ivory language:
- Trevor Elliott, Lee Pike, Simon Winwood, Pat Hickey, James Bielman, Jamey Sharp, Eric Seidel, John Launchbury. Guilt-free Ivory. Haskell Symposium, 2015.
Please cite this paper for when citing the language.
ivory: the Ivory language implementation and interpreter
ivory-backend-c: a backend for compiling Ivory programs to C
ivory-examples: sample Ivory programs
ivory-opts: an optimization framework and some optimization implementations, for the Ivory AST.
ivory-bitdata: a macro language library for specifying bit-precise Ivory operations.
ivory-hw: a macro language library for writing hardware drivers in Ivory.
ivory-model-check: a backend for verifying Ivory programs with CVC4
Ivory is written in Haskell and uses several recent GHC extensions. It is known to work with with GHC 7.8.* and above.
We currently recommend using the Stack build tool for Ivory language packages and any programs which use them.
Copyright and license
Copyright 2013-2015 Galois, Inc.
Licensed under the BSD 3-Clause License; you may not use this work except in compliance with the License. A copy of the License is included in the LICENSE file.
This project adheres to the [Contributor Covenant code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to firstname.lastname@example.org.
*Note that all licence references and agreements mentioned in the ivory README section above are relevant to that project's source code only.