Closed
Description
Issues to be fixed to release version 3
- Make most of Message functions non-virtual to reduce generated code size #339
- Remove
RepeatedField
#503 - Remove serde support from rust-protobuf-3 #519
- Dynamic Message #498
- Message field design #520
- Rename carllerche-bytes codegen option name to tokio-bytes #599
- Move protoc-bin-vendored into a separate repository #601
- Codegen option to create module hierarchy #438
- Support Field Presence (proto3) #513
- Change generated code for version 3 release #521
- Carefully work with integer overflow in serialization and deserialization #530
- Use underscore to escape keywords #618
Version 3 alpha versions are published. docs.rs
Open questions:
- Is current proto file placing OK? I. e. all files become first-level modules regardless of input directory structure and package declaration. I. e.
foo/bar.proto
becomesmod bar
- Do we need to rename
.proto
member to rust idiomatic names? I. e. do we need to rename enum variantFOO
toFoo
? - Should we use raw identifiers for reserved names? Currently proto field
type
becomesfield_type
in generated code. Perhaps it should ber#type
. - What about
MessageField
type? It is convenient, but isn't it too much mental overhead to work with? - Should we get rid of hack around figuring out how place messages in oneofs? They are boxed when there's a loop, and unboxed otherwise. I'm in favor of unconditionally making them boxed. Maybe later provide codegen option to store then unboxed.
- Is codegen customize callback API convenient?
- Shouldn't we pull JSON/text format parsing and serialization out of
protobuf
crate? For JSON we would be able to use third-party JSON parser more easily - should we restrict generated code only to current version of rust-protobuf? Or guarantee forward compatibility with generated code as rust-protobuf v2 did? Not guaranteeing compatibility would make future changes around reflection much easier.