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 April of the same year.[1] Inspired by TRS [2] 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 operation. Based on the properties of conflict-free and sequentially-composable rules[2], 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[2].
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 CUFP[3], and in April 2009, was released as open-source in its new form.[4]
Overview
Atom is a concurrent programming language that features compile-time task scheduling and generates code with deterministic execution time and memory consumption, simplifying worst case execution time analysis for hard realtime applications. 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 reduces the need of RTOSs in embedded applications.
Examples
Limitations
References
- ^ ANN: Atom - Yet another Haskell HDL
- ^ a b c Synthesis of Operation-Centric Hardware Descriptions. James C. Hoe and Arvind. International Conference on Computer Aided Design (ICCAD), November 2000.
- ^ Controlling Hybrid Vehicles with Haskell.
- ^ ANN: atom-0.0.2