Systems level liveness with extempore

Live programs can be modified while the program is executing in order to provide a more reactive experience for the programmer. In demanding applications, such programs traditionally utilise pre-defined function calls to compiled libraries. We present a system that enables demanding live programs to be built where the supporting stack of libraries is, itself, live. In such situations, the top level code might be thought of as a simple ``live environment'' that can be created live and that encapsulates code that has ``bubbled-up'' from the supporting libraries. Our system enables this bubbling up to be achieved in an ad-hoc way and with minimal performance penalty. The deep, systems-level liveness that it exhibits is described and compared with other approaches to Live Coding and liveness generally. The work described here has its origins in the artistic Live Coding of computer music and multimedia. We also discuss its wider uses including the development of interactive multimedia installations and the harnessing of scientific simulation.

[1]  Benjamin C. Pierce,et al.  Local type inference , 1998, POPL '98.

[2]  Keith Price LISP Lore: A Guide to Programming the LISP Machine , 1986, Springer US.

[3]  Sean McDirmid Usable live programming , 2013, Onward!.

[4]  Steven L. Tanimoto,et al.  A perspective on the evolution of live programming , 2013, 2013 1st International Workshop on Live Programming (LIVE).

[5]  Keith Price Book review: LISP LORE: A Guide to Programming the LISP Machine, (2nd Edition) by Hank Bromley and Richard Lamson (Kluwer Academic Publishers) , 1988, SIGART Newsl..

[6]  Graham WAKEFIELD,et al.  LuaAV : Extensibility and Heterogeneity for Audiovisual Computing , 2010 .

[7]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.

[8]  Nicholas D. Matsakis,et al.  The rust language , 2014, HILT '14.

[9]  Alan F. Blackwell,et al.  From sonic Pi to overtone: creative musical experiences with domain-specific and functional languages , 2013, FARM '13.

[10]  Alan F. Blackwell,et al.  Liveness in Notation Use: From Music to Programming , 2010, PPIG.

[11]  Andrew Sorensen,et al.  Programming with time: cyber-physical programming with impromptu , 2010, OOPSLA.

[12]  Andrew Sorensen Impromptu : an interactive programming environment for composition and performance , 2005 .

[13]  Sean McDirmid,et al.  Living it up with a live programming language , 2007, OOPSLA.

[14]  Peter Davis,et al.  Live Programming in Scientific Simulation , 2015, Supercomput. Front. Innov..

[15]  Alan J. Perlis,et al.  Special Feature: Epigrams on programming , 1982, SIGP.

[16]  Alan J. Perlis,et al.  Epigrams on Programming. , 1982 .

[17]  Jan Vitek,et al.  Evaluating the Design of the R Language - Objects and Functions for Data Analysis , 2012, ECOOP.

[18]  Jonathan Edwards,et al.  Subtext: uncovering the simplicity of programming , 2005, OOPSLA '05.

[19]  Erik Sandewall,et al.  Programming in an Interactive Environment: the ``Lisp'' Experience , 1978, CSUR.

[20]  Roland Perera,et al.  Interactive functional programming , 2013 .

[21]  John Maloney,et al.  Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself , 1997 .

[22]  John G. Hosking,et al.  Visual code annotations for cyberphysical programming , 2013, 2013 1st International Workshop on Live Programming (LIVE).

[23]  Stefan Kaes,et al.  Parametric Overloading in Polymorphic Programming Languages , 1988, ESOP.

[24]  S. M. García,et al.  2014: , 2020, A Party for Lazarus.

[25]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[26]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[27]  Jonathan L. Shapiro Programming language challenges in systems codes: why systems programmers still use C, and what to do about it , 2006, PLOS '06.

[28]  Sibylle Schupp,et al.  A comparison of c++ concepts and haskell type classes , 2008, WGP '08.

[29]  A. James 2010 , 2011, Philo of Alexandria: an Annotated Bibliography 2007-2016.

[30]  David A. Moon,et al.  The Symbolics Genera Programming Environment , 1987, IEEE Software.

[31]  Walter Bright,et al.  The D Programming Language , 2010 .

[32]  Steven L. Tanimoto,et al.  VIVA: A visual language for image processing , 1990, J. Vis. Lang. Comput..

[33]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[34]  JoAnn Kuchera-Morin,et al.  Gibber: Live coding audio in the Browser , 2012, ICMC.