What is Extempore?

Extempore is a programming language and runtime environment designed to support 'cyberphysical programming'. Cyberphysical programming supports the notion of a human programmer operating as an active agent in a real-time distributed network of environmentally aware systems. The programmer interacts with the distributed real-time system procedurally by modifying code on-the-fly.

Extempore provides a completely hotswappable runtime environment with a strong temporal semantics, a flexible concurrency architecture, builtin support for distributed heterogenous operation (both OS and Architecture), and aims to provide flexible compiler-as-a-service functionality. Extempore makes extensive use of the LLVM project to provide back-end code generation.

You can follow this link to watch a TEDx performance using Extempore, or this link to watch a more detailed presentation of the language - recorded at the YOW! conference 2013, or this link to watch an excerpt from an Extempore club performance. See what other live-coders are doing at the TOPLAP website.


Central to the Extempore programming environment is a new systems programming language designed to support the programming of real-time systems in real-time. xtlang is designed to mix the high-level expressiveness of Lisp with the low-level expressiveness of C.

xtlang uses an s-expression syntax common to Lisp, and more particularly to Scheme. xtlang also borrows many Lisp like semantics including first class closures, tail recursion and macros. However, xtlang also borrows heavily from systems languages like 'C' including static typing, low-level type expressivity, direct pointer manipulation and explicit memory managment (i.e. no GC). xtlang then extends these 'C' semantics with type-inferencing, ad-hoc polymorphism, reified generics, and zone/region based memory management.