Releases: tigerbeetle/tigerbeetle
0.16.62: Merge pull request #3310 from tigerbeetle/tobi/release_10_17
0.16.62
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.58
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.62
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.62-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.62
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.62
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.62
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.62
- Python:
pip install tigerbeetle==0.16.62
Changelog
Safety And Performance
-
Enable VOPR to detect when the message limit is exceeded.
-
Enable unit tests for deprecated operations.
-
Improve the release process by publishing to npm via trusted publishers.
Features
-
Rephrase the "debits first" explanation in documentation.
Internals
-
Refactor the message bus to save memory and tighten explicit
SendQueue
limits. -
Implement
BoundedArray
from scratch. -
Remove needless use of bounded array from REPL.
-
Refactor and cleanup Vortex.
TigerTracks 🎧
0.16.61: Merge pull request #3297 from tigerbeetle/release-2025-10-03
0.16.61
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.57
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.61
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.61-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.61
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.61
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.61
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.61
- Python:
pip install tigerbeetle==0.16.61
Changelog
Safety And Performance
-
Speed up cluster repair by adapting the pace and distribution of repair requests according to
observed network conditions. -
Speed up cluster repair by not delaying execution of committed prepares until the log is fully
repaired. -
Add a dedicated fuzzer for
MessageBus
.
Features
-
Add
--log-trace
for extra verbose logging. -
After successfully adding a test that tests tests in
#3136, we doubled down on this strategy
and are adding a metric for tracking metrics.
Internals
-
Use ISO4217 three-letter codes when writing about currencies (so,
USD
over$
). -
Clean up Adaptive Replication Routing implementation.
-
Speed up
zig build test
by removing false build-time dependencies.
TigerTracks 🎧

