PackageTrack
Sign in Get early access

tigerbeetle

The TigerBeetle client for C# and .NET

0.17.9 8.8M downloads/mo #2994 most downloaded on NuGet tigerbeetle/tigerbeetle

What this package is like to depend on

Last release 1 months ago

06 Jul 2026

Ships on a steady schedule

a new release about every 2 weeks

Some releases are documented

notes for 84 of 299 stable releases

1 version withdrawn

withdrawn after publishing

127 years old

300 releases · first in 1900

31 releases in the last 12 months

see the full history below

Release timeline

300 releases · Jan 1900 to Jul 2026
1901 1917 1933 1949 1965 1981 1997 2013
Release Pre-release Withdrawn

Releases

latest 60 of 300
  1. 0.17.9 06 Jul 2026
    Release notes

    Released: 2026-07-03

    Safety And Performance

    • #3810

      Revert unique keys, which caused compatibility issues (see #3802).

    • #3822, #3844

      Extend inspect constants to catch schema changes and prints the Checkpoint Schedule section.

    • #3845

      Micro-optimization to the radix sort algorithm to avoid copies when dealing with large stack-allocated values.

    • #3840

      Online schema validation, ensuring coherent key_min/key_max when reading data.

    Features

    • #3816

      Improve the Ruby client migration guide.

    • #3836, #3832, #3835, #3834

      Various docs improvements, including adding the Ruby client and print layout support.

    • #3830, #3811

      Add a u128 bounds check in the Ruby client and make its status return type more idiomatic.

    • #3827

      Improve the Rust client, removing the bitflags dependency and enabling overflow checks.

    • #3852

      Experimental CLI --memory flag that automatically sizes the grid and object caches to use all assigned memory.

    Internals

    • #3825, #3831

      Improve various code comments.

    • #3793

      Switch to stdx.SocketAddress.

    • #3826

      Fail on curl instead of unzip for network flakes during Vortex builds.

    • #3813

      Expose TimeSim and fixtures in VSR.

    • #3820

      Introduce the canonical workload principle for benchmarks.

    • #3682

      Make publishing TigerBeetle client artifacts idempotent.

    • #3817

      Workaround MacOS builds on Zig 0.14.1 (see issue).

    TigerTracks 🎧

    Open source →
  2. 0.17.8 22 Jun 2026
    Release notes

    Released: 2026-06-19

    Safety And Performance

    • #3802

      Fix a bug in which the stash would overflow due to excess tombstones.

    • #3798

      Fuzz scans over mutable secondary indexes, and fix an assertion.

    • #3797

      Fix commit stall injection for clusters with 8 or more active clients.

    Features

    • #3787

      Prepare Ruby client for publishing.

    • #3792

      Add gauge metric to record replica start time.

    Internals

    • #3795

      Add case conversion helpers to stdx.

    • #3781

      Add stdx.net with IP address implementation.

    • #3801

      Add FuzzIterations abstraction to control fuzzer smoke test duration.

    TigerTracks 🎧

    Open source →
  3. 0.17.7 15 Jun 2026
    Release notes

    Released: 2026-06-12

    Note: it is advisable to skip 0.17.6 and 0.17.7 and upgrade directly to 0.17.8 due to a potential crash. If you encounter the crash, it can be mitigated by temporarily increasing the object cache size. See #3802.

    Safety And Performance

    • #3786

      Significantly improve the TigerBeetle REPL parser. Ensure that users see correct and useful error messages, and fix some inconsistencies.

      Introduce snapshot testing and proper fuzzing, which allowed fixing some latent parsing bugs.

    Internals

    • #3779

      Replace hatchling as the TigerBeetle python client packager with our own zig wheel builder, which allows reproducible builds without dependencies.

    • #3783

      Allow passing timeouts for all shell operations called from zig tooling.

    • #3785

      Ensure CI release and release validation jobs don't run concurrently to reduce flakes induced by CI job race conditions.

    TigerTracks 🎧

    Open source →
  4. 0.17.6 08 Jun 2026
    Release notes

    Released: 2026-06-05

    Note: it is advisable to skip 0.17.6 and 0.17.7 and upgrade directly to 0.17.8 due to a potential crash. If you encounter the crash, it can be mitigated by temporarily increasing the object cache size. See #3802.

    Safety And Performance

    • #3778, #3762

      Fix resource leak & potential overflow in the .NET, Java, and Go clients.

      Thank you @jf-li00 for spotting these!

    • #3673, #3770

      Substantially reduce tail latency by performing compaction merge incrementally as opposed to a single big merge at the end of the bar.

    • #3748

      Make space for replica connections on the accept path, evicting clients or random peers that may be hogging TCP connections.

    • #3769

      Various improvements to the ping-pong protocol between the client and cluster.

      Specifically, clients now proactively send a ping while registering a session with the cluster (as opposed to waiting 30 seconds), and the cluster may now respond with an eviction message when a ping is received (as opposed to waiting for the next request from an evicted client).

    • #3735

      Improve fuzzing around LSM tree deletions on the lookup path, which now checks for tombstones.

    • #3774

      Guarantee that the StateMachine works on cache-line-aligned buffers; callers can take advantage of this alignment to efficiently reinterpret the bytes.

    Internals

    • #3780

      Ban the usage of std.fmt.parseInt, which is useful for interactive use-cases like CLI/REPL, but a bit too permissive for protocols.

    TigerTracks 🎧

    Open source →
  5. 0.17.5 01 Jun 2026
    Release notes

    Released: 2026-05-29

    Note: it is advisable to skip 0.17.5 and upgrade directly to 0.17.8 due to a potential crash on upgrade (see #3808).

    Safety And Performance

    • #3744

      Fix a possible Node.js integer overflow panic.

    • #3717

      Fix a potential crash in the I/O event listener.

    • #3709

      Correct assertions in the code.

    • #3592

      Run DISCARD when formatting a block device on Linux, improving SSD performance.

    • #3712

      Replace Java's assert keyword with AssertionError.assertTrue to prevent silent failures.

    • #3686

      Refactor the grid to own all blocks through reference counting.

    • #3702, #3730

      Inject stalls on the primary more accurately by observing a backup's op - commit_min, improving throughput.

    • #3704

      Fan out VSR prepare timeout retries.

    • #3729

      Explicitly fail on invalid enum values in AMQP parsing per Swival security audit recommendation.

    • #3726

      Add an assertion to CheckpointTrailer.open as per Swival security audit recommendation.

    Features

    • #3733

      Add a Ruby client. Thanks @citizen428!

    • #3750

      Switch from ArenaAllocator to DebugAllocator to fix ArenaAllocator rounding up allocations by large amounts.

    Internals

    • #3753

      Improve the names of some VSR commands.

    • #3763

      Make release validation run from main, making it easier to fix when release validation fails.

    • #3746, #3752

      Move shell.zig into stdx, making it more robust for different zig project setups.

    • #3745

      Show the freshness of performance results in DevHub.

    • #3716, #3710

      Cleanup Time usage and drop std.time.Timer uses ahead of its removal in Zig 0.16.

    • #3721

      Raise the clock-skew warning threshold from 1ms to 50ms to prevent CI flake.

    • #3703

      Introduce configurable primary keys and multiple unique keys to LSM Forests. This enables querying two-phase transfers by pending_id.

    • #3711

      Fix various tb_client issues, enable Rust client CI on Windows.

    • #3734

      Remove the cancel_all feature used to shutdown tb_client on Linux, instead terminate message bus connections explicitly.

    • #3724

      Dial up concurrency in the Node.js client test to reliably race destroy against create.

    • #3736, #3738

      Fix flaky Vörtex and Windows cache CI failures.

    TigerTracks 🎧

    Open source →
  6. 0.17.4 11 May 2026
    Release notes

    Released: 2026-05-08

    As of TigerBeetle 0.17.4, the minimum required Linux kernel version is 5.11.

    Safety And Performance

    • #3619

      Refactor and simplify the Linux IO event loop, by directly embedding a timeout when calling io_uring_enter, making next_tick a top level function (instead of executing all callbacks back to back) and reentering the kernel after each callback.

      Combined, these changes give a ~8% improvement on the standard benchmark, improve tail latencies in certain edge cases, as well as prevent tick starvation under heavy load or slow disks.

    • #3701

      Fix a bug in reformat caused by invoking IO.run from within IO.run_for_ns.

    • #3680

      Track the object caches as metrics, to help with sizing (e.g., --cache-accounts).

    • #3693

      Fix file permissions to no longer ask for world readable/writable files when creating them. Normally, this does get prevented by the default umask.

    Internals

    • #3698

      Add warnings when the event loop is slow.

    • #3694, #3684

      Cache the Zig download for test workflows, add the flake count to Devhub and miscellaneous CI fixes.

    TigerTracks 🎧

    Open source →
  7. 0.17.3 04 May 2026
    Release notes

    Released: 2026-05-01

    Safety And Performance

    • #3669, #3668

      Switch replication strategy from adaptive replication routing to star.

      Star replication involves the primary broadcasting prepares to all backups and handles network jitter better, leading to lower p100 latencies in cross-region deployments.

    • #3665, #3671, #3676

      Guard against supply-chain attacks via GitHub actions by pinning them to the latest commit SHAs.

    • #3659

      Recompute the checksum body only for operations that modify the body.

    • #3679

      Simplify the control flow of Zig-Zag merge using galloping search, to drain the keys and avoid rebuilding the tree multiple times.

    Internals

    • #3678, #3675

      Workaround various flakes caused by GitHub actions.

      Specifically, actions cache flakes on Windows, and gh run list sometimes returns no response.

    • #3672

      Fix a flaky client test due to an overly conservative timeout for expiring transfers.

    • #3674

      Make release validation work cross-platform.

    • #3683

      Fix the Go client documentation for posting/voiding pending transfers.

    TigerTracks 🎧

    Open source →
  8. 0.17.2 27 Apr 2026
    Release notes

    Released: 2026-04-24

    Safety And Performance

    • #3660

      When a replica sends a message to itself, copy in message body before computing checksum_body and checksum.

    Features

    • #3657

      Track value_count_visible as a metric, per tree. This is useful for counting the number of accounts/transfers in the database.

    Internals

    • #3661

      Test that checksum works on unaligned data.

    TigerTracks 🎧

    Open source →
  9. 0.17.1 20 Apr 2026
    Release notes

    Released: 2026-04-17

    Safety And Performance

    • #3643

      Make VSR repair less eager, cutting request_prepare traffic by ~70-80% and request_headers by ~80-90% for minor overhead.

    • #3600

      Improve compaction table-selection from O(a * log b) to O(a + b), especially noticeable at 20TB+.

    Internals

    • #3637

      Refactor stdx.flags to own its allocator and return trailing -- args as a slice.

    • #3642

      Rename VSR view-change messages: DoViewChange -> JoinView, StartView -> View, StartViewChange -> ExitView.

    • #3652

      Re-enable VOPR in CI.

    • #3649

      Increase tick budget for the Vortex upgrade/recover test, which was occasionally timing out.

    • #3647

      CI: fetch git tags in the release-validate job.

    • #3648

      Docs: drop an overly wide comparison table from the API changes page.

    • #3650, #3651

      Docs: remove references to the retired Startup Program.

    • #3653

      Clean up TigerTracks in CHANGELOG.md by only using song titles.

    TigerTracks 🎧

    Open source →
  10. 0.17.0 13 Apr 2026
    Release notes

    Released: 2026-04-10

    This release improves create_accounts and create_transfers operations. They now return timestamps of newly created objects, allowing the application to learn the resulting global order of events without additional roundtrips. As usual, this release remains wire-compatible with previous clients. To gain access to the new APIs, please upgrade clients to version 0.17.0. Refer to the API changes page for details.

    Safety And Performance

    • #3599

      Improve repair performance by tracking per-replica repair budgets, to prevent a slow replica from tying up the global budget.

    • #3618, #3623, #3630, #3638

      Add randomness to repair timeouts and faulty block iteration, to guard against resonance liveness bugs.

    • #3612

      Test cluster upgrades using real TigerBeetle binaries in Vortex.

    Features

    • #3258

      Change the return type and semantics of the create_{accounts,transfers}.

    • #3574

      Add the API changes page to the docs: https://docs.tigerbeetle.com/coding/api-changes.

    • #3624

      Remove default initialization from Python client's AccountFilter and QueryFilter.

    • #3607

      Querying with a limit which would not fit in the maximum message size now fails with TooMuchData in the client, rather than silently truncating results.

    • #3593

      Add metric tracking recent client min/max releases seen by the cluster.

    • #3617

      Fix several bugs in the client_request_round_trip metric.

    • #3620

      Make the Golang client API more idiomatic using *big.Int.

    • #3628

      While generating a TigerBeetle time-based ID, clients now wrap the random bits and increment the timestamp bits when the former overflows.

      Earlier, clients panicked when random bits overflowed on increment.

    Internals

    • #3609

      Cache Zig compiler on CI.

    • #3604, #3622

      IO/Linux: Add another attempt to the flock() retry loop.

    • #3634, #3629, #3635

      Various Vortex and CFO fixes.

    • #3632

      Docs: Clarify the number of replicas required for upgrades.

    • #3595

      Docs: Fix a flipped account flag in balance-invariant-transfers.md.

    TigerTracks 🎧

    Open source →
  11. 0.16.78 23 Mar 2026
    Release notes

    Released: 2026-03-20

    Safety And Performance

    • #3581

      Fix an over-tight assert -- we may still be writing non-repair blocks at the start of checkpointing.

    • #3586

      Fix a potential liveness issue where we try to repair a block while simultaneously writing to it.

    Internals

    • #3585

      tigerbeetle inspect constants now prints out the number of Transfers per table.

    • #3579, #3589, #3591, #3584, #3594

      Fix the CI release validation job.

    • #3583

      Refactor our iops.zig to a more appropriate home in stdx.

    TigerTracks 🎧

    Open source →
  12. 0.16.77 16 Mar 2026
    Release notes

    Released: 2026-03-13

    Note: it is advisable to skip 0.16.77 and upgrade directly to 0.16.78, due to potential liveness issues (see #3581 and #3586).

    Safety And Performance

    • #3485

      Rework how eviction is signaled in tb_client to avoid race conditions between eviction and shutdown, unify notification logic, and add assertions for running on the correct thread.

    • #3553

      Optimize compaction performance by removing IO stalls at the end of each beat, allowing IO to overlap with other work and increasing throughput by ~4%.

    • #3567

      Allow the grid to serve reads directly from write queues, improving performance for blocks being currently repaired or created.

    • #3575

      Work around a miscompilation in Zig's LLVM backend by downcasting alignment in stdx.equal_bytes.

    Internals

    • #3572

      Prepare the Rust client for release by removing dependencies (anyhow, futures-channel), and setting up automated release builds (not enabled yet).

    • #3537

      Fuzz updates on CompositeKeys, identifying a bug in a proposed prefix-only sort optimization.

    • #3566

      Add a new metric to track time spent on CPU work, specifically callbacks.

    • #3569

      Tighten units for IOPS, concurrency, and durations in config.

    • #3576

      Fix worst case sizing and add prefetch in the scan fuzzer, to mirror state machine logic.

    TigerTracks 🎧

    Open source →
  13. 0.16.76 09 Mar 2026
    Release notes

    Released: 2026-03-06

    Features

    • #3556

      Expose CLI arguments to diagnose connectivity issues with AMQP and TigerBeetle during CDC.

      Users can now specify --amqp-timeout-seconds and --tigerbeetle-timeout-seconds (both default to 30), which define the maximum time to wait for a reply from AMQP and TigerBeetle respectively.

    • #3565

      Record request timing metrics for reserved VSR operations.

      This gives users visibility into the latency of client registrations (the first request a client sends to the cluster), using the register operation.

    Internals

    • #3543

      Add tidy check to flag functions with length [71, 72], as per TigerStyle.

      This check intentionally incentivizes shortening the length to <=70 for functions that are just over, as a starting point towards the 70-line limit.

    • #3561, #3560, #3559, #3558

      Various documentation improvements.

    • #3552

      Use a fixed, high retry delay instead of exponential backoff to work around GitHub availability.

    • #3568

      Various refactors and debug logging improvements in compaction.

    • #3555

      Add logging to clarify the semantics of multiversion upgrade polling.

    TigerTracks 🎧

    Open source →
  14. 0.16.75 02 Mar 2026
    Release notes

    Released: 2026-02-27

    Safety And Performance

    • #3529

      Fix the fast path check for key_range_contains. Previously, the fast path would never be taken due to checking snapshot_latest incorrectly.

    • #3545

      Enable transparent huge pages on Linux - relieving TLB pressure and giving a nice little throughput bump!

    Internals

    • #3549, #3547, #3538

      Rage against the (GitHub) Machine.

    • #3541

      Fix an overestimation of the number of index beats that will be generated by compaction.

    TigerTracks 🎧

    Open source →
  15. 0.16.74 23 Feb 2026
    Release notes

    Released: 2026-02-20

    Safety And Performance

    • #3528

      Add a replica test for an asymmetric partition where the primary can never receive messages, yet still does not abdicate. This test documents the current behavior, which must be fixed.

    Internals

    • #3400

      Refactor LSM scan direction handling to simplify key comparisons in ascending and descending order.

    • #3518

      Reduce the internal I/O thread stack size of the TigerBeetle client to 512 KiB.

    • #3525

      Bump the minimum rustc version to 1.71 for building the TigerBeetle Rust client.

    TigerTracks 🎧

    Open source →
  16. 0.16.73 16 Feb 2026
    Release notes

    Released: 2026-02-13

    Safety And Performance

    • #3505

      Making AOF recovery deterministic, and prevent interference from non-aof-recovery requests.

    • #3508, #3516

      Improve Rust client testing.

    Internals

    • #3511

      Strip tracking parameters from Spotify links.

    • #3517

      Include vortex zig driver executable in release artifacts, in preparation for multiversion testing in vortex.

    • #3522

      Add metrics tracking LSM write amplification.

    • #3523

      Reduce the frequency of metrics tracking in the message bus.

    TigerTracks 🎧

    Open source →
  17. 0.16.72 10 Feb 2026
    Release notes

    Released: 2026-02-06

    Safety And Performance

    • #3471

      Dramatically improve View Change time with a new FaultDetector that estimates the probability of a primary crash.

    Features

    • #3484

      Track commit_timestamp and message_bus connections.

    • #3497 #3421

      Add support for rotating AOF files without signals.

    Internals

    • #3491 #3496 #3494 #3490 #3495 #3489 #3488

      Various documentation improvements and clarifications.

    • #3503

      Clarify that PR descriptions are ephemeral and do not replace well-written commit messages.

    • #3504

      Capture additional Vortex logs during end-to-end testing.

    • #3499 #3501 #3498

      Code cleanup and an increase in the maximum number of accounts supported by the benchmark.

    TigerTracks 🎧

    Open source →
  18. 0.16.71 01 Jan 1900 withdrawn

    Nothing published for this version

  19. 0.16.70 02 Feb 2026
    Release notes

    Released: 2026-01-31

    Safety And Performance

    • #3482

      Add basic tracing/metrics to event loop times. Also fix a bug in "max" timing metrics.

    • #3475

      Rewrite and improve performance of tree-of-losers k-way-merge implementation.

    • #3479

      Use callconv(.@"inline") for radix sort key_from_value function.

    • #3478

      Add --id-order=tbid to benchmark. This makes the benchmark more accurately resemble a real-world workload. Additionally, with this setting multiple runs of the benchmark will not encounter id collisions.

    • #3476

      Prefetch index blocks during compaction, so that we don't need to block waiting for the read.

    Features

    • #3453

      Ensure public contract is stated in the tb_client header file.

    Internals

    • #3480

      Make CFO crash less easily if fuzzer behaves unexpectedly. Also make local testing of CFO more similar to real CFO execution.

    TigerTracks 🎧

    Open source →
  20. 0.16.69 26 Jan 2026
    Release notes

    Released: 2026-01-23

    Features

    • #3464

      Document client cancellation policy.

    • #3460

      Move ARCHITECTURE.md up in the docs hierarchy. It's a part of internal docs, but is well worth reading for anyone curious about TigerBeetle internals!

    Safety And Performance

    • #3426

      Enable history by default for tigerbeetle benchmark. Argument-less benchmark captures our current understanding of a representative workload, so the results are not guaranteed to be comparable across tigerbeetle versions.

    Internals

    • #3468

      Tighten up CLI parsing to forbid accidentally allowed signs. E.g, --cluster=+0 is now an error.

    • #3467

      Make experimental AOF feature a run-time, rather than compile-time flag.

    • #3465

      Simplify debugging devhub by cloning (but not pushing) devhub-db during local development.

    • #3457

      Use --cache-grid to reduce memory in tests of Rust client.

    • #3440

      Simplify state machine by using actual op number instead of symbolic snapshot_latest for LSM lookups.

    TigerTracks 🎧

    Open source →
  21. 0.16.68 12 Jan 2026
    Release notes

    Released: 2026-01-09

    Safety And Performance

    • #3436

      Fix a potential resource leak in SegmentedArray during initialization failure.

    Features

    • #3454

      Rust client: Display platform information in the error message when attempting to run on unsupported platforms.

    • #3449

      Node client: Switch to process.report.getReport() for more reliable Musl libc detection.

    Internals

    • #3458

      Docs: Clarify the prose in the balance-invariant transfer recipe.

    • #3455

      Refactor DateTimeUTC to InstantUnix for tracking real, non-monotonic time.

    • #3452

      Refactor Vörtex network handling.

    • #3432

      Remove confusing "slow request" warning from VSR logs.

    • #3439 #3448

      Improve logging consistency for headers and checksums. Thanks @fdesu!

    • #3435 #3438 #3434 #3430

      Various microbenchmark improvements for checksums, k-way-merge, and binary search.

    • #3444 #3441 #3422

      stdx: Remove stream_precedence, improve shuffle implementation robustness, and document monotonicity of Instant.

    • #3451 #3450 #3447 #3428

      CI and Build: Reduce Java flakiness, remove APK workarounds, simplify release validation, and deduplicate tb_client builds.

    • #3431 #3425

      Devhub: Throw Error instead of String in asserts, and support more units.

    • #3446 #3437 #3445 #3427 #3419

      Minor fixes, tidy ups, and documentation improvements. Thanks @dsp and @amiraliakbari!

    TigerTracks 🎧

    Open source →
  22. 0.16.67 15 Dec 2025
    Release notes

    Released: 2025-12-12

    Safety And Performance

    • #3415

      Speed up VOPR storage and network during liveness mode for fast convergence, to avoid false positives.

    • #3402

      Don't discard high 16 bits of timestamp when generating ID's with the Node.js client.

    • #3411

      Relax VOPR condition for truncating acked ops to prevent false positives.

    • #3405

      Implement a micro-benchmarking harness, to protect the benchmarks from bitrot.

    Features

    • #3386

      Add more documentation details around query multibatching.

    Internals

    • #3414

      Make Pending!?Value the canonical stream signature. This type is chosen because it is the orthogonal composition of iteration and asynchrony.

    • #3417

      Prevent "out (disk) of space" failures during CI.

    • #3396

      Make DSL for parsing positional CLI flags more natural.

    • #3375

      Remove dead code from zig-zag merge join.

    • #3389

      Improve how Vörtex handles SIGTERM.

    • #3391 #3394

      Improve the way we handle ratios in stdx, and refactor parse_flag_value.

    • #3395

      Update TigerStyle with more context for the line and function length limits.

    • #3390

      Improve some spelling and grammar in start.md. Thanks @elness!

    TigerTracks 🎧

    Open source →
  23. 0.16.66 24 Nov 2025
    Release notes

    Released: 2025-11-21

    Safety And Performance

    • #3379

      Fix non-monotonic ID generation in the Python client. Thank you for spotting this, @rbino!

    Internals

    • #3371

      Introduce op_checkpoint_sync to simplify assertions during state sync.

    • #3353

      Run Vörtex in CFO (Continuous Fuzzing Orchestrator).

    • #3380

    • #3384

      Various fixes for Vörtex in CFO.

    TigerTracks 🎧

    Open source →
  24. 0.16.65 17 Nov 2025
    Release notes

    Released: 2025-11-14

    Safety And Performance

    • #3377

      Fix overzealous assertion that didn't account for state sync while accepting start view headers.

    Internals

    • #3369, #3370, #3374

      Various MessageBus refactors to reduce code bloat.

      Earlier, the connection and message passing logic was spread out across the MessageBus and Connection types. Now, all that logic is contained within the MessageBus type, with Connection only maintaining connection state between two peers.

    • #3367

      Fix bug in cut_suffix wherein the suffix itself was being returned instead of the prefix.

    • #3365

      Make IO file descriptor a Zig optional, as opposed to using INVALID_SOCKET.

    • #3364

      Add support for canceling individual inflight IO operations on Linux.

      Earlier, Linux IO only allowed canceling all asynchronous in-flight operations.

    TigerTracks 🎧

    Open source →
  25. 0.16.64 10 Nov 2025
    Release notes

    Released: 2025-11-07

    Internals

    • #3344, #3362

      Parametrize code over Operation rather than the entire StateMachine. 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.

    • #3358, #3356, #3357

      Remove usize from constants, scans and CLI arguments.

    • #3351

      Remove StateMachine's dependency on a specific StateMachineConfig and rather use the global constants.

    • #3343

      Simplify the Rust client's build script and bring it inline with other clients by making it no longer driver TigerBeetle's build.

    TigerTracks 🎧

    Open source →
  26. 0.16.63 03 Nov 2025
    Release notes

    Released: 2025-10-31

    Safety And Performance

    • #3294, #3336

      Allow backups to accept prepares from the next checkpoint when they replace already committed prepares.

    • #3323

      Assert the size of Headers and StartView messages.

    • #3318

      Correctly reset the pulse_next_timestamp.

    • #3316

      Disable config.verify in release builds, while promoting several assertions gated by verify to regular assertions.

    • #3335

      Fix an unhandled error on unreachable networks that could cause liveness issues. Also ban all usage of posix.send() in favor of posix.sendto().

    • #3334

      Free up about 300MiB of memory by sharing the same buffer for in-place radix sort.

    Features

    • #3302

      Clarify that the TBID, which is a u128 number, only specifies the bit layout.

    • #3291

      Introduces tigerbeetle inspect integrity to verify offline that a data file is uncorrupted.

    • #3254

      Prepare the Rust client for publication.

    Internals

    • #3312, #3324

      Improve duration parsing by removing ambiguous units and adding fuzz tests.

    • #3313

      Update data file documentation to correctly state the grid block size as 512 KiB.

    • #3311

      Clarify the release process in case a version of TigerBeetle is skipped.

    • #3317

      Fix invalid payload references after modifying the active tag in a tagged union.

    • #3339

      Remove unnecessary deduplication logic when scanning from memory tables, since #2592 already introduced deduplication during sorting.

    • #3346

      Reserve the maximum release version (65535.x.x) for testing clusters (cluster_id zero).

    • #3342, #3338, #3330, #3347, #3341

      Various Vortex and CFO improvements.

    • #3332, #3331

      Fix the build command for clients in HACKING.md and other typos. Thanks @gharbi-mohamed-dev!

    TigerTracks 🎧

    Open source →
  27. 0.16.62 20 Oct 2025
    Release notes

    Released: 2025-10-17

    Safety And Performance

    • #3304

      Enable VOPR to detect when the message limit is exceeded.

    • #3307

      Enable unit tests for deprecated operations.

    • #3309

      Improve the release process by publishing to npm via trusted publishers.

    Features

    • #3299

      Rephrase the "debits first" explanation in documentation.

    Internals

    • #3300

      Refactor the message bus to save memory and tighten explicit SendQueue limits.

    • #3296

      Implement BoundedArray from scratch.

    • #3292

      Remove needless use of bounded array from REPL.

    • #3308

      Refactor and cleanup Vortex.

    TigerTracks 🎧

    Open source →
  28. 0.16.61 06 Oct 2025
    Release notes

    Released: 2025-10-03

    Safety And Performance

    • #3263

      Speed up cluster repair by adapting the pace and distribution of repair requests according to observed network conditions.

    • #3282

      Speed up cluster repair by not delaying execution of committed prepares until the log is fully repaired.

    • #3249, #3293, #3289

      Add a dedicated fuzzer for MessageBus.

    Features

    • #3212

      Add --log-trace for extra verbose logging.

    • #3286

      After successfully adding a test that tests in #3136, we doubled down on this strategy and are adding a metric for tracking metrics.

    Internals

    • #3115

      Use ISO4217 three-letter codes when writing about currencies (so, USD over $).

    • #3284

      Clean up Adaptive Replication Routing implementation.

    • #3287

      Speed up zig build test by removing false build-time dependencies.

    TigerTracks 🎧

    Open source →
  29. 0.16.60 29 Sep 2025
    Release notes

    Released: 2025-09-26

    Safety And Performance

    • #3270

      Remove a copy from the StateMachine.

    • #3273

      Update the k-way-merge to use the new from_seed_testing().

    • #3277

      Improve metrics to use a reduce the worst case packet count (and benefit from a small memory saving while we're at it).

    Features

    • #3278

      Clarified documentation on closing accounts and two-phase transfers. Thanks @raui100!

    Internals

    • #3275

      Refactor references to old time types to use the Instant and Duration types.

    • #3274

      Added documentation for our CI entrypoint: zig build ci.

    TigerTracks 🎧

    Open source →
  30. 0.16.59 22 Sep 2025
    Release notes

    Released: 2025-09-19

    Safety And Performance

    • #3257

      Introduce Least Significant Digit (LSD) radix sort in stdx.

    • #3268

      Use radix sort in the memory tables to get more performance improvements.

    • #3250

      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

    • #3262

      Use Zig's new std.testing.random_seed to introduce genuine randomness in tests.

    • #3260

      Fix a crash due to corruption and misdirection found by the WIP message bus fuzzer.

    TigerTracks 🎧

    Open source →
  31. 0.16.58 15 Sep 2025
    Release notes

    Released: 2025-09-12

    Safety And Performance

    • #3248

      Fix a bug where grid.cancel was erroneously being invoked during commit_stage=checkpoint_durable.

    • #3245

      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.

    • #3226, #3230, #3223, #3222

      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.

    • #3237

      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

    • #3253

      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.

    • #3206

      In order to avoid bimodality if a replica is down (e.g., 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

    • #3251

      Mark grid cache blocks as MADV_DONTDUMP, making core dump size tractable even with large caches.

    • #3227, #3231, #3242

      Preparation for the Zig 0.15.1 upgrade.

    • #3236, #3229, #3198

      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 🎧

    Open source →
  32. 0.16.57 01 Sep 2025
    Release notes

    Released: 2025-08-29

    Safety And Performance

    • #3200

      Improved performance in set_associative_cache.zig by using Fastrange and SIMD.

    • #3201

      Improved performance and better codegen in aegis.zig by avoiding aliasing.

    • #3205

      Retain table repair progress across checkpoint boundaries, to reduce the time to complete state sync for active clusters.

    • #3216

      Use the NOSIGNAL flag with both asynchronous send and synchronous send_now. This avoids receiving a possible SIGPIPE signal raised by the kernel.

    • #3189

      Improve the Rust client API to make the returned future thread-safe. Thanks @michabp!

    • #3208

      Fix the Go client to make the subfolder with external files required by CGO compatible with go vendor. Thanks @itzloop.

    • #3203

      Fix the Python client to make close() async on ClientAsync.

    Internals

    • #3215

      Removed support for closed loop replication in repair and sync protocols.

    • #3210, #3211

      Ban equality and inequality comparisons with error values, as they may silently perform an untyped comparison. Enforce handling errors with switch blocks instead.

    • #3207

      Consolidate all Windows APIs we use (not present in Zig’s std) under stdx.windows.

    • #3199, #3194

      Improve upgrade tests.

    • #3202, #3140

      Improve the documentation to explain adaptive routing and add notes about using CDC in production.

    • #3196

      Moves the unshare code into stdx.unshare and uses it for both Vortex and CFO. Also fixes how vortex run was handling the child process error code.

    TigerTracks 🎧

    Open source →
  33. 0.16.56 25 Aug 2025
    Release notes

    Released: 2025-08-22

    Safety And Performance

    • #3185

      Improve the speed of trailer repairs by initiating repair requests more proactively.

    • #3017

      Add Vortex to CI to test clients (Java, Zig, Rust).

    • #3193

      Ensure only the primary responds to VSR repeat requests.

    Features

    • #3014

      Add a typed Python client (thanks @stenczelt).

    Internals

    • #3195

      Simplify budgeting for VSR repairs.

    • #3181

      Refactor ReleaseList to contain the release logic.

    • #3190

      Improve naming for journal and grid message budgets.

    TigerTracks 🎧

    Open source →
  34. 0.16.55 18 Aug 2025
    Release notes

    Released: 2025-08-15

    Safety And Performance

    • 3187

      Make repair timeout reliably fire in a loaded cluster processing small batches.

    • #2863

      Make tigerbeetle format concurrent and only write essential data. This speeds up the time to format considerably.

    • #3145

      Cache prepares from the future, to help avoid needing to repair the WAL near checkpoints when a backup is a little behind primary.

    Features

    • #3174

      Don't unlink data file on formatting failure.

    • #3173

      Use correct default statsd port (8125).

    • #3154

      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

    • #3186

      Improvements to the balance bounds, rate limiting, and two phase transfers recipes. Thanks @snth!

    • #3150

      Use true quine to generate unit tests.

    • #3160

      Drop SigIllHandler. This was supposed to print a nice error message on unsupported architectures, but we hit SigIll in Zig's _start, before we get to our main.

    • #3148

      Add constants for KiB thru PiB.

    TigerTracks 🎧

    Open source →
  35. 0.16.54 11 Aug 2025
    Release notes

    Released: 2025-08-08

    Safety And Performance

    • #3123

      Speed up repair by removing a round-trip to fetch headers.

    • #3134

      Check checksums when downloading Zig during the build.

    Features

    • #2993

      Add documentation for Rust client library.

    • #2989

      Test that release artifacts are fully reproducible.

    Internals

    • #3136

      Add a test to test that tests include all the tests.

    • #3143

      Remove local variable aliasing as per TigerStyle.

    • #3124

      @splat all the things.

    • #3135

      Use double-entry accounting for allocations.

    • #3129

      Remove git-review.

    • #3131, #3130

      Show total number of VOPR runs for release.

    TigerTracks 🎧

    Open source →
  36. 0.16.53 04 Aug 2025
    Release notes

    Released: 2025-08-01

    Safety And Performance

    • #3090, #3116

      Allowing EWAH to decode bigger free set into smaller. This fixes the --limit-storage flag.

    • #3089

      Fix Node.js v24 client.

    Features

    • #3119

      Add compaction/checkpoint/journal slot count to tigerbeetle inspect.

    Internals

    • #3121

      During tests, verify that grid read errors correspond to either storage faults or ongoing state sync.

    • #3122

      Teach snaptest how to decode/encode hex & zon.

    • #3110

      Fix typo in manifest_log_fuzz.

    • #3113

      Test CreateTransfersResult.exists in VOPR.

    • #3117, #3120

      stdx refactoring.

    TigerTracks 🎧

    Open source →
  37. 0.16.52 28 Jul 2025
    Release notes

    Released: 2025-07-25

    Safety And Performance

    • #3093

      Improve repair performance by tracking requested prepares so each is repaired exactly once per timeout.

    Internals

    • #2956

      In VOPR, model events using nanosecond-resolution timestamps to uncover more interesting interleaving.

    • #3088 #3100 #3102

      Initialize IO and Tracer early. Avoid comptime type specialization.

    • #3101

      Update TigerStyle with additional conventions for naming things and ordering struct fields.

    • #3105

      Add --requests-max CLI flag to VOPR.

    • #3107

      In DevHub, use font-size-adjust to better match sizes of sans and monospace text.

    • #3108

      Introduce a fixtures module for fuzzing and testing to avoid code duplication.

    TigerTracks 🎧

    Open source →
  38. 0.16.51 21 Jul 2025
    Release notes

    Released: 2025-07-18

    Safety And Performance

    • #3096

      Fix incorrect assert in the commit stall logic.

      This assert could cause the primary to crash while it is injecting a commit stall, if an old primary has committed ahead of it.

    • #3008

      Improve compaction scheduling algorithm to be more performant and memory efficient.

      Earlier, during each beat, we used to compact each active tree and level, leading to multiple context switches. Now, we compact each tree and level to completion before moving on to the next.

    Features

    • #3086

      Add metrics that track the time taken to complete read and write IO.

    Internals

    • #3087

      Remove comptime type specialization on Time and replace it with a runtime interface.

    • #3085

      Change all instances of data block -> value block, more aptly named for blocks containing values.

    • #3084

      Update architecture documentation to explain how to correctly integrate TigerBeetle into a larger data processing system.

    • #3083

      Fix example for voiding pending transfers in the dotnet, go, node, and python clients.

    • #3082, #3091

      Fix broken link to the Viewstamped Replication paper and some typos in the documentation.

    • #3078

      Fix VOPR false positive where we erroneously find two different versions of an uncommitted header.

    • #2990

      Refine BoundedArrayType API, renaming functions to be shorter and consistent with Queue and Stack.

    TigerTracks 🎧

    Open source →
  39. 0.16.50 15 Jul 2025
    Release notes

    Released: 2025-07-13

    Internals

    • #3076

      Cleanup Zig TODO items that have been resolved with the recent upgrade to Zig 0.14.1.

    • #3071

      Always copy fields from vsr_options to build_options, since Zig 0.14.1 removed anonymous structs. Thanks @rbino!

    • #3075, #3074

      Use realtime to enforce budget and refresh timeouts in the CFO.

    • #3072

      Remove unwind_tables from release builds and strip client libraries to reduce binary size.

    TigerTracks 🎧

    Open source →
  40. 0.16.49 07 Jul 2025
    Release notes

    Released: 2025-07-04

    Safety And Performance

    • #3064

      Fix a division by zero when logging CDC metrics, and increase resolution to nanoseconds.

    • #3050

      Apply backpressure at primary to mitigate an issue with lagging backups.

    Internals

    • #2705

      Upgrade to Zig 0.14.1.

    • #3068

      Fix a typo that caused probabilities to be parsed as hexadecimal.

    TigerTracks 🎧

    Open source →
  41. 0.16.48 01 Jul 2025
    Release notes

    Released: 2025-07-01

    Internals

    • #3062

      Updates the publishing process for the Java client to conform to the Maven Central Repository due to the OSSRH service end-of-life.

    • #3048, #3047

      Fixes and improvements for tracing and metrics.

    TigerTracks 🎧

    Open source →
  42. 0.16.47 30 Jun 2025
    Release notes

    Released: 2025-06-27

    Note: This release is missing some client libraries in their respective package managers.

    Safety And Performance

    • #3032

      Fix ABI assertions in Rust client.

    • #3039

      Swarm test different replication configurations in VOPR.

    • #3053

      Supports CDC processing for transfers created by versions earlier than 0.16.29. Fixes a liveness bug that would crash the replica if a CDC query encountered objects created with a schema before #2507.

    Features

    • #3038

      Add client_request_round_trip metric to track end-to-end client request latency.

    • #3043

      Support --clients alongside --transfer-batch-delay-us in tigerbeetle benchmark.

    • #3056

      The command tigerbeetle inspect constants prints VSR queue sizes.

    Internals

    • #3045

      Define timeouts in terms of tick_ms.

    • #3042

      Disable "hint" argument for mmap call, which was observed to cause stack overflow.

    TigerTracks 🎧

    Open source →
  43. 0.16.46 23 Jun 2025
    Release notes

    Released: 2025-06-19

    Safety And Performance

    • #3030

      Always build tb_client for Rust client in release mode.

    Internals

    • #3031

      Prioritize more important fuzzers in CFO.

    TigerTracks 🎧

    Open source →
  44. 0.16.45 16 Jun 2025
    Release notes

    Released: 2025-06-13

    This release changes the CDC message header to use AMQP signed integers. The new encoding will be handled transparently by RabbitMQ/AMQP clients. However, code changes might be necessary if the consumer explicitly relies on the unsigned data type.

    Safety And Performance

    • #3023

      Fix a liveness bug related to when replicas are syncing.

    • #3022

      Fix a crash related to timing when measuring commit timing.

    Features

    • #2907

      Add documentation on how to monitor TigerBeetle, track requests end-to-end for better monitoring.

    • #3019, #3029

      Improves compatibility of our new CDC connector by supporting AMQP signed integer types, and fixes an assertion that previously overlooked the possibility of receiving an asynchronous basic_ack while publishing a batch of messages. Thanks @alvinyan-bond for your feedback!

    Internals

    • #3018

      Add a recovery smoke test.

    TigerTracks 🎧

    Open source →
  45. 0.16.44 09 Jun 2025
    Release notes

    Released: 2025-06-06

    Features

    • #3006

      Improve logging for missing replies by including the op number.

    Internals

    • #3011

      DevHub now displays how many fuzz runs are executed per minute (VPM).

    • #3010

      Remove cluster from the MessageBus as part of the MessageBuffer rework.

    • #2992

      Handle all message padding uniformly.

    • #3001

      Limit the fuzzer processes to 20GiB of RAM.

    • #3009

      Prevent stack probing from actually using all of the stack due to unexpected inlining.

    TigerTracks 🎧

    Open source →
  46. 0.16.43 02 Jun 2025
    Release notes

    Released: 2025-05-30

    This release includes the tigerbeetle recover subcommand, which can be used to safely recover a replica that is permanently lost.

    Additionally, it includes Change Data Capture (CDC) support to stream TigerBeetle state to Advanced Message Queuing Protocol (AMQP) targets, such as RabbitMQ and other compatible brokers.

    Check out the documentation to learn about how to use CDC and tigerbeetle recover!

    Safety And Performance

    • #2996

      Add the tigerbeetle recover subcommand, to safely recover a replica that is permanently lost (e.g. if the SSD fails).

      Earlier, the only way to recover a permanently lost replica was using the tigerbeetle format command. However, this was unsafe, as a newly-formatted replica may nack prepares which its previous incarnation acked -- a correctness bug.

    • #2880

      Implement an adaptive replication routing protocol to handle changes in network topology.

      To select the best route, primary uses outcome-focused explore-exploit approach. Every once in a while, the primary tries an alternative route, and replaces the current route if the alternative provides better replication latency.

    • #2970, #3002

      Replica pulls messages from the MessageBus, as opposed to the MessageBus pushing messages.

      Earlier, replicas had to process every message that the bus pushed. This could lead to messages being dropped due to lack of available disk read/write IOPs. Now, a replica can "suspend" certain messages and return to them later when it has enough IOPs.

    Features

    • #2917

      CDC support to stream TigerBeetle state to AMQP targets, such as RabbitMQ and other compatible brokers.

      We implement the AMQP 0.9.1 specification instead of AMQP 1.0 as it is simpler and more widely supported (e.g., RabbitMQ only recently added native AMQP 1.0 support).

    Internals

    • #2982

      Unify the production and testing AOF code paths to make sure the production AOF is rigorously fuzzed by the VOPR.

    • #2991

      Reduce code duplication while erasing IO callbacks' type.

    • #2998

      Track debug build times on DevHub.

    • #2987, #2988, #2997, #2999

      Miscellaneous improvements and fixes to CI and release.

    TigerTracks 🎧

    Open source →
  47. 0.16.42 26 May 2025
    Release notes

    Released: 2025-05-23

    Safety And Performance

    • #2980

      Fix assert in fulfill_block, if a replica receives a block that it didn't ask for from a newer replica.

    Internals

    • #2973

      Extract the parsing parts of MessageBus into a sans-IO style ReceiveBuffer, that'll be used for the upcoming pull based MessageBus.

    • #2979

      Speed up the LSM scan fuzzer.

    TigerTracks 🎧

    Open source →
  48. 0.16.41 19 May 2025
    Release notes

    Released: 2025-05-16

    Safety And Performance

    • #2972

      Implement request throttling for grid repair, making state sync less chatty over the network.

    • #2957

      Improved latency and throughput in prepare repair operations.

    Internals

    • #2967

      Make the Quick Start page more direct by showing only the installation instructions for Linux by default, with Windows and macOS hidden behind click-to-expand sections.

    • #2958

      New tigerbeetle inspect op command that displays checkpoints and triggers surrounding a given op number.

    TigerTracks 🎧

    Open source →
  49. 0.16.40 12 May 2025
    Release notes

    Released: 2025-05-09

    Safety And Performance

    • #2959

      Fix AOF unflushed assertion.

    • #2950

      Decouple prepare repair from header breaks. This helps a replica repair faster, and prevents a case where we would request a prepare only to discard it when it arrives.

    • #2945, #2961

      Bump default journal write iops. Previously we were inadvertently throttling repair by not allocating enough.

    • #2944

      Primary now broadcasts start_view message on checkpoint durability. This will help syncing replicas update to the latest sync target as early as possible.

    • #2952

      Add assert to check return value of next_batch_of_block_requests.

    Features

    Internals

    • #2937

      Add subcommand to git-review to send review comments as a email.

    • #2926

      Add subcommand to git-review to split suggested code changes out of a review commit.

    • #2940

      Speed up fuzz smoke tests.

    • #2941

      Improve memory usage of tests 10x and test runtime 10x.

    • #2936

      Add arbitrary debug output to CFO seeds.

    • #2931

      Fix for multiple CFO branches on same commit.

    • #2964

      Reduce closed loop replication quorum from n to n-1.

    TigerTracks 🎧

    Open source →
  50. 0.16.39 05 May 2025
    Release notes

    Released: 2025-05-02

    Heads up, we are changing our release process! From this point on, a TigerBeetle release is tagged on Friday, spends a weekend on the CFO fleet, and is published on Monday. In other words, you'll still be getting a new release every Monday, but the date of the release will be set to Friday. This setup allows extra time for fuzzers to find problems in the specific commit we are trying to release.

    Safety And Performance

    • #2928

      Continuously fuzz the release branch, in addition to the main branch and the pull requests.

    • #2923

      Eagerly deinitialize clients upon eviction, to proactively sever TCP connections to replicas.

    Features

    • #2679

      Add an initial Rust client. Note that it is not published to crates.io yet.

    Internals

    • #2906

      Reduce verbosity when running full CI suite locally.

    TigerTracks 🎧

    Open source →
  51. 0.16.38 28 Apr 2025
    Release notes

    Released: 2025-04-28

    Safety And Performance

    • #2664

      Switch to using gpa as backing allocator for clients.

    • #2902

      Set socket options for peer connections.

    • #2665

      Add tb_client_init_parameters and implement for Python client.

    Features

    • #2921

      Fix tigerbeetle inspect grid for data files with no used blocks.

    Internals

    • #2914, #2913

      CI improvements.

    • #2918

      De-genericify Queue.

    • #2912

      Modernize stdx.cut API

    • #2732, #2915, #2920

      Trial a git-native + offline-first code review interface.

    • #2924, #2911, #2910, #2909

      Devhub improvements. In particular, ensure that a failing canary fuzzer is obvious.

    • #2905

      Compile scripts for zig build ci.

    TigerTracks 🎧

    Open source →
  52. 0.16.37 21 Apr 2025
    Release notes

    Released: 2025-04-21

    Safety And Performance

    • #2896

      Fix a bug where VOPR latencies were computed incorrectly when the minimum and mean were equal.

    Internals

    • #2893

      Improve binary size and compilation time by making implementation of intrusive stack non-generic.

    • #2898

      Make the Docs website pass the W3C HTML validation test.

    • #2883

      Fix a memory leak in VOPR and apply idiomatic naming conventions for the allocator.

    • #2901

      Fix a panic where the VOPR attempts to print a deinitialized packet when debug logs are enabled.

    TigerTracks 🎧

    Open source →
  53. 0.16.36 14 Apr 2025
    Release notes

    Released: 2025-04-14

    Safety And Performance

    • #2891

      Fix journal disjoint-buffer assertion.

    • #2887

      Make object cache optional. This improves throughput by ~10%, as we can omit the object cache from the account events groove, which never uses it.

    Internals

    • #2888

      Rename FIFO to Queue

    • #2882

      Add zig build ci to help run CI checks locally.

    TigerTracks 🎧

    Open source →
  54. 0.16.35 07 Apr 2025
    Release notes

    Released: 2025-04-07

    Please note that after #2787, which adds batching support for all operations, the batch_max limit has changed from 8190 to 8189 accounts/transfers per batch.

    Safety And Performance

    • #2787

      Add support for batching multiple independent requests of the same operation within a single VSR message, amortizing network and consensus costs.

      Earlier, we batched only create_accounts and create_transfers. Now, we can batch any operation!

    Internals

    • #2878

      Use TigerBeetle's time abstraction as opposed to raw OS time in the tracer.

    • #2881

      Allow custom network packet delay functions in the VOPR. This allows us to simulate latencies for different network topologies, for example the ring/star topology.

    • #2866, #2874

      Fix a VOPR false positive wherein we were accessing a crashed replica's uninitialized memory.

    • #2869

      Improve error thrown when an invalid --account/transfer-batch-size is passed to the benchmark CLI.

    • #2876, #2877

      Minor refactors to VSR and VOPR.

    • #2872, #2873

      Fixes and improvements in the documentation.

    TigerTracks 🎧

    Open source →
  55. 0.16.34 31 Mar 2025
    Release notes

    Released: 2025-03-31

    Safety And Performance

    • #2861

      Add basic fuzzing for the state machine.

    • #2846

      Re-do tickless VOPR to simulate fast IOPs.

    • #2852

      Allow simulating one-replica-down scenario in the VOPR.

    • #2858

      Print dropped packets in the VOPR.

    • #2850

      Various changes for VOPR performance mode.

    • #2821

      A quicker request protocol for VSR.

    • #2848

      Account for pulses when computing the size of the request queue in VSR.

    • #2853

      Fix a possible panic in the Node.js client by handling the "too much data" error.

    • #2860

      Fix a possible replica crash if negative timestamps would be provided to AccountFilter or QueryFilter.

    Features

    • #2830

      Allow tigerbeetle inspect to run on open data files. This helps with getting an idea what's going on a running cluster without needing to shut it down first.

    Internals

    • #2833

      Vendor our own BitSet in stdx, TigerBeetle's extended standard library. This change reduces the Linux binary size by 38KiB.

    • #2862

      Track the REPL execution time on DevHub.

    • #2859

      Fix the wording in the correcting transfers example. Thanks @shraddha38!

    • #2845

      Remove the global allocator from the fuzzers and pass the allocator explicitly to align more with TigerStyle.

    • #2854

      Block merges in the CI based on DevHub pipeline results.

    • #2840

      Add replica/lsm/grid/journal metrics to VSR.

    TigerTracks 🎧

    Open source →
  56. 0.16.33 24 Mar 2025
    Release notes

    Released: 2025-03-24

    Note that #2824 bumps the oldest supported client version to 0.16.4, removing backward compatibility with various deprecated features. Please make sure that all of your clients are running on at least 0.16.4 before upgrading to this release!

    Safety And Performance

    • #2835

      Add performance mode to the VOPR, which tracks the number and aggregate size of each kind of message during a run.

    Features

    • #2824

      Bump the oldest supported client version to 0.16.4, removing backward compatibility with various deprecated features.

    Internals

    • #2826

      Simplify the idiom around adding elements to lists with comptime known lengths.

    • #2827

      Better styling for links and block quotes in the documentation.

    • #2831

      Change debug multiversion builds to encapsulate two versions as opposed to five.

    • #2832

      Improve CFO efficacy by retaining Zig build cache across fuzzing iterations.

    • #2836

      Update TigerStyle to add a new rule about using long form arguments in scripts (--force over -f).

    • #2834, #2837, #2839, #2841,

      Fix various VOPR false positives.

    TigerTracks 🎧

    Open source →
  57. 0.16.32 17 Mar 2025
    Release notes

    Released: 2025-03-17

    Safety And Performance

    • #2798, #2815

      Vendor the PRNG, and tweak the API to be less wordy.

      PRNG algorithms tend to change, often for reasons not applicable to TigerBeetle. We need neither the fastest, nor the most secure PRNG, and it's better if we rotate our PRNG algorithm at our own pace.

    • #2813

      Fix a case where, if a busy cluster's pipeline is full, the prepare_timeout was never reset.

      This improves performance of a local benchmark for a 6-replica cluster with one replica down and 4 clients almost ~4x.

    Internals

    • #2804, #2806, #2803

      Add syntax highlighting to docs code snippets (thanks @nilskch!), fix Python example code (thanks @IvoCrnkovic!) and update our HACKING.md with current practices.

    • #2819, #2814, #2812

      Prepare for the Zig 0.14 upgrade by applying as many changes that still work on 0.13 as possible. This includes vendoring AEGIS, to keep hash stability, as 0.14 changes the implementation.

    TigerTracks 🎧

    Open source →
  58. 0.16.31 10 Mar 2025
    Release notes

    Released: 2025-03-09

    Safety And Performance

    • #2790

      Use LIFO instead of FIFO for free blocks during compaction for better temporal locality.

    • #2799

      Disallow converting negative big integers to UInt128 in the Java and Go clients, as they would be incorrectly interpreted as unsigned big integers when converted back.

    • #2801

      Remove spurious write_reply_next() after read completes in client_replies, as reads and writes can happen concurrently.

    • #2783

      Assert that cache_map.stash is not using any element beyond its defined capacity.

    Features

    • #2725

      Various REPL fixes and improvements.

    • #2773

      Add single-page mode to the documentation website.

    Internals

    TigerTracks 🎧

    Open source →
  59. 0.16.30 03 Mar 2025
    Release notes

    Released: 2025-03-03

    Note: Before performing this upgrade, please make sure to check that no replicas are lagging and state syncing.

    You can ensure this by temporarily pausing load to the TigerBeetle cluster and waiting for all replicas to catch up. If some replicas in your cluster were indeed lagging, you should see on_repair_sync_timeout: request sync; lagging behind cluster in the logs, followed by sync: ops=, which indicates the end of state sync. If you don't see the former in the logs, then you are already safe to upgrade!

    This is to work around an issue in the upgrade between 0.16.25 → 0.16.26, wherein a state syncing replica goes into a crash loop when it upgrades to 0.16.26. If one of your replicas has already hit this crash loop, please reach out to us on the Community Slack so we can help you safely revive it.

    Safety And Performance

    • #2774

      Fix TOCTOU bug in our hybrid set-associative cache and hash map structure, wherein a promotion to the cache coupled with an eviction from the cache could lead to invalid pointer references.

    • #2771

      Add logic to crash replica upon receiving unknown commands from clients and other replicas.

    • #2766

      Fix upgrade bug wherein a replica does not detect a change in the binary if it is replaced during its initialization in Replica.open().

    • #2761

      Alternate replication direction for even and odd ops to better detect breaks in the ring topology.

    Internals

    • #2770, #2781, #2779, #2778, #2769,

      Add new docs content to TigerBeetle Architecture, fix miscellaneous typos and references.

    • #2760

      Simplify idiom around a replica sending messages to itself.

    • #2764

      Refactor MessageBus to remove platform-specific IO logic.

    TigerTracks 🎧

    Open source →
  60. 0.16.29 24 Feb 2025
    Release notes

    Released: 2025-02-24

    Note: Before performing this upgrade, please make sure to check that no replicas are lagging and state syncing.

    You can ensure this by temporarily pausing load to the TigerBeetle cluster and waiting for all replicas to catch up. If some replicas in your cluster were indeed lagging, you should see on_repair_sync_timeout: request sync; lagging behind cluster in the logs, followed by sync: ops=, which indicates the end of state sync. If you don't see the former in the logs, then you are already safe to upgrade!

    This is to work around an issue in the upgrade between 0.16.25 → 0.16.26, wherein a state syncing replica goes into a crash loop when it upgrades to 0.16.26. If one of your replicas has already hit this crash loop, please reach out to us on the Community Slack so we can help you safely revive it.

    Safety And Performance

    • #2763

      Explicitly ignore deprecated protocol messages.

    • #2758

      Fix a crash when, during upgrade, replica's binary is changed the second time.

    Features

    • #2698

      Implement metrics, using statsd format.

    • #2507

      Add new indexes to the account balances to enable CDC.

    • #2521, #2751, #2756, #2757, #2754

      Restructure documentation.

    • #2727

      Implement more standard shortcuts for REPL.

    Internals

    • #2742

      Refactor C client API to remove internal mutex.

    • #2747

      Don't use deprecated Node.js APIs in the samples.

    • #2748, #2744

      Improve documentation search.

    • #2734

      Switch to vale for documentation spell checking.

    TigerTracks 🎧

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive