bunqueue v2.9.5
blog · release
bunqueue v2.9.5
Publish Alpine, Debian 13, Debian slim, and distroless variants to Docker Hub and GHCR for Linux amd64 and arm64.
To install bunqueue v2.9.5
Section titled “To install bunqueue v2.9.5”bun add bunqueue@2.9.5npm install bunqueue@2.9.5TAG=2.9.5docker run -p 6789:6789 -p 6790:6790 ghcr.io/egeominotti/bunqueue:$TAGTo upgrade bunqueue
Section titled “To upgrade bunqueue”bun add bunqueue@latestDocker distribution variants
Section titled “Docker distribution variants”- Publish Alpine, Debian 13, Debian slim, and distroless variants to Docker Hub and GHCR for Linux amd64 and arm64. Keep unsuffixed version and latest tags on Alpine, with a shared non-root UID and persistent data volume.
- Remove the separate Bun runtime and build dependencies from production images.
Add the shell-free
healthcheck [url]HTTP probe for every variant. - Require native image checks for authentication, health, and SQLite recovery before publishing the exact tested images. Allow explicitly requested Docker rebuilds of an existing version through the full CI gates.
- Fail closed on Git tag lookup errors and add an explicit, version-checked root npm publication input that waits for all product and image checks.
- Pass npm credentials through Bun’s native
NPM_CONFIG_TOKENvariable so the CI authentication check and tarball publication receive the configured token. - Keep Docker Hub tags limited to release versions and variant aliases. Retain build references on GHCR and stop generating timestamp tags.
- Explain Docker base-image differences in the README and add a homepage Docker quickstart with variant selection, copyable commands and persistent storage.
Canonical client parity
Section titled “Canonical client parity”- Build
bunqueue-clientfrom the canonical Bun client source, sharing Queue, Worker, Job, FlowProducer, QueueEvents, QueueGroup, Simple Mode, groups, processor batches, options, errors, events, and return contracts. Preserve the historical SDK API at the explicit/legacyentry. - Block source/artifact drift and public declaration differences during the SDK build. Run shared native contracts, differential generated histories, and real package scenarios in Bun, Node, Deno, and Workers.
- Keep TCP clients from initializing local embedded storage during DLQ reads and asynchronous QueueGroup discovery.
- Preserve embedded shard selection under container CPU quotas, reject unreviewed Bun runtime access in portable builds, and verify strict NodeNext declarations plus sandboxed processors across the supported runtimes.
- Make archive cutoff regressions deterministic on Linux while retaining mutation coverage of the inclusive timestamp boundary.
- Audit the introductory, Queue, and Worker guides; correct token-bound transitions, bulk-admission semantics, option references, SDK examples, and empty table headings.
Queue and SDK performance
Section titled “Queue and SDK performance”- Flow creation now batches its telemetry writes after the atomic graph commit, preserving per-node routing and event order while removing repeated storage transaction overhead.
- Workflow-engine control jobs now use
removeOnCompleteby default, so completed internal orchestration jobs do not consume the shared completed-job retention budget. User workflow jobs and workflow state remain unchanged. - The TypeScript and Python network SDKs now wake saturated pull loops as soon as a job settles. In the native 20,000-job workload, median Worker time fell by 48.3% and 76.2% respectively without changing ACK/FAIL, heartbeat, lease, concurrency, or shutdown semantics.
PostgreSQL performance
Section titled “PostgreSQL performance”- Batched worker heartbeats now renew every valid fenced lease in one transaction and apply successful versions locally; invalid fences share one repair query instead of creating per-job transactions and projection reloads. Pre-write generation tickets prevent delayed heartbeat or batch-ACK responses from overwriting a newer completed, removed, retried, or re-leased projection.
- PostgreSQL event retention now consolidates exact transaction-private deltas into per-queue state and deletes only the oldest excess rows, avoiding both a retained-window index scan and shared counter locks on event writers.
- Dependency-free
PUSHBvalidation no longer builds three full compatibility snapshot views, and dashboard queue summaries aggregate job states in one snapshot pass instead of once per queue. - PostgreSQL schema version 21 adds event-retention state, transaction-private deltas, and guarded statement-level insert/delete triggers. Its schema guard now distinguishes real immediate primary keys from same-name unique indexes and atomically rebuilds malformed derived retention state. Upgrade every broker in a cluster together; memory and SQLite schemas and behavior are unchanged.
- Add standalone Windows arm64 and Linux musl x64/arm64 release binaries, completing the eight primary Bun targets. Require all eight compressed assets before publishing the release and include their SHA-256 checksums.
- Publish release images to Docker Hub at
egeominotti/bunqueuealongside GHCR, with matching version, latest, and variant tags for amd64 and arm64. - Update the README and installation/deployment guides with Docker Hub commands, the eight standalone downloads, and runtime and persistence requirements.
- Pin Bun to 1.4.2 across CI, SDK workflows, release images, and disposable test images; align deployment examples and the release-gate regression check.
Documentation
Section titled “Documentation”- Redesigned the homepage around the free MIT-licensed server, supported client runtimes, and separate server/embedded setup paths with explicit connection addresses. Introduction and installation now explain why the engine uses Bun while network clients keep their own runtime.
- Refreshed documentation typography, sidebar and table-of-contents contrast, breadcrumbs, Markdown source links, responsive headers and mobile spacing. Wide tables now preserve their semantics inside keyboard-scrollable regions.
- Fixed custom-hero skip-link targets and the homepage’s duplicate H1, while keeping existing documentation routes, tab synchronization and search.
- Added payload types to the Deno and embedded homepage examples, with a regression that compiles the published TypeScript snippets against both APIs. The Deno command now grants the worker’s required hostname permission, and JavaScript/TypeScript workers log connection errors.
- Corrected the SDK guide’s protocol description: v3 keeps job names separate from user payloads, including scalar, array and null payloads.
- Fixed a hosting rule that blocked the current API reference from indexing. Current API pages now receive canonical URLs and distinct metadata and are included in the sitemap; historical versions remain excluded. Social metadata and the homepage cover now reflect the free server and supported client runtimes.
- Added a dedicated bunqueue 2.9.4 performance comparison with a native, integrity-checked 11-version Embedded and TCP SQLite lifecycle campaign, methodology, resource results, interpretation guidance, and explicit limitations.
Thanks to 1 contributor!
Section titled “Thanks to 1 contributor!”← bunqueue v2.9.4 · Release on GitHub · Commits since v2.9.4 · Full changelog · All posts