0.22.0 - Entity filter & improved partial update API
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 rerun
andcargo install rerun-cli --locked
- Online demo: https://rerun.io/viewer/version/0.22.0/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.22.0/rerun_cpp_sdk.zip
New entity filtering:
entity-filter-smaller.mp4
Copy any view as screenshot with right-click (now works in web-viewer):
New help texts for all our views:
📖 Release blogpost: https://rerun.io/blog/release-0.22
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-22
✨ Overview & highlights
Viewer
- 🔎 Added entity filtering/searching
- 🔔 Recent notifications show now in a dedicated panel
- 🖱️ Entity ranges can now be selected with shift + click
- ❓ Improved panel help
- 🖼️ Crisper UI rendering
- 🧊 Faster 3D transforms
APIs
- 🔄 Much easier partial updates of archetypes
- 📊 Greatly improved ease of use of
send_columns
- ⏱️ Python notebooks & JS can now control the timeline and panel states (see last section of this notebook)
- 📝 Lots of new snippets for demonstrating partial updates & custom data logging in Python/C++/Rust
The API & related under-the-hood changes pave the way for better support for multiple archetypes on the same entity and components with generic types in future releases.
Stay tuned!
⚠️ Breaking changes
Passing raw batches of components is no longer supported. Instead, use the partial update APIs (or in rare cases, explicitly serialize the components).
Check the 🧳 Migration guide for before/after snippets for all languages for this and other smaller breaking changes.
🔎 Details
🪵 Log API
- Tensor shape and dimension names are now separate arrow fields #8376
- Remove deprecated
DisconnectedSpace
archetype & component #8545 - Add
any_values
andextra_values
snippets for rust #8718 - Implement gRPC log sink #8709
- Implement gRPC log stream #8730
🌊 C++ API
- Fix compilation for GCC 13.3 (missing
cstdint
include) #8609 (thanks @plumonito!) - Introduce eager serialization & update/clear APIs in the C++ SDK #8727
- Make all C++ archetypes eager serialized & provide generated update/clear APIs #8779
- C++
columns
method for convenientsend_columns
call through archetypes #8828 - Add
with_many_
variants for C++ archetype mono fields & port remaining snippets #8836 - Require descriptors to be provided on all log calls in C++ (either explicitly or implicitly via archetype) #8853
- Deprecate C++
TimeColumn::from_sequence_points
in favor ofTimeColumn::from_sequence
#8882 AsComponents::serialize
is nowAsComponents::as_batches
and returnsCollection<ComponentBatch>
#8884- Make it easy to log custom arrow data in C++ #8880
- Rerun CMake dependency now automatically ensures C++17 or newer #8898
🐍 Python API
- Autogenerated partial updates APIs for Python #8671
- Remove unused
num_instances()
method #8702 - Tagged columnar updates: Python #8792
- Include a python API for routing time control commands to the notebook instance #8809
- Python: remove legacy
send_columns
and update everything left #8799 - Deprecate Python's
log_components
#8892
🦀 Rust API
- Update MSRV to 1.81 #8529
- Fix
RecordingStream::log
implicitly requiringSized
#8587 - Add example for extending the viewer with custom callbacks #8284
EntityPathFilter
variable substitutions are now delegated to (new)ResolvedEntityPathFilter
#8543- Specify, test, and fix all broken
AsComponents
<>ComponentBatch
interactions from blanket impls #8591 - New types and traits for (co-existing!) eager serialization #8642
- Autogenerate tagging-compliant descriptor methods for all archetypes #8643
- Automatically generate partial update APIs for eager archetypes #8647
- Tagged columnar updates: Rust #8764
- Make
Box
/AssetVideo
/ViewCoordinates
/Asset3D
eager serialized in Rust #8785 - Make
Pinhole
archetype in Rust eager serialized #8789 - Make
Image
&Mesh3D
archetypes in Rust eager serialized #8793 - Make rust
Tensor
archetype eager serialized #8801 - Rust: remove legacy
send_columns
and update everything left #8804 ComponentBatch
doesn't implementAsComponents
anymore #8820
🪳 Bug fixes
- Fix WSL support, update troubleshooting guide #8610
- Handle empty line strips in the viewer #8653
- Fix clicking of links in markdown #8794
- Fix CPU spike caused by hanging connection after socket closure (#8806) #8810 (thanks @goktug97!)
- Make it possible to change the contents of a view multiple times per frame #8854
- Fix playback issues with some h264 videos on native & Safari #8850
- Fix handling null timestamps in the dataframe #8897
🌁 Viewer improvements
- Remove all legacy Chunk iteration APIs #8556
- Implement copy-screenshot-to-clipboard on Web #8607
- Improve transform performance (by caching affine transforms resulting from transform components) #8691
🧑🏫 Examples
- add prompt depth anything example #8888 (thanks @pablovela5620!)
📚 Docs
- Add new
Transform3D
partial updates snippet for all languages #8690 - doc: Update
annotation-context.rs
to use correct API #8708 (thanks @OlivierLDff!)
🖼 UI improvements
- Show the
GraphNode
as a label by default #8542 - Short circuit graph simulation if all nodes are fixed #8549
- Panel with recent notifications #8465
- Fix tooltips being dragged along in graph view #8573
- Restore the time panel help button #8599
- Filter entities in the UI (part 0): Make
CustomContent
more useful #8645 - Filter entities in the UI (part 1): Introduce a filter widget #8652
- Filter entities in the UI (part 2): Introduce entity filtering in the time panel #8654
- Filter entities in the UI (part 3): Move action to a menu in the blueprint panel and keep default blueprint when using heuristics #8672
- Filter entities in the UI (part 4): Add entity filtering in the blueprint tree #8706
- Draw nodes above edges in graph view #8738
- Filter entities in the UI (part 5): Add snapshot tests for the blueprint tree #8728
- Filter entities in the UI (part 6): Refactor
re_blueprint_tree
and add more tests #8795 - Improve performance for Blueprint & Streams Panel for many entities #8808
- The empty/full entity icon now reflects presence of component on the current timeline #8839
- Show start of large arrow values instead of just their size #8861
- Implement range selection with shift-click in the blueprint tree #8852
- Filter entities in the UI (part 7): Refactor and optimize
re_time_panel
and add more tests #8863 - Clickable URLs in named components /
AnyValues
#8864 - Implement range selection with shift-click in the time panel #8870
- Improve look of bar charts slightly #8875
🕸️ Web
- Add JS timeline control and callback APIs #8673
✨ Other enhancement
📈 Analytics
- Add analytics for wgpu backend and whether the viewer runs in WSL #8612
📦 Dependencies
- Update wgpu to 24.0.0 #8743
🤷 Other
- Introduce snapshot unit tests for
re_component_ui
#8546