0.12.0 - Data Loaders, Container-editing, and Python-3.12
Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.12.0/
- C++
FetchContent
: https://github.com/rerun-io/rerun/releases/download/0.12.0/rerun_cpp_sdk.zip
Related blog post: Introducing plugins for loading any file to Rerun.
Overview & Highlights
- 🌁 The Rerun Viewer now supports a plugin system for creating arbitrary external data loaders.
- 🕸️ More built-in examples are now available in the viewer.
- 🐍 The Python SDK now works with Python-3.12.
- 📘 Blueprint containers can now be selected and modified.
- 🚀 In the native viewer, space views are now evaluated in parallel for improved performance.
- 🧑🏫 Support and guide for sharing a recording across multiple processes.
- 📁 Entity-paths allowed characters and escaping are now more file-like #4476:
- There is no need for " quotes around path parts, instead we now use \ to escape special characters.
- You need to escape any character that isn't alphabetical, numeric, ., -, or _.
Details
🌊 C++ API
- Exposing
recording_id
in C and C++ SDKs #4384 - All C++ preprocessor macros start now with RR_ (instead of a mix of RR_ and RERUN_) #4371
- C++ & Python API: add helpers for constructing an entity path #4595
🐍 Python API
- Add
--stdout
/-o
to our CLI helper library #4544 - C++ & Python API: add helpers for constructing an entity path #4595
- Python SDK: introduce deferred garbage collection queue #4583
- Add support for Python 3.12 #4146
🦀 Rust API
- Exposing
recording_id
in Rust SDK #4383 - Add
--stdout
/-o
to our CLI helper library #4544 - Document how to construct an entity path for the Rust logging API #4584
🪳 Bug Fixes
- Bugfix: show labels on segmentation images with trivial dimensions #4368
- Datastore: don't eagerly sort in bucket split routine on ingestion path #4417
- Resolve spurious blueprint panel group collapsing #4548
- Fix rectangle that indicates the zoomed pixel area on hover being one pixel to small #4590
- Fix wrong RowId order of logged data #4658
- Make scroll-to-zoom a lot more responsive in 3D views #4668
- Fix heuristic object properties being broken in some cases / fix DepthMeter being ignored sometimes #4679
🌁 Viewer Improvements
- Make viewer contexts's render context reference non-mutable #4430
- The Rerun Viewer can now consume from stdin
- Support for custom DataLoaders:
DataLoader
s 0: utility for hierarchicalEntityPath
from file path #4516DataLoader
s 1: introduce, and migrate to,DataLoader
s #4517DataLoader
s 2: add text-basedDataLoader
(.txt
,.md
) #4518DataLoader
s 3: add 3D point cloudDataLoader
(.ply
) #4519DataLoader
s 4: add generic folderDataLoader
#4520DataLoader
s 5: add support for external binaryDataLoader
s (PATH) #4521DataLoader
s 6: first-class support forIncompatible
#4565DataLoader
s 7: support for customDataLoader
s #4566
- 3D->2D & 2D->3D selection visualizations stick now around on selection #4587
- The viewer now supports segmentation images logged natively as floats #4585
- Fix incorrect bounding box calculation for camera view parts #4640
🚀 Performance Improvements
🧑🏫 Examples
- Add nuScenes-based lidar examples #4407 (thanks @roym899!)
- Nightly builds #4505
- Add LLM token classification example #4541 (thanks @roym899!)
📚 Docs
- Shared recordings 3: add how-to guide #4385
- Document our crate organization in ARCHITECTURE.md #4458
🖼 UI Improvements
- Plot legend visibility and position control (part 1): route
EntityProperties
toSpaceViewClass
methods #4363 - Plot legend visibility and position control (part 2): minor UI spacing improvement #4364
- Reset accumulated bounding box when resetting camera #4369
- Plot legend visibility and position control (part 3): legend UI added for both timeseries and bar charts space views #4365
- Improve component data table UI in the selection panel #4370
- Add optional color component to BarChart archetype #4372
- Resolve unexpected view-partitioning by only bucket images when creating a new 2d view #4361
- Restore
egui_plot
auto-bounds state after dragging the time cursor in timeseries space views #4270 - Make Space View containers selectable and editable #4403
- Improve selection and hover behavior of viewport's tabs #4424
- Improve the Selection Panel UI for components when a single item is selected #4416
- Show connection status in top bar #4443
- Add the possibility to add empty space views of all registered types #4467
- Add experimental Dataframe Space View #4468
- Show e2e latency in metric ui in top panel #4502
- Show leading slash when formatting entity paths #4537
- Improve entity size stats: include whole subtree #4542
- Add support for modal windows to
re_ui
and use it for the Space View entity picker #4577 - Show entity path parts (entity "folder" names) unescaped in UI #4603
- Improve Rerun Menu with link to Rerun Discord #4661
- Introduce container icons and update space views and UI icons #4663
- Initial support for manually adding container and space view in the hierarchy #4616
- Change modal position to a fixed vertical distance from the top of the window #4700
🕸️ Web
- Load examples manifest via HTTP #4391
- Remove builds and usage of
demo.rerun.io
#4418 - Open all links in a new tab #4582
🎨 Renderer Improvements
- Log wgpu adapter on web #4414
- Interior mutability for re_renderer's static resource pools (RenderPipeline/Shader/Layouts/etc.) #4421
- Make draw data creation no longer require a mutable re_renderer context #4422
- Move re_renderer examples to its own crate in order to make workspace level examples less confusing #4472
- Improved wgpu error handling, no more crashes through wgpu validation errors #4509
- Expose
wgpu
profiling scopes to puffin #4581 - Improve shading with two lights instead of one #4648
🧑💻 Dev-experience
- Fix not tracking wgsl file changes for web build #4374
- Auto format all the things #4373
- Refactor naming of
SpaceViewClass
and changedTextSpaceView
name to "Text Log" #4386 - Local-first wheel publishing #4454
- Remove backtraces on error when running
rerun
binary #4746
🗣 Refactors
- Selection state is now fully double buffered and has interior mutability #4387
- Time control is now behind a RwLock, making recording config access non-mutable everywhere #4389
- Enable (selected) new cargo clippy lints #4404
- Add lint for builder pattern functions and deref impls to be marked
#[inline]
#4435 - Pass viewer context always non-mutable #4438
- RenderContext usage cleanup #4446
- Integrate re_tensor_ops crate into re_space_view_tensor #4450
- Use TOML for example readme front-matter #4553
- Rename
StoreDb
toEntityDb
,re_data_store
->re_entity_db
#4670 - Rename
re_arrow_store
tore_data_store
#4672