All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Types of changes:
async, blocking, and compute now reserve a leading literal map for future options when body forms follow it. An empty prefix map is accepted and non-empty prefix maps are rejected until option keys are defined. A sole map remains an ordinary body value.catch / finally parsing from async, blocking, compute, async-generator, await, and wait. Use ordinary explicit try forms; await and wait now accept exactly one argument.adoseq and afor bindings so they compile and match Clojure's doseq and for ordering.race leaves losing channel values untouched, all-settled observes inputs concurrently while preserving input order, and timeout leaves timed-out sources available for later use.time now treats asynchronous timing as observation-only instrumentation, so its timing callback still runs when borrowed work finishes after the caller completes or is cancelled.IntoPromiseChan extension protocol and public ->promise-chan coercion so Future, CompletableFuture, and IBlockingDeref values can be used with async-style APIs.detach for starting background work that should intentionally outlive its current cancellation scope.async-generator and yield for creating cold, lossless, core.async-compatible async sources. Generators start on first consumption, are unbuffered by default, support bounded runahead through a positive :buffer-size, and cannot yield nil because a nil take signals completion.anext for manually consuming one source value and areturn for requesting early cleanup and waiting for generator finalization. Calling cancel! on an async generator requests the same cleanup without waiting.adoseq and afor for lifecycle-aware async iteration with destructuring, nested bindings, and :let, :when, and :while modifiers.areduce, atransduce, and ainto for lifecycle-aware async reductions and transductions.Iterable values. Generator cleanup and finally blocks complete on early exit, errors, and cancellation.async, blocking, or compute inside another execution becomes an owned child unless started inside detach; cancellation, failure, or normal completion of a parent cancels its unfinished children transitively.timeout, race, any, all, and all-settled observe borrowed inputs without cancelling them, and race and any do not cancel losing inputs. Work originally started inside the current parent remains owned by that parent.async, blocking, and compute now wait for one returned promise-like single-result value before settling their own result promise-chan. Nested async-style producers continue to compose, while ordinary channels and async-generator sources are preserved as channel values.await, wait, await*, wait*, and the promise combinators now accept values supported by IntoPromiseChan.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |