5 ms·
It's 'only' really 4 (two of them are gRPC implementations). But yeah - this is one of those things that makes me stay with Go instead of moving over to Rust f
by q3k 6y ago
It's 'only' really 4 (two of them are gRPC implementations).
But yeah - this is one of those things that makes me stay with Go instead of moving over to Rust for my backend SOA/microservice work. In Rust, for everything you need to do, there's at least 5 different libraries that implement that, all competing with eachother. This is especially annoying when dealing with transitive dependencies. Meanwhile in Go, you generally get one choice - it might be not great, but that's fine, it doesn't have to be.
EDIT: This is not intended to be mindless bashing of Rust. I do use Rust for other things. It's a fine language.
- jeffbee 6y agoThere are at least two Go protoc plugins, protobuf-go and gogoproto.
- q3k 6y agoIt's the only real alternative implementation (and more precisely, a fork of upstream protobuf), _and_ there is strong cooperation [1] [2] between both projects to maintain a level of interoperability. And, it's not even protobuf I have a problem with - but things like HTTP implementations. There still isn't a canonical HTTP client/server implementation for Rust, while in Go basically everyone just uses `net/http`, or something that builds on top of that. Same for cryptographic primitives, TLS, context, ... [1] - https://docs.google.com/document/d/19kfhro7-CnBdFqFk7l4_HmwaH2JT_Rhw5-2FLWLEGGk/edit# https://docs.google.com/document/d/19kfhro7-CnBdFqFk7l4_Hmwa... [2] - https://github.com/gogo/protobuf/issues/386 https://github.com/gogo/protobuf/issues/386
- jeffbee 6y agoI imagine this stems from the fact that Go needed to be a complete production-ready backend language at launch, whereas Rust has other origins. At Google any "hello, world" program is a web server, at Mozilla not so much.
- bfrog 6y agoNot everyone uses net/http, and definitely not the builtin slower than python json marshaler.
- staticassertion 6y ago> In Rust, for everything you need to do, there's at least 5 different libraries that implement that, all competing with eachother. That's interesting. This seems like a good thing to me. I've had no issues with microservices in Rust related to having too many crates.
- woah 6y agoIMO the time spent choosing a library in Rust is about equal to the spent debugging a null pointer in Go, but a Rust project will have a lot less libraries than a Go project will have null pointers
- saagarjha 6y agoPerhaps you're not auditing your code as much as you ostensibly should.