1.1 KiB
1.1 KiB
interoperability
api needs to facilitate easy interoperability with other languages and tools, for that certain considerations are taken:
- number of public api calls is kept at the minimum
- procedure parameters can only use basic types, no aggregates, with exception of Vec/Matrix types and alike, with no expectation on new additions (see /include/twn_types.h)
- optionals can be expressed via pointer passage of value primitives, with NULL expressive default, but they should be immutable
- opaque typed parameters are passed around as pointers
- when mutation on input is done, - it shouldn't be achieved from a mutable pointer, but return value
- return value could be a simple aggregate that is translatable to value-only dictionary
- module prefix is used for namespacing, actual symbols come after the prefix (
module_symbol
) - symbols should not contain letters at the start nor after the namespace prefix
- floats are preferred over integers
- /include/twn_api.json file is hand-kept with a schema to aid automatic binding generation and other tooling