Skip to content

Release 0.1.2

Choose a tag to compare

@StevenBtw StevenBtw released this 14 Mar 14:38
· 20 commits to main since this release
0d794f2

[0.1.2] - 2026-03-14

Fixed

  • RUSTSEC-2025-0134: replaced unmaintained rustls-pemfile with rustls-pki-types for TLS PEM parsing.
  • Unbounded memory allocation: capped PackStream list/dict pre-allocation to prevent OOM from malicious length declarations.
  • PULL handler panic: replaced .unwrap() with safe pattern match, reject invalid negative n values per Bolt spec.
  • LOGOFF session leak: LOGOFF now rolls back pending transactions and resets the backend session.
  • Idle reaper desync: connections detect when their session has been reaped and shut down cleanly.
  • TLS accept loop: fixed tls_acceptor moved-in-loop compile error when tls feature is enabled.

Added

  • WebSocket transport (ws feature): Bolt-over-WebSocket support via tokio-tungstenite.
    • WsStream adapter: wraps WebSocketStream as AsyncRead + AsyncWrite for seamless integration with existing Bolt framing.
    • BoltServer::ws_serve(addr): standalone Bolt-over-WebSocket server (with WSS when combined with the tls feature).
    • ws::server::accept_ws() and handle_ws(): accept pre-upgraded WebSocket connections for integration with HTTP servers (e.g., Axum).
    • BoltConnection::connect_ws(url): client WebSocket connection supporting ws:// and wss:// URLs.
    • BoltSession::connect_ws() and connect_ws_basic(): high-level client convenience methods.
  • Max message size: ChunkReader enforces a configurable limit (default 16 MiB), preventing multi-GB message accumulation. Exposed via BoltServer::max_message_size().
  • Display implementations for ConnectionState, ClientMessage, and ServerMessage.
  • Crate root re-exports: BoltError, BoltValue, BoltBackend, BoltServer, BoltSession, and more.
  • #[must_use] annotations on BoltValue::as_str(), BoltValue::as_int(), QueryResult, and ConnectionState transition methods.

Changed

  • BoltConnection internals refactored to trait objects (Box<dyn AsyncRead/Write>) for transport flexibility.

Removed

  • Vestigial needless_for_each clippy lint allow from Cargo.toml.

What's Changed

New Contributors

Full Changelog: v0.1.1...v0.1.2