Section: New Results
Web Reactive Programming
HipHop.js
This year, we have completed the design of the HipHop programming language. We have finalized the syntax of core instructions, stabilized the interfacing with JavaScript, added variables that supplement signals in local computation, and we have completed the synchronous/asynchronous connections. A paper describing this final version of the paper is currently under submission.
We have also improved significantly the HipHop implementation for speed and for debugging.
-
Leveraging on the Hop speed improvement and by adding a new HipHop compilation stage we have been able to accelerate by a factor of about 10 the intrinsic execution time of the reactive machine. The optimization removes nets of the virtual electronic circuits that are generated by the HipHop compiler by propagating constant and by collapsing identical nodes. This contributions is included in the main development tree (https://github.com/manuel-serrano/hiphop).
-
A central difficulty of the synchronous reactive programming is debugging and error messages. The HipHop compilation roughly consists in implementing efficiently and compactly a deterministic automata that represents the user source code. If a causality error is detected during that compilation, unless a precise isolation of the user source code fragments that are involved in that error, the error message reported to the user is so imprecise that fixing the problem is difficult. We have implemented an algorithm based on strongly connected components that enables the needed isolation. This experimental feature is currently publicly available via a dedicating development branch under the HipHop github repository.
Interactive music composition
The production of a piece of music by school children using the Skini platform as part of SACEM's call for projects "Fabrique à musique" (Music Factory) was initiated in 2019. It ended in 2019 with the realization of a show at the Nice Conservatory in May 2019. The music piece thus created implemented all of Skini's functionalities, from the distributed sequencer that allowed the pupils to design the basic material, to the control of the live orchestration, not by the audience in this case, but by the 24 students who participated in the project. Following the success of this first experiment, the project is being extended for 2020/2021 by Inria, with another class, as part of the "les cordées de la réussite" program.
Beyond the improvement of the system, and in particular of the distributed sequencer, thanks to the significant performance improvements of HipHop.js, it has been possible to enrich the controls on musical orchestrations by driving transformation elements of Skini's basic elements (the patterns) such as transpositions, use of patterns of different durations, music mode conversions, or tempo control. The coupling of these new processes has enriched the range of possibilities for interaction and has opened up new horizons in the field of pattern-based generative music.
In terms of musical creation, we have been able to implement orchestrations using the platform's new technical possibilities in order to reduce musical processes perceived as too automatic. We can note as convincing results: the possibility to break the too big symmetries on the durations of the patterns, and the variations of tempi subjected to various controls. We were able to demonstrate that with the same HipHop.js music orchestration program, we could efficiently generate very different musical pieces.
Skini music composition has been described in a conference paper presented in the NIME 2019 conference [16].
Multiparty Reactive Sessions
Ensuring that communication-centric systems interact according to an intended protocol is a challenging problem, particularly for systems with some reactive or timed components. To rise to this challenge, we have studied the integration of Session-based Concurrency and Synchronous Reactive Programming (SRP).
Synchronous Reactive Programming (SRP) is a well-established programming paradigm whose essential features are logical instants, broadcast events and event-based preemption. This makes it an ideal vehicle for the specification and analysis of timed reactive systems. Session-based Concurrency is the model of concurrent computation induced by session types.
In the Research Report [20], we propose a multiparty session calculus enriched with features from SRP. In this calculus, protocol participants may broadcast messages, suspend themselves while waiting for a message, and react to events. Our main contribution is a session type system for this calculus, which enforces session correctness for non-interleaved sessions and additionally ensures input timeliness, a time-related property that entails livelock-freedom (while deadlock-freedom holds by construction in our calculus). Our type system departs significantly from existing ones, specifically as it captures the notion of “logical instant” typical of SRP.