Skip to content

Releases: rerun-io/rerun

Development Build

28 Aug 04:19
212e2cf
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/212e2cf

Wheels can be installed with:

pip install --pre --no-index -f https://build.rerun.io/commit/212e2cf/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/212e2cf/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)

Web Viewer NPM package

Can be installed with:

npm install https://build.rerun.io/commit/212e2cf/rerun_js

0.24.1 - Bug fixes

07 Aug 16:00
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.


🌊 C++ API

  • Fix rerun_cpp CMake link errors #10756 (thanks @reinar!)
  • Fix C++ interface for VideoStream #10745
  • Fix C++ Arrow build #10799

🐍 Python API

  • Explicitly import pyarrow.compute in url_generation.py #10690
  • Add rerun-sdk[datafusion] and rerun-sdk[all] #10696

🦀 Rust API

  • Fix unnecessary rfd and wayland dependencies in SDK crate #10802

🪳 Bug fixes

  • Make parking_lot dependency version stricter to prevent import failure #10732 (thanks @sdd!)
  • Use ui.warning_label() in more places #10697
  • Fix colors sometimes being wrong in plot view #10713
  • Fix breaking example in rerun_notebook/example.ipynb #10706 (thanks @glk0!)
  • Fix GUI hickup when starting native video player #10797
  • Improve command palette in light mode #10825

🌁 Viewer improvements

  • Add time range query params when opening a time_range-based url #10819

🖼 UI improvements

  • Better component UI for Arrow StructArray #10748

🕸️ Web

  • Make @rerun-io/web-viewer-react compatible with React 19 #10809

📈 Analytics

  • Add some analytics events #10793

0.24.0 - Light mode, streaming video and data model improvements

17 Jul 17:36
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

💽 Tagged components

Starting with 0.22 Rerun began storing additional meta-information for each component,
identifying its field name (e.g. vertex_colors) and its archetype (e.g. Mesh3D).
We finally concluded this effort and made all parts of the Viewer and API aware of this.

While this is mostly about under-the-hood changes, this has a lot of surface level benefits:

  • You can now log the same component type multiple times on a single entity path.
    For example, logging multiple archetypes which use the Color component onto the same entity was possible before, but the colors would have overwritten each other:
rr.log("path", rr.GeoPoints(lat_lon=[some_coordinate], colors=[0xFF0000FF]))
rr.log("path", rr.Points2D(positions=[0.0, 0.0], colors=[0x0000FFFF]))
rr.log("path", rr.Mesh3D(vertex_positions=vertices, vertex_colors=[0x00FF00FF]))
  • The UI now groups by archetype everywhere and will show the same field names you use in the logging SDKs
  • Better blueprint defaults: component defaults are now per archetype field and not per type. Making them a lot more useful.
  • No more indicator components! These showed previously up in the UI and needed special handling for some advanced use cases.

🎥 Video streams

Rerun previously supported video only in the form of MP4 files,
so it was not possible to stream live encoded video to Rerun.
The new VideoStream archetype remedies that!

If you already have encoded video frames, it is just as easy as logging images now:

rr.set_time("time", duration=float(packet.pts * packet.time_base))
rr.log("video_stream", rr.VideoStream(codec=rr.VideoCodec.H264, sample=bytes(packet)))

For now, we only handle H.264, but support for more codecs is on the roadmap.
Learn more on the updated video reference page.

😎 Light mode

Rerun finally has a light mode.

The theme defaults to your OS's setting, but can be adjusted in the settings menu.

🔀 Multi sink

Previously, the SDK's recording stream could only send to one sink at a time.
We now expose the ability to set multiple sinks at once, so you can simultaneously
stream to both the Viewer and a file.

Here's what that looks like in Python (but the API is available in C++ & Rust as well!)

rr.set_sinks(
    # Connect to a local viewer using the default URL
    rr.GrpcSink(),
    # Write data to a `data.rrd` file in the current directory
    rr.FileSink("data.rrd"),
)

🤖 Built-in URDF data loader

You can now log URDF files directly to Rerun using the log_file API.

👀 Other highlights in short

  • New Cylinder archetype
  • AnyValues utility for Rust
  • rerun rrd stats for retrieving statistics about rrd files
  • rerun rrd route command to manipulate .rrd files on transport level
  • Much faster & better compaction for both rerun rrd compact and automatic in-Viewer compaction
  • Viewers started with spawn use now less memory since it no longer sets up an GRPC server for message forwarding
  • View3D's eye control type & speed can now be changed from blueprint (and as such is persisted over session!) more properties will follow in the future. (thanks to @jccampagne)

