Jump to content

Atom (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 24.191.5.10 (talk) at 14:48, 30 April 2015 (History). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Atom
Paradigmfunctional, synchronous, reactive
Designed byThomas Hawkins
First appeared2007
Typing disciplinestatic, strong, inferred
OSportable
LicenseBSD3
Websitehttp://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.