Repository navigation
v3.3.1
Adds an event-driven async process-completion API and fixes a bug that broke executable builds in v3.3.0, which was not published.
Added
communicate-async/process-task: an event-driven counterpart tocommunicatethat returns aprocess-taskimmediately instead of blocking.await-processblocks for the result (optionally with a timeout, returning(values nil nil)on expiry), andcancel-processcancels a pending task. Options includeevent-callback,event-queue-capacity(default 64),event-overflow-policy(:drop-newestby default, or:block), andevent-history-capacity.
Fixed
- v3.3.0 created its two async task executors in top-level
defvarinitforms, so merely loading the system started twelve threads. SBCL refusessave-lisp-and-die(and soasdf:program-op) andsb-posix:forkwhile other threads are running, which broke executable builds for every consumer -- this is why v3.3.0 was not published. The executors are now created lazily on first use, and the new exportedshutdown-process-kitstops and joins them; it also runs fromsb-ext:*save-hooks*, so a saved image carries no thread objects and recreates the pools on demand after restart.