Atom (programming language)
![]() | The topic of this article may not meet Wikipedia's notability guidelines for products and services. (December 2009) |
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 DSL in Haskell for designing hard realtime embedded software.
History
Originally intended as a high level hardware description language, Atom was created in early 2007 and released in open-source of May of the same year. Inspired by TRS [1] and Bluespec, Atom compiled circuit descriptions based on guarded atomic operations, or conditional term rewriting, into Verilog netlists for simulation and logic synthesis. As a hardware compiler, Atom's primary objective was to maximize the number of operations, or rules, that could execute in a given clock cycle without violating the semantics of atomic operations. Based on the properties of conflict-free and sequentially-composable rules[1], Atom's author reduced maximizing execution concurrency to a feedback arc set optimization of a rule-data dependency graph -- a process similar, if not equivalent to James Hoe's original algorithm[1].
When Atom's author switched careers in late 2007 from logic design to embedded software engineering, Atom was redesign from an HDL to a domain specific language targeting hard realtime embedded applications. As a result, Atom's compiler's primary objective changed from maximizing rule concurrency to balancing processing load and minimizing worse case timing latency. In September 2008, Atom was presented at [2], and in April 2009, Atom was released in open-source in its new form.[3]