Skip to content

Releases: tigerbeetle/tigerbeetle

0.16.10: Merge pull request #2421 from tigerbeetle/release-2024-10-21

21 Oct 15:28
4810a46
Compare
Choose a tag to compare

0.16.10

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.16.3

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.10
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.10-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.10
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.10
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.10.
  • Node.js: npm install tigerbeetle-node@0.16.10

Changelog

Safety And Performance

  • #2414

    Improve performance & availability during view change by ensuring a replica only repairs the
    portion of the WAL that is required to become primary, instead of repairing it in its entirety.

  • #2412

    Add a unit test for Zig's stdlib sort.

    Stable sort is critical for compaction correctness. Zig stdlib does have a sort fuzz test, but it
    doesn't cover the presorted subarray case, and doesn't check arrays much larger than the sort
    algorithm's on-stack cache.

  • #2413

    Fix a bug in the MessageBus wherein connections weren't being terminated during client teardown.

Internals

  • #2405

    Fix a bug in the benchmark wherein the usage of --account-count-hot was broken when used in
    conjunction with the uniform distribution.

  • #2409

    Revamp the core_missing_prepares liveness-mode check to correctly check for the prepares that a
    replica should repair (after #2414).

TigerTracks 🎧

0.16.9: Merge pull request #2411 from tigerbeetle/release-2024-10-15

15 Oct 12:26
a082ff0
Compare
Choose a tag to compare

0.16.9

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.16.2

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.9
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.9-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.9
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.9
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.9.
  • Node.js: npm install tigerbeetle-node@0.16.9

Changelog

Safety And Performance

  • #2394,
    #2401

    TigerBeetle clients internally batch operations for improved performance. Fix a bug where an
    unclosed link chain could be batched before another linked chain, causing them to be treated as
    one long linked chain. Additionally, prevent non-batchable requests from sharing packets entirely.

  • #2398

    AMOUNT_MAX is used as a sentinel value for things like balancing transfers to specify moving
    as much as possible. Correct and fix its value in the Java client. Thanks @tKe!

Features

  • #2274

    Improve the benchmark by adding Zipfian distributed random numbers, to better simulate realistic
    conditions and as a precursor to approximating YCSB.

  • #2393

    Previously, TigerBeetle's clients disallowed empty batches locally, before the request was even
    sent to the cluster. However, this is actually a valid protocol message - even if it's not used by
    the current state machine - so allow empty batches to be sent from clients.

  • #2384

    Revamp client documentation so that each snippet is self-contained, and standardize it across all
    languages.

Internals

TigerTracks 🎧

0.16.8: Merge pull request #2389 from tigerbeetle/release-2024-10-07-extras

07 Oct 14:28
a8f5b2b
Compare
Choose a tag to compare

0.16.8

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.16.1

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.8
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.8-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.8
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.8
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.8.
  • Node.js: npm install tigerbeetle-node@0.16.8

Changelog

Safety And Performance

  • #2359

    Significantly reduced P100 latency by incrementally spreading the mutable table's sort during
    compaction. This leverages the optimization of sort algorithms for processing sequences of
    already sorted sub-arrays.

  • #2367

    Improve the workload generator to support concurrent tests with different ledgers.

  • #2382,
    #2363

    Fix VOPR seeds.
    For more awesome details about the backstory and solutions to these issues,
    please refer to the PR.

Features

  • #2358

    Update the REPL to support representing the maximum integer value as -0,
    serving as the AMOUNT_MAX sentinel.
    Additionally, other negative values such as -1 can be used to represent maxInt - 1.

    Also, include support for hexadecimal numbers for more convenient inputting of GUID/UUID
    literals (e.g. 0xa1a2a3a4_b1b2_c1c2_d1d2_e1e2e3e4e5e6).

    Allow the timestamp field to be set, enabling the REPL to be used for imported events.

Internals

  • #2376

    Use zig fetch as a replacement for downloading files, removing dependence on external tools.

  • #2383

    Port of Rust's dbg! macro to Zig,
    and the corresponding CI validation to prevent code using it from being merged into main! 😎

  • #2370,
    #2373

    Verify the release versions included in the multiversion binary pack at build time (not only
    during runtime) and improve the tigerbeetle version --verbose command's multiversion output.

  • #2369

    Fix a multiversioning issue where the binary size exceeded the read buffer, failing to parse the
    executable header.

  • #2380

    Consistently use transient_error instead of transient_failure and cleanup the StateMachine
    code.

  • #2379

    Add missing links to the operations query_accounts and query_transfers in the documentation
    and include the declaration for QueryFilter and QueryFilterFlags in the tb_client.h header.

  • #2333

    Clearer error message when the replica crashes due to a data file being too large, instructing
    the operator to increase the memory allocated for the manifest log.

TigerTracks 🎧

0.16.7

04 Oct 13:43
Compare
Choose a tag to compare

0.16.7

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.6

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.7
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.7-debug

Clients

No client updates in this release, use client version 0.16.4.

Changelog

Note: this is an extra release to correct an availability issue in the upgrade path for 0.16.4.
Specifically, the combination of tigerbeetle 0.16.4 and a client at 0.16.3 can lead to an
assertion failure and a server crash. No data is lost, but the server becomes unavailable.

It is recommended to upgrade to 0.16.7, but this is only required if you are running older
clients. To upgrade, replace the binary on disk, and manually restart the replica.

Note that although the release is tagged at 0.16.7, the binary advertises itself as 0.16.4.

Safety And Performance

  • #2377

    Fix an assertion which was incorrect when a pre-transient-error client retried a transient error,
    and that transient error condition since disappeared. This mirrors #2345 which handles the case
    when it is still failing.

0.16.6

07 Oct 13:29
Compare
Choose a tag to compare
0.16.6 Pre-release
Pre-release

0.16.6

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.6

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.6
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.6-debug

Clients

No client updates in this release, use client version 0.16.4.

Changelog

Note: this is an extra release to correct a potential issue in the upgrade path for 0.16.4.
Specifically, the combination of tigerbeetle 0.16.2 and newer, and any client before 0.16.2 can
lead to an assertion failure and a server crash. No data is lost, but the server becomes
unavailable.

It is recommended to upgrade to 0.16.6, but this is only required if you are running older
clients. To upgrade, replace the binary on disk, and manually restart the replica.

Note that although the release is tagged at 0.16.6, the binary advertises itself as 0.16.4.

Safety And Performance

  • #2377

    Correctly parse AccountFilter from pre 0.16.2 clients.

0.16.5

03 Oct 19:50
Compare
Choose a tag to compare
0.16.5 Pre-release
Pre-release

0.16.5

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.6

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.5
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.5-debug

Clients

No client updates in this release, use client version 0.16.4.

Changelog

Note: this is an extra release to correct an availability issue in the upgrade path for 0.16.4.
Specifically, the combination of tigerbeetle 0.16.4 and a client at 0.16.3 can lead to an
assertion failure and a server crash. No data is lost, but the server becomes unavailable.

It is recommended to upgrade to 0.16.5, but this is only required if you are running older
clients. To upgrade, replace the binary on disk, and manually restart the replica.

Note that although the release is tagged at 0.16.5, the binary advertises itself as 0.16.4.

Safety And Performance

  • #2345

    Fix an assertion which was incorrect when a pre-transient-error client retried a transient error.

0.16.4: Merge pull request #2364 from tigerbeetle/release-2024-09-30

30 Sep 15:45
f66289b
Compare
Choose a tag to compare

0.16.4

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.6

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.4
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.4-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.4
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.4
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.4.
  • Node.js: npm install tigerbeetle-node@0.16.4

Changelog

This release introduces "transient errors": error codes for create_transfers which depend on the
state of the database (e.g. exceeds_credits). Going forward, a transfer that fails with a
transient error will not succeed if retried.

See the API tracking issue
and the documentation
for more details.

Safety And Performance

  • #2345

    Reduce chance of recovering_head status by recovering from torn writes in the WAL.
    This improves the availability of the cluster, as recovering_head replicas cannot participate in
    consensus until after they repair.

Features

  • #2335

    Ensure idempotence for create_transfers' "transient errors" with new result code
    id_already_failed. In particular, this guards against surprising behavior when the client is
    running in a stateless API service.

Internals

  • #2334,
    #2362

    Fix VOPR false positives.

  • #2115

    Fix multiple commands for non-interactive REPL.

TigerTracks 🎧

0.16.3: Merge pull request #2341 from tigerbeetle/matklad/fix-changelog

23 Sep 16:49
1d08f75
Compare
Choose a tag to compare

0.16.3

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.5

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.3
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.3-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.3
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.3
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.3.
  • Node.js: npm install tigerbeetle-node@0.16.3

Changelog

Safety And Performance

  • #2313

    Improve cluster availability by more aggressive recovery for crashes that happen while a replica
    is checkpointing.

  • #2328

    Add a more efficient recipe for balance-conditional transfers. A balance-conditional transfer
    is a transfer that succeeds only if the source account has more than a threshold amount of funds
    in it.

Features

  • #2327

    Add a new recipe for enforcing debits_must_not_exceed_credits on some subset of transfers (this
    is a special case of a balance-conditional transfer, with the threshold value being equal to
    transferred amount).

Internals

  • #2330

    Add triaged issue label to prevent newly opened issues from slipping through the cracks.

  • #2332

    Add CI check for dead code.

  • #2323

    Cleanup the source tree by removing top-level tools directory.

  • #2316

    Make sure that process-spawning API used for build-time "scripting" consistently reports
    errors when the subprocess fails or hangs.

TigerTracks 🎧

0.16.2: Merge pull request #2320 from tigerbeetle/release-2024-09-16

16 Sep 13:46
c26a2ee
Compare
Choose a tag to compare

0.16.2

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.4

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.2
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.2-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.2
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.2
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.2.
  • Node.js: npm install tigerbeetle-node@0.16.2

Changelog

Safety And Performance

  • #2312

    Tighten up the VSR assertions so the transition to .recovering_head can only be called from the
    .recovering status.

  • #2311

    Make the primary abdicate if it is unable to process requests due to a broken clock.

  • #2260

    Smoke integration test using the real multiversion binary.

  • #2270

    Workload generator based on the Java client to be used in integration tests (i.e. Antithesis).

Features

  • #2298,
    #2307,
    #2304,
    #2309,
    #2321

    Remove Tracy integration and dependencies.
    Add JSON traces for events with multiple running instances, such as IO, lookups, and scans.

  • #2300

    Add the ability to filter by user_data_{128,64,32} and code in get_account_transfers
    and get_account_balances.

Internals

  • #2314,
    #2315

    Mute the log on stderr when building client libraries.
    Reduce the log's severity of some entries logged as .err to .warn for less noise when
    running with log_level = .err.

  • #2310

    Document and explain how time works in TigerBeetle ⏱️.

  • #2291

    Refactor Forest.compact and remove some dead code.

  • #2294

    Rewrite commit_dispatch, a chain of asynchronous stages calling each other, as a state machine
    implementation that resembles linear control flow that is much easier to read.

  • #2306

    Fix the Node.js example that was using an incorrect enum flag.
    Thanks for the heads up @jorispz!

  • #2319

    Update outdated scripts in HACKING.md.

  • #2317

    Use git timestamps to build Docker images.
    This is a requirement for being deterministic in CI.

  • #2318

    Devhub link to pending code reviews.

TigerTracks 🎧

0.16.1: Merge pull request #2299 from tigerbeetle/release-2024-09-09

09 Sep 18:56
632199e
Compare
Choose a tag to compare

0.16.1

Supported upgrade versions

Oldest supported client version: 0.15.3
Oldest upgradable replica version: 0.15.3

Server

  • Binary: Download the zip for your OS and architecture from this page and unzip.
  • Docker: docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.1
  • Docker (debug image): docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.1-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.

  • .NET: dotnet add package tigerbeetle --version 0.16.1
  • Go: go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.1
  • Java: Update the version of com.tigerbeetle.tigerbeetle-java in pom.xml
    to 0.16.1.
  • Node.js: npm install tigerbeetle-node@0.16.1

Changelog

Safety And Performance

  • #2284

    Improve view change efficiency; new heuristic for lagging replicas to forfeit view change.

    A lagging replicas first gives a more up-to-date replica a chance to become primary by forfeiting
    view change. If the more up-to-date replica cannot step up as primary, the lagging replica
    attempts to step up as primary.

  • #2275,
    #2254,
    #2269,
    #2272

    Complete rollout of the new state sync protocol.

    Remove in-code remnants of the old state sync protocol. Replicas now panic if they receive
    messages belonging to the old protocol.

Internals

  • #2283

    Improve log warnings for client eviction due to its version being too low/high.

  • #2288

    Fix VOPR false positive wherein checkpoint was being updated twice in the upgrade path.

  • #2286

    Fix typos found using codespell.

  • #2282

    Document example for debiting multiple accounts and crediting a single account wherein the total
    amount to transfer to the credit account is known, but the balances of the individual debit
    accounts are not known.

  • #2281

    Document the behavior of user_data_128/user_data_64/user_data_32 in the presence of pending
    transfers.

  • #2279

    Inline Dockerfile in the release code, removing tools/docker/Dockerfile.

  • #2280,
    #2285

    Add kcov code coverage to
    DevHub.

  • #2266,
    #2293

    Add support for tracing IO & CPU events. This allows for coarse-grained performance analysis,
    for example collectively profiling IO and CPU performance (as opposed to IO or CPU in isolation).

  • #2273

    Remove explicit header sector locks, using a common locking path for prepare and header sectors.

  • #2258

    Change CliArgs -> CLIArgs in accordance with TigerStyle.

  • #2263

    Vendor llvm-objcopy in the dependencies
    repository in accordance with our "no dependencies" policy. This ensures users don't have to
    manually install LLVM.

  • #2297

    Assign correct date to the release binary date; it was earlier set to the epoch ("Jan 1 1970").

  • #2289

    Introduce fatal errors for crashing the replica process in the face of uncorrectable errors (for
    example, insufficient memory/storage).

  • #2287

    Add formatting check in the CI for the Go client.

  • #2278,
    #2292

    Reduce dimensionality of configuration modes.

    Removes the development configuration which was used to run the replica with asserts enabled,
    enabling asserts for the production configuration instead. Additionally, removes the -Dconfig CLI
    option, making production configuration the default.

TigerTracks 🎧