Impromptu es un entorno de programación para Mac OS X que permite la codificación en vivo . Impromptu está desarrollado en torno al lenguaje Scheme , que es miembro de la familia de lenguajes Lisp . El código fuente de su núcleo se ha abierto como proyecto Extempore .
El entorno permite realizar cambios en un programa en tiempo de ejecución , por lo que las variables y funciones pueden redefinirse y los cambios surten efecto inmediatamente. Un programador también puede crear y programar código para su ejecución futura, así como eventos de datos como notas y objetos gráficos. Una vez que se programa un evento, la ejecución continúa. El bucle se realiza mediante un modismo llamado "recursión temporal", que funciona haciendo que una función programe de forma asincrónica una futura llamada a sí misma como su acción final.
La biblioteca permite comunicarse con Audio Units para la síntesis de audio y con capas gráficas como QuickTime , Quartz , Core Image y OpenGL para la composición de video . El código escrito en Objective-C puede ser llamado desde el editor y también los frameworks Objective-C pueden realizar llamadas al intérprete de Scheme.
El intérprete Scheme de Impromptu se creó inicialmente a partir de la línea base TinyScheme 1.35, pero se ha modificado sustancialmente desde entonces para adaptarse mejor al contexto de codificación en vivo. Se agregaron un recolector de basura en tiempo real y la integración con Objective-C . Además, se ha integrado al sistema un nuevo lenguaje de tipado estático llamado Extempore Language . Este lenguaje es sintácticamente similar a Scheme, pero semánticamente más cercano a C, y está diseñado para la síntesis de sonido en tiempo real y otras tareas computacionalmente pesadas. Proporciona inferencia de tipos y se compila a lenguaje de máquina mediante LLVM .
A Study in Keith es una performance de codificación en vivo en Impromptu de Andrew Sorensen. Los primeros dos minutos (1:56) son de silencio, mientras el intérprete escribe el programa que producirá la introducción de la pieza. A partir de ahí, modifica el código sobre la marcha para hacer evolucionar la composición.
El núcleo de Impromptu se ha publicado como Extempore bajo una licencia de estilo BSD. Se ejecuta tanto en Linux como en Mac OS X. Incluye el intérprete Scheme, el compilador de lenguaje Extempore y el planificador. No existen enlaces a bibliotecas de Apple , pero el entorno puede interactuar con bibliotecas dinámicas.