Jump to content

Atom (programming language)

From Wikipedia, the free encyclopedia
Atom
ParadigmFunctional,synchronous,reactive
FamilyHaskell
Designed byThomas Hawkins
First appeared2007;17 years ago(2007)
Stable release
1.0.13 / November 13, 2021;2 years ago(2021-11-13)
Typing disciplinestatic,strong
OSCross-platform
LicenseBSD3
Websitehackage.haskell.org/package/atom
Influenced by
Bluespec,Confluence,Haskell

Atomis adomain-specific language(DSL) inHaskell,for designingreal-timeembedded software.

History[edit]

Originally intended as ahigh-levelhardware description language(HDL), Atom was created in early 2007 and released asfree and open-source software(FOSS) of April of that year.[1]Inspired by TRS[2]andBluespec,Atomcompiledcircuit descriptions, that were based on guardedatomic operations,or conditional termrewriting,intoVerilognetlistsfor simulation andlogic synthesis.As a hardware compiler, Atom's main objective is to maximize the number of operations, or rules, that can execute in a givenclock cyclewithout violating the semantics of atomic operation. By employing the properties of conflict-free and sequentially composable rules,[2]Atom reduced maximizing executionconcurrencyto afeedback arc setoptimization of a rule-data dependency graph. This process was similar toJames Hoe's original algorithm.[2]

When Atom's author switched careers in late 2007, fromlogic designtoembedded systemsoftware engineering, Atom was redesigned from an HDL to adomain-specific languagetargeting hardreal-time computingembedded applications. As a result, Atom's compiler's main objective changed from maximizing rule concurrency to balancing processing load and minimizingworst case timing latency.In September 2008, Atom was presented at the Commercial Users of Functional Programming (CUFP) conference.[3]In April 2009, in its new form, it was released as FOSS.[4]

Overview[edit]

Atom is a concurrent programming language intended for embedded applications. Atom featurescompile timetaskschedulingand generates code withdeterministicexecution time and memory use, simplifyingworst case execution timeanalysis for applications that need hard realtime performance. Atom's concurrency model is that of guardedatomic actions,which eliminates the need for, and theproblemsof using,mutex locks.

By removingruntimetask scheduling and mutex locking, two services traditionally served by areal-time operating system(RTOS), Atom can eliminate the need and overhead of an RTOS in embedded applications.

Limits[edit]

To provide guarantees of deterministic execution time and memory consumption, Atom places several restrictions on computing. First, Atom designs are alwaysfinite state:all variables are global and declared at compile time anddynamic memory allocationis disallowed. Second, Atom provides no function or looping constructs. Instead, state variable updates are purecombinational logicfunctions of the current state.

References[edit]

  1. ^ANN: Atom: Yet another Haskell HDL(Report).
  2. ^abcHoe, James C.;Arvind(November 2000).Synthesis of Operation-Centric Hardware Descriptions(PDF).International Conference on Computer Aided Design (ICCAD).
  3. ^"Controlling Hybrid Vehicles with Haskell".Archived fromthe originalon 2008-07-04.Retrieved2009-12-05.
  4. ^ANN: atom-0.0.2

External links[edit]