Cl-async is a library for general purpose, non-blocking programming in Common Lisp. Cl-async uses Libevent2 as the backend, which is a fast, stable, portable library for asynchronous IO (see my notes on choosing Libevent).
The main goal is to provide an experience that makes general asynchronous programming in lisp natural, and to also provide a number of drivers on top of cl-async.
This library's current status is BETA. You will generally have a better experience by using the git version of this library and the git version of the libevent2 bindings.
NOTE: In the latest Quicklisp release, CFFI was upped from 0.10.x to 0.11.0.
This version generates a bunch of type/deprecation warnings with the Quicklisp
version of cl-libevent2. If you get warnings about
(:STRUCT LE::TIMEVAL) then
grab the latest git version of cl-libevent2,
which should fix these issues. You may also have to clear your ASDF cache after
Please see the cl-async website for full documentation, examples, etc.
- Implementation notes
This library is now fully in quicklisp, along with its sister bindings, cl-libevent2. If you want to keep up with the most recent changes (recommended, as many bugfixes happen on master), download from git, otherwise feel free to use the quicklisp release. Also, if using quicklisp, be familiar with the closed issues list. An issue you're having may have already been fixed =].
There is a fairly complete suite of tests in the
(ql:quickload :cl-async-test) (cl-async-test:run-tests)
As bugs happen (or as I remember old bugs) I'll be adding more tests.
See the TODO list.
As always, my code is MIT licenced. Do whatever the hell you want with it. Enjoy!