🔎 Details

🪵 Log API

  • Remove deprecated Scalar, SeriesLine, SeriesPoint archetypes #9892
  • Remove untagged Component::descriptor() #10038
  • Add Cylinders3D archetype #10139
  • Provide AnyValues helpers in Rust SDK #10074
  • Rename ComponentDescriptor fields and use colons in Sorbet metadata #10245
  • Stop logging indicators and drop them during migration #10521
  • Make SeriesPoints::markers component required #10572
  • Remove indicators from codegen, rerun_py, and rerun_cpp #10581
  • Removes remnants of indicators from dataframe queries and viewer #10584
  • rerun rrd stats #10593
  • Source default batcher settings from sink #10620

🌊 C++ API

  • (CMake) download arrow inside the rerun build folder instead of general binary folder #10141 (thanks @jzubizarreta!)
  • Fix documentation wording on which arrow-cpp version to use #10235
  • Disable gRPC server history for Spawn/CLI #10314
  • Add set_sinks to C++ RecordingStream #10359

🐍 Python API

  • Add Dataset.register_batch and wrappers for task ids #9895
  • Introduce ConnectionRegistry for centralised redap client and token management #10078
  • Build in manylinux_2_28 container #10148
  • Add APIs to Dataset to query and update the associated blueprint #10156
  • Support for seconds-since-Epoch numpy arrays for constructing TimeColumn #10168 (thanks @MichaelGrupp!)
  • Fix initializing two recordings with the same recording id causing SDK hangs #10201 (thanks @AhmedMousa-ag!)
  • Improve rerun_notebook startup times #10111
  • New dataset API for just retrieving chunk_ids associated with a query #10261
  • Multi-sink / tee Python API #10158
  • Rename to tee to set_sinks #10312
  • Add support for index=None to local and remote dataframe APIs and deprecate select_static #10332
  • Disable gRPC server history for Spawn/CLI #10314
  • Deprecate serve_web and improve documentation around how to serve a web viewer #10360
  • Add partition ID to TimeUpdateEvent #10403
  • Fix set_time_ctrl not doing anything when called twice #10547
  • Notebook auto-sizing #10554
  • Add RegisterTable rpc, LanceTable message, and related proto changes #10538
  • Add open_url/close_url notebook APIs #10602
  • AnyValue Torch Performance Improvement #10647
  • Make it easier to disable the 3D line grid in Python (blueprint) #10621
  • Add to_arrow_reader() to TableEntry and DataFusionTable #10601
  • Make it possible to configure batcher explicitly via python APIs #10657

🦀 Rust API

  • Update MSRV to 1.85 #9798
  • Improve rerun crate forwarding, removing need to depend on other re_* crates for viewer customization [#9825](https://github.com/r...
Read more

0.23.4 - Fix `rerun rrd migrate` tool

26 Jun 15:08
Compare
Choose a tag to compare

This release is a pure bugfix release for migration of old RRD files in how meta-data keys for archetypes & field names were handled.

For details see #10350

0.24.0-alpha.3

11 Jun 21:07
Compare
Choose a tag to compare
0.24.0-alpha.3 Pre-release
Pre-release
Bump versions to 0.24.0-alpha.3

0.23.3

26 May 19:17
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.


This patch release contains various bugfixes, improvements, and updated documentation.

🔎 Details

🌊 C++ API

🪳 Bug fixes

  • Add draw order to video (-frame-reference), fix 2d objects sometimes being behind videos #9946
  • Fix time series points querying extra points at start and end of time range (causing stuttering on playback in some scenes) #9963
  • Increase max size of gRPC messages #10006
  • Check TextEdit state before copying selection description #10063

🌁 Viewer improvements

  • Use recording name for file name when saving a file #9982
  • Improve error message for QueryError and DataLoaderError #9998

🚀 Performance improvements

  • Series of build changes for web release to minimize generated wasm #9870

📚 Docs

  • Remove remaining mentions of rr.connect #10016
  • Update callbacks and custom_callbacks example docs to mention the other #10062
  • Fix missing reference to Spatial3DView in Pinhole docs #9932 (thanks @hu-po!)
  • Mention URL scheme in connect_grpc docs #10018

🤷‍ Other

  • LeRobot: Add support for List datatype #9958

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