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 rerunandcargo 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_idin 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/-oto 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_idin Rust SDK #4383 - Add
--stdout/-oto 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:
DataLoaders 0: utility for hierarchicalEntityPathfrom file path #4516DataLoaders 1: introduce, and migrate to,DataLoaders #4517DataLoaders 2: add text-basedDataLoader(.txt,.md) #4518DataLoaders 3: add 3D point cloudDataLoader(.ply) #4519DataLoaders 4: add generic folderDataLoader#4520DataLoaders 5: add support for external binaryDataLoaders (PATH) #4521DataLoaders 6: first-class support forIncompatible#4565DataLoaders 7: support for customDataLoaders #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
EntityPropertiestoSpaceViewClassmethods #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_plotauto-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_uiand 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
wgpuprofiling 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
SpaceViewClassand changedTextSpaceViewname to "Text Log" #4386 - Local-first wheel publishing #4454
- Remove backtraces on error when running
rerunbinary #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
StoreDbtoEntityDb,re_data_store->re_entity_db#4670 - Rename
re_arrow_storetore_data_store#4672
