0.26.0 - Viewer improvements and table filtering upgrades
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 rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked(New: requires an installation ofprotoc) - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.26.0/rerun_cpp_sdk.zip
✨ Overview & highlights
We have started aiming for a higher release cadence, with smaller, more frequent releases.
🧩 Blueprint improvements
Blueprints now give you more control over playback and visualization settings.
You can define playback speed and FPS directly in blueprints, and manage time and timeline behavior through them as well.
The Blueprint panel is now always resizable, and we've added support for customizing plot backgrounds.
🔍 Table filtering upgrades
Table filtering just got a lot more capable. You can now filter on timestamps, use new string operators like starts with, ends with, and does not contain, and combine these with improved numeric and boolean filtering.
⚠️ Breaking changes
🐍 Python API
The blocking argument for flush has been removed, use the new timeout_sec argument instead, for non-blocking calls, set timeout_sec=0.
Mostly you can just call .flush() with no arguments.
We also have started using named arguments (kw-args) for more of our functions, this will make it easier for us to evolve our APIs in the future, when adding new arguments, or renaming old ones.
cargo install rerun-cli now requires a system installation of protoc.
See the 🧳 Migration guide for more details.
🔎 Details
🪵 Log API
- Merge
DroppableEncoderandEncoderinto a single facility #11446 - Encoder: simplified APIs and improved discoverability #11450
- Introduce
Lensas a concept for semantic mapping of arbitrary data #11394
🐍 Python API
- Add module definition to all
pyclasses#11268 - Python SDK: Add
timeout_secargument toflush#11295 - Python SDK: remove
blockingargument offlush#11314 - Fix instances of
newest_firstnot working correctly #11326 - Update Schema to make query view requirements clearer #11287
- Fix error when logging
AnyValueswith empty columns #11322 - Include "outer nullability" when we format column datatypes #11339
- Fix error message for what package to install #11398
- Py-SDK: More kw-args #11384
- Add meaningful equality comparisons to many rust wrappers #11401
- Remove deprecated methods from
AnyValues#11390 (thanks @Weijun-H!) - Introduce the dataset manifest and remove layer information from the partition table #11423
- Make time and timeline controlled by blueprint #11405
🦀 Rust API
🪳 Bug fixes
- Fix edge case for parsing videos with constant frame size #11226
- Fix title bar height on macOS Tahoe #11241
- Blueprint panel can now always be resized #11046
- Fix rare issue where video stream sample indices would be determined incorrectly, breaking video inspection UI & playback #11308
- Fix links to custom timelines #11333
- Fix url edit warning spam #11330
- Fix race condition for ui adjustments while loading recordings from redap client #11365
- Fix formatting and parsing of component paths in URLs #11364
- Share button on notebook no longer uses the current base url for web viewer urls #11379
- Enable "Close current recording" only when there's a recording #11353
- Do not include metadata when rendering table in html #11463
- Data loaders: fix multiple nasty bugs when working with virtual FDs (e.g.
<(...)FIFOs) #11486 - Fix data corruption during compression of large chunks #11525
🌁 Viewer improvements
- Keep last paused time in web-viewer url #11246
- Add limited support for out-of-order video stream samples #11307
- Better video stream errors for missing samples & key frames #11310
- Add optional viewer url parameter to web app options #11296
- Add spectral colormap #11298
- Better gRPC errors #11335
- Fix
UnixEpochdisplay/parsing inconsistency #11491 - Blueprint plot background #11494
- Put playback speed and fps in blueprint #11490
🗄️ OSS server
- Add table support to OSS server #11356
🚀 Performance improvements
- Determine per-view overrides in parallel (-> faster many entities + many views on native) #11439
- Improve many-entity performance by fixing redundant
AnnotationContextlookups (also affects scene without annotation contexts) #11445
🧑🏫 Examples
- refactor: Move examples for notebook viewer and callbacks to
examples/python#11416 (thanks @Weijun-H!)
📚 Docs
- Add how to connect the server to the CLI command output #11400
🖼 UI improvements
- Add copy-button to the recording link table item #11242
- Add copy link context menu to server entries #11235
- Add support for displaying timezone with our timestamps #11234
- Show loading screen when opening link #11270
- Support filtering by timestamp in table view #11227
- Add
starts with/ends withstring filters to table #11341 - Mark valid data ranges in timeline when loading data via range-limited URL #11340
- Add
does not containoperator to string column filtering #11349 - Copy button on some selection items #11337
- Add
is notto timestamp filtering #11366 - Add
is notto nullable boolean filter #11371 - Treat
!=filtering of numerical column as the inverse of==(aka. outer-NOT and ALL semantics) #11372 - Add context menu button to copy partition name #11378
- Store (and display) recordings in insertion order #11415
🎨 Renderer improvements
🧢 MCAP
- Add support for
enumin protobuf MCAP messages #11280 - Represent enums from
protobufmessages asStructArray#11458 - Reflection-based
protobufparser only returns single component #11459 - Add reflection based support for deserializing ROS2 MCAP #11367
- Reflection-based ROS2 parser now only returns single component #11480
🧑💻 Dev-experience
- Improve rrd loading errors by checking FourCC first #11265

