Skip to content

0.22.0 - Entity filter & improved partial update API

Compare
Choose a tag to compare
@rerun-bot rerun-bot released this 06 Feb 17:04
· 104 commits to main since this release

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


New entity filtering:

entity-filter-smaller.mp4

New notification panel:
notification-panel

Copy any view as screenshot with right-click (now works in web-viewer):
image

New help texts for all our views:
image

📖 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

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 and extra_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 convenient send_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 of TimeColumn::from_sequence #8882
  • AsComponents::serialize is now AsComponents::as_batches and returns Collection<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 requiring Sized #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 implement AsComponents 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

📚 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

  • Remove Chunk::iter_component_arrays #8548
  • Introduce new Chunk iteration APIs #8553

📈 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