Rust at FullStory

  • Common code shared across iOS/Android libs lives in a Rust binary that their native SDKs link against.
  • There are LLVM version incompatibilities, so Rust compiler output can’t be used for bitcode-enabled apps (essentially apps where an intermediate compiler representation is uploaded so Apple can perform server-side optimization).
  • They use this set of scripts to get around this problem.
  • Their Rust project is split up into:
  • They use these libraries to call into Rust from Java/Obj-C:
  • This post is a great counterpoint against this sort of setup, although Dropbox:
    • Has a full mobile app, not just an SDK.
    • Used C++, not something more modern (esp. wrt. dependency management).