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.
- Website: https://www.thoughtcrime.us/software/calispel/
- Licenses: ISC
- Package source: gnu/packages/lisp-xyz.scm
- Builds: See build status
- Issues: See known issues
cl-calispel 0.1-1.e9f2f9c as follows:
guix install email@example.com
Or install the latest version:
guix install cl-calispel
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.