3 ms·
The idea of plain JSON as a format for expressing ABIs is great. I wish it was in LLVM/GCC out-of-the-box, rather than a separate open source project (whose ma
by skissane 4y ago
The idea of plain JSON as a format for expressing ABIs is great.
I wish it was in LLVM/GCC out-of-the-box, rather than a separate open source project (whose maintainer only seems to have rather limited time to spend on it). Ideally there would be a standard format so LLVM, GCC, MSVC, etc, could all produce it (obviously with some extension points since each has some unique features the other doesn’t). From memory, the actual JSON produced by c2ffi follows rather closely clang’s internal data structures and so might not be the right design for something intended to be generic.
- cryptonector 4y agoIt doesn't have to be JSON. It just has to be in a formal syntax and semantics so we can interchange.
- skissane 4y agoSure it doesn’t have to be JSON. It could be YAML, XML, ASN.1, S-expressions, whatever. But I think JSON is a clear winner (nowadays) on the basis of being simple, easy to parse (compared to C/C++/etc which have very complex syntax), parsing libraries being extremely widely available (almost every language, even the most obscure, has a JSON parser available; languages which lack JSON support in their standard library, such as C, are now the exceptional minority.) Of course it is more voluminous and slower than a binary format. One could always define a binary encoding which straightforwardly maps to the JSON one (or just reuse an existing one such as UBJSON, BSON, CBOR, etc)
- cryptonector 4y agoVerbosity doesn't really matter in this context. Schema does. I agree that JSON is probably the best choice from among the choices you listed. (Also, ASN.1 has JSON encoding rules, FYI. ASN.1 is not just the awful DER.)