36 releases
0.14.0 | Oct 25, 2024 |
---|---|
0.13.0 | Jul 4, 2024 |
0.12.1 | Oct 28, 2023 |
0.11.1-beta.10 | Jul 19, 2020 |
0.0.0 | Mar 30, 2018 |
#97 in Asynchronous
31 downloads per month
Used in 5 crates
(3 directly)
250KB
6K
SLoC
Hypercore
Hypercore is a secure, distributed append-only log. This crate is a limited Rust port of the original Javascript holepunchto/hypercore. The goal is to maintain binary compatibility with the LTS version with regards to disk storage.
See hypercore-protocol-rs for the corresponding wire protocol implementation.
Features
- Create in-memory and disk hypercores
- Append to hypercore either a single entry or a batch of entries
- Get entries from hypercore
- Clear range from hypercore, with optional support for sparse files
- Support basic replication by creating proofs in a source hypercore and verifying and applying them to a destination hypercore
- Support
tokio
orasync-std
runtimes - Support WASM for in-memory storage
- Test Javascript interoperability for supported features
- Add optional read cache
- Support the new manifest in the wire protocol to remain compatible with upcoming v11
- Finalize documentation and release v1.0.0
Usage
// Create an in-memory hypercore using a builder
let mut hypercore = HypercoreBuilder::new(Storage::new_memory().await.unwrap())
.build()
.await
.unwrap();
// Append entries to the log
hypercore.append(b"Hello, ").await.unwrap();
hypercore.append(b"world!").await.unwrap();
// Read entries from the log
assert_eq!(hypercore.get(0).await.unwrap().unwrap(), b"Hello, ");
assert_eq!(hypercore.get(1).await.unwrap().unwrap(), b"world!");
Find more examples in the examples folder, and/or run:
cargo run --example memory
cargo run --example disk
cargo run --example replication
Installation
cargo add hypercore
Safety
This crate uses #![forbid(unsafe_code)]
to ensure everythong is implemented in
100% Safe Rust.
Development
To test interoperability with Javascript, enable the js_interop_tests
feature:
cargo test --features js_interop_tests
Run benches with:
cargo bench
Contributing
Want to join us? Check out our "Contributing" guide and take a look at some of these issues:
License
MIT OR Apache-2.0
Dependencies
~4–17MB
~242K SLoC