POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ML
Communicating and mobile systems: the &pgr;-calculus
Communicating and mobile systems: the &pgr;-calculus
Pict: a programming language based on the Pi-Calculus
Proof, language, and interaction
Using passive object garbage collection algorithms for garbage collection of active objects
Proceedings of the 3rd international symposium on Memory management
PI-Calculus: A Theory of Mobile Processes
PI-Calculus: A Theory of Mobile Processes
CONCUR '01 Proceedings of the 12th International Conference on Concurrency Theory
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
On Bisimulations for the Asynchronous pi-Calculus
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
A foundation for actor computation
Journal of Functional Programming
Garbage-first garbage collection
Proceedings of the 4th international symposium on Memory management
A stackless runtime environment for a Pi-calculus
Proceedings of the 2nd international conference on Virtual execution environments
Proceedings of the third ACM SIGPLAN conference on History of programming languages
An efficient on-the-fly cycle collection
ACM Transactions on Programming Languages and Systems (TOPLAS)
Composable memory transactions
Communications of the ACM - Designing games with a purpose
Modelling and Verifying Mobile Systems Using π -Graphs
SOFSEM '09 Proceedings of the 35th Conference on Current Trends in Theory and Practice of Computer Science
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Communicating mobile processes
CSP'04 Proceedings of the 2004 international conference on Communicating Sequential Processes: the First 25 Years
Hi-index | 0.01 |
To tackle the multi-core programming challenge, we investigate the design and implementation of concurrency-oriented programming languages. Our approach mimics the evolution from lambda-calculi to functional programming languages, but with the pi-calculus as a starting point. To fill the gap between the abstract calculus and its implementations, we introduce the pi-threads: an intermediate language and its abstract machine.The stackless architecture of the abstract machine makes the underlying algorithms both simple and naturally concurrent. The scheduling, for instance, can be operated in a completely decentralized way. Another remarkable feature of the abstract machine is its garbage collector. We adopt a reference counting scheme that can be characterized formally using only two semantic rules. Moreover, it provides original solutions to the usual shortcomings of reference counting: the overhead caused by the maintenance of the reference counts - we only track global references - and the complex issue of collecting cyclic structures - reinterpreted as the (in our case, much simpler) problem of detecting partial terminations.