Sanakirja is a key-value store based on B trees, written in Rust. In this post, I reflect on some design and programming methodology mistakes I’ve made. Benchmarks show that the latest version beats LMDB, the fastest C equivalent, by 20%-50% on a use case similar to my most common load (storing graphs in Pijul).
I’d like to announce a new release of Pijul, version 0.11. This release fixes a large number of bugs, follows evolutions in the Rust ecosystem (Tokio), integrates better with existing software (SSH proxys and config files), and introduces an important feature of Pijul: /partial clones/.
buildRustCrate is a tool I wrote in the Nix
programming language to share build products across crates and across
versions of a single crate when compiling Rust code. The initial
motivation was to speed up deployment times when working on large
projects with lots of dependencies, such as the
We’ll release a usable version of Pijul later today. Pijul itself is in an alpha stage, but is based on a number of other things we’ve needed to write, among which a key-value store known as Sanakirja.
Now that Sanakirja is in a usable state, the main operation before we can start to use Pijul for other purposes than tests is to plug Sanakirja in. This post describes our strategy for doing this, and the difficulties we’ve had.
We’re happy to announce the first joint sprint with the darcs team, which will take place on May 6th, 7th and 8th in Helsinki, Finland. If you’re interested in using and/or learning Rust and Haskell, come hack with us!
Seems like we’re not the only ones! Here is the original picture.
Monday, January 1, 0001
The status of Pijul These deep infrastructure changes were certainly triggered by unfortunate events, but probably happened at the right time, just before finalising the entire format. While the servers were down, a number of things happened:
Thanks to @tankf33der’s restless testing, we’ve caught three bugs in Sanakirja, which could cause data corruption on very large instances. If you are using Sanakirja, you should make sure that you’re using version 1.