cl-calispel
Thread-safe message-passing channels in Common Lisp
Calispel is a Common Lisp library for thread-safe message-passing channels, in the style of the occam programming language, also known as communicating sequential processes (CSP). See https://en.wikipedia.org/wiki/Communicating_sequential_processes.
Calispel channels let one thread communicate with another, facilitating unidirectional communication of any Lisp object. Channels may be unbuffered, where a sender waits for a receiver (or vice versa) before either operation can continue, or channels may be buffered with flexible policy options.
Because sending and receiving on a channel may block, either operation can time out after a specified amount of time.
A syntax for alternation is provided (like ALT
in occam, or Unix select()
): given a sequence of operations, any or all of which may block, alternation selects the first operation that doesn't block and executes associated code. Alternation can also time out, executing an "otherwise" clause if no operation becomes available within a set amount of time.
Calispel is a message-passing library, and as such leaves the role of threading abstractions and utilities left to be filled by complementary libraries such as Bordeaux-Threads and Eager Future.
- Versions: 0.1-1.e9f2f9c
- Website: https://www.thoughtcrime.us/software/calispel/
- Licenses: ISC
- Package source: gnu/packages/lisp-xyz.scm
- Builds: See build status
- Issues: See known issues
Installation
Install the latest version of cl-calispel
as follows:
guix install cl-calispel
Or install a particular version:
guix install cl-calispel@0.1-1.e9f2f9c
You can also install packages in augmented, pure or containerized environments for development or simply to try them out without polluting your user profile. See the guix shell
documentation for more information.