Skip to content
This repository

Asynchronous IO library for Common Lisp.

branch: master
Octocat-spinner-32 examples simple-proxy: making distinction between debug/verbose September 30, 2013
Octocat-spinner-32 test porting benchmarks from optimize branch April 02, 2013
Octocat-spinner-32 LICENSE adding license September 23, 2012
Octocat-spinner-32 adding note on new CFFI version and how it messes up cl-libevent2 March 19, 2013
Octocat-spinner-32 base.lisp actually, removing event-info report altogether. its worthless and pr… October 28, 2013
Octocat-spinner-32 cl-async-ssl.asd upping version numbers all around for latest wave of changes December 31, 2012
Octocat-spinner-32 cl-async-test.asd generic event updates March 28, 2013
Octocat-spinner-32 cl-async.asd adding with-delay. im sick of typing out delay functions March 16, 2014
Octocat-spinner-32 dns.lisp fixing some addrinfo accessor bug stuff. all tests passing windows, l… March 30, 2013
Octocat-spinner-32 event-loop.lisp adding with-event-loop >=] April 12, 2013
Octocat-spinner-32 event.lisp adding with-delay. im sick of typing out delay functions March 16, 2014
Octocat-spinner-32 http.lisp adding *outoing-http-count* and *incoming-http-count* as defparams in… January 22, 2013
Octocat-spinner-32 package.lisp adding with-delay. im sick of typing out delay functions March 16, 2014
Octocat-spinner-32 signal.lisp porting segfault fix (in signal handling) from optimize branch June 15, 2013
Octocat-spinner-32 tcp-ssl.lisp fixing TCP SSL import bug (forgot to test with :ssl t after my big re… January 22, 2013
Octocat-spinner-32 tcp-stream.lisp fixing bug where class inheritance order was causing close method to … January 06, 2013
Octocat-spinner-32 tcp.lisp passing actual socket object in check-socket-open (i think i intended… April 29, 2013
Octocat-spinner-32 util.lisp porting types/type util function (bytes) from optimize branch. April 14, 2013

cl-async - Asynchronous operations for Common Lisp

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 doing this.


Please see the cl-async website for full documentation, examples, etc.

Quick links:


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 cl-async-test package:

(ql:quickload :cl-async-test)

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!

Something went wrong with that request. Please try again.