Releases: rerun-io/rerun
Development Build
This is a prerelease. It is not intended for production use.
Please report any issues you find.
Example Hosted App
https://rerun.io/viewer/commit/96a882a
Wheels can be installed with:
pip install --pre --no-index -f https://build.rerun.io/commit/96a882a/wheels --upgrade rerun-sdk
or
pip install --pre --no-index -f https://github.com/rerun-io/rerun/releases/download/prerelease --upgrade rerun-sdk
CMake fetch-content for C++ SDK
include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://build.rerun.io/commit/96a882a/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)
or
include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://github.com/rerun-io/rerun/releases/download/prerelease/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)
0.22.1 - LeRobot dataloader, bugfixes
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.1/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.22.1/rerun_cpp_sdk.zip
A small release addressing bugs and polishing rough edges.
🛠️ Note on 0.20.0 release
An issue with the 0.20.0 release led to incorrect artifacts being published, causing a few minor changes to be missing from those artifacts. The correct version has always been available on crates.io, PyPI, Conda, and other distribution channels, so no action is needed if you installed from these sources.
🤖 Native loading for LeRobot datasets
We're gradually rolling out support for native loading of LeRobot datasets. It’s not fully feature-complete yet, there are tons of variations in these datasets, so it’ll take a bit of time to cover all the edge cases. More improvements and features are planned for the 0.23 release, so expect things to get smoother and more robust soon.
If you run into any issues, let us know! Your feedback helps us iron out bugs and improve the experience faster.
rerun_lerobot_demo.mp4
🔎 Details
🐍 Python API
- Don't use
np.float_
since it was removed in numpy 2.0 #9037
🪳 Bug fixes
- Never drop blueprint data from the WS server's message buffer #8977 (thanks @DerpDays!)
- Fix bug leading to swizzled lerobot data in dataloader #9000
- Fix Arrows2D draw order having no effect #9054
- Fix non-final releases creating final-release git tags #9085
🌁 Viewer improvements
- Infer entity paths from LeRobot dataset feature metadata #8981
- Log task descriptions for each LeRobot dataset episode #9028
- Load lerobot dataset on separate IO thread #9027
🧑🏫 Examples
- Improve
image_column_updates
python example #9065
🖼 UI improvements
- Fix link in text log view help text #8963
0.22.1-rc.1
Release candidate for patch release. Final release at https://github.com/rerun-io/rerun/releases/tag/0.22.1
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](#87...
0.21.0 - Graph view, 3D Grid & UI/UX improvements
Rerun is an easy-to-use 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.21.0/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.21.0/rerun_cpp_sdk.zip
📖 Release blogpost: https://rerun.io/blog/graphs
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-21
✨ Overview & highlights
Graph view
We've added two new logging primitives: GraphNodes
and GraphEdges
that can be used to visualize node-link diagrams. For this, we have implemented a new Graph View that uses force-based layouts to draw graphs.
This video demonstrates the main features of the new graph view:
graph_2_subtitles.mp4
You can also have a look at #7500 if you want to learn to more.
UX improvements
This video demonstrates the main UX improvements that went into this release:
0.21-ux-subs-convert.mp4
3D grid
The 3D view now offers an infinite 3D grid, enabled by default. Further controls and settings are available as usual through the blueprint API and/or the selection panel.
All the nitty gritty details in #8230 and #8234.
Undo/Redo support & many more UI/UX improvements
You can now undo/redo blueprint changes in the viewer!
Watch @emilk putting it to action and explains how it works:
undo-convert02.mp4
Other UX improvements
But that's not the only thing that improved in the viewer:
-
Breadcrumbs show up in the selection menu now
-
Take screenshots of views from context menus
-
Entities can now be dragged from Blueprint & Streams panel into views
Index of code snippets
We now have a new index for all our code snippets.
You can use it to quickly find copy-pastable snippets of code for any Rerun feature you're interested in (API, Archetypes, Components, etc).
No special tools required -- all you need is a keyword of interest, and plain old text search.
It's still the early days so it is far from perfect, but we think it can already be quite helpful; feedback welcome.
Most of it is auto-generated, so it will never get out of sync!
⚠️ Breaking changes
- Near clip plane for
Spatial2D
views now defaults to0.1
in 3D scene units. - Blueprint: types and fields got renamed from
.*space_view.*
/.*SpaceView.*
to.*view.*
/.*View.*
. - 3D transform arrow visualization show up less often by default.
DisconnectedSpace
archetype/component is deprecated in favor of implicit invalid transforms (like zero scale or zero rotation matrix).RotationAxisAngle
with zero rotation axis is no longer treated as identity.
Read our 🧳 migration guide for more detailed information: https://rerun.io/docs/reference/migration/migration-0-21.
🔎 Details
🪵 Log API
🌊 C++ API
- End-to-end tagging: C++ #8316
🐍 Python API
- Never direct users towards using
rr.log_components
#8151 - Make it possible to log custom components using
rr.send_columns
#8163 - Lint and fix python SDK
(Py)RecordingStream
upcasting issues #8184 - End-to-end tagging: Python #8298
- Rename space view to view everywhere #8396
- Fix broken notebook loading on firefox by compressing the encoded wasm payload #8426
- Add utility to
rr.components.Color
to generate colors from any string (and use it in the air traffic data example) #8458 - Introduce new API to send a dataframe to Rerun #8461
🦀 Rust API
- Update MSRV to 1.80 #8178
- Remove
Loggable::NAME
-- Loggables do not have any semantics #8082 - Never direct users towards using
RecordingStream::log_component_batches
#8149 - Rust API: be explicit about when we're using the arrow2 crate #8194
- Add
from_gray16
forDepthImage
#8213 (thanks @fawdlstty!) - Rust: more
impl<AsComponents>
helpers #8401
🪳 Bug fixes
- Fix outlines for lines having more perceived aliasing since 0.20 #8317
- Fix handling unnormalized axis for (Pose)RotationAxisAngle #8341
- Fix 2D/3D view artifacts on view's border when using fractional zoom #8369
🌁 Viewer improvements
- World grid part 1/2: add world grid renderer to
re_renderer
#8230 - World grid part 2/2: Integrate into Viewer #8234
- Add Undo/Redo support in the viewer #7546
- Space view screenshotting in native viewer #8258
- Remove selection history #8296
- Make the near clipping plane editable in 2D views #8348
- Don't show transform arrows on all entities without any other visualizer #8387
- Do query for default components only once per view #8424
- Improve hovered order in 2D views #8405
- Remove wait-time when opening settings panel #8464
- Deprecate
DisconnectedSpace
archetype/component in favor of implicit invalid transforms #8459 - Improve graphics device capability detection, warn on old devices, early error on unsupported render targets #8476
🧑🏫 Examples
- Add a new "Air Traffic Data" example #5449
- Use video logging api in
detect_and_track
example #8261 (thanks @oxkitsune!) - Add hloc_glomap example and update manifest #8352 (thanks @pablovela5620!)
- Introduce the Snippet Index #8383
- Implement complete Graph View example #8421
📚 Docs
🖼 UI improvements
- Implement graph components and archetypes #7500
- Add support for Bezier-curve multi (self-)edges #8256
- Implement incremental graph layouts #8308
- Revert label background color to that in 0.19 #8337
- Add selection hierarchy breadcrumbs #8319
- More compact selection panel when multiple items selected #8351
- Make Position2D components editable in selection panel #8357
- Dynamic configuration of graph layout forces through blueprints #8299
- Document legend interaction in the timeseries view help text #8406
- Allow drag-and-dropping multiple containers and views in the blueprint tree #8334
- Improve picking in 2D views #8404
- Make our collapsing triangle thinner for more consistency with our icons #8408
- Entities can be dragged from the blueprint tree and streams tree to an existing view in the viewport #8431
🎨 Renderer improvements
- Update egui to latest, update wgpu to 23.0.0 #8183
✨...
0.20.3 - Web viewer fix
Rerun is an easy-to-use 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.20.3/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.20.3/rerun_cpp_sdk.zip
We introduced a Map view in 0.20, but did not enable its feature flag by default, which meant that all web viewer builds did not include it. This is now fixed, and the map view may be used in web viewer builds published by Rerun.
🔎 Details
🪳 Bug fixes
- Fix web viewer feature flags #8295
0.20.2 - Build fix
Rerun is an easy-to-use 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.20.2/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.20.2/rerun_cpp_sdk.zip
🔎 Details
🪳 Bug fixes
- Fix a drag-and-drop display regression #8228
📚 Docs
- Add
map_view
to the default features and improve how thenasm
feature is handled and documented #8243
🧑💻 Dev-experience
- Gracefully handle
cargo-metadata
failures in users' environments #8239
0.20.1
Rerun is an easy-to-use 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.20.1/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.20.1/rerun_cpp_sdk.zip
- Fix Rust docs #8168
0.20.0 - Map view & native H.264 video support
Rerun is an easy-to-use 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.20.0/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.20.0/rerun_cpp_sdk.zip
nuscenes.updated.with.map.mp4
📖 Release blogpost: https://rerun.io/blog/maps
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-20
✨ Overview & highlights
- 🗺️ There is now an map view!
- 🎬 Native viewer now supports H.264 video if ffmpeg is installed.
- 📽️ Videos now load a lot faster use less RAM.
- 📂 Improvements to the existing
Open
(Viewer) &log_file
(SDK) workflows, and addition of a newImport
workflow.- Blueprints can now easily be re-used across different applications, recordings and SDKs
- The new
Import
feature allows you to drag-and-drop any data into an existing recording, directly in the viewer.
- ☰ Dataframe queries are now streamed, reducing memory usage.
- 💊 Add capsule archetype.
- 📚 Doc improvements
- Arrow schemas are now documented for all types.
- Better structure to the how to section and a few more pages
⚠️ Breaking changes & deprecations
- 🐍 Python 3.8 is being deprecated
- 🔌
connect
&serve
got deprecated in favor ofconnect_tcp
&serve_web
- 🎨 In Python, lists of numbers without type information are now assumed to be packed integer color representations, unless the length is exactly 3 or 4
🧳 Migration guide: http://rerun.io/docs/reference/migration/migration-0-20
🔎 Details
🎬 Video
- Support H.264 video on native via user installed ffmpeg executable #7962
- Make mp4 parsing a lot faster & tremendously lower memory overhead #7860
- Fix playback of HDR AV1 videos in native viewer #7978
- Show all samples/frames in a video in a nice table #8102
- Calculate and show video frame number #8112
- Expose basic information about group of pictures in video data in the selection panel #8043
- Fix some videos having offsetted (incorrect) timestamps #8029
- Fix video backward seeking / stepping back sometimes getting stuck (in the presence of b-frames) #8053
- Make sure videos all end up in different space views #8085
- Fix video on web sometimes not showing last few frames for some videos #8117
- Fix issues with seeking in some H.264 videos on native & web #8111
- Fix view creation heuristics for videos #7869
- Improve video doc page #8007
- Update re_mp4 to fix integer overflow bug #8096
🪵 Log API
- Add
Capsules3D
archetype #7574 (thanks @kpreid!) rr.log_file_from_path
now defaults to the active app/recording ID #7864- Allow overriding albedo color on
Asset3D
#7458 (thanks @EtaLoop!) rr.serve
->rr.serve_web
,rr.connect
->rr.connect_tcp
#7906
🌊 C++ API
- C++: Improve error message when finding X11 macro
Unsorted
#7855 - Forward
CMAKE_TOOLCHAIN_FILE
to arrow build for sdk cross-compilation #7866 (thanks @SunDoge!) - Update the python package to support python 3.13, update C++ arrow to 18.0.0 #7930
🐍 Python API
- Allow passing seconds/nanoseconds to
VideoFrameReference
archetype #7833 - Officially deprecate support for python 3.8 #7933
- Update the python package to support python 3.13, update C++ arrow to 18.0.0 #7930
- Remove the upper bound constraint on python version #7949
- Enable dataframe streaming across Python FFI #7935
- Fix python SDK's shutdown unsafely dropping cross-FFI resources #8038
- Improve edge-cases and warn on ambiguity for Rgba32 datatype #8054
- Check rerun notebook version on first import #8030
🦀 Rust API
- Allow logging individual components directly (Impl
AsComponents
for allObjectKind::Component
) #7756 (thanks @oxkitsune!) re_query::Caches
->re_query::QueryCache
#7915
🪳 Bug fixes
- [bugfix] Make sure blueprint gets sent to the notebook view being created #7811
- Fix too short picking ray in pinhole-only scenarios #7899
- Update zune-jpeg to fix crash on bad JPEGs #7952
- Consistent open/import/log_file behaviors in all common scenarios #7966
- ChunkStore: fix row-id computation when removing dangling static chunks #8020
EntityTree
: only check for entity deletions when necessary #8103- WebSocket server now indefinitely keeps track of non-data RPC commands #8146
🌁 Viewer improvements
- A Rerun Viewer session now matches 1:1 to a Rerun TCP server #6951 (thanks @petertheprocess!)
- Implement support for in-place drag-n-drop #7880
- Implement
Menu > Import
and associated command #7882 - Expose additional information about decoded frames in the viewer #7932
- Update crates, including
rfd
for better file dialogs #7953 - Line strips are no longer a disconnected series of quads #8065
- Show data density graph in collapsed time panel #8137
- Show the root entity "/" in the streams panel #8142
🚀 Performance improvements
- Don't keep around additional CPU copy of loaded mesh files #7824
- Make mp4 parsing a lot faster & tremendously lower memory overhead #7860
- Fix slow receive when using native WebSocket #7875
- Implement support for fully asynchronous
QueryHandle
s #7964
🧑🏫 Examples
- Fix Rust DNA sample writing to a temporary file #7827
- Add
ml_depth_pro
example #7832 (thanks @oxkitsune!) - Add map view to nuscenes python example #8034 (thanks @tfoldi!)
- Add an example to display OpenStreetMap-sourced data on the map view #8044
- Improve NuScenes example with more geo data & blueprint #8130
📚 Docs
- Clarify viewport documentation and reference the type list for view classes #7826
- Finish dataframe reference page #7865
- Docs: static data #7856
- Docs: concepts > recordings #7896
- Docs: "How-to: reuse blueprints across languages" #7886
- Docs: application model part 1: native workflows #7905
- Document arrow datatypes #7986
🖼 UI improvements
- Map View and
GeoPoints
archetype #6561 (thanks @tfoldi!) - Replace the "Options" submenu with a settings screen #8001
- Improve error message style slightly #8092
- Much nicer looking error and warning messages #8127
🧑💻 Dev-experience
- Show list of enabled features with
rerun --version
[#7885](https://github.com/rerun-io/rerun/pul...
0.19.1
Rerun is an easy-to-use 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.19.1/
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.19.1/rerun_cpp_sdk.zip
This release fixes an error thrown when the web viewer is closed.
🔎 Details
🕸️ Web
- Fix wasm-bindgen patch #7970
📦 Dependencies
- Add wasm-bindgen version check to CI #7983