-
Notifications
You must be signed in to change notification settings - Fork 620
Description
This is the tracking issue for our initial high-level C++ SDK
Goals
- High-level API
- Easy to use
- Easy to install
- For developers on their own machines
Non-goals
- C
- Embedded machines
- Header-only
We will save this for later.
Approach
Low-level C SDK
We wrap our Rust SDK with a minimal set of functions for:
initconnect,savelogaDataRow
The Rust side is responsible for:
- Batching
- TCP communication
- Streaming logs to disk
Low-level C++ SDK
Basically a C++-friendly wrapper around the C SDK
Code-generated classes
We use re_types (#2241) to generate classes for datatypes, components, and archetypes.
These are converted to Arrow-messages using the official Arrow C++ SDK.
Integrations
Finally, we have opt-in integrations with various libraries such as:
- OpenCV
- Eigen
- …
Distribution
The C SDK will consist of a single rerun.h header, and then a dynamic and/or static library of the rerun_c crate.
The C++ SDK will have a CMakelists.txt for ease of use in cmake build systems. We can maybe set up a system where cmake downloads and install the Rerun C++ SDK for users, including dependencies (Arrow).
TODO
- Code-gen for C++ #2647
- Check C++ on CI #2662
- Add C++ roundtrip tests (compare data output with Python & Rust SDKs) #2797
- Support manual extensions to generated types #2798
- What C++ version to target
- The Arrow C++ SDK requires C++17, but that should only affect the version for building our C++ SDK binaries
- Figure out the API
- Generate API docs
- High level examples
- Write high-level C++ docs
- Write C++ examples
- Library distribution
- …