[Haskell-cafe] ANN: Copilot 0.22 -- A stream DSL for writing embedded C.

Lee Pike leepike at gmail.com
Tue Sep 21 12:27:30 EDT 2010

Announcing Copilot 0.22:

Can you write a list in Haskell? Then you can write embedded C code using Copilot. 

Here's a Copilot program that computes the Fibonacci sequence (over Word 64s) and tests for even numbers:

fib :: Streams
fib = do
 "fib" .= [0,1] ++ var "fib" + (drop 1 $ varW64 "fib")
 "t" .= even (var "fib")
   where even :: Spec Word64 -> Spec Bool
         even w = w `mod` const 2 == const 0

Copilot contains an interpreter, a compiler, and uses a model-checker to check the correctness of your program. The compiler generates constant time and constant space C code via Tom Hawkin's Atom[1] (thanks Tom!). Copilot was originally developed to write embedded monitors for more complex systems, but it can be used to develop a variety of embedded code.

HACKAGE: http://hackage.haskell.org/package/copilot

WEBPAGE: http://leepike.github.com/Copilot/ (with more info).

PICS/VIDEO of Copilot's maiden flight: http://picasaweb.google.com/105722675808588603973

A PAPER (PDF): http://www.cs.indiana.edu/~lepike/pub_pages/rv2010.html

The Copilot Team
* Maintainer: Lee Pike (leepike at galois.com), Galois, Inc. 
* Alwyn Goodloe, National Institute of Aerospace
* Robin Morisset, École Normale Supérieure
* Sebastian Niller, Technische Universität Ilmenau

[1] http://hackage.haskell.org/package/atom

More information about the Haskell-Cafe mailing list