0.16.60: Merge pull request #3283 from tigerbeetle/release-2025-09-26
0.16.60
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.56
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.60
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.60-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.60
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.60
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.60
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.60
- Python:
pip install tigerbeetle==0.16.60
Changelog
Safety And Performance
-
Remove a copy from the StateMachine.
-
Update the k-way-merge to use the new
from_seed_testing()
. -
Improve metrics to use a reduce the worst case packet count (and benefit from a small memory
saving while we're at it).
Features
Internals
-
Refactor references to old time types to use the Instant and Duration types.
-
Added documentation for our CI entrypoint:
zig build ci
.
TigerTracks 🎧
0.16.59: Merge pull request #3271 from tigerbeetle/release-2025-09-19
0.16.59
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.55
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.59
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.59-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.59
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.59
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.59
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.59
- Python:
pip install tigerbeetle==0.16.59
Changelog
Safety And Performance
-
Introduce Least Significant Digit (LSD) radix sort in stdx.
-
Use radix sort in the memory tables to get more performance improvements.
-
Reduce tail latencies by tracking sorted runs and use k-way merge to sort them.
Collectively, these changes result in the following performance improvements on modern servers
(Hetzner AX102):Metric Before After Load accepted (tx/s) 414,375 606,258 Batch latency p100 115ms 75ms
Internals
-
Use Zig's new
std.testing.random_seed
to introduce genuine randomness in tests. -
Fix a crash due to corruption and misdirection found by the WIP message bus fuzzer.
TigerTracks 🎧

0.16.58: Merge pull request #3256 from tigerbeetle/release-2025-09-12
0.16.58
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.54
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.58
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.58-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.58
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.58
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.58
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.58
- Python:
pip install tigerbeetle==0.16.58
Changelog
Safety And Performance
-
Fix a bug where grid.cancel was erroneously being invoked during commit_stage=checkpoint_durable.
-
Remove peer type from MessageBuffer, maintaining it only at MessageBus level.
This solves a bug introduced by #3206,
due to divergent peer state between MessageBus and MessageBuffer. -
Low-level LSM performance improvements. The k-way merge iterator now uses a tournament tree
instead of a heap, we skip sorting of the mutable table if it's not needed, and we skip binary
search if possible by min/max key ranges. -
Use a different PRNG seed for Replica each time, rather than a fixed seed of the replica ID. This
PRNG controls things like exponential backoff jitter and the order of the blocks on which the grid
scrubber runs.
Features
-
Introduce
--requests-per-second-limit
to throttle CDC requests to TigerBeetle.Usage for this option is orthogonal to
--idle-interval-ms
and--event-count-max
, allowing
fine-tuning for low latency without overflowing the AMQP target queue. -
In order to avoid bimodality if a replica is down (eg, a client sends a request, doesn't hear
anything, eventually times out and tries a different replica) clients now proactively send their
requests to the primary and a randomly selected replica.Backups can also send replies directly to clients, meaning that a client could be completely
partitioned from the primary, but still remain available.
Internals
-
Mark grid cache blocks as MADV_DONTDUMP, making core dump size tractable even with large caches.
-
Preparation for the Zig 0.15.1 upgrade.
-
A host of multiversion improvements! Multiversioning is now a proper interface, rather than being
scattered about. Additionally, Windows support is now significantly more robust, and will be
integration tested like the other platforms in the next release.
TigerTracks 🎧

0.16.57
0.16.57
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.53
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.57
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.57-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.57
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.57
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.57
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.57
- Python:
pip install tigerbeetle==0.16.57
Changelog
Safety And Performance
-
Improved performance in
set_associative_cache.zig
by using Fastrange and SIMD. -
Improved performance and better codegen in
aegis.zig
by avoiding aliasing. -
Retain table repair progress across checkpoint boundaries,
to reduce the time to complete state sync for active clusters. -
Use the
NOSIGNAL
flag with both asynchronoussend
and synchronoussend_now
.
This avoids receiving a possibleSIGPIPE
signal raised by the kernel. -
Improve the Rust client API to make the returned future thread-safe.
Thanks @michabp! -
Fix the Go client to make the subfolder with external files required by CGO
compatible withgo vendor
.
Thanks @itzloop. -
Fix the Python client to make
close()
async onClientAsync
.
Internals
-
Removed support for closed loop replication in repair and sync protocols.
-
Ban equality and inequality comparisons with
error
values, as they may silently
perform an untyped comparison.
Enforce handling errors withswitch
blocks instead. -
Consolidate all Windows APIs we use (not present in Zig’s
std
) understdx.windows
. -
Improve upgrade tests.
-
Improve the documentation to explain adaptive routing and add notes about
using CDC in production. -
Moves the
unshare
code intostdx.unshare
and uses it for both Vortex and CFO.
Also fixes howvortex run
was handling the child process error code.
TigerTracks 🎧

0.16.56: Merge pull request #3197 from tigerbeetle/tobi/release
0.16.56
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.52
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.56
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.56-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.56
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.56
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.56
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.56
- Python:
pip install tigerbeetle==0.16.56
Changelog
Safety And Performance
-
Improve the speed of trailer repairs by initiating repair requests more proactively.
-
Add Vortex to CI to test clients (Java, Zig, Rust).
-
Ensure only the primary responds to VSR repeat requests.
Features
-
Add a typed Python client (thanks @stenczelt).
Internals
-
Simplify budgeting for VSR repairs.
-
Refactor
ReleaseList
to contain the release logic. -
Improve naming for journal and grid message budgets.
TigerTracks 🎧

0.16.55
0.16.55
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.51
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.55
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.55-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.55
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.55
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.55
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.55
- Python:
pip install tigerbeetle==0.16.55
Changelog
Safety And Performance
-
Make repair timeout reliably fire in a loaded cluster processing small batches.
-
Make
tigerbeetle format
concurrent and only write essential data.
This speeds up the time to format considerably. -
Cache prepares from the future, to help avoid needing to repair the WAL near checkpoints when a
backup is a little behind primary.
Features
-
Don't unlink data file on formatting failure.
-
Use correct default statsd port (8125).
-
Remove translation logic from old checkpoint state to new. Note that this means that
tigerbeetle inspect
will no longer decode superblocks from 0.16.25 or older, until
they are upgraded to at least 0.16.26.
Internals
-
Improvements to the balance bounds, rate limiting, and two phase transfers recipes. Thanks @snth!
-
Use true quine to generate unit tests.
-
Drop
SigIllHandler
. This was supposed to print a nice error message on unsupported
architectures, but we hitSigIll
in Zig's_start
, before we get to ourmain
. -
Add constants for KiB thru PiB.
TigerTracks 🎧

0.16.54
0.16.54
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.50
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.54
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.54-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.54
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.54
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.54
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.54
- Python:
pip install tigerbeetle==0.16.54
Changelog
Safety And Performance
-
Speed up repair by removing a round-trip to fetch headers.
-
Check checksums when downloading Zig during the build.
Features
-
Add documentation for Rust client library.
-
Test that release artifacts are fully reproducible.
Internals
-
Add a test to test that tests include all the tests.
-
Remove local variable aliasing as per TigerStyle.
-
@splat
all the things. -
Use double-entry accounting for allocations.
-
Remove
git-review
. -
Show total number of VOPR runs for release.
TigerTracks 🎧

0.16.53
0.16.53
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.49
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.53
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.53-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version
.
- .NET:
dotnet add package tigerbeetle --version 0.16.53
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.53
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.16.53
. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.53
- Python:
pip install tigerbeetle==0.16.53
Changelog
Safety And Performance
-
Allowing EWAH to decode bigger free set into smaller. This fixes the
--limit-storage
flag. -
Fix Node v24 client.
Features
-
Add compaction/checkpoint/journal slot count to
tigerbeetle inspect
.
Internals
-
During tests, verify that grid read errors correspond to either storage faults or ongoing state
sync. -
Teach snaptest how to decode/encode hex & zon.
-
Fix typo in
manifest_log_fuzz
. -
Test
CreateTransfersResult.exists
in VOPR. -
stdx
refactoring.
TigerTracks 🎧
