BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Talks.cam//talks.cam.ac.uk//
X-WR-CALNAME:Talks.cam
BEGIN:VEVENT
SUMMARY:Continuation-Passing C: Program Transformations for Compiling Conc
 urrency in an Imperative Language - Dr Gabriel Kerneis (University of Camb
 ridge)
DTSTART:20121123T151500Z
DTEND:20121123T161500Z
UID:TALK41561@talks.cam.ac.uk
CONTACT:Raoul-Gabriel Urma
DESCRIPTION:Most computer programs are concurrent ones: they need to perfo
 rm several tasks at the same time. Threads and events are two common techn
 iques to implement concurrency. Events are generally more lightweight and 
 efficient than threads\, but also more difficult to use. Additionally\, th
 ey are often not powerful enough\; it is then necessary to write hybrid co
 de\, that uses both preemptively-scheduled threads and cooperatively-sched
 uled event handlers\, which is even more complex.\n\nIn this talk\, we sho
 w that concurrent programs written in threaded style can be translated aut
 omatically into efficient\, equivalent event-driven programs through a ser
 ies of proven source-to-source transformations.\n\nWe first propose Contin
 uation-Passing C\, an extension of the C programming language for writing 
 concurrent systems that provides very lightweight\, unified (cooperative a
 nd preemptive) threads. CPC programs are processed by the CPC translator t
 o produce efficient sequentialized event-loop code\, using native threads 
 for the preemptive parts. We then define and prove the correctness of\nthe
 se transformations\, in particular lambda lifting and CPS conversion\, for
  an imperative language. Finally\, we validate the design and implementati
 on of CPC by comparing it to other thread librairies\, and by exhibiting o
 ur Hekate BitTorrent seeder. We also justify the choice of lambda lifting 
 by implementing eCPC\, a variant of CPC using environments\, and comparing
  its performances to CPC.\n
LOCATION:SS03\, Computer Laboratory
END:VEVENT
END:VCALENDAR
