Shopify / protoboeuf

Experimenting with a protobuf implementation
MIT License
37 stars 5 forks source link

Generate inline code for wrapper classes by default #95

Open maximecb opened 6 months ago

maximecb commented 6 months ago

Currently, we create a runtime dependency if people use the Google wrapper classes. Given how commonly used these classes are, I think it might make sense to always inline them by default. Being able to generate fully self-contained code, zero external dependencies, seems like a big selling point for protoboeuf. We also only need to generate/inline the wrapper classes that people actually use, so the code size impact will probably be pretty small.

@tenderworks

tenderworks commented 2 months ago

I don't think we're generating any code that depends on Google's libraries. We generate some code that depends on ProtoBoeuf at the moment (all of the built-in classes), but I think it's the right thing to do. For example, anyone depending on .google.protobuf.BoolValue will depend on ProtoBoeuf::Protobuf::BoolValue in the generated code.

maximecb commented 1 month ago

I think we should consider including ProtoBoeuf::Protobuf::BoolValue in the generated code if it's being used, to avoid having a dependency on ProtoBoeuf in the generated code, make it fully self-contained.