Atom (programming language)
Paradigm | functional, synchronous, reactive |
---|---|
Designed by | Thomas Hawkins |
First appeared | 2007 |
Typing discipline | static, strong, inferred |
OS | portable |
License | BSD3 |
Website | http://hackage.haskell.org/package/atom/ |
Influenced by | |
Bluespec, Confluence, Haskell |
Atom is a domain-specific language (DSL) in Haskell, for designing real-time embedded software.
Overview
Atom is a concurrent programming language intended for embedded applications. Atom features compile-time task scheduling and generates code with deterministic execution time and memory consumption, simplifying worst case execution time analysis for applications that require hard realtime performance. Atom's concurrency model is that of guarded atomic actions, which eliminates the need for, and the problems of using, mutex locks.
By removing run-time task scheduling and mutex locking—two services traditionally served by an RTOS—Atom can eliminate the need and overhead of an RTOS in embedded applications.
Limitations
To provide guarantees of deterministic execution time and memory consumption, Atom places several restrictions on computation. First, Atom designs are always finite state: all variables are global and declared at compile time and dynamic memory allocation is not allowed. Second, Atom provides no function or looping constructs. Instead state variable updates are pure combinational functions of the current state.