Seminar/2013-12-04

From LRDE

Mercredi 4 décembre 2013, 11h-12h, Salle L0 du LRDE


CPC: Une implémentation efficace de la concurrence par passage de continuations

Juliusz Chroboczek, Laboratoire PPS, Université Paris-Diderot (Paris 7)

CPC est une extension concurrente du langage C. Le code CPC, en style à threads, est traduit par le compilateur CPC en un code à style à événements; ce code peut ensuite être exécuté, au choix du programmeur, par des threads natifs « lourds » ou par un ordonnanceur à événements manipulant des structures de données extrêmement légères. Cette technique d'implémentation induit un style de programmation original, où les threads sont « gratuits ». Cependant, le programmeur peut choisir d'utiliser des threads natifs « lourds » lorsque c'est nécessaire, par exemple pour exploiter le parallélisme du matériel ou utiliser des bibliothèques bloquantes.

La technique de compilation de CPC est basée sur des techniques formalisées et bien connues de la communauté de la programmation fonctionnelle, telles que la conversion en style à passage de continuations (CPS), le lambda-lifting, ou l'introduction de fonctions terminales. La correction de ces techniques a été prouvée formellement.

Dans cet exposé, je donnerai quelques exemples du style typique de programmation en CPC tirées de Hekate, un seeder BitTorrent écrit en CPC. Je décrirai ensuite la transformation en style à passage de continuations et je décrirai la technique de traduction utilisée par le compilateur CPC.

Juliusz Chroboczek est Maître de Conférences à l'Université Paris-Diderot (Paris 7). Il travaille sur les implémentations efficaces de la concurrence ainsi que sur la problématique du routage dans les réseaux à commutation de paquets.

http://www.pps.univ-paris-diderot.fr/~jch/software/cpc/, http://www.pps.univ-paris-diderot.fr/~jch/software/hekate/