Source on Codeberg (opens in a new tab)

kern 1.1.2

Pool-mode liveness, cooperative Mutex, mbedTLS ABI fix

Patch release2,087 tests

Release notes

Pool-mode liveness

Routine sleep and the connection-gate FIFO timeout now take the libuv park only on the pump owner (or when no live owner exists); a pool worker blocks on poll(2) instead of registering on a loop it does not pump, removing a lost wakeup and loop-heap corruption under KERN_WORKERS=4/8.

Cooperative Mutex<T>

A held lock could freeze the scheduler thread. kern_mutex_lock was a bare pthread_mutex_lock; a routine descheduled while holding it deadlocked the thread. Mutex now parks a contending routine, reusing the waiter path WaitGroup, Semaphore and Channel already use.

mbedTLS ABI fix

The v1.1.1 Linux x86_64 bundle was built against mbedTLS 3.6 (libmbedtls.so.21); on a mbedTLS-2.28 host (Ubuntu 22.04/24.04, Debian bookworm) TLS SIGSEGVd. The release now publishes two Linux x86_64 bundles, one per mbedTLS ABI.

Build-time ABI gate (E0504)

When a prebuilt runtime bundle is used, the compiler reads the bundle MANIFEST's mbedtls_soname and the host's soname and refuses the link on a mismatch.

Async trace

Dev-only KERN_ASYNC_TRACE=1 diagnostic: on SIGUSR1 the runtime writes every live routine id, state, park reason and fd.

By the numbers

2,087 tests (1,535 conformance + 85 compat + 467 negative). TCB 42,441. 12 fuzz targets (8 C libFuzzer + 4 Kern-language).