Impromptu v2.0 released

Impromptu is an OSX programming environment for composers, sound artists, VJ’s and graphic artists with an interest in live or interactive programming. Impromptu is a Scheme language environment, a member of the Lisp family of languages.

Changes in Impromptu v2.0

A new impromptu x86 compiler
The new impromptu x86 compiler uses LLVM for backend code generation and supports runtime compilation of scheme functions to x86 machine code. In particular the compiler has been added to impromptu to support the efficient compilation of scheme code for data processing tasks such as image processing, audio signal processing and OpenGL. The compiler is exposed at runtime through the sys:compile call which accepts a scheme closure and returns a foreign function which may be called freely from scheme. (help sys:compile #t) will give you a bunch of examples.

Audio signal processing directly in Impromptu
On-the-fly audio DSP programming is now supported directly within the impromptu scheme environment by allowing x86 code (i.e. compiled scheme code) to be hot-swapped into the kernel of a custom code AudioUnit. You may use one or more of these custom code audiounits anywhere in your audiounit chain – as both generators and or effects. Code is hot-swapped into an AU kernel by passing a given scheme closure to the au:code:load function. There is also a mechanism for sharing memory between the AU and the scheme runtime. (help au:code:load #t) will give you a bunch of examples.

A new concurrent garbage collector
The primary motivation for the new GC is to provide greater performance with larger heap sizes.

Impromptu v2.0 also adds support for Snow Leopard but is no longer provided as a Universal Binary (Intel only).

The most exciting addition is spaces, a new distributed, associative, shared memory space based on Linda’s tuple spaces. Spaces has been developed primarily for synchronous shared memory, across multiple hosts, during livecoding performances. I’m currently writing up a paper on this so will publish to the list when done. There are a bunch more nice additions though so check out the release notes attached to this email.