tendermint / go-amino

Protobuf3 with Interface support - Designed for blockchains (deterministic, upgradeable, fast, and compact)
Other
258 stars 78 forks source link

Provide generators for other languages #134

Open melekes opened 6 years ago

melekes commented 6 years ago

I assume, for languages, other than Go, there will be a spec (Protobuf like?) and people will use generators to produce code in their language.

Writing generators is probably? will require a lot of work (if we can't reuse existing, say Protobuf, generators), so this issue should be used to track the progress of implementing those generators for different languages.

zmanian commented 6 years ago

One big difference between protobuf3 and amino is that amino is designed to use the metaprogramming facilities provided by modern languages. Golang's reflect, Rust's CustomDerive, Python and Ruby metaprogramming to generate compatible messages rather than a domain specific language and code generator like protobuf which was intended for C++ and it's more limited metaprogramming facilities.

melekes commented 6 years ago

@zmanian I implied it, but thank you for outlining it!

haifengxi commented 6 years ago

@zmanian We are trying to develop an amino encoder for javascript, and a detailed spec for amino encoding would really help. :-)