Releases: tigerbeetle/tigerbeetle
0.16.64: Merge pull request #3366 from tigerbeetle/release-2025-11-07
0.16.64
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.60
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.64 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.64-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.64 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.64 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.64. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.64 - Python:
pip install tigerbeetle==0.16.64
Changelog
Internals
-
Parametrize code over
Operationrather than the entireStateMachine. Previously, client code
used to have a dependency on the implementation code of the concrete state machine, whereas it
only needs to know the types of the operations involved. -
Remove
usize
from constants, scans and CLI arguments. -
Remove
StateMachine's dependency on a specificStateMachineConfigand rather use the global
constants. -
Simplify the Rust client's build script and bring it inline with other clients by making it no
longer driver TigerBeetle's build.
TigerTracks 🎧
0.16.63: Merge pull request #3352 from tigerbeetle/release-2025-10-31
0.16.63
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.59
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.63 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.63-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.63 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.63 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.63. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.63 - Python:
pip install tigerbeetle==0.16.63
Changelog
Safety And Performance
-
Allow backups to accept prepares from the next checkpoint when they replace already committed
prepares. -
Assert the size of
HeadersandStartViewmessages. -
Correctly reset the
pulse_next_timestamp. -
Disable
config.verifyin release builds, while promoting several assertions gated byverify
to regular assertions. -
Fix an unhandled error on unreachable networks that could cause liveness issues.
Also ban all usage ofposix.send()in favor ofposix.sendto(). -
Free up about 300MiB of memory by sharing the same buffer for in-place radix sort.
Features
-
Clarify that the
TBID, which is au128number, only specifies the bit layout. -
Introduces
tigerbeetle inspect integrityto verify offline that a datafile is uncorrupted. -
Prepare the Rust client for publication.
Internals
-
Improve duration parsing by removing ambiguous units and adding fuzz tests.
-
Update data file documentation to correctly state the grid block size as 512 KiB.
-
Clarify the release process in case a version of TigerBeetle is skipped.
-
Fix invalid payload references after modifying the active tag in a tagged union.
-
Remove unnecessary deduplication logic when scanning from memory tables,
since #2592 already
introduced deduplication during sorting. -
Reserve the maximum release version (65535.x.x) for testing clusters (
cluster_idzero). -
#3342,
#3338,
#3330,
#3347,
#3341Various Vortex and CFO improvements.
-
Fix the build command for clients in HACKING.md and other typos.
Thanks @gharbi-mohamed-dev!
TigerTracks 🎧
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-javainpom.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
SendQueuelimits. -
Implement
BoundedArrayfrom 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-javainpom.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-tracefor 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,
USDover$). -
Clean up Adaptive Replication Routing implementation.
-
Speed up
zig build testby 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-javainpom.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-javainpom.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_seedto 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-javainpom.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-limitto throttle CDC requests to TigerBeetle.Usage for this option is orthogonal to
--idle-interval-msand--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-javainpom.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.zigby using Fastrange and SIMD. -
Improved performance and better codegen in
aegis.zigby avoiding aliasing. -
Retain table repair progress across checkpoint boundaries,
to reduce the time to complete state sync for active clusters. -
Use the
NOSIGNALflag with both asynchronoussendand synchronoussend_now.
This avoids receiving a possibleSIGPIPEsignal 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
errorvalues, as they may silently
perform an untyped comparison.
Enforce handling errors withswitchblocks 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
unsharecode intostdx.unshareand uses it for both Vortex and CFO.
Also fixes howvortex runwas 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-javainpom.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
ReleaseListto 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-javainpom.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 formatconcurrent 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 inspectwill 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 hitSigIllin Zig's_start, before we get to ourmain. -
Add constants for KiB thru PiB.
TigerTracks 🎧


