Skip to content

Releases: rerun-io/rerun

Development Build

15 May 04:33
423eac0
Compare
Choose a tag to compare
Development Build Pre-release
Pre-release

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/423eac0

Wheels can be installed with:

pip install --pre --no-index -f https://build.rerun.io/commit/423eac0/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/423eac0/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.23.2 - RRD migration and bugfixes

06 May 16:19
Compare
Choose a tag to compare

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


✨ Overview & highlights

  • New CLI tool to migrate .rrd files
  • Various bugfixes

.rrd migration tool

With 0.23, we made several breaking changes that resulted in older .rrd files not being able to load at all anymore.
To help smoothen the migration to 0.23, we're introducing a migrate command to the Rerun CLI:

rerun rrd migrate colmap.rrd arkit.rrd rgbd.rrd

The command will copy the contents into a .backup file, and then migrate the file.

Due to the incompatibility between .rrd files from 0.23 and those from earlier versions, this command likely
won't be able to migrate every recording perfectly. We expect the migration to work on files between 0.20 and 0.22,
simpler recordings may work as far back as 0.18.

We plan to use this command future .rrd migrations as a way to fulfill our N+1 compatibility guarantee:

  • Viewers after 0.23 will always be able to load recordings from the previous version.
  • Recordings from 0.23 and beyond may be migrated to the next version.

We currently have no plans for compatibility or migrations across multiple versions.

🪵 Log API

  • Improve and mitigate warnings around data loss when flushing #9846

🐍 Python API

  • Add ViewerClient to rerun.experimental #9828
  • Improve set_time error handling for large Python integers #9839
  • Properly resolve component selectors in dataset index creation and search APIs #9854
  • Fix incorrectly advertised minimum supported pyarrow version (18.0.0 is required) #9878
  • Fix incorrectly advertised numpy 1.x support (numpy2 is required now) #9880

🪳 Bug fixes

  • Fix world grid not scaling correctly when camera is below the grid #9867
  • Tensor view improvements #9831
  • Fix size check for NV12 & YUY2 formats in C++ and Rust #9890

0.23.1 - Fix notebooks

25 Apr 15:19
Compare
Choose a tag to compare

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


🪳 Bug fixes

  • Use correct URL for RERUN_NOTEBOOK_ASSET #9800

🌊 C++ API

  • C++: Emit warnings when using deprecated Rerun types #9801

🐍 Python API

  • Direct API for setting blueprint on a notebook-embedded viewer #9804

🌁 Viewer improvements

  • Fix doclinks to archetypes #9791

🧑‍🏫 Examples

🖼 UI improvements

  • Show image format (resolution etc) of image blobs #9792

0.23.0 - Backwards compatible `.rrd` and multi-scalar logging

24 Apr 12:06
Compare
Choose a tag to compare

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


✨ Overview & highlights

Viewer

Multiple scalars under a single entity

In this release we have added support for logging scalar data with multiple signals, under the same entity. This allow you to log data that inherently belongs together, such as the action values in a LeRobot dataset or gyroscope measurements, under the same entity path.

As part of this update, we're deprecating the SeriesLine/SeriesPoint/Scalar archetypes in favor of the plural versions SeriesLines/SeriesPoints/Scalars, for consistent naming with the other archetypes.

For example, the x, y and z component of a gyroscope measurement, previously would be logged as separate entities:

rr.log("gyroscope/x", rr.Scalar(measurement[0]))
rr.log("gyroscope/y", rr.Scalar(measurement[1]))
rr.log("gyroscope/z", rr.Scalar(measurement[2]))

Now can be logged under a single entity:

rr.log("gyroscope", rr.Scalars(measurement))


See the new IMU signals example for more

The SeriesLine and SeriesPoints archetypes now include a visible_series component that lets you control which series appear in your visualizations. Unlike the regular entity visibility property, hidden series will still show up in the legend.

Image

Callbacks API for notebooks and JavaScript

We've added a (limited) API with callbacks, useable from JavaScript and from Notebooks (but not yet from out logging SDKs).

With this you can easily write simple annotations tools.
We've created an example for this using Gradio at https://github.com/rerun-io/annotation-example.

Annotation example

Recording properties

For this release, we have improved Rerun's logging capabilities. There is a new recording properties concept in all of our APIs.
Recording properties allow you to attach metadata to a recording.
For example, you can now change the name of your recording via .send_recording_name("My episode"), which will show up in the recording panel of the viewer as well.
You can also log arbitrary data via the general .send_property() method.
Properties are logged as static data and will therefore show up in the timeline as well.
Also, the side-panel shows an overview of the properties when a recording is selected.

Image Image Image

Our snippets now contain examples for recording properties in all SDKs:

