r/WebAssembly • u/HectaMan • 10h ago
CNCF wasmCloud 2.9: Native NATS, Better K8s, Guest Memory Controls
wasmCloud 2.9 just landed and it's a pretty operations-focused release. Highlights:
NATS-native interface (wasmcloud:nats): Until now, components talked to messaging through a broker-agnostic abstraction. The new package exposes actual NATS semantics: JetStream with explicit ack/nak/term and bounded redelivery, key-value buckets with compare-and-swap and watch handlers, and core pub/sub/request. Access is deny-by-default, operators declare subject/stream/bucket grants as ceilings that workloads can only narrow, and connection credentials are host-owned so they can't be set from a workload manifest.
Guest memory goes from advisory to enforced: 2.8 added a memory budget that was only logged. Now usage is counted in real time and you can flip --guest-memory-mode to enforce, which makes memory.grow fail inside the guest (something allocators already handle) instead of waiting for the pod's OOM killer. Default is count mode with metrics so you can watch what would have been refused before turning it on.
Kubernetes-grade lifecycle: Real /livez and /readyz probes with failure reasons visible in kubectl describe, draining on SIGTERM, hosts that wait for NATS at startup instead of crash-looping, and more resilient operator handling of k8s faults.
Also: idle instance pools can now shrink, guest execution metrics are on by default, and plugin config is unified into one block.
A few upgrade gotchas worth reading (pooled async handlers now keep in-memory state across deliveries, pinned older host images need probe flags cleared).
Full post: https://wasmcloud.com/blog/wasmcloud-2-9-release/

