#client #api-bindings #low-level #async #tigerbeetle #cluster #tiger-beetle

tigerbeetle-unofficial-core

Safe low level callback-based async bindings to tigerbeetle client library

21 releases (7 breaking)

new 0.9.3+0.16.32 Mar 20, 2025
0.8.0+0.16.28 Feb 18, 2025
0.7.0+0.16.20 Dec 30, 2024
0.4.1+0.15.3 Jul 28, 2024
0.2.1+0.13.71 Jul 18, 2023

#3 in #tigerbeetle

Download history 142/week @ 2024-12-04 28/week @ 2024-12-11 132/week @ 2024-12-18 268/week @ 2024-12-25 28/week @ 2025-01-01 86/week @ 2025-01-08 113/week @ 2025-01-15 104/week @ 2025-01-22 115/week @ 2025-01-29 149/week @ 2025-02-05 189/week @ 2025-02-12 76/week @ 2025-02-19 43/week @ 2025-02-26 20/week @ 2025-03-05 10/week @ 2025-03-12

244 downloads per month
Used in tigerbeetle-unofficial

Apache-2.0

6MB
123K SLoC

Zig 96K SLoC // 0.1% comments Java 9K SLoC // 0.2% comments C# 4.5K SLoC // 0.1% comments Go 3.5K SLoC // 0.1% comments Python 3K SLoC // 0.1% comments Rust 2.5K SLoC // 0.0% comments JavaScript 2K SLoC // 0.1% comments TypeScript 1.5K SLoC // 0.3% comments C 294 SLoC // 0.1% comments Shell 166 SLoC // 0.2% comments Batch 78 SLoC // 0.1% comments Lua 77 SLoC // 0.0% comments Visual Studio Solution 33 SLoC

tigerbeetle-unofficial

crates.io Rust 1.78+
CI Rust docs

Changelog

Unofficial TigerBeetle bindings for Rust.

WARNING: In TigerBeetle a client is not backward compatible with a cluster. You cannot run a newer client against an older cluster: clients are only forward compatible with replicas from their own version or newer (see the "Oldest supported client version" for the supported versions range).
To avoid accidental use of a newer TigerBeetle client with an older cluster, it's highly recommended to pin the exact version if this crate in your [dependencies] and only change it with the cluster upgrade along:

[dependencies]
tigerbeetle-unofficial = "=0.9.3+0.16.32"

Status

Because this TigerBeetle client library implementation is not a part of the official tigerbeetle repos, it is hard to ensure and keep some of Rust safety guarantees from the outside. For that reason I invite people to contribute to this repo or finally develop the official Rust client library.

Repo Overview

The repository hosts the following libraries:

  • Crates.io docs.rs - Safe high-level async bindings. Implemented with #![forbid(unsafe_code)] upon tigerbeetle-unofficial-core.
  • Crates.io docs.rs - Safe low-level callback-based async bindings.
  • Crates.io docs.rs - Unsafe native bindings.

License

TigerBeetle is licensed under Apache License, Version 2.0.

tigerbeetle-unofficial crates are licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Dependencies

~0.6–8.5MB
~79K SLoC