Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR. Learn more →
Top 23 protocol-buffer Open-Source Projects
-
You can also download the protoc compiler from the official protobuf release page and add the path to the protoc compiler to the system environment variable.
-
CodeRabbit
CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
-
Project mention: Performance Analysis of JSON, Buffer / Custom Binary Protocol, Protobuf, and MessagePack for Websockets | dev.to | 2024-10-31
In this code example, I use protobuf.js, a javascript implementation of protobufs. I use reflection to generate the protobuf code at runtime. You can also generate code statically, but it has no impact on performance according to the protobuf.js wiki, however it does load protobuf code faster, but that does not impact the performance at all when sending websocket messages.
-
-
Project mention: Using gRPC for (local) inter-process communication – F. Werner's Research Page | news.ycombinator.com | 2024-11-20
Cool that they mention buf, it's such a massive improvement over Google's own half abandoned crappy protobuf implementation
https://github.com/bufbuild/buf
-
-
Use a known set of standard error codes and not a unique error code for each new situation.
Error codes are there to hint to clients/callers what action they should potentially take (retry?,fail)
Don't make callers handle 100s of different potential error codes.
If the whole internet can work with 70 your app can work with less.
All of google uses less than 20
https://github.com/googleapis/googleapis/blob/master/google/...
Put more specific information in the error message or a secondary status code.
-
The Go tooling for gRPC is inexplicably bad, both in terms of ergonomics and in terms of performance.
The GoGoProtobuf [1] project was started to improve both. It would generate nice Go types that followed Go's conventions. And it uses fast binary serialization without needing to resort to reflection.
Unfortunately, the gRPC/Protobuf team(s) at Google is famously resistant to changes, and was unwilling to work with the GoGo. As a result, the GoGo project is now dead. [2]
I've never used Buf, but it looks like it might fix most of the issues with the Go support.
[1] https://github.com/gogo/protobuf
[2] https://x.com/awalterschulze/status/1584553056100057088
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
Project mention: Zod: TypeScript-first schema validation with static type inference | news.ycombinator.com | 2024-10-07
-
-
Project mention: gRPC Quick start - Coding with streams and bidirectional streaming | dev.to | 2024-06-13
You should see the Server starting on port :50051 message. To interact with the gRPC server, we will use Evans, which is an interactive command-line client for gRPC. You can read more about it here and can install using docker docker run --rm --network host -it ghcr.io/ktr0731/evans --host localhost --port 50051 --reflection. This method is not recommended, but in our case, it will be fine. If everything worked correctly, you must see something like this in your terminal:
-
protoc-gen-validate
Protocol Buffer Validation - Being replaced by github.com/bufbuild/protovalidate
-
Project mention: Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance | news.ycombinator.com | 2024-04-12
-
gnostic
A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks.
-
-
-
-
protobuf-es
Protocol Buffers for ECMAScript. The only JavaScript Protobuf library that is fully-compliant with Protobuf conformance tests.
-
-
-
-
I'm surprised the author doesn't mention ConnectRPC: https://connectrpc.com/
It solves ALL the problems of vanilla gRPC, and it even is compatible with the gRPC clients! It grew out of Twirp protocol, which I liked so much I made a C++ implementation: https://github.com/Cyberax/twirp-cpp
But ConnectRPC guys went further, and they built a complete infrastructure for RPC. Including a package manager (buf.build), integration with observability ( https://connectrpc.com/docs/go/observability/ ).
And most importantly, they also provide a library to do rich validation (mandatory fields, field limits, formats, etc): https://buf.build/bufbuild/protovalidate
Oh, and for the unlimited message problem, you really need to use streaming. gRPC supports it, as does ConnectRPC.
-
-
Project mention: Parquet-WASM: Rust-based WebAssembly bindings to read and write Parquet data | news.ycombinator.com | 2024-04-22
it's been about 3 years, but in Grafana at the time we were using something like ArrowJS + Arrow Flight + protobuf.js and then render the datasets into dashboards on Canvas, especially for streaming at ~20hz.
when i benchmarked the fastest lib to simply convert the protobuf decode (https://github.com/mapbox/pbf), it was 5x slower than native JSON parsing in browsers for dataframe-like structures (e.g. a few dozen 2k-long arrays of floats).
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
protocol-buffers discussion
protocol-buffers related posts
-
Part 3: Compiling the Protos and Setting up the gRPC server
-
Using gRPC for (local) inter-process communication – F. Werner's Research Page
-
Self-Documenting Code
-
Mastering Go gRPC Services with Docker: A One-Stop Guide
-
Build basic microservice online store backend with Golang use Api Gateway Pattern - Part 1
-
Why should we use Protobuf in Web API as data transfer protocol.
-
Another variable-length integer encoding
-
A note from our sponsor - CodeRabbit
coderabbit.ai | 12 Dec 2024
Index
What are some of the best open-source protocol-buffer projects? This list will help you:
Project | Stars | |
---|---|---|
1 | Protobuf | 65,944 |
2 | protobuf | 9,971 |
3 | goprotobuf | 9,815 |
4 | buf | 9,259 |
5 | awesome-grpc | 7,672 |
6 | googleapis | 7,668 |
7 | gogoprotobuf | 5,666 |
8 | typia | 4,667 |
9 | nanopb | 4,410 |
10 | evans | 4,304 |
11 | protoc-gen-validate | 3,815 |
12 | protobuf-go | 2,953 |
13 | gnostic | 2,121 |
14 | grpc-swift | 2,056 |
15 | ts-protoc-gen | 1,369 |
16 | ScalaPB | 1,309 |
17 | protobuf-es | 1,165 |
18 | protobuf-ts | 1,109 |
19 | go-proto-validators | 1,084 |
20 | protobuf-swift | 939 |
21 | protovalidate | 958 |
22 | protobuf | 828 |
23 | pbf | 800 |