rerun-io / rerun

Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui.
https://rerun.io/
Apache License 2.0
6.19k stars 285 forks source link

Minimize crate deps of the logging SDK to improve compile times #4788

Open emilk opened 7 months ago

emilk commented 7 months ago

We want to lower the threshold for someone to use rerun or re_sdk to just log data to a file, and then open that file in app.rerun.io. That includes minimizing the amount of dependencies one has to build. If someone does cargo add rerun and sees 200 dependencies being pulled in, they may very well abort.

So: to use the SDK to only log to a file should be possible with a minimal set of dependencies; mostly just Arrow.

In the future we could add support for the native viewer streaming and .rrd file that is being written to by the SDK, thus still supporting spawn even without WebSockets:

cargo tree -p rerun -e normal is good tool for working on this, as is cargo build --timings -p rerun --no-default-features

emilk commented 6 months ago

cargo clean && cargo build --timings -p rerun --no-default-features produces this:

image

What the hell is egui doing there? (fix: https://github.com/rerun-io/rerun/pull/5099)

And wasm-bindgen for a native build makes no sense either.

emilk commented 3 months ago

One important crate to focus on is re_sdk.

cargo tree -p re_sdk reveals some deps that should be removed:

build-deps: