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.
This repository includes a user guide and some example Ivory programs. More information and tutorials are available on ivorylang.org.
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 interpreterivory-backend-c
: a backend for compiling Ivory programs to Civory-eval
: native evaluation of Ivory programsivory-examples
: sample Ivory programsivory-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 CVC4ivory-quickcheck
: QuickCheck driver for ivoryivory-serialize
: binary serialization support for Ivory data typesivory-stdlib
: Ivory standard libraryivory-tasty
: unit testing helpers for testing Ivory programs
See ivory-tower-nix for complete guide on using Ivory to build embedded firmwares.
It is possible to use the repository with recent cabal
via cabal.project
. No Hackage releases are planned since this
is a fork of older code base.