The Ivory EDSL
Haskell TeX Isabelle C Makefile Objective-C Shell
Permalink
Failed to load latest commit information.
ivory-artifact hackage: update versions. Dec 16, 2016
ivory-backend-acl2 @ fa6667b hackage: update versions. Dec 16, 2016
ivory-backend-c Cabal: relax template haskell constraints Dec 19, 2016
ivory-eval hackage: update versions. Dec 16, 2016
ivory-examples Cabal: relax template haskell constraints Dec 19, 2016
ivory-formal-model Added pdf for isabelle theories Jul 22, 2014
ivory-hw hackage: update versions. Dec 16, 2016
ivory-model-check add ConstPtr Nov 10, 2016
ivory-opts hackage: update versions. Dec 16, 2016
ivory-paper Final paper edits (that I forgot to commit) Jan 25, 2016
ivory-quickcheck hackage: update versions. Dec 16, 2016
ivory-serialize hackage: update versions. Dec 16, 2016
ivory-stdlib hackage: update versions. Dec 16, 2016
ivory Cabal: relax template haskell constraints Dec 19, 2016
.gitignore gitignore Mar 17, 2016
.gitmodules submodules: https rather than ssh (for public access). Nov 4, 2014
.travis.yml update to 8.0.2 on travis Mar 1, 2017
CODE_OF_CONDUCT.md add code of conduct Dec 14, 2015
LICENSE update README and add LICENSE file May 2, 2013
Makefile fix gcc warnings; fix #72 Nov 24, 2016
README.md readme: and now for correct markdown. Oct 28, 2016
hackage.sh hackage script. Dec 16, 2016
stack-7.10.yaml update Stackage snapshot Aug 1, 2016
stack-7.8.yaml fix 7.8 build May 9, 2016
stack-8.0.yaml update to lts-8.3 for 8.0.2 Mar 1, 2017
stack.mk build: clean up makefile cruft. Oct 29, 2016
stack.yaml update stackage snapshots Jun 17, 2016

README.md

Build Status

Ivory

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 examples 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.

Contents

  • 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

Installing

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.

Contributing

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unaccpetable behavior to smaccm@galois.com.