Juliusz Chroboczek's research while affiliated with Paris Diderot University and other places

Publications (5)

Technical Report
Full-text available
This paper is a companion technical report to the article "Continuation-Passing C: from threads to events through continuations". It contains the complete version of the proofs of correctness of lambda-lifting and CPS-conversion presented in the article.
Article
Full-text available
Threads are a convenient and modular abstraction for writing concurrent programs, but often fairly expensive. The standard alternative to threads, event-loop programming, allows much lighter units of concurrency, but leads to code that is difficult to write and even harder to understand. Continuation Passing C (CPC) is a translator that converts a...
Article
Full-text available
In this paper, we introduce Continuation Passing C (CPC), a programming language for concurrent systems in which native and cooperative threads are unified and presented to the programmer as a single abstraction. The CPC compiler uses a compilation technique, based on the CPS transform, that yields efficient code and an extremely lightweight repres...
Article
Full-text available
We compare a set of web servers on a simple synthetic workload. We show that, on this particular bench-mark, event-driven code is as fast or faster than the fastest implementations using thread libraries.

Citations

... Web servers To evaluate the impact of environments on more realistic programs, we reuse our web server benchmark [9]. We measure the mean response time of a small web server under the load of an increasing number of simultaneous clients. ...
... In this paper, we give an introduction to CPC programming, we describe informally the transformations performed by CPC, and give an outline of the proof of correctness; the complete proof can be found in a companion technical report [28]. ...
... The reader may remark this concept is reminiscent of transactional memory [16]. Cooperative multitasking enables the design of concurrent programs on single threaded environments, which not only can prove beneficial performancewise [24], but also significantly reduces the need for locks and other synchronization mechanisms, and opens the door for more relaxed immutability models. ...
... Cilk [11] runtime uses continuations to spawn and synchronize workers. Continuation Passing C [24] allows the programmers to spawn new workers to execute a particular function, put a worker to sleep and wake it up later using library functions. Li et al. [25] present an alternative way to implement concurrency in the Glasgow Haskell Compiler, by polling the pool of suspended continuations to see if blocking can be resolved. ...