Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install -U rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.37.0/rerun_cpp_sdk.zip
🧳 Migration guide: https://rerun.io/docs/changelog/changeset-0-37#breaking-changes
✨ Overview & highlights
- Assets in catalogs, data shared across all segments
- Improved selection panel navigation
- State timeline view improvements
- Export recordings and blueprints from the web Viewer
rerun rrd statstells you whether a recording should be optimized- Experimental dataloaders use a unified fetch and decode pipeline
- Faster video decoding for training
- Faster manifest generation for video datasets
📖 Release notes: https://rerun.io/docs/changelog/changeset-0-37#highlights
⚠️ Breaking changes
- All SDKs:
datatypesis renamed toencodings. The old spelling still works, deprecated. - Rust: the SDK now requires Rust 1.96 or later.
- Rust, C++: setting a recording id no longer disables recording properties. Opt out with
send_properties(false). - Rust:
Loggableis replaced byArrowDataType,ToArrow,ToArrowOpt,FromArrowandFromArrowOpt. - Python: the
rerun-sdk[datafusion]andrerun-sdk[dataplatform]extras are removed, usererun-sdk[catalog]. - Python: the experimental
Mp4ReaderemitsVideoStream:is_keyframeas a single sparse marker chunk. - Python: experimental dataloader decoders now decode a whole fetch block at a time.
- Python: experimental dataloader windows list explicit offsets instead of an inclusive range.
🧳 Migration guide: https://rerun.io/docs/changelog/changeset-0-37#breaking-changes
🔎 Details
🌊 C++ API
- Rename
datatypestoencodings582f273 - Send recording properties even when a recording id is set f40451b
🐍 Python API
- Rename
datatypestoencodings582f273 - Add manifest support for the map dataset e5077f3
- dataloader: Batch decoding of fetched samples 132284c
- Remove deprecated
rerun-sdk[datafusion]andrerun-sdk[dataplatform]in favor ofrerun-sdk[catalog]b51a09a - Experimental dataloaders use a unified fetch and decode pipeline ec9488e
- Make windows supported for all decoders, force
is_keyframefor video fields c7feeed - Faster video decoding: frame views, YUV output, and FFmpeg threading 23d97be
- dataloader: skip samples whose decoders return
None19dd869 - Rely on keyframes only for the manifest 4dea0aa
- Include assets in
segment_store()52a16b8
🦀 Rust API
- Rename
datatypestoencodings582f273 - Send recording properties even when a recording id is set f40451b
- Update to Rust 1.96.0 dcfb289
- Replace
Loggablewith four (de)serialization traits de85d2f - Add a standalone
rrd::optimize_fileAPI to thereruncrate 7f4ee31 - refactor: split importers into their own a la carte features to improve compile times #12899 (thanks @claytonwramsey!)
🪳 Bug fixes
- fix: keep query_dataset response schemas consistent for empty results 0d6f3ec
- Fix recovery of MCAP messages with truncated index 3a9622f
- Fixes broken state timeline when lanes end with
Clearc358596 - Show 3D labels projected into 2D views d1a572a (thanks @chunibyo-wly!)
- Show MCAP CLI processing time as float seconds 99ca6b4
- Remove "Reset overrides to default blueprint" button fda2f10
- Fix dataframe API rejecting non-nullable outer list fields on MCAP-converted recordings c44ca0c
- Fix error messages for potentially recoverable MCAP files 56b5be0
- Fix
TransformAxes3Dblanking the whole 3D view when one frame is unresolvable 7c76d0d (thanks @lsy3, @luke-alloy!) - Skip unloadable meshes instead of failing import a013fe4
- Fix containers not re-layouting when views are hidden afbb031
- Fixes click on state lanes not selecting the entity de1f2c3
- Fix opening links 04e6e08
- Reflect dynamic
Structproto into JSON and guard against recursion 1202ee7 - fix: validate e-tags mid-registrations and on get_rrd_manifest e0c458f
- Fix video playing when there's many samples at the same timestamp 31d6687
- Fixes incompatible visualizers showing up in context menu c8a597c
- Pass through frame info with av1 decoder 2c579bb
- Fix detecting various link types (s3, gs, ftp etc.) as things we can open 3fa4313
- Failure to load will now stay in loading screen (with error) for all log sources f30766b
- Don't warn if an open asset is removed 24ca9b5
- Fix URDF prismatic joints sliding along the wrong axis 397a4a5
🌁 Viewer improvements
- Visible time range control for state view c4c0f03
- Viewer downloading asset chunks and caching them c0e306c
- State Timeline accepts dropping entities 3cb5761
- Dataset Asset UI 700cfe5
- Use
/dataset/<entry_id>for URI's leading to datasets 5025e20 - Pins time cursor to center of state timeline e2df8f0
- Registering & Unregistering assets in viewer 5ab20d4
🚀 Performance improvements
- Speed up schema reflection of ROS 2 MCAP channels 7b1aa5f
- Support incremental ingest for SortedTemporalChunks #12812 (thanks @0n41rd4!)
🖼 UI improvements
🕸️ Web
- Add
save_recording&save_blueprintjavascript APIs a2660e5
🧑💻 Dev-experience
- Add an MP4Reader skill and fix a bug caught in reviewing the skill e71975f