Skip to main content

CSO-F -- Communicating Scala Objects with Fibres

Supervisor

Suitable for

MSc in Advanced Computer Science
Mathematics and Computer Science, Part C
Computer Science and Philosophy, Part C
Computer Science, Part C
Computer Science, Part B

Abstract

The [Scala](http://www.scala-lang.org/) language is a powerful object oriented language, with a type system, that is much more flexible and expressive than Java's. Scala's compilers translate into code for the Java Virtual machine. It is particularly convenient to express new programming constructs in Scala.

In 2008 we designed and implemented an OCCAM/CSP-style concurrency library for Scala, called CSO: (see [this paper](http://users.comlab.ox.ac.uk/bernard.sufrin/CSO/cpa2008-cso.pdf), and [the CSO distribution.](http://users.comlab.ox.ac.uk/bernard.sufrin/CSO/)) The library has been used in a variety of applications as well as for teaching the principles of concurrent programming.

The present CSO implementation maps each running process to a (kernel) thread -- usually taken from a thread-pool. But kernel threads -- even when pooled -- are heavyweight entitites, and their multiplexing across the resources of a real machine is not as efficient as we would like. The time is more than ripe for a reimplementation of CSO using a lighter-weight basis. Project [LOOM](https://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html) has provided an implementation of **Fibres** that may do the trick.

The aim of this project is to explore the use of Fibres as the basis for CSO processes. Much of present CSO implementation should be reusable.