Hyperbee
A peer-to-peer append-only B-tree built on Hypercore. Compatible with the JavaScript version.
$ cargo add hyperbee
Usage
From the examples:
use Hyperbee;
async
Foreign Language Bindings
We use UniFFI to generate libraries for other languages. To build the library for python run:
&&
This generates a file out/hyperbee.py, which an be used. This file requires that libhyperbee.so be present alongside the .py file.
Distributable python packages are still a work-in-progress. Currently only Python is tested. See the tests for example usage.
Parity with JS Hyperbee
- full functional interoperability with JS Hyperbee files
- read, write, and delete operations
- in-order key streaming like JS's
createReadStream - support
gt,lt, etc bounds for key streaming - accept compare-and-swap for
putanddel. - support prefixed key operations like JS's
sub - one-to-one binary output #23
Future work
- Build FFI wrappers
- improved wire format
- configurable tree parameters
Development
Run the tests with $ cargo test.
Each significant pull request should include an update the CHANGELOG.md
Release
Releases are mostly handled with cargo release.
After each Rust release. We manually release a new python package. Building the python package is done with maturin and it is released with twine.
# create a virtualenv with the tools we need
&&
# build the wheels
# Upload the wheels to pypi. This uses my api token from ~/.pypirc