releases.shpreview

Pluggable signaling transport; uninitialized memory leak fixed

livekit-ffi/v0.12.72

July 28, 2026Rust SDKsView original ↗
1 feature1 enhancement4 fixesThis release1 featureNew capabilities1 enhancementImprovements to existing features4 fixesBug fixesAI-tallied from the release notes
From the original release noteView original ↗

Fixes

  • Address typo in parsing rpc server version - #1268 (@1egoman)
  • Data tracks schema metadata support.
  • Emit black keepalive frames from NativeVideoSource instead of uninitialized memory. webrtc::I420Buffer::Create leaves the pixel planes uninitialized, so the pre-capture keepalive frames could leak recycled heap contents (often fragments of earlier frames from the same process) to subscribers as the first keyframes - #1271 (@eh-steve)
  • ensure failing audio filter init doesn't degrade audio quality - #1270 (@lukasIO)
  • Add NVIDIA NVENC AV1 encoding when the GPU reports AV1 encode support.

Route LiveKit signalling through a pluggable transport (new livekit-net crate).

The signalling WebSocket and the two pre-connect HTTP GETs (validate, region discovery) now go through pluggable transport traits (WsClient for the WebSocket, HttpClient for request/response) resolved from a process-global registry with independent slots — a consumer can bring only HTTP, or only WebSocket. The new livekit-net crate owns the WebSocket/HTTP/TLS stack behind those traits and ships native (tokio / async-std) backends. Native builds are unchanged in behavior.

Breaking (livekit-api, and livekit via EngineError::Signal):

  • SignalError::WsError is removed — tungstenite is no longer part of the public API. A failed WebSocket handshake now surfaces its HTTP status as SignalError::Client/Server; transport connection and close failures surface as the new SignalError::Connection(String) / SignalError::Closed variants (previously all collapsed into Timeout).
  • SignalError is now #[non_exhaustive], and gains a SignalError::TransportNotConfigured variant — returned when no transport is registered (host/foreign builds must call livekit_net::set_ws_client / set_http_client before connecting). This is a permanent configuration error; callers must not retry.
  • The signalling WebSocket/HTTP/TLS crates are no longer transitive dependencies of livekit-api; TLS features delegate to livekit-net. Existing signal-client-tokio / -async / -dispatcher and TLS feature names are unchanged.

Fetched July 28, 2026

Pluggable signaling transport; uninitialized memory leak… — releases.sh