- CompletableDeferred.completeExceptionally(exception): fails the deferred
with a Lyng exception; the original exception object is preserved as
errorObject so assertThrows/catch see the correct class (works for both
built-in ObjException and user-declared class instances)
- LaunchPool: add maxQueueSize parameter (suspends launch when full),
add cancelAndJoin() for graceful shutdown that waits for running tasks,
clarify all semantics in the extern declaration comments
- Two tests for completeExceptionally (built-in and user-defined exception)
- Fix parallelism.md channel doc-test to be illustration-only (avoid
flakiness from coroutine scheduling in the doc-test runner)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Exposes Kotlin's Channel<Obj> to Lyng scripts as a first-class type
with rendezvous, buffered, and unlimited capacity modes. Supports
suspending send/receive, non-suspending tryReceive, close/drain
semantics, and isClosedForSend/isClosedForReceive properties.
Also fixes a pre-existing typo in BookTest.kt that blocked JVM test
compilation, and adds Channel reference docs and a parallelism.md section.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>