diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d046c9cfedc2..f11e5db8cde3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -189,7 +189,7 @@ jobs:
- [ ] cargo install of cli tool: does it install and run?
- [ ] C++ SDK zip: does it contain rerun_c for all platforms?
- [ ] Populate the release with the changelog and a nice header video/picture, check `Set as latest release`, then click `Publish release`.
- - [ ] Update the [google colab notebooks](https://drive.google.com/drive/folders/0AC0q24MFKh3fUk9PVA) to install this version and re-execute the notebook.
+ - [ ] Update the [google colab notebooks](https://colab.research.google.com/drive/1R9I7s4o6wydQC_zkybqaSRFTtlEaked_) to install this version and re-execute the notebook.
- [ ] Update landing's version of the web viewer (@jprochazk)
A few hours after the GitHub release is created, `regro-cf-autotick-bot` will create a
@@ -321,7 +321,7 @@ jobs:
github-release:
name: "GitHub Release"
- if: inputs.release-type == 'final'
+ if: inputs.release-type == 'rc' || inputs.release-type == 'final'
needs:
[
version,
@@ -347,9 +347,16 @@ jobs:
run: |
version="${{ needs.version.outputs.final }}"
commit="${{ needs.version.outputs.release-commit }}"
+
+ if [ ${{ inputs.release-type }} = "final" ]; then
+ pre_arg=""
+ else
+ pre_arg="--prerelease"
+ fi
+
git tag $version $commit
git push origin $version
- gh release create $version --verify-tag --draft --title $version
+ gh release create $version --verify-tag --draft --title $version $pre_arg
- name: Create comment
env:
diff --git a/.gitignore b/.gitignore
index 43b4208ba656..06d4384f6e35 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@ __MACOSX
*.bin
*.o
/arrow/
-/build/
+./build/
**/build-msvc/
**/CMakeFiles/
**/CMakeCache.txt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a94fc73a0c0d..6f40cd8ec176 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,182 @@
## [Unreleased](https://github.com/rerun-io/rerun/compare/latest...HEAD)
+## [0.21.0](https://github.com/rerun-io/rerun/compare/0.20.3...0.21.0) - Graph view, 3D Grid & UI/UX improvements
+
+📖 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`](https://rerun.io/docs/reference/types/archetypes/graph_nodes) and [`GraphEdges`](https://rerun.io/docs/reference/types/archetypes/graph_edges) 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:
+
+https://github.com/user-attachments/assets/77db75c9-a8d8-401d-b90d-3daf08baf0ba
+
+You can also have a look at https://github.com/rerun-io/rerun/pull/7500 if you want to learn to more.
+
+#### UX improvements
+
+This video demonstrates the main UX improvements that went into this release:
+
+https://github.com/user-attachments/assets/bef071b5-0681-41b2-9ef0-1c6a557ff138
+
+#### 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 https://github.com/rerun-io/rerun/pull/8230 and https://github.com/rerun-io/rerun/pull/8234.
+
+#### Undo/Redo support & many more UI/UX improvements
+
+You can now undo/redo blueprint changes in the viewer!
+Watch [@emilk](https://github.com/emilk/) putting it to action and explains how it works:
+
+https://github.com/user-attachments/assets/a29c099d-35a3-4d32-8946-932b5a184943
+
+
+#### Other UX improvements
+
+But that's not the only thing that improved in the viewer:
+* Breadcrumbs show up in the selection menu now
+
+ ![image](https://github.com/user-attachments/assets/c1d20eb1-f259-4b43-89d4-b9fdc75dc88c)
+
+* Take screenshots of views from context menus
+
+ ![image](https://github.com/user-attachments/assets/6c50e6f0-330f-43f7-a393-65dd47aa171b)
+
+* Entities can now be dragged from Blueprint & Streams panel into views
+
+ ![image](https://github.com/user-attachments/assets/493d9711-c4d1-407e-ab41-eef2e4e51ba8)
+
+#### Index of code snippets
+
+We now have a new [index for all our code snippets](./docs/snippets/INDEX.md).
+
+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](https://github.com/rerun-io/rerun/pull/8304)
+- Encode `LogMsg` using protobuf [#8347](https://github.com/rerun-io/rerun/pull/8347)
+
+#### 🌊 C++ API
+- End-to-end tagging: C++ [#8316](https://github.com/rerun-io/rerun/pull/8316)
+
+#### 🐍 Python API
+- Never direct users towards using `rr.log_components` [#8151](https://github.com/rerun-io/rerun/pull/8151)
+- Make it possible to log custom components using `rr.send_columns` [#8163](https://github.com/rerun-io/rerun/pull/8163)
+- Lint and fix python SDK `(Py)RecordingStream` upcasting issues [#8184](https://github.com/rerun-io/rerun/pull/8184)
+- End-to-end tagging: Python [#8298](https://github.com/rerun-io/rerun/pull/8298)
+- Rename space view to view everywhere [#8396](https://github.com/rerun-io/rerun/pull/8396)
+- Fix broken notebook loading on firefox by compressing the encoded wasm payload [#8426](https://github.com/rerun-io/rerun/pull/8426)
+- Add utility to `rr.components.Color` to generate colors from any string (and use it in the air traffic data example) [#8458](https://github.com/rerun-io/rerun/pull/8458)
+- Introduce new API to send a dataframe to Rerun [#8461](https://github.com/rerun-io/rerun/pull/8461)
+
+#### 🦀 Rust API
+- Update MSRV to 1.80 [#8178](https://github.com/rerun-io/rerun/pull/8178)
+- Remove `Loggable::NAME` -- Loggables do not have any semantics [#8082](https://github.com/rerun-io/rerun/pull/8082)
+- Never direct users towards using `RecordingStream::log_component_batches` [#8149](https://github.com/rerun-io/rerun/pull/8149)
+- Rust API: be explicit about when we're using the arrow2 crate [#8194](https://github.com/rerun-io/rerun/pull/8194)
+- Add `from_gray16` for `DepthImage` [#8213](https://github.com/rerun-io/rerun/pull/8213) (thanks [@fawdlstty](https://github.com/fawdlstty)!)
+- Rust: more `impl` helpers [#8401](https://github.com/rerun-io/rerun/pull/8401)
+
+#### 🪳 Bug fixes
+- Fix outlines for lines having more perceived aliasing since 0.20 [#8317](https://github.com/rerun-io/rerun/pull/8317)
+- Fix handling unnormalized axis for (Pose)RotationAxisAngle [#8341](https://github.com/rerun-io/rerun/pull/8341)
+- Fix 2D/3D view artifacts on view's border when using fractional zoom [#8369](https://github.com/rerun-io/rerun/pull/8369)
+
+#### 🌁 Viewer improvements
+- World grid part 1/2: add world grid renderer to `re_renderer` [#8230](https://github.com/rerun-io/rerun/pull/8230)
+- World grid part 2/2: Integrate into Viewer [#8234](https://github.com/rerun-io/rerun/pull/8234)
+- Add Undo/Redo support in the viewer [#7546](https://github.com/rerun-io/rerun/pull/7546)
+- Space view screenshotting in native viewer [#8258](https://github.com/rerun-io/rerun/pull/8258)
+- Remove selection history [#8296](https://github.com/rerun-io/rerun/pull/8296)
+- Make the near clipping plane editable in 2D views [#8348](https://github.com/rerun-io/rerun/pull/8348)
+- Don't show transform arrows on all entities without any other visualizer [#8387](https://github.com/rerun-io/rerun/pull/8387)
+- Do query for default components only once per view [#8424](https://github.com/rerun-io/rerun/pull/8424)
+- Improve hovered order in 2D views [#8405](https://github.com/rerun-io/rerun/pull/8405)
+- Remove wait-time when opening settings panel [#8464](https://github.com/rerun-io/rerun/pull/8464)
+- Deprecate `DisconnectedSpace` archetype/component in favor of implicit invalid transforms [#8459](https://github.com/rerun-io/rerun/pull/8459)
+- Improve graphics device capability detection, warn on old devices, early error on unsupported render targets [#8476](https://github.com/rerun-io/rerun/pull/8476)
+
+#### 🧑🏫 Examples
+- Add a new "Air Traffic Data" example [#5449](https://github.com/rerun-io/rerun/pull/5449)
+- Use video logging api in `detect_and_track` example [#8261](https://github.com/rerun-io/rerun/pull/8261) (thanks [@oxkitsune](https://github.com/oxkitsune)!)
+- Add hloc_glomap example and update manifest [#8352](https://github.com/rerun-io/rerun/pull/8352) (thanks [@pablovela5620](https://github.com/pablovela5620)!)
+- Introduce the Snippet Index [#8383](https://github.com/rerun-io/rerun/pull/8383)
+- Implement complete Graph View example [#8421](https://github.com/rerun-io/rerun/pull/8421)
+
+#### 📚 Docs
+- Update wheel build instruction [#8235](https://github.com/rerun-io/rerun/pull/8235)
+- Fix various doc links in SDKs [#8331](https://github.com/rerun-io/rerun/pull/8331)
+
+#### 🖼 UI improvements
+- Implement graph components and archetypes [#7500](https://github.com/rerun-io/rerun/pull/7500)
+- Add support for Bezier-curve multi (self-)edges [#8256](https://github.com/rerun-io/rerun/pull/8256)
+- Implement incremental graph layouts [#8308](https://github.com/rerun-io/rerun/pull/8308)
+- Revert label background color to that in 0.19 [#8337](https://github.com/rerun-io/rerun/pull/8337)
+- Add selection hierarchy breadcrumbs [#8319](https://github.com/rerun-io/rerun/pull/8319)
+- More compact selection panel when multiple items selected [#8351](https://github.com/rerun-io/rerun/pull/8351)
+- Make Position2D components editable in selection panel [#8357](https://github.com/rerun-io/rerun/pull/8357)
+- Dynamic configuration of graph layout forces through blueprints [#8299](https://github.com/rerun-io/rerun/pull/8299)
+- Document legend interaction in the timeseries view help text [#8406](https://github.com/rerun-io/rerun/pull/8406)
+- Allow drag-and-dropping multiple containers and views in the blueprint tree [#8334](https://github.com/rerun-io/rerun/pull/8334)
+- Improve picking in 2D views [#8404](https://github.com/rerun-io/rerun/pull/8404)
+- Make our collapsing triangle thinner for more consistency with our icons [#8408](https://github.com/rerun-io/rerun/pull/8408)
+- Entities can be dragged from the blueprint tree and streams tree to an existing view in the viewport [#8431](https://github.com/rerun-io/rerun/pull/8431)
+
+#### 🎨 Renderer improvements
+- Update egui to latest, update wgpu to 23.0.0 [#8183](https://github.com/rerun-io/rerun/pull/8183)
+
+#### ✨ Other enhancement
+- Improve `rrd print`'s verbosity modes [#8392](https://github.com/rerun-io/rerun/pull/8392)
+- Miscellaneous improvements to archetype reflection [#8432](https://github.com/rerun-io/rerun/pull/8432)
+- Migration kernel for the blueprint space-view-related breaking changes [#8439](https://github.com/rerun-io/rerun/pull/8439)
+
+#### 🗣 Refactors
+- Add arrow(1)-interface on top of `Loggable` and `ArrowBuffer` [#8197](https://github.com/rerun-io/rerun/pull/8197)
+- `re_types_blueprint` -> `re_types::blueprint` [#8419](https://github.com/rerun-io/rerun/pull/8419)
+- `re_viewer::reflection` -> `re_types::reflection` [#8420](https://github.com/rerun-io/rerun/pull/8420)
+
+#### 📦 Dependencies
+- Numpy 2.0 allowed in pyproject.toml [#8306](https://github.com/rerun-io/rerun/pull/8306) (thanks [@Ipuch](https://github.com/Ipuch)!)
+- Upgrade to egui 0.30 (+ ecosystem) [#8516](https://github.com/rerun-io/rerun/pull/8516)
+
+#### 🧑💻 Dev-experience
+- Add `MainThreadToken` to ensure file-dialogs only run on the main thread [#8467](https://github.com/rerun-io/rerun/pull/8467)
+
+#### 🤷 Other
+- Deprecate `--serve`, add `--serve-web` [#8144](https://github.com/rerun-io/rerun/pull/8144)
+- Clean up pass over all superfluous hashing happening on the query path [#8207](https://github.com/rerun-io/rerun/pull/8207)
+- Improve performance of time panel [#8224](https://github.com/rerun-io/rerun/pull/8224)
+
## [0.20.3](https://github.com/rerun-io/rerun/compare/0.20.2...0.20.3) - Web viewer fix
### 🔎 Details
diff --git a/Cargo.lock b/Cargo.lock
index 60076725fe56..12ac9a4c6699 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1381,7 +1381,7 @@ dependencies = [
[[package]]
name = "clock"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -1724,7 +1724,7 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
[[package]]
name = "custom_data_loader"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"re_build_tools",
"rerun",
@@ -1732,7 +1732,7 @@ dependencies = [
[[package]]
name = "custom_store_subscriber"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"re_build_tools",
"rerun",
@@ -1740,7 +1740,7 @@ dependencies = [
[[package]]
name = "custom_view"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
@@ -1796,7 +1796,7 @@ checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
[[package]]
name = "dataframe_query"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"itertools 0.13.0",
"rerun",
@@ -1891,7 +1891,7 @@ dependencies = [
[[package]]
name = "dna"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"itertools 0.13.0",
"rand",
@@ -2395,7 +2395,7 @@ dependencies = [
[[package]]
name = "extend_viewer_ui"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
@@ -2928,7 +2928,7 @@ dependencies = [
[[package]]
name = "graph_lattice"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -3520,7 +3520,7 @@ dependencies = [
[[package]]
name = "incremental_logging"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -3951,7 +3951,7 @@ dependencies = [
[[package]]
name = "log_benchmark"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -3962,7 +3962,7 @@ dependencies = [
[[package]]
name = "log_file"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -4140,14 +4140,14 @@ dependencies = [
[[package]]
name = "minimal"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
[[package]]
name = "minimal_options"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -4157,7 +4157,7 @@ dependencies = [
[[package]]
name = "minimal_serve"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -4758,7 +4758,7 @@ dependencies = [
[[package]]
name = "objectron"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -4984,7 +4984,7 @@ dependencies = [
[[package]]
name = "plot_dashboard_stress"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5477,7 +5477,7 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
[[package]]
name = "raw_mesh"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"bytes",
@@ -5520,7 +5520,7 @@ checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f"
[[package]]
name = "re_analytics"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"crossbeam",
"directories",
@@ -5568,7 +5568,7 @@ dependencies = [
[[package]]
name = "re_blueprint_tree"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"itertools 0.13.0",
@@ -5587,14 +5587,14 @@ dependencies = [
[[package]]
name = "re_build_info"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"serde",
]
[[package]]
name = "re_build_tools"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"cargo_metadata 0.18.1",
@@ -5607,7 +5607,7 @@ dependencies = [
[[package]]
name = "re_capabilities"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"document-features",
"egui",
@@ -5616,14 +5616,14 @@ dependencies = [
[[package]]
name = "re_case"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"convert_case",
]
[[package]]
name = "re_chunk"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -5652,7 +5652,7 @@ dependencies = [
[[package]]
name = "re_chunk_store"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -5684,7 +5684,7 @@ dependencies = [
[[package]]
name = "re_chunk_store_ui"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_extras",
@@ -5699,7 +5699,7 @@ dependencies = [
[[package]]
name = "re_component_ui"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_extras",
@@ -5718,7 +5718,7 @@ dependencies = [
[[package]]
name = "re_context_menu"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_tiles",
@@ -5739,7 +5739,7 @@ dependencies = [
[[package]]
name = "re_crash_handler"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"backtrace",
"econtext",
@@ -5752,7 +5752,7 @@ dependencies = [
[[package]]
name = "re_data_loader"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -5781,7 +5781,7 @@ dependencies = [
[[package]]
name = "re_data_source"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"itertools 0.13.0",
@@ -5799,7 +5799,7 @@ dependencies = [
[[package]]
name = "re_data_ui"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -5829,7 +5829,7 @@ dependencies = [
[[package]]
name = "re_dataframe"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"itertools 0.13.0",
@@ -5853,7 +5853,7 @@ dependencies = [
[[package]]
name = "re_dev_tools"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"argh",
@@ -5880,7 +5880,7 @@ dependencies = [
[[package]]
name = "re_entity_db"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -5913,21 +5913,21 @@ dependencies = [
[[package]]
name = "re_error"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
]
[[package]]
name = "re_format"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"num-traits",
]
[[package]]
name = "re_format_arrow"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"comfy-table",
"re_arrow2",
@@ -5937,7 +5937,7 @@ dependencies = [
[[package]]
name = "re_grpc_client"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"re_chunk",
"re_error",
@@ -5958,7 +5958,7 @@ dependencies = [
[[package]]
name = "re_int_histogram"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"criterion",
"insta",
@@ -5969,7 +5969,7 @@ dependencies = [
[[package]]
name = "re_log"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"env_logger",
"js-sys",
@@ -5982,7 +5982,7 @@ dependencies = [
[[package]]
name = "re_log_encoding"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"criterion",
"ehttp",
@@ -6010,7 +6010,7 @@ dependencies = [
[[package]]
name = "re_log_types"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6059,7 +6059,7 @@ dependencies = [
[[package]]
name = "re_memory"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"backtrace",
@@ -6094,7 +6094,7 @@ dependencies = [
[[package]]
name = "re_protos"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"prost",
"thiserror 1.0.65",
@@ -6104,7 +6104,7 @@ dependencies = [
[[package]]
name = "re_protos_builder"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"camino",
"prost-build",
@@ -6114,7 +6114,7 @@ dependencies = [
[[package]]
name = "re_query"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6168,7 +6168,7 @@ dependencies = [
[[package]]
name = "re_renderer"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6220,7 +6220,7 @@ dependencies = [
[[package]]
name = "re_renderer_examples"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6244,7 +6244,7 @@ dependencies = [
[[package]]
name = "re_sdk"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"crossbeam",
@@ -6279,7 +6279,7 @@ dependencies = [
[[package]]
name = "re_sdk_comms"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"crossbeam",
@@ -6295,7 +6295,7 @@ dependencies = [
[[package]]
name = "re_selection_panel"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_tiles",
@@ -6322,7 +6322,7 @@ dependencies = [
[[package]]
name = "re_smart_channel"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"crossbeam",
"parking_lot",
@@ -6333,7 +6333,7 @@ dependencies = [
[[package]]
name = "re_string_interner"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"nohash-hasher",
@@ -6345,7 +6345,7 @@ dependencies = [
[[package]]
name = "re_time_panel"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"criterion",
@@ -6374,7 +6374,7 @@ dependencies = [
[[package]]
name = "re_tracing"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"puffin",
"puffin_http",
@@ -6385,7 +6385,7 @@ dependencies = [
[[package]]
name = "re_tuid"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"criterion",
"document-features",
@@ -6398,7 +6398,7 @@ dependencies = [
[[package]]
name = "re_types"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"array-init",
@@ -6440,7 +6440,7 @@ dependencies = [
[[package]]
name = "re_types_builder"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"arrow",
@@ -6471,7 +6471,7 @@ dependencies = [
[[package]]
name = "re_types_core"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"arrow",
@@ -6496,7 +6496,7 @@ dependencies = [
[[package]]
name = "re_ui"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"eframe",
"egui",
@@ -6522,7 +6522,7 @@ dependencies = [
[[package]]
name = "re_video"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"bit-vec",
"cfg_aliases 0.2.1",
@@ -6550,7 +6550,7 @@ dependencies = [
[[package]]
name = "re_view"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"arrow",
@@ -6575,7 +6575,7 @@ dependencies = [
[[package]]
name = "re_view_bar_chart"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_plot",
@@ -6593,7 +6593,7 @@ dependencies = [
[[package]]
name = "re_view_dataframe"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"egui",
@@ -6616,7 +6616,7 @@ dependencies = [
[[package]]
name = "re_view_graph"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"egui",
@@ -6640,7 +6640,7 @@ dependencies = [
[[package]]
name = "re_view_map"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"bytemuck",
"egui",
@@ -6664,7 +6664,7 @@ dependencies = [
[[package]]
name = "re_view_spatial"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6708,7 +6708,7 @@ dependencies = [
[[package]]
name = "re_view_tensor"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"bytemuck",
@@ -6732,7 +6732,7 @@ dependencies = [
[[package]]
name = "re_view_text_document"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_commonmark",
@@ -6747,7 +6747,7 @@ dependencies = [
[[package]]
name = "re_view_text_log"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_extras",
@@ -6767,7 +6767,7 @@ dependencies = [
[[package]]
name = "re_view_time_series"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"egui",
"egui_plot",
@@ -6789,7 +6789,7 @@ dependencies = [
[[package]]
name = "re_viewer"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6867,7 +6867,7 @@ dependencies = [
[[package]]
name = "re_viewer_context"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"anyhow",
@@ -6884,6 +6884,7 @@ dependencies = [
"emath",
"glam",
"half",
+ "home",
"image",
"indexmap 2.6.0",
"itertools 0.13.0",
@@ -6923,7 +6924,7 @@ dependencies = [
[[package]]
name = "re_viewport"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"egui",
@@ -6946,7 +6947,7 @@ dependencies = [
[[package]]
name = "re_viewport_blueprint"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"egui",
@@ -6972,7 +6973,7 @@ dependencies = [
[[package]]
name = "re_web_viewer_server"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"document-features",
"re_analytics",
@@ -6983,7 +6984,7 @@ dependencies = [
[[package]]
name = "re_ws_comms"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"bincode",
@@ -7180,7 +7181,7 @@ dependencies = [
[[package]]
name = "rerun"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7221,7 +7222,7 @@ dependencies = [
[[package]]
name = "rerun-cli"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"document-features",
"mimalloc",
@@ -7236,7 +7237,7 @@ dependencies = [
[[package]]
name = "rerun-loader-rust-file"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"argh",
@@ -7245,7 +7246,7 @@ dependencies = [
[[package]]
name = "rerun_c"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"ahash",
"infer",
@@ -7259,7 +7260,7 @@ dependencies = [
[[package]]
name = "rerun_py"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"arrow",
"crossbeam",
@@ -7392,7 +7393,7 @@ dependencies = [
[[package]]
name = "roundtrip_annotation_context"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7402,7 +7403,7 @@ dependencies = [
[[package]]
name = "roundtrip_arrows2d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7412,7 +7413,7 @@ dependencies = [
[[package]]
name = "roundtrip_arrows3d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7422,7 +7423,7 @@ dependencies = [
[[package]]
name = "roundtrip_boxes2d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7432,7 +7433,7 @@ dependencies = [
[[package]]
name = "roundtrip_boxes3d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7442,7 +7443,7 @@ dependencies = [
[[package]]
name = "roundtrip_depth_image"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7453,7 +7454,7 @@ dependencies = [
[[package]]
name = "roundtrip_disconnected_space"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7463,7 +7464,7 @@ dependencies = [
[[package]]
name = "roundtrip_image"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7476,7 +7477,7 @@ dependencies = [
[[package]]
name = "roundtrip_line_strips2d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7486,7 +7487,7 @@ dependencies = [
[[package]]
name = "roundtrip_line_strips3d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7496,7 +7497,7 @@ dependencies = [
[[package]]
name = "roundtrip_pinhole"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7506,7 +7507,7 @@ dependencies = [
[[package]]
name = "roundtrip_points2d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7516,7 +7517,7 @@ dependencies = [
[[package]]
name = "roundtrip_points3d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7526,7 +7527,7 @@ dependencies = [
[[package]]
name = "roundtrip_segmentation_image"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7537,7 +7538,7 @@ dependencies = [
[[package]]
name = "roundtrip_tensor"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7548,7 +7549,7 @@ dependencies = [
[[package]]
name = "roundtrip_text_document"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7558,7 +7559,7 @@ dependencies = [
[[package]]
name = "roundtrip_text_log"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7568,7 +7569,7 @@ dependencies = [
[[package]]
name = "roundtrip_transform3d"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7578,7 +7579,7 @@ dependencies = [
[[package]]
name = "roundtrip_view_coordinates"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7588,7 +7589,7 @@ dependencies = [
[[package]]
name = "roundtrip_visible_time_ranges"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -7604,7 +7605,7 @@ checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f"
[[package]]
name = "run_wasm"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"cargo-run-wasm",
"pico-args",
@@ -7996,7 +7997,7 @@ dependencies = [
[[package]]
name = "shared_recording"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -8175,7 +8176,7 @@ dependencies = [
[[package]]
name = "snippets"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"itertools 0.13.0",
"ndarray",
@@ -8199,7 +8200,7 @@ dependencies = [
[[package]]
name = "spawn_viewer"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -8250,7 +8251,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "stdio"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -8427,7 +8428,7 @@ dependencies = [
[[package]]
name = "template"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -8443,7 +8444,7 @@ dependencies = [
[[package]]
name = "test_api"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -8458,7 +8459,7 @@ dependencies = [
[[package]]
name = "test_data_density_graph"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"rand",
@@ -8468,7 +8469,7 @@ dependencies = [
[[package]]
name = "test_image_memory"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_format",
@@ -8477,7 +8478,7 @@ dependencies = [
[[package]]
name = "test_pinhole_projection"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -8488,7 +8489,7 @@ dependencies = [
[[package]]
name = "test_send_columns"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"re_chunk",
"rerun",
@@ -8496,7 +8497,7 @@ dependencies = [
[[package]]
name = "test_ui_wakeup"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
diff --git a/Cargo.toml b/Cargo.toml
index 12143ae8d7ab..2dfdffaed3fe 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -31,7 +31,7 @@ include = [
license = "MIT OR Apache-2.0"
repository = "https://github.com/rerun-io/rerun"
rust-version = "1.81"
-version = "0.21.0-alpha.1+dev"
+version = "0.22.0-alpha.1+dev"
[workspace.dependencies]
# When using alpha-release, always use exact version, e.g. `version = "=0.x.y-alpha.z"
@@ -40,78 +40,78 @@ version = "0.21.0-alpha.1+dev"
# re_log_types 0.3.0-alpha.0, NOT 0.3.0-alpha.4 even though it is newer and semver-compatible.
# crates/build:
-re_build_info = { path = "crates/build/re_build_info", version = "=0.21.0-alpha.1", default-features = false }
-re_build_tools = { path = "crates/build/re_build_tools", version = "=0.21.0-alpha.1", default-features = false }
-re_dev_tools = { path = "crates/build/re_dev_tools", version = "=0.21.0-alpha.1", default-features = false }
-re_protos_builder = { path = "crates/build/re_protos_builder", version = "=0.21.0-alpha.1", default-features = false }
-re_types_builder = { path = "crates/build/re_types_builder", version = "=0.21.0-alpha.1", default-features = false }
+re_build_info = { path = "crates/build/re_build_info", version = "=0.22.0-alpha.1", default-features = false }
+re_build_tools = { path = "crates/build/re_build_tools", version = "=0.22.0-alpha.1", default-features = false }
+re_dev_tools = { path = "crates/build/re_dev_tools", version = "=0.22.0-alpha.1", default-features = false }
+re_protos_builder = { path = "crates/build/re_protos_builder", version = "=0.22.0-alpha.1", default-features = false }
+re_types_builder = { path = "crates/build/re_types_builder", version = "=0.22.0-alpha.1", default-features = false }
# crates/store:
-re_chunk = { path = "crates/store/re_chunk", version = "=0.21.0-alpha.1", default-features = false }
-re_chunk_store = { path = "crates/store/re_chunk_store", version = "=0.21.0-alpha.1", default-features = false }
-re_data_loader = { path = "crates/store/re_data_loader", version = "=0.21.0-alpha.1", default-features = false }
-re_data_source = { path = "crates/store/re_data_source", version = "=0.21.0-alpha.1", default-features = false }
-re_dataframe = { path = "crates/store/re_dataframe", version = "=0.21.0-alpha.1", default-features = false }
-re_entity_db = { path = "crates/store/re_entity_db", version = "=0.21.0-alpha.1", default-features = false }
-re_format_arrow = { path = "crates/store/re_format_arrow", version = "=0.21.0-alpha.1", default-features = false }
-re_grpc_client = { path = "crates/store/re_grpc_client", version = "=0.21.0-alpha.1", default-features = false }
-re_protos = { path = "crates/store/re_protos", version = "=0.21.0-alpha.1", default-features = false }
-re_log_encoding = { path = "crates/store/re_log_encoding", version = "=0.21.0-alpha.1", default-features = false }
-re_log_types = { path = "crates/store/re_log_types", version = "=0.21.0-alpha.1", default-features = false }
-re_query = { path = "crates/store/re_query", version = "=0.21.0-alpha.1", default-features = false }
-re_sdk_comms = { path = "crates/store/re_sdk_comms", version = "=0.21.0-alpha.1", default-features = false }
-re_types = { path = "crates/store/re_types", version = "=0.21.0-alpha.1", default-features = false }
-re_types_core = { path = "crates/store/re_types_core", version = "=0.21.0-alpha.1", default-features = false }
-re_ws_comms = { path = "crates/store/re_ws_comms", version = "=0.21.0-alpha.1", default-features = false }
+re_chunk = { path = "crates/store/re_chunk", version = "=0.22.0-alpha.1", default-features = false }
+re_chunk_store = { path = "crates/store/re_chunk_store", version = "=0.22.0-alpha.1", default-features = false }
+re_data_loader = { path = "crates/store/re_data_loader", version = "=0.22.0-alpha.1", default-features = false }
+re_data_source = { path = "crates/store/re_data_source", version = "=0.22.0-alpha.1", default-features = false }
+re_dataframe = { path = "crates/store/re_dataframe", version = "=0.22.0-alpha.1", default-features = false }
+re_entity_db = { path = "crates/store/re_entity_db", version = "=0.22.0-alpha.1", default-features = false }
+re_format_arrow = { path = "crates/store/re_format_arrow", version = "=0.22.0-alpha.1", default-features = false }
+re_grpc_client = { path = "crates/store/re_grpc_client", version = "=0.22.0-alpha.1", default-features = false }
+re_protos = { path = "crates/store/re_protos", version = "=0.22.0-alpha.1", default-features = false }
+re_log_encoding = { path = "crates/store/re_log_encoding", version = "=0.22.0-alpha.1", default-features = false }
+re_log_types = { path = "crates/store/re_log_types", version = "=0.22.0-alpha.1", default-features = false }
+re_query = { path = "crates/store/re_query", version = "=0.22.0-alpha.1", default-features = false }
+re_sdk_comms = { path = "crates/store/re_sdk_comms", version = "=0.22.0-alpha.1", default-features = false }
+re_types = { path = "crates/store/re_types", version = "=0.22.0-alpha.1", default-features = false }
+re_types_core = { path = "crates/store/re_types_core", version = "=0.22.0-alpha.1", default-features = false }
+re_ws_comms = { path = "crates/store/re_ws_comms", version = "=0.22.0-alpha.1", default-features = false }
# crates/top:
-re_sdk = { path = "crates/top/re_sdk", version = "=0.21.0-alpha.1", default-features = false }
-rerun = { path = "crates/top/rerun", version = "=0.21.0-alpha.1", default-features = false }
-rerun_c = { path = "crates/top/rerun_c", version = "=0.21.0-alpha.1", default-features = false }
-rerun-cli = { path = "crates/top/rerun-cli", version = "=0.21.0-alpha.1", default-features = false }
+re_sdk = { path = "crates/top/re_sdk", version = "=0.22.0-alpha.1", default-features = false }
+rerun = { path = "crates/top/rerun", version = "=0.22.0-alpha.1", default-features = false }
+rerun_c = { path = "crates/top/rerun_c", version = "=0.22.0-alpha.1", default-features = false }
+rerun-cli = { path = "crates/top/rerun-cli", version = "=0.22.0-alpha.1", default-features = false }
# crates/utils:
-re_analytics = { path = "crates/utils/re_analytics", version = "=0.21.0-alpha.1", default-features = false }
-re_capabilities = { path = "crates/utils/re_capabilities", version = "=0.21.0-alpha.1", default-features = false }
-re_case = { path = "crates/utils/re_case", version = "=0.21.0-alpha.1", default-features = false }
-re_crash_handler = { path = "crates/utils/re_crash_handler", version = "=0.21.0-alpha.1", default-features = false }
-re_error = { path = "crates/utils/re_error", version = "=0.21.0-alpha.1", default-features = false }
-re_format = { path = "crates/utils/re_format", version = "=0.21.0-alpha.1", default-features = false }
-re_int_histogram = { path = "crates/utils/re_int_histogram", version = "=0.21.0-alpha.1", default-features = false }
-re_log = { path = "crates/utils/re_log", version = "=0.21.0-alpha.1", default-features = false }
-re_memory = { path = "crates/utils/re_memory", version = "=0.21.0-alpha.1", default-features = false }
-re_smart_channel = { path = "crates/utils/re_smart_channel", version = "=0.21.0-alpha.1", default-features = false }
-re_string_interner = { path = "crates/utils/re_string_interner", version = "=0.21.0-alpha.1", default-features = false }
-re_tracing = { path = "crates/utils/re_tracing", version = "=0.21.0-alpha.1", default-features = false }
-re_tuid = { path = "crates/utils/re_tuid", version = "=0.21.0-alpha.1", default-features = false }
-re_video = { path = "crates/utils/re_video", version = "=0.21.0-alpha.1", default-features = false }
+re_analytics = { path = "crates/utils/re_analytics", version = "=0.22.0-alpha.1", default-features = false }
+re_capabilities = { path = "crates/utils/re_capabilities", version = "=0.22.0-alpha.1", default-features = false }
+re_case = { path = "crates/utils/re_case", version = "=0.22.0-alpha.1", default-features = false }
+re_crash_handler = { path = "crates/utils/re_crash_handler", version = "=0.22.0-alpha.1", default-features = false }
+re_error = { path = "crates/utils/re_error", version = "=0.22.0-alpha.1", default-features = false }
+re_format = { path = "crates/utils/re_format", version = "=0.22.0-alpha.1", default-features = false }
+re_int_histogram = { path = "crates/utils/re_int_histogram", version = "=0.22.0-alpha.1", default-features = false }
+re_log = { path = "crates/utils/re_log", version = "=0.22.0-alpha.1", default-features = false }
+re_memory = { path = "crates/utils/re_memory", version = "=0.22.0-alpha.1", default-features = false }
+re_smart_channel = { path = "crates/utils/re_smart_channel", version = "=0.22.0-alpha.1", default-features = false }
+re_string_interner = { path = "crates/utils/re_string_interner", version = "=0.22.0-alpha.1", default-features = false }
+re_tracing = { path = "crates/utils/re_tracing", version = "=0.22.0-alpha.1", default-features = false }
+re_tuid = { path = "crates/utils/re_tuid", version = "=0.22.0-alpha.1", default-features = false }
+re_video = { path = "crates/utils/re_video", version = "=0.22.0-alpha.1", default-features = false }
# crates/viewer:
-re_blueprint_tree = { path = "crates/viewer/re_blueprint_tree", version = "=0.21.0-alpha.1", default-features = false }
-re_component_ui = { path = "crates/viewer/re_component_ui", version = "=0.21.0-alpha.1", default-features = false }
-re_context_menu = { path = "crates/viewer/re_context_menu", version = "=0.21.0-alpha.1", default-features = false }
-re_data_ui = { path = "crates/viewer/re_data_ui", version = "=0.21.0-alpha.1", default-features = false }
-re_chunk_store_ui = { path = "crates/viewer/re_chunk_store_ui", version = "=0.21.0-alpha.1", default-features = false }
-re_renderer = { path = "crates/viewer/re_renderer", version = "=0.21.0-alpha.1", default-features = false }
-re_renderer_examples = { path = "crates/viewer/re_renderer_examples", version = "=0.21.0-alpha.1", default-features = false }
-re_selection_panel = { path = "crates/viewer/re_selection_panel", version = "=0.21.0-alpha.1", default-features = false }
-re_view = { path = "crates/viewer/re_view", version = "=0.21.0-alpha.1", default-features = false }
-re_view_bar_chart = { path = "crates/viewer/re_view_bar_chart", version = "=0.21.0-alpha.1", default-features = false }
-re_view_spatial = { path = "crates/viewer/re_view_spatial", version = "=0.21.0-alpha.1", default-features = false }
-re_view_dataframe = { path = "crates/viewer/re_view_dataframe", version = "=0.21.0-alpha.1", default-features = false }
-re_view_graph = { path = "crates/viewer/re_view_graph", version = "=0.21.0-alpha.1", default-features = false }
-re_view_map = { path = "crates/viewer/re_view_map", version = "=0.21.0-alpha.1", default-features = false }
-re_view_tensor = { path = "crates/viewer/re_view_tensor", version = "=0.21.0-alpha.1", default-features = false }
-re_view_text_document = { path = "crates/viewer/re_view_text_document", version = "=0.21.0-alpha.1", default-features = false }
-re_view_text_log = { path = "crates/viewer/re_view_text_log", version = "=0.21.0-alpha.1", default-features = false }
-re_view_time_series = { path = "crates/viewer/re_view_time_series", version = "=0.21.0-alpha.1", default-features = false }
-re_time_panel = { path = "crates/viewer/re_time_panel", version = "=0.21.0-alpha.1", default-features = false }
-re_ui = { path = "crates/viewer/re_ui", version = "=0.21.0-alpha.1", default-features = false }
-re_viewer = { path = "crates/viewer/re_viewer", version = "=0.21.0-alpha.1", default-features = false }
-re_viewer_context = { path = "crates/viewer/re_viewer_context", version = "=0.21.0-alpha.1", default-features = false }
-re_viewport = { path = "crates/viewer/re_viewport", version = "=0.21.0-alpha.1", default-features = false }
-re_viewport_blueprint = { path = "crates/viewer/re_viewport_blueprint", version = "=0.21.0-alpha.1", default-features = false }
-re_web_viewer_server = { path = "crates/viewer/re_web_viewer_server", version = "=0.21.0-alpha.1", default-features = false }
+re_blueprint_tree = { path = "crates/viewer/re_blueprint_tree", version = "=0.22.0-alpha.1", default-features = false }
+re_component_ui = { path = "crates/viewer/re_component_ui", version = "=0.22.0-alpha.1", default-features = false }
+re_context_menu = { path = "crates/viewer/re_context_menu", version = "=0.22.0-alpha.1", default-features = false }
+re_data_ui = { path = "crates/viewer/re_data_ui", version = "=0.22.0-alpha.1", default-features = false }
+re_chunk_store_ui = { path = "crates/viewer/re_chunk_store_ui", version = "=0.22.0-alpha.1", default-features = false }
+re_renderer = { path = "crates/viewer/re_renderer", version = "=0.22.0-alpha.1", default-features = false }
+re_renderer_examples = { path = "crates/viewer/re_renderer_examples", version = "=0.22.0-alpha.1", default-features = false }
+re_selection_panel = { path = "crates/viewer/re_selection_panel", version = "=0.22.0-alpha.1", default-features = false }
+re_view = { path = "crates/viewer/re_view", version = "=0.22.0-alpha.1", default-features = false }
+re_view_bar_chart = { path = "crates/viewer/re_view_bar_chart", version = "=0.22.0-alpha.1", default-features = false }
+re_view_spatial = { path = "crates/viewer/re_view_spatial", version = "=0.22.0-alpha.1", default-features = false }
+re_view_dataframe = { path = "crates/viewer/re_view_dataframe", version = "=0.22.0-alpha.1", default-features = false }
+re_view_graph = { path = "crates/viewer/re_view_graph", version = "=0.22.0-alpha.1", default-features = false }
+re_view_map = { path = "crates/viewer/re_view_map", version = "=0.22.0-alpha.1", default-features = false }
+re_view_tensor = { path = "crates/viewer/re_view_tensor", version = "=0.22.0-alpha.1", default-features = false }
+re_view_text_document = { path = "crates/viewer/re_view_text_document", version = "=0.22.0-alpha.1", default-features = false }
+re_view_text_log = { path = "crates/viewer/re_view_text_log", version = "=0.22.0-alpha.1", default-features = false }
+re_view_time_series = { path = "crates/viewer/re_view_time_series", version = "=0.22.0-alpha.1", default-features = false }
+re_time_panel = { path = "crates/viewer/re_time_panel", version = "=0.22.0-alpha.1", default-features = false }
+re_ui = { path = "crates/viewer/re_ui", version = "=0.22.0-alpha.1", default-features = false }
+re_viewer = { path = "crates/viewer/re_viewer", version = "=0.22.0-alpha.1", default-features = false }
+re_viewer_context = { path = "crates/viewer/re_viewer_context", version = "=0.22.0-alpha.1", default-features = false }
+re_viewport = { path = "crates/viewer/re_viewport", version = "=0.22.0-alpha.1", default-features = false }
+re_viewport_blueprint = { path = "crates/viewer/re_viewport_blueprint", version = "=0.22.0-alpha.1", default-features = false }
+re_web_viewer_server = { path = "crates/viewer/re_web_viewer_server", version = "=0.22.0-alpha.1", default-features = false }
# Rerun crates in other repos:
ewebsock = "0.8.0"
@@ -193,6 +193,7 @@ glob = "0.3"
gltf = "1.1"
half = "2.3.1"
hexasphere = "14.1.0"
+home = "=0.5.9"
image = { version = "0.25", default-features = false }
indent = "0.1"
indexmap = "2.1" # Version chosen to align with other dependencies
diff --git a/crates/build/re_protos_builder/src/lib.rs b/crates/build/re_protos_builder/src/lib.rs
index 6f382e89fb48..ddbbce158a99 100644
--- a/crates/build/re_protos_builder/src/lib.rs
+++ b/crates/build/re_protos_builder/src/lib.rs
@@ -32,7 +32,7 @@ pub fn generate_rust_code(
std::process::exit(1);
}
_ => {
- panic!("{err:?}");
+ panic!("{err}");
}
}
}
diff --git a/crates/build/re_types_builder/src/codegen/docs/snippets_ref.rs b/crates/build/re_types_builder/src/codegen/docs/snippets_ref.rs
index 47fe4e3cfeac..322785041e9c 100644
--- a/crates/build/re_types_builder/src/codegen/docs/snippets_ref.rs
+++ b/crates/build/re_types_builder/src/codegen/docs/snippets_ref.rs
@@ -631,9 +631,8 @@ fn is_speculative(any_name: &str) -> anyhow::Result {
let minor: u32 = env!("CARGO_PKG_VERSION_MINOR")
.parse()
.context("couldn't parse minor crate version")?;
- let pre = env!("CARGO_PKG_VERSION_PRE");
- minor < 21 || !pre.is_empty()
+ minor < 21
};
const RELEASED_IN_0_21: &[&str] = &[
diff --git a/crates/build/re_types_builder/src/codegen/rust/arrow.rs b/crates/build/re_types_builder/src/codegen/rust/arrow.rs
index 890f9d95004b..303dbf684637 100644
--- a/crates/build/re_types_builder/src/codegen/rust/arrow.rs
+++ b/crates/build/re_types_builder/src/codegen/rust/arrow.rs
@@ -7,7 +7,7 @@ use quote::quote;
/// `(Datatype, is_recursive)`
///
/// If `is_recursive` is set to `true`,
-/// then the generate code will often be shorter, as it it will
+/// then the generated code will often be shorter, as it will
/// defer to calling `arrow_datatype()` on the inner type.
pub struct ArrowDataTypeTokenizer<'a>(pub &'a ::arrow2::datatypes::DataType, pub bool);
diff --git a/crates/build/re_types_builder/src/codegen/rust/serializer.rs b/crates/build/re_types_builder/src/codegen/rust/serializer.rs
index 8f8063923dc4..6156c4895bc4 100644
--- a/crates/build/re_types_builder/src/codegen/rust/serializer.rs
+++ b/crates/build/re_types_builder/src/codegen/rust/serializer.rs
@@ -843,7 +843,7 @@ fn quote_arrow_field_serializer(
// if we make the C++ and Python codegen match the rust behavior or
// make our comparison tests more lenient.
//
- // This workaround does not apply if we don't have any validity validity on the outer type.
+ // This workaround does not apply if we don't have any validity on the outer type.
// (as it is always the case with unions where the nullability is encoded as a separate variant)
let quoted_inner_validity = if let (true, DataType::FixedSizeList(_, count)) =
(elements_are_nullable, datatype.to_logical_type())
diff --git a/crates/store/re_chunk/src/iter.rs b/crates/store/re_chunk/src/iter.rs
index 571c5995c48b..1534d9ac0a28 100644
--- a/crates/store/re_chunk/src/iter.rs
+++ b/crates/store/re_chunk/src/iter.rs
@@ -710,7 +710,7 @@ impl Chunk {
Err(err) => {
if cfg!(debug_assertions) {
panic!(
- "deserialization failed for {}, data discarded: {}",
+ "[DEBUG-ONLY] deserialization failed for {}, data discarded: {}",
C::name(),
re_error::format_ref(&err),
);
diff --git a/crates/store/re_types/definitions/rerun/archetypes/ellipsoids3d.fbs b/crates/store/re_types/definitions/rerun/archetypes/ellipsoids3d.fbs
index 0fb824dc7017..469ff7009186 100644
--- a/crates/store/re_types/definitions/rerun/archetypes/ellipsoids3d.fbs
+++ b/crates/store/re_types/definitions/rerun/archetypes/ellipsoids3d.fbs
@@ -12,7 +12,7 @@ namespace rerun.archetypes;
/// Some of its component are repeated here for convenience.
/// If there's more instance poses than half sizes, the last half size will be repeated for the remaining poses.
///
-/// \example archetypes/ellipsoids3d_simple !api title="Covariance ellipsoid" image="https://static.rerun.io/elliopsoid3d_simple/bd5d46e61b80ae44792b52ee07d750a7137002ea/1200w.png"
+/// \example archetypes/ellipsoids3d_simple title="Covariance ellipsoid" image="https://static.rerun.io/elliopsoid3d_simple/bd5d46e61b80ae44792b52ee07d750a7137002ea/1200w.png"
table Ellipsoids3D (
"attr.rust.derive": "PartialEq",
"attr.rust.new_pub_crate",
diff --git a/crates/store/re_types/definitions/rerun/archetypes/graph_edges.fbs b/crates/store/re_types/definitions/rerun/archetypes/graph_edges.fbs
index 337787158f71..c85a4e58e4bb 100644
--- a/crates/store/re_types/definitions/rerun/archetypes/graph_edges.fbs
+++ b/crates/store/re_types/definitions/rerun/archetypes/graph_edges.fbs
@@ -10,10 +10,8 @@ namespace rerun.archetypes;
/// \example archetypes/graph_directed title="Simple directed graph" image="https://static.rerun.io/graph_directed/ca29a37b65e1e0b6482251dce401982a0bc568fa/1200w.png"
table GraphEdges (
"attr.docs.category": "Graph",
- "attr.docs.unreleased",
"attr.docs.view_types": "GraphView",
- "attr.rust.derive": "PartialEq, Eq",
- "attr.rerun.experimental"
+ "attr.rust.derive": "PartialEq, Eq"
) {
// --- Required ---
diff --git a/crates/store/re_types/definitions/rerun/archetypes/graph_nodes.fbs b/crates/store/re_types/definitions/rerun/archetypes/graph_nodes.fbs
index 142a88dd2444..d169b97bd25b 100644
--- a/crates/store/re_types/definitions/rerun/archetypes/graph_nodes.fbs
+++ b/crates/store/re_types/definitions/rerun/archetypes/graph_nodes.fbs
@@ -8,10 +8,8 @@ namespace rerun.archetypes;
/// \example archetypes/graph_directed title="Simple directed graph" image="https://static.rerun.io/graph_directed/ca29a37b65e1e0b6482251dce401982a0bc568fa/1200w.png"
table GraphNodes (
"attr.docs.category": "Graph",
- "attr.docs.unreleased",
"attr.docs.view_types": "GraphView",
- "attr.rust.derive": "PartialEq",
- "attr.rerun.experimental"
+ "attr.rust.derive": "PartialEq"
) {
// --- Required ---
diff --git a/crates/store/re_types/definitions/rerun/blueprint/archetypes/near_clip_plane.fbs b/crates/store/re_types/definitions/rerun/blueprint/archetypes/near_clip_plane.fbs
index a157d67a2982..9875dfde1004 100644
--- a/crates/store/re_types/definitions/rerun/blueprint/archetypes/near_clip_plane.fbs
+++ b/crates/store/re_types/definitions/rerun/blueprint/archetypes/near_clip_plane.fbs
@@ -2,7 +2,6 @@ namespace rerun.blueprint.archetypes;
/// Controls the distance to the near clip plane in 3D scene units.
table NearClipPlane (
- "attr.docs.unreleased",
"attr.rerun.scope": "blueprint",
"attr.rust.derive": "Copy"
) {
diff --git a/crates/store/re_types/definitions/rerun/blueprint/components/near_clip_plane.fbs b/crates/store/re_types/definitions/rerun/blueprint/components/near_clip_plane.fbs
index 200fc64ef33b..aa7aa3582d1f 100644
--- a/crates/store/re_types/definitions/rerun/blueprint/components/near_clip_plane.fbs
+++ b/crates/store/re_types/definitions/rerun/blueprint/components/near_clip_plane.fbs
@@ -6,8 +6,7 @@ namespace rerun.blueprint.components;
struct NearClipPlane (
"attr.rerun.scope": "blueprint",
"attr.rust.derive": "Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable",
- "attr.rust.repr": "transparent",
- "attr.docs.unreleased"
+ "attr.rust.repr": "transparent"
) {
/// Distance to the near clip plane in 3D scene units.
near_clip_plane: rerun.datatypes.Float32 (order: 100);
diff --git a/crates/store/re_types/definitions/rerun/blueprint/views/graph.fbs b/crates/store/re_types/definitions/rerun/blueprint/views/graph.fbs
index 848ad4f3255a..7710b0856c02 100644
--- a/crates/store/re_types/definitions/rerun/blueprint/views/graph.fbs
+++ b/crates/store/re_types/definitions/rerun/blueprint/views/graph.fbs
@@ -4,8 +4,7 @@ namespace rerun.blueprint.views;
///
/// \example views/graph title="Use a blueprint to create a graph view." image="https://static.rerun.io/graph_lattice/f9169da9c3f35b7260c9d74cd5be5fe710aec6a8/1200w.png"
table GraphView (
- "attr.rerun.view_identifier": "Graph",
- "attr.docs.unreleased"
+ "attr.rerun.view_identifier": "Graph"
) {
/// Everything within these bounds is guaranteed to be visible.
///
diff --git a/crates/store/re_types/definitions/rerun/components/graph_edge.fbs b/crates/store/re_types/definitions/rerun/components/graph_edge.fbs
index 1f97a2e6c506..435dee9efa5a 100644
--- a/crates/store/re_types/definitions/rerun/components/graph_edge.fbs
+++ b/crates/store/re_types/definitions/rerun/components/graph_edge.fbs
@@ -4,7 +4,6 @@ namespace rerun.components;
/// An edge in a graph connecting two nodes.
table GraphEdge (
- "attr.docs.unreleased",
"attr.rust.derive": "Default, PartialEq, Eq, PartialOrd, Ord",
"attr.rust.repr": "transparent"
) {
diff --git a/crates/store/re_types/definitions/rerun/components/graph_node.fbs b/crates/store/re_types/definitions/rerun/components/graph_node.fbs
index 7867665a380a..3af3d6f2f185 100644
--- a/crates/store/re_types/definitions/rerun/components/graph_node.fbs
+++ b/crates/store/re_types/definitions/rerun/components/graph_node.fbs
@@ -4,7 +4,6 @@ namespace rerun.components;
/// A string-based ID representing a node in a graph.
table GraphNode (
- "attr.docs.unreleased",
"attr.python.aliases": "str",
"attr.python.array_aliases": "str, Sequence[str]",
"attr.rust.derive": "Default, PartialEq, Eq, PartialOrd, Ord, Hash",
diff --git a/crates/store/re_types/definitions/rerun/components/graph_type.fbs b/crates/store/re_types/definitions/rerun/components/graph_type.fbs
index 283e3a2b93b4..1348c6b20479 100644
--- a/crates/store/re_types/definitions/rerun/components/graph_type.fbs
+++ b/crates/store/re_types/definitions/rerun/components/graph_type.fbs
@@ -4,7 +4,6 @@ namespace rerun.components;
/// Specifies if a graph has directed or undirected edges.
enum GraphType: ubyte (
- "attr.docs.unreleased",
"attr.rust.derive": "Default, PartialEq, Eq"
) {
/// Invalid value. Won't show up in generated types.
diff --git a/crates/store/re_types/definitions/rerun/components/plane3d.fbs b/crates/store/re_types/definitions/rerun/components/plane3d.fbs
index e60aa4efdf58..21c8b139d1c4 100644
--- a/crates/store/re_types/definitions/rerun/components/plane3d.fbs
+++ b/crates/store/re_types/definitions/rerun/components/plane3d.fbs
@@ -10,7 +10,6 @@ namespace rerun.components;
/// datastore as provided, when used in the Viewer, planes will always be normalized.
/// I.e. the plane with xyz = (2, 0, 0), d = 1 is equivalent to xyz = (1, 0, 0), d = 0.5
struct Plane3D (
- "attr.docs.unreleased",
"attr.rust.derive": "Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable",
"attr.rust.repr": "transparent"
) {
diff --git a/crates/store/re_types/definitions/rerun/components/recording_uri.fbs b/crates/store/re_types/definitions/rerun/components/recording_uri.fbs
index e27204f5251d..22966e126eb4 100644
--- a/crates/store/re_types/definitions/rerun/components/recording_uri.fbs
+++ b/crates/store/re_types/definitions/rerun/components/recording_uri.fbs
@@ -4,8 +4,7 @@ namespace rerun.components;
/// A recording URI (Uniform Resource Identifier).
table RecordingUri (
- "attr.rust.derive": "PartialEq, Eq, PartialOrd, Ord, Hash",
- "attr.docs.unreleased"
+ "attr.rust.derive": "PartialEq, Eq, PartialOrd, Ord, Hash"
) {
recording_uri: rerun.datatypes.Utf8 (order: 100);
}
diff --git a/crates/store/re_types/definitions/rerun/datatypes.fbs b/crates/store/re_types/definitions/rerun/datatypes.fbs
index 5772f4c3b8d5..fa325413e155 100644
--- a/crates/store/re_types/definitions/rerun/datatypes.fbs
+++ b/crates/store/re_types/definitions/rerun/datatypes.fbs
@@ -27,7 +27,6 @@ include "./datatypes/rgba32.fbs";
include "./datatypes/rotation_axis_angle.fbs";
include "./datatypes/tensor_buffer.fbs";
include "./datatypes/tensor_data.fbs";
-include "./datatypes/tensor_dimension.fbs";
include "./datatypes/tensor_dimension_selection.fbs";
include "./datatypes/time_int.fbs";
include "./datatypes/uint16.fbs";
diff --git a/crates/store/re_types/definitions/rerun/datatypes/plane3d.fbs b/crates/store/re_types/definitions/rerun/datatypes/plane3d.fbs
index a490f8450481..acfeb4741ce8 100644
--- a/crates/store/re_types/definitions/rerun/datatypes/plane3d.fbs
+++ b/crates/store/re_types/definitions/rerun/datatypes/plane3d.fbs
@@ -10,7 +10,6 @@ namespace rerun.datatypes;
/// datastore as provided, when used in the Viewer, planes will always be normalized.
/// I.e. the plane with xyz = (2, 0, 0), d = 1 is equivalent to xyz = (1, 0, 0), d = 0.5
struct Plane3D (
- "attr.docs.unreleased",
"attr.arrow.transparent",
"attr.python.array_aliases": "npt.NDArray[Any], npt.ArrayLike, Sequence[Sequence[float]]",
"attr.rust.derive": "Copy, PartialEq, PartialOrd, bytemuck::Pod, bytemuck::Zeroable",
diff --git a/crates/store/re_types/definitions/rerun/datatypes/tensor_data.fbs b/crates/store/re_types/definitions/rerun/datatypes/tensor_data.fbs
index 1624be6e00f3..6301c33c7abb 100644
--- a/crates/store/re_types/definitions/rerun/datatypes/tensor_data.fbs
+++ b/crates/store/re_types/definitions/rerun/datatypes/tensor_data.fbs
@@ -19,8 +19,17 @@ table TensorData (
"attr.python.array_aliases": "npt.ArrayLike",
"attr.rust.derive": "PartialEq,"
) {
- /// The shape of the tensor, including optional names for each dimension.
- shape: [rerun.datatypes.TensorDimension] (order: 200);
+ /// The shape of the tensor, i.e. the length of each dimension.
+ shape: [uint64] (order: 200);
+
+ /// The names of the dimensions of the tensor (optional).
+ ///
+ /// If set, should be the same length as [datatypes.TensorData.shape].
+ /// If it has a different length your names may show up improperly,
+ /// and some constructors may produce a warning or even an error.
+ ///
+ /// Example: `["height", "width", "channel", "batch"]`.
+ names: [string] (order: 250, nullable);
/// The content/data.
buffer: rerun.datatypes.TensorBuffer (order: 300);
diff --git a/crates/store/re_types/definitions/rerun/datatypes/tensor_dimension.fbs b/crates/store/re_types/definitions/rerun/datatypes/tensor_dimension.fbs
deleted file mode 100644
index 7d755a8b81e5..000000000000
--- a/crates/store/re_types/definitions/rerun/datatypes/tensor_dimension.fbs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace rerun.datatypes;
-
-// ---
-
-/// A single dimension within a multi-dimensional tensor.
-// TODO(jleibs): Support for stride.
-table TensorDimension (
- "attr.rust.derive_only": "Clone, Default, Eq, PartialEq"
-) {
- /// The length of this dimension.
- size: ulong (order: 100);
-
- /// The name of this dimension, e.g. "width", "height", "channel", "batch', ….
- name: string (order: 200, nullable);
-}
diff --git a/crates/store/re_types/definitions/rerun/datatypes/utf8_pair.fbs b/crates/store/re_types/definitions/rerun/datatypes/utf8_pair.fbs
index 9acbb85a5052..051722a1e200 100644
--- a/crates/store/re_types/definitions/rerun/datatypes/utf8_pair.fbs
+++ b/crates/store/re_types/definitions/rerun/datatypes/utf8_pair.fbs
@@ -2,7 +2,6 @@ namespace rerun.datatypes;
/// Stores a tuple of UTF-8 strings.
table Utf8Pair (
- "attr.docs.unreleased",
"attr.python.aliases": "Tuple[datatypes.Utf8Like, datatypes.Utf8Like]",
"attr.python.array_aliases": "npt.NDArray[np.str_]",
"attr.rust.derive": "Default, PartialEq, Eq, PartialOrd, Ord"
diff --git a/crates/store/re_types/src/archetypes/depth_image_ext.rs b/crates/store/re_types/src/archetypes/depth_image_ext.rs
index b1c7044c0914..af72285a3edd 100644
--- a/crates/store/re_types/src/archetypes/depth_image_ext.rs
+++ b/crates/store/re_types/src/archetypes/depth_image_ext.rs
@@ -20,7 +20,7 @@ impl DepthImage {
let tensor_data: TensorData = data
.try_into()
.map_err(ImageConstructionError::TensorDataConversion)?;
- let shape = tensor_data.shape;
+ let TensorData { shape, buffer, .. } = tensor_data;
let non_empty_dim_inds = find_non_empty_dim_indices(&shape);
@@ -28,13 +28,11 @@ impl DepthImage {
return Err(ImageConstructionError::BadImageShape(shape));
}
- let (blob, datatype) = blob_and_datatype_from_tensor(tensor_data.buffer);
+ let (blob, datatype) = blob_and_datatype_from_tensor(buffer);
- let (height, width) = (&shape[non_empty_dim_inds[0]], &shape[non_empty_dim_inds[1]]);
- let height = height.size as u32;
- let width = width.size as u32;
+ let (height, width) = (shape[non_empty_dim_inds[0]], shape[non_empty_dim_inds[1]]);
- let image_format = ImageFormat::depth([width, height], datatype);
+ let image_format = ImageFormat::depth([width as u32, height as u32], datatype);
Ok(Self {
buffer: blob.into(),
diff --git a/crates/store/re_types/src/archetypes/ellipsoids3d.rs b/crates/store/re_types/src/archetypes/ellipsoids3d.rs
index bc6ee14a53f6..034fbb9f6047 100644
--- a/crates/store/re_types/src/archetypes/ellipsoids3d.rs
+++ b/crates/store/re_types/src/archetypes/ellipsoids3d.rs
@@ -27,6 +27,58 @@ use ::re_types_core::{DeserializationError, DeserializationResult};
/// Note that orienting and placing the ellipsoids/spheres is handled via `[archetypes.InstancePoses3D]`.
/// Some of its component are repeated here for convenience.
/// If there's more instance poses than half sizes, the last half size will be repeated for the remaining poses.
+///
+/// ## Example
+///
+/// ### Covariance ellipsoid
+/// ```ignore
+/// use rand::distributions::Distribution;
+///
+/// fn main() -> Result<(), Box> {
+/// let rec = rerun::RecordingStreamBuilder::new("rerun_example_ellipsoid_simple").spawn()?;
+///
+/// let sigmas: [f32; 3] = [5., 3., 1.];
+///
+/// let mut rng = rand::thread_rng();
+/// let normal = rand_distr::Normal::new(0.0, 1.0)?;
+///
+/// rec.log(
+/// "points",
+/// &rerun::Points3D::new((0..50_000).map(|_| {
+/// (
+/// sigmas[0] * normal.sample(&mut rng),
+/// sigmas[1] * normal.sample(&mut rng),
+/// sigmas[2] * normal.sample(&mut rng),
+/// )
+/// }))
+/// .with_radii([0.02])
+/// .with_colors([rerun::Color::from_rgb(188, 77, 185)]),
+/// )?;
+///
+/// rec.log(
+/// "ellipsoid",
+/// &rerun::Ellipsoids3D::from_centers_and_half_sizes(
+/// [(0.0, 0.0, 0.0), (0.0, 0.0, 0.0)],
+/// [sigmas, [sigmas[0] * 3., sigmas[1] * 3., sigmas[2] * 3.]],
+/// )
+/// .with_colors([
+/// rerun::Color::from_rgb(255, 255, 0),
+/// rerun::Color::from_rgb(64, 64, 0),
+/// ]),
+/// )?;
+///
+/// Ok(())
+/// }
+/// ```
+///
+///
+///
#[derive(Clone, Debug, PartialEq)]
pub struct Ellipsoids3D {
/// For each ellipsoid, half of its size on its three axes.
diff --git a/crates/store/re_types/src/archetypes/graph_edges.rs b/crates/store/re_types/src/archetypes/graph_edges.rs
index d30dfea19a76..19fa08c8c526 100644
--- a/crates/store/re_types/src/archetypes/graph_edges.rs
+++ b/crates/store/re_types/src/archetypes/graph_edges.rs
@@ -22,8 +22,6 @@ use ::re_types_core::{DeserializationError, DeserializationResult};
///
/// By default, edges are undirected.
///
-/// ⚠️ **This type is experimental and may be removed in future versions**
-///
/// ## Example
///
/// ### Simple directed graph
diff --git a/crates/store/re_types/src/archetypes/graph_nodes.rs b/crates/store/re_types/src/archetypes/graph_nodes.rs
index 3f3e707e185f..5931330051f3 100644
--- a/crates/store/re_types/src/archetypes/graph_nodes.rs
+++ b/crates/store/re_types/src/archetypes/graph_nodes.rs
@@ -20,8 +20,6 @@ use ::re_types_core::{DeserializationError, DeserializationResult};
/// **Archetype**: A list of nodes in a graph with optional labels, colors, etc.
///
-/// ⚠️ **This type is experimental and may be removed in future versions**
-///
/// ## Example
///
/// ### Simple directed graph
diff --git a/crates/store/re_types/src/archetypes/image_ext.rs b/crates/store/re_types/src/archetypes/image_ext.rs
index 1beff5061887..0304cecb27fe 100644
--- a/crates/store/re_types/src/archetypes/image_ext.rs
+++ b/crates/store/re_types/src/archetypes/image_ext.rs
@@ -33,17 +33,17 @@ impl Image {
let tensor_data: TensorData = data
.try_into()
.map_err(ImageConstructionError::TensorDataConversion)?;
- let shape = tensor_data.shape;
+ let TensorData { shape, buffer, .. } = tensor_data;
let non_empty_dim_inds = find_non_empty_dim_indices(&shape);
let is_shape_correct = match color_model {
ColorModel::L => non_empty_dim_inds.len() == 2,
ColorModel::RGB | ColorModel::BGR => {
- non_empty_dim_inds.len() == 3 && shape[non_empty_dim_inds[2]].size == 3
+ non_empty_dim_inds.len() == 3 && shape[non_empty_dim_inds[2]] == 3
}
ColorModel::RGBA | ColorModel::BGRA => {
- non_empty_dim_inds.len() == 3 && shape[non_empty_dim_inds[2]].size == 4
+ non_empty_dim_inds.len() == 3 && shape[non_empty_dim_inds[2]] == 4
}
};
@@ -51,15 +51,13 @@ impl Image {
return Err(ImageConstructionError::BadImageShape(shape));
}
- let (blob, datatype) = blob_and_datatype_from_tensor(tensor_data.buffer);
+ let (blob, datatype) = blob_and_datatype_from_tensor(buffer);
- let (height, width) = (&shape[non_empty_dim_inds[0]], &shape[non_empty_dim_inds[1]]);
- let height = height.size as u32;
- let width = width.size as u32;
+ let (height, width) = (shape[non_empty_dim_inds[0]], shape[non_empty_dim_inds[1]]);
let image_format = ImageFormat {
- width,
- height,
+ width: width as _,
+ height: height as _,
pixel_format: None,
channel_datatype: Some(datatype),
color_model: Some(color_model),
diff --git a/crates/store/re_types/src/archetypes/segmentation_image_ext.rs b/crates/store/re_types/src/archetypes/segmentation_image_ext.rs
index 4c2f71375b39..a90856eb24d3 100644
--- a/crates/store/re_types/src/archetypes/segmentation_image_ext.rs
+++ b/crates/store/re_types/src/archetypes/segmentation_image_ext.rs
@@ -19,7 +19,7 @@ impl SegmentationImage {
let tensor_data: TensorData = data
.try_into()
.map_err(ImageConstructionError::TensorDataConversion)?;
- let shape = tensor_data.shape;
+ let TensorData { shape, buffer, .. } = tensor_data;
let non_empty_dim_inds = find_non_empty_dim_indices(&shape);
@@ -27,13 +27,11 @@ impl SegmentationImage {
return Err(ImageConstructionError::BadImageShape(shape));
}
- let (blob, datatype) = blob_and_datatype_from_tensor(tensor_data.buffer);
+ let (blob, datatype) = blob_and_datatype_from_tensor(buffer);
- let (height, width) = (&shape[non_empty_dim_inds[0]], &shape[non_empty_dim_inds[1]]);
- let height = height.size as u32;
- let width = width.size as u32;
+ let (height, width) = (shape[non_empty_dim_inds[0]], shape[non_empty_dim_inds[1]]);
- let image_format = ImageFormat::segmentation([width, height], datatype);
+ let image_format = ImageFormat::segmentation([width as _, height as _], datatype);
Ok(Self {
buffer: blob.into(),
diff --git a/crates/store/re_types/src/archetypes/tensor_ext.rs b/crates/store/re_types/src/archetypes/tensor_ext.rs
index c7063b0b6264..2bfa7c1f08ef 100644
--- a/crates/store/re_types/src/archetypes/tensor_ext.rs
+++ b/crates/store/re_types/src/archetypes/tensor_ext.rs
@@ -1,4 +1,4 @@
-use crate::datatypes::{TensorData, TensorDimension};
+use crate::datatypes::TensorData;
use re_types_core::ArrowString;
@@ -24,37 +24,16 @@ impl Tensor {
/// Update the `names` of the contained [`TensorData`] dimensions.
///
- /// Any existing Dimension names will be overwritten.
+ /// Any existing names will be overwritten.
///
- /// If too many, or too few names are provided, this function will warn and only
- /// update the subset of names that it can.
- pub fn with_dim_names(self, names: impl IntoIterator>) -> Self {
- let names: Vec<_> = names.into_iter().map(|x| Some(x.into())).collect();
- if names.len() != self.data.0.shape.len() {
- re_log::warn_once!(
- "Wrong number of names provided for tensor dimension. {} provided but {} expected.",
- names.len(),
- self.data.0.shape.len(),
- );
- }
- Self {
- data: TensorData {
- shape: self
- .data
- .0
- .shape
- .into_iter()
- .zip(names.into_iter().chain(std::iter::repeat(None)))
- .map(|(dim, name)| TensorDimension {
- size: dim.size,
- name: name.or(dim.name),
- })
- .collect(),
- buffer: self.data.0.buffer,
- }
- .into(),
- value_range: None,
- }
+ /// If the wrong number of names are given, a warning will be logged,
+ /// and the names might not show up correctly.
+ pub fn with_dim_names(
+ mut self,
+ names: impl IntoIterator>,
+ ) -> Self {
+ self.data.0 = self.data.0.with_dim_names(names);
+ self
}
}
diff --git a/crates/store/re_types/src/datatypes/.gitattributes b/crates/store/re_types/src/datatypes/.gitattributes
index 289cbd45793c..5995b6d6c716 100644
--- a/crates/store/re_types/src/datatypes/.gitattributes
+++ b/crates/store/re_types/src/datatypes/.gitattributes
@@ -25,7 +25,6 @@ rgba32.rs linguist-generated=true
rotation_axis_angle.rs linguist-generated=true
tensor_buffer.rs linguist-generated=true
tensor_data.rs linguist-generated=true
-tensor_dimension.rs linguist-generated=true
tensor_dimension_index_selection.rs linguist-generated=true
tensor_dimension_selection.rs linguist-generated=true
utf8pair.rs linguist-generated=true
diff --git a/crates/store/re_types/src/datatypes/mod.rs b/crates/store/re_types/src/datatypes/mod.rs
index d1edf377eb08..f18d728fd794 100644
--- a/crates/store/re_types/src/datatypes/mod.rs
+++ b/crates/store/re_types/src/datatypes/mod.rs
@@ -46,8 +46,6 @@ mod tensor_buffer;
mod tensor_buffer_ext;
mod tensor_data;
mod tensor_data_ext;
-mod tensor_dimension;
-mod tensor_dimension_ext;
mod tensor_dimension_index_selection;
mod tensor_dimension_selection;
mod tensor_dimension_selection_ext;
@@ -95,7 +93,6 @@ pub use self::rgba32::Rgba32;
pub use self::rotation_axis_angle::RotationAxisAngle;
pub use self::tensor_buffer::TensorBuffer;
pub use self::tensor_data::TensorData;
-pub use self::tensor_dimension::TensorDimension;
pub use self::tensor_dimension_index_selection::TensorDimensionIndexSelection;
pub use self::tensor_dimension_selection::TensorDimensionSelection;
pub use self::utf8pair::Utf8Pair;
diff --git a/crates/store/re_types/src/datatypes/tensor_data.rs b/crates/store/re_types/src/datatypes/tensor_data.rs
index 0d19cb6190a6..4d75cc0c12e3 100644
--- a/crates/store/re_types/src/datatypes/tensor_data.rs
+++ b/crates/store/re_types/src/datatypes/tensor_data.rs
@@ -28,8 +28,17 @@ use ::re_types_core::{DeserializationError, DeserializationResult};
/// which stores a contiguous array of typed values.
#[derive(Clone, Debug, PartialEq)]
pub struct TensorData {
- /// The shape of the tensor, including optional names for each dimension.
- pub shape: Vec,
+ /// The shape of the tensor, i.e. the length of each dimension.
+ pub shape: ::re_types_core::ArrowBuffer,
+
+ /// The names of the dimensions of the tensor (optional).
+ ///
+ /// If set, should be the same length as [`datatypes::TensorData::shape`][crate::datatypes::TensorData::shape].
+ /// If it has a different length your names may show up improperly,
+ /// and some constructors may produce a warning or even an error.
+ ///
+ /// Example: `["height", "width", "channel", "batch"]`.
+ pub names: Option>,
/// The content/data.
pub buffer: crate::datatypes::TensorBuffer,
@@ -47,11 +56,20 @@ impl ::re_types_core::Loggable for TensorData {
"shape",
DataType::List(std::sync::Arc::new(Field::new(
"item",
- ::arrow_datatype(),
+ DataType::UInt64,
false,
))),
false,
),
+ Field::new(
+ "names",
+ DataType::List(std::sync::Arc::new(Field::new(
+ "item",
+ DataType::Utf8,
+ false,
+ ))),
+ true,
+ ),
Field::new(
"buffer",
::arrow_datatype(),
@@ -76,11 +94,20 @@ impl ::re_types_core::Loggable for TensorData {
"shape",
DataType::List(std::sync::Arc::new(Field::new(
"item",
- ::arrow_datatype(),
+ DataType::UInt64,
false,
))),
false,
),
+ Field::new(
+ "names",
+ DataType::List(std::sync::Arc::new(Field::new(
+ "item",
+ DataType::Utf8,
+ false,
+ ))),
+ true,
+ ),
Field::new(
"buffer",
::arrow_datatype(),
@@ -113,29 +140,73 @@ impl ::re_types_core::Loggable for TensorData {
let any_nones = somes.iter().any(|some| !*some);
any_nones.then(|| somes.into())
};
+ {
+ let offsets =
+ arrow::buffer::OffsetBuffer::::from_lengths(shape.iter().map(
+ |opt| opt.as_ref().map_or(0, |datum| datum.num_instances()),
+ ));
+ let shape_inner_data: ScalarBuffer<_> = shape
+ .iter()
+ .flatten()
+ .map(|b| b.as_slice())
+ .collect::>()
+ .concat()
+ .into();
+ let shape_inner_validity: Option = None;
+ as_array_ref(ListArray::try_new(
+ std::sync::Arc::new(Field::new("item", DataType::UInt64, false)),
+ offsets,
+ as_array_ref(PrimitiveArray::::new(
+ shape_inner_data,
+ shape_inner_validity,
+ )),
+ shape_validity,
+ )?)
+ }
+ },
+ {
+ let (somes, names): (Vec<_>, Vec<_>) = data
+ .iter()
+ .map(|datum| {
+ let datum =
+ datum.as_ref().map(|datum| datum.names.clone()).flatten();
+ (datum.is_some(), datum)
+ })
+ .unzip();
+ let names_validity: Option = {
+ let any_nones = somes.iter().any(|some| !*some);
+ any_nones.then(|| somes.into())
+ };
{
let offsets = arrow::buffer::OffsetBuffer::::from_lengths(
- shape
+ names
.iter()
.map(|opt| opt.as_ref().map_or(0, |datum| datum.len())),
);
- let shape_inner_data: Vec<_> =
- shape.into_iter().flatten().flatten().collect();
- let shape_inner_validity: Option = None;
+ let names_inner_data: Vec<_> =
+ names.into_iter().flatten().flatten().collect();
+ let names_inner_validity: Option = None;
as_array_ref(ListArray::try_new(
- std::sync::Arc::new(Field::new(
- "item",
- ::arrow_datatype(),
- false,
- )),
+ std::sync::Arc::new(Field::new("item", DataType::Utf8, false)),
offsets,
{
- _ = shape_inner_validity;
- crate::datatypes::TensorDimension::to_arrow_opt(
- shape_inner_data.into_iter().map(Some),
- )?
+ let offsets = arrow::buffer::OffsetBuffer::::from_lengths(
+ names_inner_data.iter().map(|datum| datum.len()),
+ );
+ let inner_data: arrow::buffer::Buffer = names_inner_data
+ .into_iter()
+ .flat_map(|s| s.into_arrow2_buffer())
+ .collect();
+ #[allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
+ as_array_ref(unsafe {
+ StringArray::new_unchecked(
+ offsets,
+ inner_data,
+ names_inner_validity,
+ )
+ })
},
- shape_validity,
+ names_validity,
)?)
}
},
@@ -208,7 +279,7 @@ impl ::re_types_core::Loggable for TensorData {
.ok_or_else(|| {
let expected = DataType::List(std::sync::Arc::new(Field::new(
"item",
- ::arrow_datatype(),
+ DataType::UInt64,
false,
)));
let actual = arrow_data.data_type().clone();
@@ -220,10 +291,133 @@ impl ::re_types_core::Loggable for TensorData {
} else {
let arrow_data_inner = {
let arrow_data_inner = &**arrow_data.values();
- crate::datatypes::TensorDimension::from_arrow2_opt(arrow_data_inner)
+ arrow_data_inner
+ .as_any()
+ .downcast_ref::()
+ .ok_or_else(|| {
+ let expected = DataType::UInt64;
+ let actual = arrow_data_inner.data_type().clone();
+ DeserializationError::datatype_mismatch(expected, actual)
+ })
.with_context("rerun.datatypes.TensorData#shape")?
+ .values()
+ };
+ let offsets = arrow_data.offsets();
+ arrow2::bitmap::utils::ZipValidity::new_with_validity(
+ offsets.windows(2),
+ arrow_data.validity(),
+ )
+ .map(|elem| {
+ elem.map(|window| {
+ let start = window[0] as usize;
+ let end = window[1] as usize;
+ if arrow_data_inner.len() < end {
+ return Err(DeserializationError::offset_slice_oob(
+ (start, end),
+ arrow_data_inner.len(),
+ ));
+ }
+
+ #[allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
+ let data = unsafe {
+ arrow_data_inner
+ .clone()
+ .sliced_unchecked(start, end - start)
+ };
+ let data = ::re_types_core::ArrowBuffer::from(data);
+ Ok(data)
+ })
+ .transpose()
+ })
+ .collect::>>>()?
+ }
+ .into_iter()
+ }
+ };
+ let names = {
+ if !arrays_by_name.contains_key("names") {
+ return Err(DeserializationError::missing_struct_field(
+ Self::arrow_datatype(),
+ "names",
+ ))
+ .with_context("rerun.datatypes.TensorData");
+ }
+ let arrow_data = &**arrays_by_name["names"];
+ {
+ let arrow_data = arrow_data
+ .as_any()
+ .downcast_ref::>()
+ .ok_or_else(|| {
+ let expected = DataType::List(std::sync::Arc::new(Field::new(
+ "item",
+ DataType::Utf8,
+ false,
+ )));
+ let actual = arrow_data.data_type().clone();
+ DeserializationError::datatype_mismatch(expected, actual)
+ })
+ .with_context("rerun.datatypes.TensorData#names")?;
+ if arrow_data.is_empty() {
+ Vec::new()
+ } else {
+ let arrow_data_inner = {
+ let arrow_data_inner = &**arrow_data.values();
+ {
+ let arrow_data_inner = arrow_data_inner
+ .as_any()
+ .downcast_ref::>()
+ .ok_or_else(|| {
+ let expected = DataType::Utf8;
+ let actual = arrow_data_inner.data_type().clone();
+ DeserializationError::datatype_mismatch(
+ expected, actual,
+ )
+ })
+ .with_context("rerun.datatypes.TensorData#names")?;
+ let arrow_data_inner_buf = arrow_data_inner.values();
+ let offsets = arrow_data_inner.offsets();
+ arrow2::bitmap::utils::ZipValidity::new_with_validity(
+ offsets.windows(2),
+ arrow_data_inner.validity(),
+ )
+ .map(|elem| {
+ elem.map(|window| {
+ let start = window[0] as usize;
+ let end = window[1] as usize;
+ let len = end - start;
+ if arrow_data_inner_buf.len() < end {
+ return Err(
+ DeserializationError::offset_slice_oob(
+ (start, end),
+ arrow_data_inner_buf.len(),
+ ),
+ );
+ }
+
+ #[allow(
+ unsafe_code,
+ clippy::undocumented_unsafe_blocks
+ )]
+ let data = unsafe {
+ arrow_data_inner_buf
+ .clone()
+ .sliced_unchecked(start, len)
+ };
+ Ok(data)
+ })
+ .transpose()
+ })
+ .map(|res_or_opt| {
+ res_or_opt.map(|res_or_opt| {
+ res_or_opt
+ .map(|v| ::re_types_core::ArrowString::from(v))
+ })
+ })
+ .collect::>>>()
+ .with_context("rerun.datatypes.TensorData#names")?
.into_iter()
- .collect::>()
+ }
+ .collect::>()
};
let offsets = arrow_data.offsets();
arrow2::bitmap::utils::ZipValidity::new_with_validity(
@@ -272,15 +466,16 @@ impl ::re_types_core::Loggable for TensorData {
.into_iter()
};
arrow2::bitmap::utils::ZipValidity::new_with_validity(
- ::itertools::izip!(shape, buffer),
+ ::itertools::izip!(shape, names, buffer),
arrow_data.validity(),
)
.map(|opt| {
- opt.map(|(shape, buffer)| {
+ opt.map(|(shape, names, buffer)| {
Ok(Self {
shape: shape
.ok_or_else(DeserializationError::missing_data)
.with_context("rerun.datatypes.TensorData#shape")?,
+ names,
buffer: buffer
.ok_or_else(DeserializationError::missing_data)
.with_context("rerun.datatypes.TensorData#buffer")?,
@@ -298,12 +493,13 @@ impl ::re_types_core::Loggable for TensorData {
impl ::re_types_core::SizeBytes for TensorData {
#[inline]
fn heap_size_bytes(&self) -> u64 {
- self.shape.heap_size_bytes() + self.buffer.heap_size_bytes()
+ self.shape.heap_size_bytes() + self.names.heap_size_bytes() + self.buffer.heap_size_bytes()
}
#[inline]
fn is_pod() -> bool {
- >::is_pod()
+ <::re_types_core::ArrowBuffer>::is_pod()
+ &&