Il existe deux techniques pour programmer les systèmes réactifs (programmes concurrents) : l'utilisation de processus multiples (threads), et la programmation par boucle à évènements (event loop, ou event-driven state machine). La première est gourmande de resources (surtout de mémoire), la deuxième est difficile à mettre en oeuvre.
À mon exposé de Juillet dernier, j'ai montré comment une transformation en passage de continuation (CPS) permettait de convertir automatiquement du code à processus légers coopératifs en boucle à évènements, et j'ai montré comment la technique de la transformation CPS pouvait, avec un certain nombre de modifications, s'appliquer à un langage impératif sans portée lexicale tel que le « C ».
J'ai aujourd'hui un prototype de programme qui effectue cette transformation pour la quasi-totalité du « C ». Après une rapide introduction à la transformation CPS, je décrirai comment elle s'adapte au « C »; je conclurai avec les résultats, notamment des mesures quantitatives de la performance des programmes ainsi construits.