prost
pebble
prost | pebble | |
---|---|---|
14 | 11 | |
3,513 | 4,455 | |
2.0% | 1.1% | |
8.3 | 9.8 | |
9 days ago | about 1 hour ago | |
Rust | Go | |
Apache License 2.0 | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
prost
-
Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance
The benchmark is not comparing apples to apples.
prost is the most widely used Protobuf implementation in Rust, maintained by the Tokio organization. prost generates structs and serialization/deserialization code for you.
easyproto according to GitHib Search is used only by two projects. easyproto provides primitives for serializing and deserializing Protobuf, and requires hand writing code to do both.
A fair comparison would be prost vs google.golang.org/protobuf, or easyproto vs parts of quick-protobuf.
In most cases you can make Go as fast as Rust, but from my experience writing performance-sensitive code in Go requires significantly larger time investment and overall requires deeper language expertise. Pebble (RocksDB replacement in Go by CockroachDB) is a good example of this, the codebase is littered with hand-inlined[1] functions, hand-unrolled loops and it's not[2] even using Go memory management for performance critical parts, it's using the C memory allocator and manual memory management.
[prost]: https://github.com/tokio-rs/prost
- How Turborepo is porting from Go to Rust
-
Hey Rustaceans! Got a question? Ask here! (49/2022)!
You could use Protocol buffers to define a message type, then use prost to generate encoding/decoding code for that type.
- Adding #derive to a struct defined in another place
-
grpc gateway
Thanks but that doesn't seems to support `json_mapping` , there is a draft available but not sure when it will get merged https://github.com/tokio-rs/prost/pull/558
-
[help] Tonic-build: how to generate generic service definition?
Hi r/rust, I have a question regarding tonic-build (or prost-build).
-
Unwrapping inner values from the enum more easily?
Currently, I'm making some stuff by using protobuf via prost. Maybe you know, protobuf v3 treats all fields as optional, so it is pain to unwrap every nested field.
- Best way to communicate between Rust and Go?
-
Past, present and future of rust-protobuf
Note: one additional key feature currently missing from Prost is Proto2 extensions.
- Does prost [protocol buffers for rust] use tokio runtime to implement GRPC service?
pebble
- Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance
-
Hummock: A Storage Engine Designed for Stream Processing
To improve the compacting speed of L0 files, we took inspiration from the design of the CockroachDB storage engine pebble.
- RocksDB/LevelDB inspired key-value database in Go
-
Is there a lightweight, stable and embedded database library?
https://github.com/cockroachdb/pebble ?
-
Understanding Fantoms Underlying Tech & Lachesis Consensus Algorithm + The Most Recent Developments
Pebble is a LevelDB/RocksDB-inspired key-value database focused on performance. PebbleDB is replacing Fantom’s previous RPC software to match Fantom’s sheer throughput. PebbleDB is consistently faster than previous options and it has helped the Fantom network to consistently reach synchronization with the network quicker while reducing the duration of API requests.
-
Looking for fast, space-efficient key-lookup
https://github.com/cockroachdb/pebble Pure go SSD native key-value store. You could think of it as map[[]byte][]byte on persistent storage.
-
Open Source Databases in Go
Genji is a document-oriented, embedded, SQL database. It is build over Pebble which is a port of RocksDB in Go, by the authors of CockroachDB.
-
CockroachDB: The Resilient Geo-Distributed SQL Database
Out of curiosity, why write https://github.com/cockroachdb/pebble and not just use https://github.com/dgraph-io/badger?
- Recommendation for Key/Value storage
-
CGo-free sqlite database/sql driver 1.8.0 for darwin/amd64 released
There's the semi-recent pebble from the folks that make cockroach db. Haven't used it, but seems promising: https://github.com/cockroachdb/pebble
What are some alternatives?
rust-protobuf - Rust implementation of Google protocol buffers
bolthold - BoltHold is an embeddable NoSQL store for Go types built on BoltDB
tonic - A native gRPC client & server implementation with async/await support.
LevelDB - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
cargo-raze - Generate Bazel BUILD from Cargo dependencies!
badger - Fast key-value DB in Go.
varint-simd - Decoding and encoding gigabytes of LEB128 variable-length integers per second in Rust with SIMD
pogreb - Embedded key-value store for read-heavy workloads written in Go
ts-proto - An idiomatic protobuf generator for TypeScript
Redis - Redis Go client
prost - PROST! a Protocol Buffers implementation for the Rust Language
goleveldb - LevelDB key/value database in Go.