The occam-π programming language

occam-π ( occam-pi ) is a concurrent programming language using the process-oriented programming model, which aims to make it straightforward to write correct, expressive concurrent programs. occam-π is supported on a variety of platforms by a collection of open source tools, and is used and maintained by a community of developers around the world.

Resources

If you're new to occam-π, the Learning Resources page should probably be your first port of call.

The OccamDoc pages are an online reference to the occam-π standard libraries, generated automatically from the source code.

occam-π resources at the University of Kent include the original occam-π pages, and the PLAS Wiki, which contains various information useful for occam-π programmers, including a language reference, a style guide and the OccamDoc manual.

WoTUG is a forum for users of the CSP programming model; it organises the Communicating Process Architectures conference series.

Implementations

KRoC (the Kent Retargetable occam Compiler) is an open-source collection of tools and libraries for occam-π development.

Currently, KRoC can run occam-π programs using two different approaches:

Using IA32 native-code compilation and CCSP, an extremely efficient scheduler that dynamically schedules lightweight processes across multiple processor cores.

Using the Transterpreter, a highly-portable, lightweight virtual machine for occam-π programs that works on both conventional machines and small microcontrollers.

Work in progress includes developing a new occam-π compiler, and generating more efficient code for multiple platforms using LLVM.

History

The occam programming language was originally developed by INMOS for the transputer concurrent microprocessor. The last INMOS version of occam was occam 2.1. INMOS are now part of SGS Thomson, and the ST20 microprocessor used widely in set-top boxes and GPS receivers is a direct descendent of the transputer.

Development of the occam programming language, along with its associated tools and libraries, was continued by the occam for all project at the University of Kent. occam-π is Kent's extended version of occam 2.1, introducing features from the pi-calculus to support large-scale dynamic concurrency.

While several of occam-π's developers still work within the Programming Languages and Systems group at the University of Kent, occam-π is now used and maintained by developers around the world.

Language extensions

occam-π remains a language under development. A list of proposed, accepted and rejected extensions to the language can be found on the occam enhancement proposals page.

Mailing lists

See Process-Oriented Programming for mailing lists related to occam-π.