Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
It's time to switch from rust-protobuf to Prost. There are a few factors in this decision: * The maintainer of rust-protobuf has announced that the project is essentially unmaintained for the time being [0]. * Prost is the more popular Protobuf library across the ecosystem. In particular, the Tonic GRPC library uses Prost, and the Tokio tracing console uses Prost. These are both extremely important for Materialize Platform, which we expect to be built on top of Tonic and making heavy use of distributed tracing. There have been been two major blockers to adopting Prost: 1. Prost lacked dynamic message support. That was miraculously fixed last month with the release of a fantastic prost-reflect crate [1]. 2. Prost embeds `protoc` in its Git repository (!). See tokio-rs/prost#575. That is a disaster for supply chain security. This commit patches in a Materialize-specific fork of Prost that compiles `protoc` from source rather than using upstream's embedded binary blobs. This commit excludes one crucial piece: converting the dynamic Protobuf decoding in the `interchange` and `testdrive` crates from rust-protobuf to prost-reflect. I'll do that migration in a future commit to avoid inflating the size of this PR unnecessarily. [0]: stepancheg/rust-protobuf#583 (comment) [1]: https://www.reddit.com/r/rust/comments/rsg6gx/announcing_prostreflect_a_crate_for_protobuf/
- Loading branch information