Categorical Message Passing Language (CaMPL) is a typed functional-style concurrent language in which processes communicate by passing messages on channels. The Semantics of CaMPL is based on the categorical theory of message passing.
- Concurrent Types: CaMPL has typed communication along channels: these concurrent types are called protocols.
- Deadlocks and Livelocks: Pure CaMPL is deadlock and livelock free and guaranties progress.
- Controled Non-Determinism: CaMPL has races which allow non-deterministic concurrent behaviour.
- Sequential Data: CaMPL has data and codata declarations.
For installing CaMPL, you need to have stack and alacritty terminal installed.
Stack is a program for developing and managing Haskell projects. You can learn more about it here
And Alacritty is a terminal emulator that CaMPL uses it for concurrent interactions with users. You can learn more about Alacritty here
- Download the installation script and run it by running the following command in your terminal:
mkdir ~/.campl && cd ~/.campl && curl -LJO https://raw.githubusercontent.com/campl-ucalgary/campl/main/install && chmod +x install && ./install
- Add campl to your
PATH
variable:
export PATH="$HOME/.campl/bin:$PATH"
stack exec -- mpl --run YOUR_PROGRAM.mpl