| ▲ | eliasdejong 5 days ago | |||||||||||||||||||||||||||||||
Thank you. Having a native bytes type is non-negotiable for any performance intensive application that cannot afford the overhead of base64 encoding. And yes, Rkyv also implements this idea of indexing serialized data. The main differences are: 1) Rkyv uses a binary tree vs Lite³ B-tree (B-trees are more cache and space efficient). 2) Rkyv is immutable once serialized. Lite³ allows for arbitrary mutations on serialized data. 3) Rkyv is Rust only. Lite³ is a 9.3 kB C library free of dependencies. 4) Rkyv as a custom binary format is not directly compatible with other formats. Lite³ can be directly converted to/from JSON. I have not benchmarked Lite³ against Rust libraries, though it would be an interesting experiment. | ||||||||||||||||||||||||||||||||
| ▲ | conradev 5 days ago | parent | next [-] | |||||||||||||||||||||||||||||||
That second point is huge – Rkyv does have limited support for in-place mutation, but it is quite limited! If you added support for running jq natively, that would be very cool. Lite³ brings the B-trees, jq brings the query parser and bytecode, combined, you get SQLite :P | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | namibj 5 days ago | parent | prev [-] | |||||||||||||||||||||||||||||||
1) when did they downgrade? I've stared for hours at that particular code... 2) no you just don't get to move data freely. 3) I don't believe JSON has any place in a system that needs C because it can't handle Rust. 4) JSON can't handle non-tree structures, it's further very limited in expressivity. Rkyv is more of a code gen akin to ASN.1 Happy benchmarking, feel free to use the rkyv benchmark tooling and ensure you have enough link time optimization going on. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||