Skip to content

v3.3.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:09
· 6 commits to main since this release
v3.3.1
9800ec1

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 to communicate that returns a process-task immediately instead of blocking. await-process blocks for the result (optionally with a timeout, returning (values nil nil) on expiry), and cancel-process cancels a pending task. Options include event-callback, event-queue-capacity (default 64), event-overflow-policy (:drop-newest by default, or :block), and event-history-capacity.

Fixed

  • v3.3.0 created its two async task executors in top-level defvar initforms, so merely loading the system started twelve threads. SBCL refuses save-lisp-and-die (and so asdf:program-op) and sb-posix:fork while 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 exported shutdown-process-kit stops and joins them; it also runs from sb-ext:*save-hooks*, so a saved image carries no thread objects and recreates the pools on demand after restart.