Experimental send_table API

We are also working on better support for tables and dataframes in Rerun, a feature that has been requested several times by our community. With this release, there is now an experimental API send_table that can be used to send arbitrary Arrow record batches via the Python SDK and from notebooks. For now, while we evolve this feature, this API is separate from the rest of our logging APIs. This tutorial shows how to use this APIs and also provides more details on the current implementation. In future releases, we plan to improve support for the table representation in the viewer to facility more advanced analysis tasks such as filtering, or showing summary statistics.

Please note that this is distinct from our current send_dataframe API and dataframe query view.

Image

⚠️ Breaking changes

This release changes how the SDKs interact with the viewer, as Rerun now relies heavily on gRPC.
Additionally, we have changed our file format and data model to be much more flexible in the future.
These changes will improve our backwards-compatibility going forward, but this also means that this release introduces breaking changes to our .rrd format and how the SDKs communicate with the viewer.

  • .rrd files from previous releases cannot be loaded anymore
  • Removed unsupported connection methods from the SDKs
  • The connection URLs have changed and now require a rerun:// (TLS) or rerun+http:// (unencrypted) prefix
  • Several changes to our logging SDKs (timelines, time units, …)

You can find more information in our 🧳 migration guide

🔎 Details

🪵 Log API

  • Migrate file format to protobuf #8995
  • Move rerun.components.blueprint.Visible to rerun.components.Visible #9067
  • Infer column partition size from shape in Scalar.columns() #9068
  • Infer partition size for FixedSizeList-backed components #9210
  • Recording properties for naming recordings and adding information #9249
  • Provide APIs to log arbitrary data to recording properties #9316
  • Deprecate SeriesLine/SeriesPoint/Scalar in favor of SeriesLines/SeriesPoints/Scalars #9338
  • Add serve_grpc API #9447
  • Add experimental send_recording python api #9148
  • Implement send_table in re_grpc_server and re_viewer #9510
  • Example showcasing send_table from notebooks #9522
  • Add rr.serve_web_viewer #9540
  • Add experimental send_table to Python SDK #9538
  • Fix handling of custom indicator components #9755

🌊 C++ API

  • Migrate SDK comms to gRPC #8838
  • New C++ API for timestamp/duration indices #9200
  • Remove deprecated C++ connect APIs #9212
  • Add detach_process option to spawn #9400 (thanks @imstevenpmwork!)
  • Consistent constructor naming of Asset3D across C++ and Rust #9239 (thanks @abhishek47kashyap!)
  • Use consistent time unit names for our API #9343
  • CMake: Use find_dependency for Arrow #9548 (thanks @BillyONeal!)
  • Set RERUN_ARROW_LINK_SHARED_DEFAULT based on found Arrow build #9550 (thanks @BillyONeal!)

🐍 Python API

  • Migrate SDK comms to gRPC #8838
  • Update maturin to 1.8.1 and fix pyproject.toml #9104
  • Add rr.set_index to replace rr.set_time_* #9166
  • Fix support for numpy-2 #9109
  • Add rr.IndexColumn #9179
  • Python SDK spring cleaning: 3.9, no more monkey patching, more lints #9182
  • Enable a bunch of ruff lints #9201
  • Remove deprecated Python APIs: log_components, connect, connect_tcp #9197
  • Remove deprecated rr.serve() #9207
    ...
Read more

0.22.1 - LeRobot dataloader, bugfixes

20 Feb 14:15
Compare
Choose a tag to compare

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


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

20 Feb 07:47
Compare
Choose a tag to compare
0.22.1-rc.1 Pre-release
Pre-release

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

06 Feb 17:04
Compare
Choose a tag to compare

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](#87...
Read more

0.21.0 - Graph view, 3D Grid & UI/UX improvements

18 Dec 15:06
Compare
Choose a tag to compare

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


📖 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

    image

  • Take screenshots of views from context menus

    image

  • Entities can now be dragged from Blueprint & Streams panel into views

    image

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 to 0.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

  • End-to-end tagging: Rust #8304
  • Encode LogMsg using protobuf #8347

🌊 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 for DepthImage #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

  • Update wheel build instruction #8235
  • Fix various doc links in SDKs #8331

🖼 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

✨...

Read more

0.20.3 - Web viewer fix

03 Dec 19:21
Compare
Choose a tag to compare

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


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

28 Nov 18:11
Compare
Choose a tag to compare

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


🔎 Details

🪳 Bug fixes

  • Fix a drag-and-drop display regression #8228

📚 Docs

  • Add map_view to the default features and improve how the nasm feature is handled and documented #8243

🧑‍💻 Dev-experience

  • Gracefully handle cargo-metadata failures in users' environments #8239