Skip to content

RustQueue 0.8.4

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Aug 02:37
5c3f869

RustQueue 0.8.4

RustQueue 0.8.4 is a performance release for the durable Channel acknowledgement
path. It reduces the work held under the Topic state lock and removes several
per-message allocation points without changing the v7 storage or wire
contracts.

Durable Channel commit path

  • FIN and REQ for one Topic are collected for up to 1 ms and committed in
    one bounded Channel WAL group of at most 1,024 requests.
  • The Topic state lock is released while the Channel WAL files are synced. An
    independent Channel commit gate still serializes append, checkpoint,
    rotation, deletion and other durable Channel mutations around that boundary.
  • A successful FIN or REQ response still follows every affected Channel WAL
    fsync. Delivery may reserve already durable messages while a later group is
    syncing, but never observes an uncommitted tail.

Hot-path allocation reductions

  • Channel WAL commands use fixed-size stack encoding instead of allocating a
    temporary command buffer for each frame.
  • TCP SUB, FIN and REQ paths carry shared Arc<str> Topic/Channel
    identities through the broker, and touched Channel sets retain those shared
    identities.
  • Channel operation futures no longer add an extra Box allocation. Each TCP
    session has a bounded pool of 256 active Channel operations.
  • The benchmark consumer waits for the server EOF and verifies final Channel
    depth, in-flight and deferred counts before accepting a drained result.

Compatibility and durability

  • The on-disk format remains v7; no migration is required from 0.8.3.
  • NSQ V2 commands, TLS/mTLS, AUTH, compression, lookup and the opt-in Kodo
    profile retain their existing compatibility contracts.
  • Delivery remains at least once. Durable FIN/REQ acknowledgement semantics
    and the single-copy share-nothing PVC model are unchanged.

Qualification protocol

The qualification script defaults to comparing the exact v0.8.3 tag with the
candidate on OrbStack. The formal optional run uses fresh volumes, 2 vCPU and
2 GiB for both Broker and load generator, 10 alternating pairs for each of the
three cases, a 30-second warmup and a 120-second measurement. Short development
A/B runs are useful for iteration but are not formal release evidence.

Release assets

  • rustqueue-0.8.4-linux-x86_64.tar.gz: Linux x86_64 binaries, Console UI and
    example configuration
  • rustqueue-0.8.4-linux-aarch64.tar.gz: Linux ARM64 binaries, Console UI and
    example configuration
  • rustqueue-0.8.4-source.tar.gz: source archive for the tagged commit
  • rustqueue-0.8.4.tgz: Helm Chart
  • SHA256SUMS-0.8.4: SHA-256 checksums for all downloadable assets