Releases: tigerbeetle/tigerbeetle
0.15.3: Merge pull request #1760 from tigerbeetle/cb22/release-2024-03-19
0.15.3
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.3
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.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.15.3
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.15.3
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.15.3
. - Node.js:
npm install tigerbeetle-node@0.15.3
Changelog
- Bump version to 0.15.x
- Starting with 0.15.x, TigerBeetle is ready for production use, preserves durability and
provides a forward upgrade path through storage stability.
Safety And Performance
-
Set TigerBeetle's block size to 512KB.
Previously, we used to have a block size of 1MB to help with approximate pacing. Now that pacing
can be tuned independently of block size, reduce this value (but not too much - make the roads
wider than you think) to help with read amplification on queries.
TigerTracks 🎧
0.15.2: Merge pull request #1757 from tigerbeetle/matklad/shellenv
0.15.2
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.2
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.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.15.2
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.15.2
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.15.2
. - Node.js:
npm install tigerbeetle-node@0.15.2
Changelog
Safety And Performance
-
Implement compaction pacing: traditionally LSM databases run compaction on a background thread.
In contrast compaction in tigerbeetle is deterministically interleaved with normal execution
process, to get predictable latencies and to guarantee that ingress can never outrun compaction.In this PR, this "deterministic scheduling" is greatly improved, slicing compaction work into
smaller bites which are more evenly distributed across a bar of batched requests. -
Include information about tigerbeetle version into the VSR protocol and the data file.
-
#1732,
#1743,
#1742,
#1720,
#1719,
#1705,
#1708,
#1707,
#1723,
#1706,
#1700,
#1696,
#1686.Many availability issues found by the simulator fixed!
-
Fix a buffer leak when
get_account_balances
is called on an invalid account.
Features
-
#1671,
#1713,
#1709,
#1688,
#1691,
#1690.Many improvements to the documentation!
-
Rename
get_account_history
toget_account_balances
. -
Automatically expire pending transfers.
-
Implement in-place upgrades, so that the version of tigerbeetle binary can be updated without
recreating the data file from scratch. -
Consistently use
MiB
rather thanMB
in the CLI interface. -
Mark
--standby
andbenchmark
CLI arguments as experimental.
Internals
-
Unify PostedGroove and the index pending_status.
-
Include an entire header into checkpoint state to ease recovery after state sync.
TigerTracks 🎧
0.15.0: Merge pull request #1751 from tigerbeetle/release-2024-03-18
0.15.0
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.0
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.15.0-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.15.0
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.15.0
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.15.0
. - Node.js:
npm install tigerbeetle-node@0.15.0
Changelog
Safety And Performance
-
Implement compaction pacing: traditionally LSM databases run compaction on a background thread.
In contrast compaction in tigerbeetle is deterministically interleaved with normal execution
process, to get predictable latencies and to guarantee that ingress can never outrun compaction.In this PR, this "deterministic scheduling" is greatly improved, slicing compaction work into
smaller bites which are more evenly distributed across a bar of batched requests. -
Include information about tigerbeetle version into the VSR protocol and the data file.
-
#1732,
#1743,
#1742,
#1720,
#1719,
#1705,
#1708,
#1707,
#1723,
#1706,
#1700,
#1696,
#1686.Many availability issues found by the simulator fixed!
-
Fix a buffer leak when
get_account_balances
is called on an invalid account.
Features
-
#1671,
#1713,
#1709,
#1688,
#1691,
#1690.Many improvements to the documentation!
-
Rename
get_account_history
toget_account_balances
. -
Automatically expire pending transfers.
-
Implement in-place upgrades, so that the version of tigerbeetle binary can be updated without
recreating the data file from scratch. -
Consistently use
MiB
rather thanMB
in the CLI interface. -
Mark
--standby
andbenchmark
CLI arguments as experimental.
Internals
-
Unify PostedGroove and the index pending_status.
-
Include an entire header into checkpoint state to ease recovery after state sync.
TigerTracks 🎧
0.14.184: Merge pull request #1677 from tigerbeetle/release-2024-03-11
0.14.184
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.184
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.184-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.14.184
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.184
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.184
. - Node.js:
npm install tigerbeetle-node@0.14.184
Changelog
Safety And Performance
-
Fetching account history and transfers now has unit tests, helping detect and fix a reported bug
with posting and voiding transfers.
Internals
Features
-
#1656,
#1659,
#1666,
#1667,
#1667Preparation for in-place upgrade support.
-
#1633,
#1661,
#1652,
#1647,
#1637,
#1638,
#1655Documentation has received some very welcome organizational
and clarity changes. Go check them out!
TigerTracks 🎧
0.14.183: Merge pull request #1645 from tigerbeetle/release-2024-03-04
0.14.183
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.183
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.183-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.14.183
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.183
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.183
. - Node.js:
npm install tigerbeetle-node@0.14.183
Changelog
Safety And Performance
-
#1584
Lower our memory usage by removing a redundant stash and not requiring a non-zero object cache
size for Grooves.The object cache is designed to help things like Account lookups, where the positive case can
skip all the prefetch machinery, but it doesn't make as much sense for other Grooves. -
Hook nyrkiö up to our CI! You can find our dashboard
here
in addition to our devhub. -
#1635
#1634
#1623
#1619
#1609
#1608
#1595Lots of small VSR changes, including a VOPR crash fix.
-
Fix a VOPR failure where state sync would cause a break in the hash chain.
Internals
-
Use Expand-Archive over unzip in PowerShell - thanks @felipevalerio for reporting!
-
Implement explicit coverage marks.
-
#1621
#1625
#1622
#1600
#1605
#1618
#1606Minor doc fixups.
-
Default the VOPR to short log, and fix a false assertion in the liveness checker.
-
Fix a memory leak in our Java tests.
TigerTracks 🎧
0.14.181: Merge pull request #1594 from tigerbeetle/batiati-release-2024-02-26
0.14.181
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.181
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.181-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.14.181
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.181
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.181
. - Node.js:
npm install tigerbeetle-node@0.14.181
Changelog
Safety And Performance
-
Rework the log repair logic to never repair beyond a "confirmed" checkpoint, fixing a
liveness issue where it was impossible
for the primary to repair its entire log, even with a quorum of replicas at a recent checkpoint. -
Some Java unit tests created native client instances without the proper deinitialization,
causing anOutOfMemoryError
during CI. -
Fix Vopr's false alarms.
Internals
-
Document how assertions should be used, especially those with complexity O(n) under
theconstants.verify
conditional. -
Harmonize and automate the logging pattern by using the
@src
built-in to retrieve the
function name. -
Include the benchmark smoke as part of the
zig build test
command rather than a special case
during CI. -
Remove unused code coverage metrics from the CI.
-
Re-enable Windows CI 🎉.
TigerTracks 🎧
0.14.180: Merge pull request #1571 from tigerbeetle/release-2024-02-19
0.14.180
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.180
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.180-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.14.180
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.180
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.180
. - Node.js:
npm install tigerbeetle-node@0.14.180
Changelog
Safety And Performance
-
DVCs implicitly nack missing prepares from old log-views.
(This partially addresses a liveness issue in the view change.)
-
When a replica joins a view by receiving an SV message, some of the SV's headers may be too far
ahead to insert into the journal. (That is, they are beyond the replica's checkpoint trigger.)During a view change, those headers are now eligible to be DVC headers.
(This partially addresses a liveness issue in the view change.)
-
Fixes a bug in the C client that wasn't handling
error.TooManyOutstanding
correctly.
Internals
-
Bring back Windows tests for .Net client in CI.
-
Add script to scaffold changelog updates.
-
Improve CI/test error reporting.
-
Draw devhub graph as line graph.
-
Simplify command to run a single test.
-
Add client batching integration tests.
-
Format default values into the CLI help message.
-
Track commit timestamp to enable retrospective benchmarking in the devhub.
-
Improve CI/test performance.
-
Guarantee that the test runner correctly reports "zero tests run" when run with a filter that
matches no tests.
TigerTracks 🎧
-
(Hat tip to iofthetiger!)
0.14.179: Merge pull request #1539 from tigerbeetle/release-2024-02-12
0.14.179
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.179
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.179-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.14.179
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.179
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.179
. - Node.js:
npm install tigerbeetle-node@0.14.179
Changelog
Safety And Performance
-
Reduce checkpoint latency by checkpointing the grid concurrently with other trailers.
-
Fix a logical race condition (which was caught by an assert) when reading and writing client
replies concurrently. -
Double check that both checksum and request number match between a request and the corresponding
reply. -
Optimize fields with zero value by not adding them to an index.
Features
-
Introduce
get_account_history
operation for querying the historical balances of a given account. -
Add helper function for generating approximately monotonic IDs to various language clients.
TigerTracks 🎧
0.14.178: Merge pull request #1516 from tigerbeetle/king/release-2024-02-05
0.14.178
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.178
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.178-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.14.178
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.178
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.178
. - Node.js:
npm install tigerbeetle-node@0.14.178
Changelog
Safety And Performance
-
Harden VSR against edge cases.
-
Allows VSR to perform checkpoint steps concurrently to reduce latency spikes.
-
Removed unused indexes on account balances for a nice bump in throughput and lower memory usage.
-
Only zero-out the parts necessary for correctness of fresh storage buffers. "Defense in Depth"
without sacrificing performance!
Features
-
TigerBeetle's dev workbench now also tracks
memory usage (RSS), throughput, and latency benchmarks over time!
Internals
-
Simplify assertions and tests for VSR and Replica.
-
.NET CI fixups
-
Spring Cleaning
TigerTracks 🎧
0.14.177: Merge pull request #1488 from tigerbeetle/cb22/take-action
0.14.177
Automated build. Do not use in production.
NOTE: You must run the same version of server and client. We do
not yet follow semantic versioning where all patch releases are
interchangeable.
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.177
- Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.14.177-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.14.177
- Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.14.177
- Java: Update the version of
com.tigerbeetle.tigerbeetle-java
inpom.xml
to0.14.177
. - Node.js:
npm install tigerbeetle-node@0.14.177
Changelog
Safety And Performance
-
Panic on checkpoint divergence. Previously, if a replica's state on disk diverged, we'd
use state sync to bring it in line. Now, we don't allow any storage engine nondeterminism
(mixed version clusters are forbidden) and panic if we encounter any. -
Fix a liveness issues when starting a view across checkpoints in an idle cluster.
-
Stop an isolated replica from locking a standby out of a cluster.
Features
-
Change
get_account_transfers
to usetimestamp_min
andtimestamp_max
to allow filtering by
timestamp ranges. -
Allow setting
--addresses=0
when starting TigerBeetle to enable a mode helpful for integration
tests:- A free port will be picked automatically.
- The port, and only the port, will be printed to stdout which will then be closed.
- TigerBeetle will exit when its stdin is closed.
-
TigerBeetle now has a dev workbench! Currently we
track our build times and executable size over time. -
tigerbeetle client ...
is nowtigerbeetle repl ...
.
Internals
-
Deprecate support and testing for Node 16, which is EOL.
-
#1477,
#1469,
#1475,
#1457,
#1452.Improve VOPR & VSR logging, docs, assertions and tests.
-
Improve integration tests around Node and
pending_transfer_expired
- thanks to our friends at
Rafiki for reporting!