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-π.