Abstract
Developing SDKs for your users in multiple languages can come at a high cost - especially if you need to implement complex logic client side, but traditionally options for sharing logic across those languages have been quite limited.
Rust provides a means of defining shared logic usable from multiple languages, much like you could with C, without having to… write C. Combined with an IDL for representation of shared objects, you have a powerful means to keep your language-specific layer thin.
In this presentation I’ll explain the architecture of Temporal’s open source SDKs, and how we use it to centralize some extremely complex logic across 5 user-facing SDKs written in different languages.
Topics will include:
- What Rust helps us with
- IDL choices and serialization concerns
- Asynchronous task representations across language boundaries
- Compiling to WebAssembly to avoid native extension issues
- Staying idiomatic in the host language
- Limitations and pitfalls