Introducing Rerun 0.10!
At Rerun we're building a general framework for handling and visualizing streams of multimodal data in Rust. In its current iteration, it is used by developers in fields like computer vision, robotics, and AR/XR. We love Rust, but the norm in these fields is still that running in production means C++. So we needed a C++ API (in addition to our existing Rust and Python bindings).
However, we early on learned that maintaining nice/well documented/consistent APIs between just Python and Rust was very hard. Too many forces naturally pulled them apart. Without major changes, adding C++ would slow us to a crawl.
Complexity arises since the SDKs let users log many kinds of data, which can be represented in many different formats. The SDKs need to make it easy to get all that data into Rerun's Arrow based format, whilst feeling consistent across languages and native to each language.
To solve this we built a code generation framework that took Rerun types defined in a new Interface Definition Language and used them to generate working SDK code in Rust and Python. The framework is entirely written in Rust and uses the Rust build system as a build graph for the whole generation process.
Using this framework, we have now shipped the first C++ bindings. We wrote a blog post that gives more background on the technical decisions to get here: https://www.rerun.io/blog/cpp-sdk
Full release notes: https://github.com/rerun-io/rerun/blob/main/CHANGELOG.md
Check out the in-browser demo: http://app.rerun.io