Parallelism for Common Lisp
Common Lisp Shell
Latest commit 9c11f40 Jul 20, 2016 @lmj version 2.8.4
Failed to load latest commit information.
bench minor cleanup May 8, 2015
src handle new sbcl behavior for constant empty arrays Dec 30, 2015
test work around nonconforming behavior in recent sbcl Jul 20, 2016
CHANGES version 2.8.4 Jul 20, 2016
LICENSE update copyright year Mar 23, 2012 update readme and convert to markdown Feb 2, 2013
lparallel-bench.asd move defpackage forms out of central package files Apr 30, 2014
lparallel-test.asd remove eos Apr 30, 2014


lparallel is a library for parallel programming in Common Lisp, featuring

  • a simple model of task submission with receiving queue
  • constructs for expressing fine-grained parallelism
  • asynchronous condition handling across thread boundaries
  • parallel versions of map, reduce, sort, remove, and many others
  • promises, futures, and delayed evaluation constructs
  • computation trees for parallelizing interconnected tasks
  • bounded and unbounded FIFO queues
  • high and low priority tasks
  • task killing by category
  • integrated timeouts

See for documentation and examples.


lparallel should run on any Common Lisp implementation supported by bordeaux-threads. The following implementations successfully pass the test suite:

  • ABCL
  • Allegro
  • Clozure
  • LispWorks
  • SBCL

To run tests, load lparallel-test.asd and call (lparallel-test:execute).

To run benchmarks, load lparallel-bench.asd and call (lparallel-bench:execute N) where N is the number of worker threads.


James M. Lawrence