Impromptu (programming environment): Difference between revisions

Content deleted Content added
Pygy (talk | contribs)
Pygy (talk | contribs)
Revamped, added info
Line 24:
}}
 
'''Impromptu''' is a [[Mac OS X]] programming environment for [[live coding|live programming]]. Impromptu is a [[Scheme (programming language)|Scheme]] language environment, which is a member of the [[Lisp (programming language)|Lisp]] family of languages. ImpromptuIt's Schemesource Interpreterhas wasbeen initiallypartially builtopened fromas the [[TinyScheme]] 1.35 baseline, but it has beenExtempore substantiallyproject<ref modifiedname="extempore_github" since/>.
 
== Description ==
Line 30:
The environment allows to make changes to a program at [[runtime]], so variables and functions may be redifined and the changes take effect immediately. A programmer can also create and schedule code for future execution, as well as data events such as notes and graphics objects. Once an event is scheduled, execution continues. Looping is performed by using an idiom called "temporal recursion" which works by having a function asynchronously schedule a future call to itself as its final action.
 
The library allows to communicate with [[Audio Units]] for audio synthesis, and to graphics layers such as [[QuickTime]], [[Quartz (graphics layer)|Quartz]], [[Core Image]], [[OpenGL]] for [[video composition]]. Code written in [[Objective-C]] can be called from the editor, and also Objective-C frameworks can perform calls to the Scheme interpreter. It includes a [[static type]] inferencing [[compiler]] for a minimal functional language similar to Scheme, but it is designed for dynamic systems programming. The compiler uses [[LLVM]] for backend compilation to [[x86]].
 
Impromptu's Scheme interpreter was initially built from the [[TinyScheme]] 1.35 baseline, but it has been substantially modified since to better suit the live coding context. A [[Garbage_collection_(computer_science)| real-time garbage collector]], and [[Objective C]] integration were added. Furthermore, a new statically typed language called the ''Extempore Language'' has been integrated to the system. This language is syntactically Scheme-like, but semantically closer to C, and is designed for real-time sound synthesis and other computationally heavy tasks. It provides [[type inference]] compiles to [[machine language]] thanks to the [[LLVM]] compiler.
 
== Extempore ==
 
The core of Impromptu has been released as ''Extempore'' <ref name="extempore_github">{{cite web
| url = https://github.com/digego/extempore
| title = The ''Extempore'' page on GitHub.
| date = 2011-06-12
| accessdate = 2011-06-12}}</ref> under a BSD style licence. It runs under both [[Linux]] and Mac OS X. The project is as of June 2011 at an early stage and is intended as a developer preview, not suited for end users. It includes the Scheme interpreter, the Extempore Language compiler, the scheduler, and easy bindings to external libraries<ref name="extempore_github" />.
 
== Sample Performance ==
Line 39 ⟶ 49:
 
== References ==
 
<references />
 
=== Papers by Andrew Sorensen ===