https://microsoft.github.io/bond/why_bond.html
In terms of mapping to target languages, Bond again is much more similar to
Thrift than Protocol Buffers. Like Thrift, Bond generates native types to
represent schemas in the target language and uses native collections. Bond
however doesn’t hard-code type mappings. For example in C++ the defaults are
STL containers like std::vector however user can easily map custom types
(e.g. use boost::multi_index_container in a generated C++ struct or map a
uint64 schema field to a System.DateTime field in a generated C# class).
Bond generated C++ structs can also use custom allocators. See custom type
mappings for more details.
https://microsoft.github.io/bond/manual/compiler.html
Schema AST
The compiler exposes a JSON representation of the schema Abstract Syntax
Tree. The AST is intended for tools that need to access to the schema
information contained in Bond IDL files with the full fidelity. The compiler
can also take the JSON representation of the AST as an input, enabling tools
which programmatically construct/modify Bond schemas.