diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index bf736e8fdb63b..bd0f4bdee3316 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -141,6 +141,12 @@ jobs:
run: |
node rerun_js/web-viewer/scripts/version.mjs ${{ steps.versioning.outputs.current }}
+ - name: Update rerun_c version
+ shell: bash
+ # Configuring CMake is enough to change the version on rerun.h!
+ run: |
+ cmake -B build -S .
+
- run: taplo fmt
shell: bash
@@ -224,7 +230,6 @@ jobs:
release-version: ${{ needs.version.outputs.current }}
concurrency: ${{ github.ref_name }}
linux-wheel-name: linux-wheel
- linux-rrd-name: linux-rrd
release-commit: ${{ needs.version.outputs.release-commit }}
secrets: inherit
@@ -237,7 +242,6 @@ jobs:
release-commit: ${{ needs.version.outputs.release-commit }}
concurrency: ${{ github.ref_name }}
wheel-artifact-name: linux-wheel
- rrd-artifact-name: linux-rrd
update-latest: ${{ inputs.release-type == 'final' }}
secrets: inherit
@@ -345,11 +349,6 @@ jobs:
python3 scripts/ci/crates.py version --bump auto
echo "version=$(python3 scripts/ci/crates.py get-version)" >> "$GITHUB_OUTPUT"
- - name: Update NPM versions
- shell: bash
- run: |
- node rerun_js/web-viewer/scripts/version.mjs ${{ steps.update-version.outputs.version }}
-
- run: taplo fmt
shell: bash
@@ -359,6 +358,7 @@ jobs:
git config --global user.name "rerun-bot"
git config --global user.email "bot@rerun.io"
git commit -am "Bump versions to ${{ steps.update-version.outputs.version }}"
+ git pull --rebase
git push
comment-artifact-links:
@@ -426,3 +426,4 @@ jobs:
EOF
gh pr comment $pr_number --body-file comment-body.txt
+
diff --git a/.github/workflows/reusable_publish_npm.yml b/.github/workflows/reusable_publish_npm.yml
index 2ca14898d39ab..98b02b08e1a41 100644
--- a/.github/workflows/reusable_publish_npm.yml
+++ b/.github/workflows/reusable_publish_npm.yml
@@ -58,20 +58,14 @@ jobs:
workload_identity_provider: ${{ secrets.GOOGLE_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
- - name: Install dependencies
- shell: bash
- run: |
- node rerun_js/web-viewer/scripts/install.mjs
-
- - name: Build package
- shell: bash
- run: |
- node rerun_js/web-viewer/scripts/build.mjs
+ - uses: prefix-dev/setup-pixi@v0.3.0
+ with:
+ pixi-version: v0.6.0
- - name: Publish package
+ - name: Publish packages
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
shell: bash
run: |
- node rerun_js/web-viewer/scripts/publish.mjs
+ pixi run node rerun_js/web-viewer/scripts/publish.mjs
diff --git a/.github/workflows/reusable_publish_web.yml b/.github/workflows/reusable_publish_web.yml
index 1a648fd17aab5..47a46bdd19de6 100644
--- a/.github/workflows/reusable_publish_web.yml
+++ b/.github/workflows/reusable_publish_web.yml
@@ -18,10 +18,6 @@ on:
description: "Name of the wheel to use when running examples"
type: string
required: true
- rrd-artifact-name:
- description: "Name of the .rrd file to use for app.rerun.io"
- type: string
- required: true
update-latest:
description: "Whether to update the latest version of demo/app"
type: boolean
@@ -87,12 +83,6 @@ jobs:
name: ${{ inputs.wheel-artifact-name }}
path: wheel
- - name: Download .rrd for app.rerun.io
- uses: actions/download-artifact@v3
- with:
- name: ${{ inputs.rrd-artifact-name }}
- path: rrd
-
- name: Install Python dependencies and wheel
shell: bash
run: |
@@ -121,13 +111,6 @@ jobs:
run: |
pixi run python3 scripts/ci/build_demo_app.py --skip-build
- - name: Upload .rrd for app.rerun.io
- uses: google-github-actions/upload-cloud-storage@v1
- with:
- path: "rrd"
- destination: "rerun-example-rrd/version/${{ inputs.release-version }}"
- parent: false
-
- name: Upload app.rerun.io (versioned)
uses: google-github-actions/upload-cloud-storage@v1
with:
@@ -149,12 +132,6 @@ jobs:
destination: "rerun-demo/version/${{ inputs.release-version }}"
parent: false
- - name: Publish app.rerun.io
- if: inputs.update-latest
- shell: bash
- run: |
- gsutil -m cp -r 'gs://rerun-example-rrd/version/${{ inputs.release-version }}/*' gs://rerun-example-rrd/version/latest
-
- name: Publish app.rerun.io
if: inputs.update-latest
shell: bash
diff --git a/.github/workflows/reusable_publish_wheels.yml b/.github/workflows/reusable_publish_wheels.yml
index 49201a1a3199e..0cca3881fc1c0 100644
--- a/.github/workflows/reusable_publish_wheels.yml
+++ b/.github/workflows/reusable_publish_wheels.yml
@@ -14,10 +14,6 @@ on:
description: "Name of the wheel built for linux"
type: string
required: true
- linux-rrd-name:
- description: "Name of the .rrd file built for linux"
- type: string
- required: true
release-commit:
description: "Which commit to build+publish"
type: string
@@ -215,4 +211,3 @@ jobs:
with:
command: upload
args: --skip-existing wheels/*
-
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ff19240adc510..74c0657bb1016 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,89 @@
## [Unreleased](https://github.com/rerun-io/rerun/compare/latest...HEAD)
+## [0.11.0](https://github.com/rerun-io/rerun/compare/0.10.1...0.11.0)
+
+### Overview & Highlights
+
+- π C++ SDK improvements
+ - [Reference docs are live!](https://ref.rerun.io/docs/cpp/)
+ - 2x-5x faster logging
+ - CMake install support and other CMake setup improvements
+ - Support for custom components & archetypes
+ - Zero copy logging for images, various API improvements
+- π Visual History -> Visual Time Range
+ - Time series plots can now limit its query to a range
+ - Much more powerful UI, allowing query ranges relative to time cursor
+- πΈοΈ The viewer can now be easily embedded in your web apps via our [npm package](https://www.npmjs.com/package/@rerun-io/web-viewer)
+- π β οΈ Legacy Python API now removed, check the [migration guide](https://github.com/rerun-io/rerun/issues/723) if you're not using `rr.log` yet
+- π¦ The new `StoreSubscriber` trait allows to be notified of all changes in the datastore. This can be used to build custom indices and trigger systems, and serves as a foundation for upcoming performance improvements. Check out [our example](https://github.com/rerun-io/rerun/blob/main/examples/rust/custom_store_subscriber/README.md) for more information.
+
+β οΈ Known issues on Visual Time Range:
+- Time cursor [sometimes stops scrolling correctly](https://github.com/rerun-io/rerun/issues/4246) on plot window
+- Still [doesn't work with transforms](https://github.com/rerun-io/rerun/issues/723)
+
+Special thanks to @dvad & @dangush for contributing!
+
+### Details
+
+#### π C++ SDK
+- Support std::chrono types for `set_time` on `rerun::RecordingStream` [#4134](https://github.com/rerun-io/rerun/pull/4134)
+- Improve rerun_cpp readme & CMakeLists.txt [#4126](https://github.com/rerun-io/rerun/pull/4126)
+- Replace the many parameters of `rerun::spawn` / `rerun::RecordingStream::spawn` with a `struct` [#4149](https://github.com/rerun-io/rerun/pull/4149)
+- Make on TextLogLevel PascalCase (instead of SCREAMING CASE) to avoid clashes with preprocessor defines [#4152](https://github.com/rerun-io/rerun/pull/4152)
+- Reduce rerun_c library size (by depending on fewer unnecessary crates) [#4147](https://github.com/rerun-io/rerun/pull/4147)
+- Fix unnecessary includes in code generated headers [#4132](https://github.com/rerun-io/rerun/pull/4132)
+- Doxygen documentation & many doc improvements [#4191](https://github.com/rerun-io/rerun/pull/4191)
+- Rename `rerun::ComponentBatch` to `rerun::Collection` (and related constructs) [#4236](https://github.com/rerun-io/rerun/pull/4236)
+- Use `rerun::Collection` almost everywhere we'd use `std::vector` before [#4247](https://github.com/rerun-io/rerun/pull/4247)
+- Significantly improve C++ logging performance by using C FFI instead of arrow IPC [#4273](https://github.com/rerun-io/rerun/pull/4273)
+- Further improve C++ logging for many individual log calls by introducing a component type registry [#4296](https://github.com/rerun-io/rerun/pull/4296)
+- All C++ datatypes & components now implement a new Loggable trait [#4305](https://github.com/rerun-io/rerun/pull/4305)
+- Add C++ Custom Component example [#4309](https://github.com/rerun-io/rerun/pull/4309)
+- Expose Rerun source/include dir in CMakeLists.txt (`RERUN_CPP_SOURCE_DIR`) [#4313](https://github.com/rerun-io/rerun/pull/4313)
+- Support cmake install [#4326](https://github.com/rerun-io/rerun/pull/4326)
+- Export TensorBuffer & TensorDimension to rerun namespace [#4331](https://github.com/rerun-io/rerun/pull/4331)
+- C++ SDK sanity checks now header/source version against rerun_c binary version [#4330](https://github.com/rerun-io/rerun/pull/4330)
+- Allow creating Image/Tensor/DepthImage/SegmentationImage directly from shape & pointer [#4345](https://github.com/rerun-io/rerun/pull/4345)
+
+#### π Python SDK
+- Python: remove legacy APIs [#4037](https://github.com/rerun-io/rerun/pull/4037)
+- Remove deprecated `rerun_demo` package [#4293](https://github.com/rerun-io/rerun/pull/4293)
+- Python: don't catch `KeyboardInterrupt` and `SystemExit` [#4333](https://github.com/rerun-io/rerun/pull/4333) (thanks [@Dvad](https://github.com/Dvad)!)
+
+#### πͺ³ Bug Fixes
+- Fix line & points (& depth clouds points) radii being unaffected by scale & projection via Pinhole [#4199](https://github.com/rerun-io/rerun/pull/4199)
+- Fix inaccessible entities being incorrectly added to space view [#4226](https://github.com/rerun-io/rerun/pull/4226)
+- Silence spammy blueprint warnings and validate blueprint on load [#4303](https://github.com/rerun-io/rerun/pull/4303)
+- Fix markdown heading size [#4178](https://github.com/rerun-io/rerun/pull/4178)
+
+#### π Viewer Improvements
+- Add command to copy direct link to fully qualified URL [#4165](https://github.com/rerun-io/rerun/pull/4165)
+- Implement recording/last-modified-at aware garbage collection [#4183](https://github.com/rerun-io/rerun/pull/4183)
+
+#### πΌ UI Improvements
+- Improve Visible History to support more general time queries [#4123](https://github.com/rerun-io/rerun/pull/4123)
+- Add support for Visible History to time series space views [#4179](https://github.com/rerun-io/rerun/pull/4179)
+- Make Visible History UI more ergonomic and show inherited values [#4222](https://github.com/rerun-io/rerun/pull/4222)
+- Display Visible History on timeline when the mouse hovers the UI [#4259](https://github.com/rerun-io/rerun/pull/4259)
+- Improve the Selection Panel with better title, context, and Space View key properties [#4324](https://github.com/rerun-io/rerun/pull/4324)
+
+#### πΈοΈ Web
+- Put web viewer on `npm` [#4003](https://github.com/rerun-io/rerun/pull/4003)
+- Auto-switch port when getting AddrInUse error [#4314](https://github.com/rerun-io/rerun/pull/4314) (thanks [@dangush](https://github.com/dangush)!)
+- Generate per-PR web apps [#4341](https://github.com/rerun-io/rerun/pull/4341)
+
+#### π§βπ» Dev-experience
+- Simple logging benchmarks for C++ & Rust [#4181](https://github.com/rerun-io/rerun/pull/4181)
+- New debug option to show the blueprint in the streams view [#4189](https://github.com/rerun-io/rerun/pull/4189)
+- Use pixi over setup scripts on CI + local dev [#4302](https://github.com/rerun-io/rerun/pull/4302)
+- Run deploy docs jobs serially [#4232](https://github.com/rerun-io/rerun/pull/4232)
+- fix windows test config on main [#4242](https://github.com/rerun-io/rerun/pull/4242)
+
+#### π£ Refactors
+- `StoreView` -> `StoreSubscriber` [#4234](https://github.com/rerun-io/rerun/pull/4234)
+- `DataStore` introduce `StoreEvent`s [#4203](https://github.com/rerun-io/rerun/pull/4203)
+- `DataStore` introduce `StoreView`s [#4205](https://github.com/rerun-io/rerun/pull/4205)
## [0.10.1](https://github.com/rerun-io/rerun/compare/0.10.0...0.10.1)
diff --git a/Cargo.lock b/Cargo.lock
index 8f7c7d35a4893..39546cd7ed9a9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -909,7 +909,7 @@ dependencies = [
[[package]]
name = "clock"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -949,7 +949,7 @@ dependencies = [
[[package]]
name = "code_examples"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ndarray",
"rand",
@@ -1261,7 +1261,7 @@ dependencies = [
[[package]]
name = "custom_space_view"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
@@ -1272,7 +1272,7 @@ dependencies = [
[[package]]
name = "custom_store_subscriber"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"re_build_tools",
"rerun",
@@ -1388,7 +1388,7 @@ dependencies = [
[[package]]
name = "dna"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"itertools 0.11.0",
"rand",
@@ -1780,7 +1780,7 @@ dependencies = [
[[package]]
name = "extend_viewer_ui"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
@@ -2804,7 +2804,7 @@ dependencies = [
[[package]]
name = "log_benchmark"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"bytemuck",
@@ -2956,7 +2956,7 @@ dependencies = [
[[package]]
name = "minimal"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -2969,7 +2969,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "minimal_options"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -2979,7 +2979,7 @@ dependencies = [
[[package]]
name = "minimal_serve"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"rerun",
"tokio",
@@ -3371,7 +3371,7 @@ dependencies = [
[[package]]
name = "objectron"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -3994,7 +3994,7 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
[[package]]
name = "raw_mesh"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"bytes",
@@ -4034,7 +4034,7 @@ dependencies = [
[[package]]
name = "re_analytics"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"crossbeam",
"directories-next",
@@ -4053,7 +4053,7 @@ dependencies = [
[[package]]
name = "re_arrow_store"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4084,11 +4084,11 @@ dependencies = [
[[package]]
name = "re_build_info"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
[[package]]
name = "re_build_tools"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"cargo_metadata",
@@ -4101,7 +4101,7 @@ dependencies = [
[[package]]
name = "re_build_web_viewer"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"cargo_metadata",
@@ -4111,7 +4111,7 @@ dependencies = [
[[package]]
name = "re_crash_handler"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"backtrace",
"itertools 0.11.0",
@@ -4123,7 +4123,7 @@ dependencies = [
[[package]]
name = "re_data_source"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"image",
@@ -4142,7 +4142,7 @@ dependencies = [
[[package]]
name = "re_data_store"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4172,7 +4172,7 @@ dependencies = [
[[package]]
name = "re_data_ui"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4199,14 +4199,14 @@ dependencies = [
[[package]]
name = "re_error"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
]
[[package]]
name = "re_format"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"arrow2",
"comfy-table",
@@ -4215,7 +4215,7 @@ dependencies = [
[[package]]
name = "re_int_histogram"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"criterion",
"insta",
@@ -4226,7 +4226,7 @@ dependencies = [
[[package]]
name = "re_log"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"env_logger",
"js-sys",
@@ -4239,7 +4239,7 @@ dependencies = [
[[package]]
name = "re_log_encoding"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"criterion",
"ehttp",
@@ -4264,7 +4264,7 @@ dependencies = [
[[package]]
name = "re_log_types"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4301,7 +4301,7 @@ dependencies = [
[[package]]
name = "re_memory"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"backtrace",
@@ -4322,7 +4322,7 @@ dependencies = [
[[package]]
name = "re_query"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"arrow2",
"backtrace",
@@ -4345,7 +4345,7 @@ dependencies = [
[[package]]
name = "re_renderer"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4398,7 +4398,7 @@ dependencies = [
[[package]]
name = "re_sdk"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4428,7 +4428,7 @@ dependencies = [
[[package]]
name = "re_sdk_comms"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"crossbeam",
@@ -4444,7 +4444,7 @@ dependencies = [
[[package]]
name = "re_smart_channel"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"crossbeam",
"parking_lot 0.12.1",
@@ -4454,7 +4454,7 @@ dependencies = [
[[package]]
name = "re_space_view"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"itertools 0.11.0",
@@ -4472,7 +4472,7 @@ dependencies = [
[[package]]
name = "re_space_view_bar_chart"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"egui_plot",
@@ -4490,7 +4490,7 @@ dependencies = [
[[package]]
name = "re_space_view_spatial"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4524,7 +4524,7 @@ dependencies = [
[[package]]
name = "re_space_view_tensor"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4549,7 +4549,7 @@ dependencies = [
[[package]]
name = "re_space_view_text_document"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"egui_commonmark",
@@ -4566,7 +4566,7 @@ dependencies = [
[[package]]
name = "re_space_view_text_log"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"egui_extras",
@@ -4586,7 +4586,7 @@ dependencies = [
[[package]]
name = "re_space_view_time_series"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"egui_plot",
@@ -4605,7 +4605,7 @@ dependencies = [
[[package]]
name = "re_string_interner"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"nohash-hasher",
@@ -4616,7 +4616,7 @@ dependencies = [
[[package]]
name = "re_tensor_ops"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"ndarray",
@@ -4626,7 +4626,7 @@ dependencies = [
[[package]]
name = "re_time_panel"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"egui",
"itertools 0.11.0",
@@ -4644,7 +4644,7 @@ dependencies = [
[[package]]
name = "re_tracing"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"puffin",
"puffin_http",
@@ -4654,7 +4654,7 @@ dependencies = [
[[package]]
name = "re_tuid"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"arrow2",
"criterion",
@@ -4668,7 +4668,7 @@ dependencies = [
[[package]]
name = "re_types"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"array-init",
@@ -4702,7 +4702,7 @@ dependencies = [
[[package]]
name = "re_types_builder"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"arrow2",
@@ -4728,7 +4728,7 @@ dependencies = [
[[package]]
name = "re_types_core"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"arrow2",
@@ -4745,7 +4745,7 @@ dependencies = [
[[package]]
name = "re_ui"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"eframe",
"egui",
@@ -4761,7 +4761,7 @@ dependencies = [
[[package]]
name = "re_viewer"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4818,7 +4818,7 @@ dependencies = [
[[package]]
name = "re_viewer_context"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"anyhow",
@@ -4856,7 +4856,7 @@ dependencies = [
[[package]]
name = "re_viewport"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"arrow2",
@@ -4887,7 +4887,7 @@ dependencies = [
[[package]]
name = "re_web_viewer_server"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"clap",
"document-features",
@@ -4905,7 +4905,7 @@ dependencies = [
[[package]]
name = "re_ws_comms"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"bincode",
@@ -4984,7 +4984,7 @@ checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b"
[[package]]
name = "rerun"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5018,7 +5018,7 @@ dependencies = [
[[package]]
name = "rerun-cli"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"document-features",
@@ -5034,7 +5034,7 @@ dependencies = [
[[package]]
name = "rerun_c"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"ahash 0.8.5",
"arrow2",
@@ -5046,7 +5046,7 @@ dependencies = [
[[package]]
name = "rerun_py"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"arrow2",
"document-features",
@@ -5148,7 +5148,7 @@ dependencies = [
[[package]]
name = "roundtrip_annotation_context"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5157,7 +5157,7 @@ dependencies = [
[[package]]
name = "roundtrip_arrows3d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5166,7 +5166,7 @@ dependencies = [
[[package]]
name = "roundtrip_boxes2d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5175,7 +5175,7 @@ dependencies = [
[[package]]
name = "roundtrip_boxes3d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5184,7 +5184,7 @@ dependencies = [
[[package]]
name = "roundtrip_depth_image"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5194,7 +5194,7 @@ dependencies = [
[[package]]
name = "roundtrip_disconnected_space"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5203,7 +5203,7 @@ dependencies = [
[[package]]
name = "roundtrip_image"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5215,7 +5215,7 @@ dependencies = [
[[package]]
name = "roundtrip_line_strips2d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5224,7 +5224,7 @@ dependencies = [
[[package]]
name = "roundtrip_line_strips3d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5233,7 +5233,7 @@ dependencies = [
[[package]]
name = "roundtrip_pinhole"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5242,7 +5242,7 @@ dependencies = [
[[package]]
name = "roundtrip_points2d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5251,7 +5251,7 @@ dependencies = [
[[package]]
name = "roundtrip_points3d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5260,7 +5260,7 @@ dependencies = [
[[package]]
name = "roundtrip_segmentation_image"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5270,7 +5270,7 @@ dependencies = [
[[package]]
name = "roundtrip_tensor"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5280,7 +5280,7 @@ dependencies = [
[[package]]
name = "roundtrip_text_document"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5289,7 +5289,7 @@ dependencies = [
[[package]]
name = "roundtrip_text_log"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5298,7 +5298,7 @@ dependencies = [
[[package]]
name = "roundtrip_transform3d"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5307,7 +5307,7 @@ dependencies = [
[[package]]
name = "roundtrip_view_coordinates"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5316,7 +5316,7 @@ dependencies = [
[[package]]
name = "run_wasm"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"cargo-run-wasm",
"pico-args",
@@ -5695,7 +5695,7 @@ dependencies = [
[[package]]
name = "spawn_viewer"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -5837,7 +5837,7 @@ dependencies = [
[[package]]
name = "template"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"rerun",
]
@@ -5853,7 +5853,7 @@ dependencies = [
[[package]]
name = "test_api"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"anyhow",
"clap",
@@ -5867,7 +5867,7 @@ dependencies = [
[[package]]
name = "test_image_memory"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_format",
diff --git a/Cargo.toml b/Cargo.toml
index af0b44e49ad8a..5b3123f08538f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,56 +19,56 @@ include = ["../../LICENSE-APACHE", "../../LICENSE-MIT", "**/*.rs", "Cargo.toml"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/rerun-io/rerun"
rust-version = "1.72"
-version = "0.11.0-alpha.1+dev"
+version = "0.12.0-alpha.1+dev"
[workspace.dependencies]
# When using alpha-release, always use exact version, e.g. `version = "=0.x.y-alpha.z"
# This is because we treat alpha-releases as incompatible, but semver doesn't.
# In particular: if we compile rerun 0.3.0-alpha.0 we only want it to use
# re_log_types 0.3.0-alpha.0, NOT 0.3.0-alpha.4 even though it is newer and semver-compatible.
-re_analytics = { path = "crates/re_analytics", version = "=0.11.0-alpha.1", default-features = false }
-re_arrow_store = { path = "crates/re_arrow_store", version = "=0.11.0-alpha.1", default-features = false }
-re_build_info = { path = "crates/re_build_info", version = "=0.11.0-alpha.1", default-features = false }
-re_build_tools = { path = "crates/re_build_tools", version = "=0.11.0-alpha.1", default-features = false }
-re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "=0.11.0-alpha.1", default-features = false }
-re_crash_handler = { path = "crates/re_crash_handler", version = "=0.11.0-alpha.1", default-features = false }
-re_data_source = { path = "crates/re_data_source", version = "=0.11.0-alpha.1", default-features = false }
-re_data_store = { path = "crates/re_data_store", version = "=0.11.0-alpha.1", default-features = false }
-re_data_ui = { path = "crates/re_data_ui", version = "=0.11.0-alpha.1", default-features = false }
-re_error = { path = "crates/re_error", version = "=0.11.0-alpha.1", default-features = false }
-re_format = { path = "crates/re_format", version = "=0.11.0-alpha.1", default-features = false }
-re_int_histogram = { path = "crates/re_int_histogram", version = "=0.11.0-alpha.1", default-features = false }
-re_log = { path = "crates/re_log", version = "=0.11.0-alpha.1", default-features = false }
-re_log_encoding = { path = "crates/re_log_encoding", version = "=0.11.0-alpha.1", default-features = false }
-re_log_types = { path = "crates/re_log_types", version = "=0.11.0-alpha.1", default-features = false }
-re_memory = { path = "crates/re_memory", version = "=0.11.0-alpha.1", default-features = false }
-re_query = { path = "crates/re_query", version = "=0.11.0-alpha.1", default-features = false }
-re_renderer = { path = "crates/re_renderer", version = "=0.11.0-alpha.1", default-features = false }
-re_sdk = { path = "crates/re_sdk", version = "=0.11.0-alpha.1", default-features = false }
-re_sdk_comms = { path = "crates/re_sdk_comms", version = "=0.11.0-alpha.1", default-features = false }
-re_smart_channel = { path = "crates/re_smart_channel", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view = { path = "crates/re_space_view", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_bar_chart = { path = "crates/re_space_view_bar_chart", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_spatial = { path = "crates/re_space_view_spatial", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_tensor = { path = "crates/re_space_view_tensor", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_text_log = { path = "crates/re_space_view_text_log", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_text_document = { path = "crates/re_space_view_text_document", version = "=0.11.0-alpha.1", default-features = false }
-re_space_view_time_series = { path = "crates/re_space_view_time_series", version = "=0.11.0-alpha.1", default-features = false }
-re_string_interner = { path = "crates/re_string_interner", version = "=0.11.0-alpha.1", default-features = false }
-re_tensor_ops = { path = "crates/re_tensor_ops", version = "=0.11.0-alpha.1", default-features = false }
-re_time_panel = { path = "crates/re_time_panel", version = "=0.11.0-alpha.1", default-features = false }
-re_tracing = { path = "crates/re_tracing", version = "=0.11.0-alpha.1", default-features = false }
-re_tuid = { path = "crates/re_tuid", version = "=0.11.0-alpha.1", default-features = false }
-re_types_core = { path = "crates/re_types_core", version = "=0.11.0-alpha.1", default-features = false }
-re_types = { path = "crates/re_types", version = "=0.11.0-alpha.1", default-features = false }
-re_types_builder = { path = "crates/re_types_builder", version = "=0.11.0-alpha.1", default-features = false }
-re_ui = { path = "crates/re_ui", version = "=0.11.0-alpha.1", default-features = false }
-re_viewer = { path = "crates/re_viewer", version = "=0.11.0-alpha.1", default-features = false }
-re_viewer_context = { path = "crates/re_viewer_context", version = "=0.11.0-alpha.1", default-features = false }
-re_viewport = { path = "crates/re_viewport", version = "=0.11.0-alpha.1", default-features = false }
-re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "=0.11.0-alpha.1", default-features = false }
-re_ws_comms = { path = "crates/re_ws_comms", version = "=0.11.0-alpha.1", default-features = false }
-rerun = { path = "crates/rerun", version = "=0.11.0-alpha.1", default-features = false }
+re_analytics = { path = "crates/re_analytics", version = "=0.12.0-alpha.1", default-features = false }
+re_arrow_store = { path = "crates/re_arrow_store", version = "=0.12.0-alpha.1", default-features = false }
+re_build_info = { path = "crates/re_build_info", version = "=0.12.0-alpha.1", default-features = false }
+re_build_tools = { path = "crates/re_build_tools", version = "=0.12.0-alpha.1", default-features = false }
+re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "=0.12.0-alpha.1", default-features = false }
+re_crash_handler = { path = "crates/re_crash_handler", version = "=0.12.0-alpha.1", default-features = false }
+re_data_source = { path = "crates/re_data_source", version = "=0.12.0-alpha.1", default-features = false }
+re_data_store = { path = "crates/re_data_store", version = "=0.12.0-alpha.1", default-features = false }
+re_data_ui = { path = "crates/re_data_ui", version = "=0.12.0-alpha.1", default-features = false }
+re_error = { path = "crates/re_error", version = "=0.12.0-alpha.1", default-features = false }
+re_format = { path = "crates/re_format", version = "=0.12.0-alpha.1", default-features = false }
+re_int_histogram = { path = "crates/re_int_histogram", version = "=0.12.0-alpha.1", default-features = false }
+re_log = { path = "crates/re_log", version = "=0.12.0-alpha.1", default-features = false }
+re_log_encoding = { path = "crates/re_log_encoding", version = "=0.12.0-alpha.1", default-features = false }
+re_log_types = { path = "crates/re_log_types", version = "=0.12.0-alpha.1", default-features = false }
+re_memory = { path = "crates/re_memory", version = "=0.12.0-alpha.1", default-features = false }
+re_query = { path = "crates/re_query", version = "=0.12.0-alpha.1", default-features = false }
+re_renderer = { path = "crates/re_renderer", version = "=0.12.0-alpha.1", default-features = false }
+re_sdk = { path = "crates/re_sdk", version = "=0.12.0-alpha.1", default-features = false }
+re_sdk_comms = { path = "crates/re_sdk_comms", version = "=0.12.0-alpha.1", default-features = false }
+re_smart_channel = { path = "crates/re_smart_channel", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view = { path = "crates/re_space_view", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_bar_chart = { path = "crates/re_space_view_bar_chart", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_spatial = { path = "crates/re_space_view_spatial", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_tensor = { path = "crates/re_space_view_tensor", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_text_log = { path = "crates/re_space_view_text_log", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_text_document = { path = "crates/re_space_view_text_document", version = "=0.12.0-alpha.1", default-features = false }
+re_space_view_time_series = { path = "crates/re_space_view_time_series", version = "=0.12.0-alpha.1", default-features = false }
+re_string_interner = { path = "crates/re_string_interner", version = "=0.12.0-alpha.1", default-features = false }
+re_tensor_ops = { path = "crates/re_tensor_ops", version = "=0.12.0-alpha.1", default-features = false }
+re_time_panel = { path = "crates/re_time_panel", version = "=0.12.0-alpha.1", default-features = false }
+re_tracing = { path = "crates/re_tracing", version = "=0.12.0-alpha.1", default-features = false }
+re_tuid = { path = "crates/re_tuid", version = "=0.12.0-alpha.1", default-features = false }
+re_types_core = { path = "crates/re_types_core", version = "=0.12.0-alpha.1", default-features = false }
+re_types = { path = "crates/re_types", version = "=0.12.0-alpha.1", default-features = false }
+re_types_builder = { path = "crates/re_types_builder", version = "=0.12.0-alpha.1", default-features = false }
+re_ui = { path = "crates/re_ui", version = "=0.12.0-alpha.1", default-features = false }
+re_viewer = { path = "crates/re_viewer", version = "=0.12.0-alpha.1", default-features = false }
+re_viewer_context = { path = "crates/re_viewer_context", version = "=0.12.0-alpha.1", default-features = false }
+re_viewport = { path = "crates/re_viewport", version = "=0.12.0-alpha.1", default-features = false }
+re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "=0.12.0-alpha.1", default-features = false }
+re_ws_comms = { path = "crates/re_ws_comms", version = "=0.12.0-alpha.1", default-features = false }
+rerun = { path = "crates/rerun", version = "=0.12.0-alpha.1", default-features = false }
# All of our direct external dependencies should be found here:
ahash = "0.8"
diff --git a/RELEASES.md b/RELEASES.md
index bad12b56c9e20..f83acea77d0a7 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -11,14 +11,15 @@ This document describes the current release and versioning strategy. This strate
## Release Cadence
-New Rerun versions are released every two weeks. Sometimes we do out-of-schedule patch releases.
+New Rerun versions are released every four weeks. Sometimes we do out-of-schedule patch releases.
## Library versioning and release cadence
Each release include new versions of:
+* All rust crates
* The Python SDK
* The Rust SDK
-* All rust crates
+* The C++ SDK
We use semantic versioning. All versions are increased in lockstep, with a minor version bump each time (`0.1.0`, `0.2.0`, `0.3.0`, β¦).
@@ -46,7 +47,7 @@ If we are doing a patch release, we do a branch off of the latest release tag (e
2. ### Create a release branch.
The name should be:
- - `release-0.x.y` for final releases.
+ - `release-0.x.y` for final releases and their release candidates.
- `release-0.x.y-alpha.N` where `N` is incremented from the previous alpha,
or defaulted to `1` if no previous alpha exists.
@@ -60,7 +61,7 @@ If we are doing a patch release, we do a branch off of the latest release tag (e
- A one-line summary of the release
- A multi-line summary of the release
- A gif showing a major new feature
- - Run `git tag -d latest && git fetch --tags ; pip install GitPython && scripts/generate_changelog.py`
+ - Run `pip install GitPython && scripts/generate_changelog.py`
- Edit PR descriptions/labels to improve the generated changelog
- Copy-paste the results into `CHANGELOG.md`.
- Editorialize the changelog if necessary
@@ -78,6 +79,8 @@ If we are doing a patch release, we do a branch off of the latest release tag (e
- `rc` if the branch name is `release-x.y.z`.
This will create a pull request for the release, and publish a release candidate.
+1
+ - `final` for the final public release
![Image showing the Run workflow UI. It can be found at https://github.com/rerun-io/rerun/actions/workflows/release.yml](https://github.com/rerun-io/rerun/assets/1665677/6cdc8e7e-c0fc-4cf1-99cb-0749957b8328)
diff --git a/crates/re_data_store/src/time_histogram_per_timeline.rs b/crates/re_data_store/src/time_histogram_per_timeline.rs
index 4b3195f5ef263..60c715584365b 100644
--- a/crates/re_data_store/src/time_histogram_per_timeline.rs
+++ b/crates/re_data_store/src/time_histogram_per_timeline.rs
@@ -76,7 +76,7 @@ impl TimeHistogramPerTimeline {
.num_timeless_messages
.checked_sub(n as u64)
.unwrap_or_else(|| {
- re_log::warn_once!("Timeless counter underflowed, store events are bugged!");
+ re_log::debug_once!("Timeless counter underflowed, store events are bugged!"); // TODO(#4355): hitting this on plots demo
0
});
} else {
diff --git a/crates/re_types_builder/src/codegen/docs/mod.rs b/crates/re_types_builder/src/codegen/docs/mod.rs
index af881e5f81e50..c2e68ecf9683c 100644
--- a/crates/re_types_builder/src/codegen/docs/mod.rs
+++ b/crates/re_types_builder/src/codegen/docs/mod.rs
@@ -172,7 +172,7 @@ fn object_page(reporter: &Reporter, object: &Object, object_map: &ObjectMap) ->
object.name,
object.kind.plural_snake_case(),
object.name,
- "?speculative-link", // speculative_marker // TODO(#4267): C++ is not yet released
+ speculative_marker,
);
putln!(
page,
diff --git a/crates/re_viewer/data/quick_start_guides/cpp_connect.md b/crates/re_viewer/data/quick_start_guides/cpp_connect.md
index a5c58100a3d1e..d3a8c61633399 100644
--- a/crates/re_viewer/data/quick_start_guides/cpp_connect.md
+++ b/crates/re_viewer/data/quick_start_guides/cpp_connect.md
@@ -22,7 +22,7 @@ FetchContent_MakeAvailable(rerun_sdk)
This will download a bundle with pre-built Rerun C static libraries for most desktop platforms,
all Rerun C++ sources and headers, as well as CMake build instructions for them.
By default this will in turn download & build [Apache Arrow](https://arrow.apache.org/)'s C++ library which is required to build the Rerun C++.
-See [Install arrow-cpp](https://ref.rerun.io/docs/cpp/latest/md__arrow__cpp__install.html?speculative-link) to learn more about this step and how to use an existing install.
+To learn more about how Rerun's CMake script can be configured, see [CMake Setup in Detail](https://ref.rerun.io/docs/cpp/stable/md__2home_2runner_2work_2rerun_2rerun_2rerun__cpp_2cmake__setup__in__detail.html) in the C++ reference documentation.
Make sure you link with `rerun_sdk`:
```cmake
diff --git a/docs/content/getting-started/cpp.md b/docs/content/getting-started/cpp.md
index 8269f33fe0d5a..683c4d8a7ff31 100644
--- a/docs/content/getting-started/cpp.md
+++ b/docs/content/getting-started/cpp.md
@@ -31,7 +31,7 @@ FetchContent_MakeAvailable(rerun_sdk)
This will download a bundle with pre-built Rerun C static libraries for most desktop platforms,
all Rerun C++ sources and headers, as well as CMake build instructions for them.
By default this will in turn download & build [Apache Arrow](https://arrow.apache.org/)'s C++ library which is required to build the Rerun C++.
-See [Install arrow-cpp](https://ref.rerun.io/docs/cpp/latest/md__arrow__cpp__install.html?speculative-link) to learn more about this step and how to use an existing install.
+See [Install arrow-cpp](https://ref.rerun.io/docs/cpp/stable/md__2home_2runner_2work_2rerun_2rerun_2rerun__cpp_2arrow__cpp__install.html) to learn more about this step and how to use an existing install.
Currently, Rerun SDK works with C++17 or newer, so you need to add this property to your target:
@@ -129,7 +129,7 @@ Rerun tick and log our first non-trivial dataset.
If you'd rather learn from examples, check out the [example gallery](/examples) for some more realistic examples, or browse the [Types](../reference/types.md) section for more simple examples of how to use the main datatypes.
There's also a stand-alone example that shows [interop with Eigen and OpenCV](https://github.com/rerun-io/cpp-example-opencv-eigen).
-To learn more about how to work with your own types, check the [Custom Collection Adapter](https://github.com/rerun-io/rerun/tree/latest/examples/cpp/custom_collection_adapter?speculative-link) example on how to zero-copy adapt to Rerun types
+To learn more about how to work with your own types, check the [Custom Collection Adapter](https://github.com/rerun-io/rerun/tree/latest/examples/cpp/custom_collection_adapter) example on how to zero-copy adapt to Rerun types
and the [Use custom data](../howto/extend/custom-data.md) page for completely custom types.
-To learn more about how to configure the C++ SDK's CMake file, check [CMake Setup in Detail](https://ref.rerun.io/docs/cpp/latest/md__cmake__setup__in__detail.html?speculative-link) .
+To learn more about how to configure the C++ SDK's CMake file, check [CMake Setup in Detail](https://ref.rerun.io/docs/cpp/stable/md__2home_2runner_2work_2rerun_2rerun_2rerun__cpp_2cmake__setup__in__detail.html).
diff --git a/docs/content/getting-started/logging-cpp.md b/docs/content/getting-started/logging-cpp.md
index 450fd53ca9537..e903eca898bea 100644
--- a/docs/content/getting-started/logging-cpp.md
+++ b/docs/content/getting-started/logging-cpp.md
@@ -38,7 +38,8 @@ You should have already [installed the viewer](installing-viewer.md).
We assume you have a working C++ toolchain and are using `CMake` to build your project. For this example
we will let Rerun download build [Apache Arrow](https://arrow.apache.org/)'s C++ library itself.
-See [Install arrow-cpp](https://ref.rerun.io/docs/cpp/latest/md__arrow__cpp__install.html?speculative-link) to learn more about this step and how to use an existing install.
+To learn more about how Rerun's CMake script can be configured, see [CMake Setup in Detail](https://ref.rerun.io/docs/cpp/stable/md__2home_2runner_2work_2rerun_2rerun_2rerun__cpp_2cmake__setup__in__detail.html) in the C++ reference documentation.
+
## Setting up your CMakeLists.txt
diff --git a/docs/content/getting-started/logging-python.md b/docs/content/getting-started/logging-python.md
index 60371dd9d62a0..d4f3772ed2fee 100644
--- a/docs/content/getting-started/logging-python.md
+++ b/docs/content/getting-started/logging-python.md
@@ -128,7 +128,7 @@ archetypes altogether.
For more information on how the rerun data model works, refer to our section on [Entities and Components](../concepts/entity-component.md).
-Our [Python SDK](https://ref.rerun.io/docs/python) integrates with the rest of the Python ecosystem: the points and colors returned by [`build_color_spiral`](https://ref.rerun.io/docs/python/stable/common/utilities/?speculative-link#rerun.utilities.data.build_color_spiral) in this example are vanilla `numpy` arrays.
+Our [Python SDK](https://ref.rerun.io/docs/python) integrates with the rest of the Python ecosystem: the points and colors returned by [`build_color_spiral`](https://ref.rerun.io/docs/python/stable/common/demo_utilities/#rerun.utilities.data.build_color_spiral) in this example are vanilla `numpy` arrays.
Rerun takes care of mapping those arrays to actual Rerun components depending on the context (e.g. we're calling [`rr.Points3D`](https://ref.rerun.io/docs/python/stable/common/archetypes/#rerun.archetypes.Points3D) in this case).
### Entities & hierarchies
@@ -174,7 +174,7 @@ rr.log(
)
```
-Once again, although we are getting fancier and fancier with our [`numpy` incantations](https://ref.rerun.io/docs/python/stable/common/utilities/?speculative-link#rerun.utilities.util.bounce_lerp),
+Once again, although we are getting fancier and fancier with our [`numpy` incantations](https://ref.rerun.io/docs/python/stable/common/demo_utilities/#rerun.utilities.util.bounce_lerp),
there is nothing new here: it's all about building out `numpy` arrays and feeding them to the Rerun API.
+This package is framework-agnostic. A React wrapper is available at .
+
## Install
```
@@ -29,22 +31,27 @@ The web viewer is an object which manages a canvas element:
```js
import { WebViewer } from "@rerun-io/web-viewer";
-const URL = "β¦";
+const rrd = "β¦";
const parentElement = document.body;
const viewer = new WebViewer();
-await viewer.start(URL, parentElement);
+await viewer.start(rrd, parentElement);
// β¦
viewer.stop();
```
-You can style this canvas element however you wish.
+The `rrd` in the snippet above should be a URL pointing to either:
+- A hosted `.rrd` file, such as
+- A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API
+
+If `rrd` is not set, the viewer will display the same welcome screen as .
-For a live example, see https://github.com/rerun-io/web-viewer-example.
+For a full example, see https://github.com/rerun-io/web-viewer-example.
+You can open the example via CodeSandbox: https://codesandbox.io/s/github/rerun-io/web-viewer-example
βΉοΈ Note:
This package only targets recent versions of browsers.
-If your target browser does not support Wasm imports, you may need to install additional plugins for your bundler.
+If your target browser does not support Wasm imports or top-level await, you may need to install additional plugins for your bundler.
## Development
diff --git a/rerun_js/web-viewer/index.js b/rerun_js/web-viewer/index.js
index 3b87f2d2d20d1..a72b5fbef5165 100644
--- a/rerun_js/web-viewer/index.js
+++ b/rerun_js/web-viewer/index.js
@@ -29,18 +29,22 @@ export class WebViewer {
#canvas = null;
/**
- * @param {string} url
- * @param {HTMLElement} [parent]
+ * Start the viewer.
+ *
+ * @param {string} [rrd] Optional URL to an `.rrd` file or a WebSocket connection to our SDK.
+ * @param {HTMLElement} [parent] The element to attach the canvas onto.
* @returns {Promise}
*/
- async start(url, parent = document.body) {
+ async start(rrd, parent = document.body) {
+ if (this.#canvas || this.#handle) return this;
+
const canvas = document.createElement("canvas");
canvas.id = randomId();
parent.append(canvas);
let WebHandle_class = await load();
const handle = new WebHandle_class();
- await handle.start(canvas.id, url);
+ await handle.start(canvas.id, rrd);
if (handle.has_panicked()) {
throw new Error(`Web viewer crashed: ${handle.panic_message()}`);
}
@@ -51,6 +55,11 @@ export class WebViewer {
return this;
}
+ /**
+ * Stop the viewer, freeing all associated memory.
+ *
+ * The same viewer instance may be started multiple times.
+ */
stop() {
const canvas = this.#canvas;
this.#canvas = null;
diff --git a/rerun_js/web-viewer/package.json b/rerun_js/web-viewer/package.json
index c614cf1965d6c..b74249021ff81 100644
--- a/rerun_js/web-viewer/package.json
+++ b/rerun_js/web-viewer/package.json
@@ -1,6 +1,6 @@
{
"name": "@rerun-io/web-viewer",
- "version": "0.0.8-alpha.2",
+ "version": "0.11.0",
"description": "Embed the Rerun web viewer in your app",
"private": false,
"scripts": {
diff --git a/rerun_js/web-viewer/react/README.md b/rerun_js/web-viewer/react/README.md
index 1f46f9e66fcc1..d07f8c7c94689 100644
--- a/rerun_js/web-viewer/react/README.md
+++ b/rerun_js/web-viewer/react/README.md
@@ -12,6 +12,8 @@ Embed the Rerun web viewer within your React app.
+If you'd like to use a framework-agnostic package instead, see .
+
## Install
```
@@ -28,17 +30,19 @@ This means that `@rerun-io/web-viewer-react@0.10.0` can only connect to a data s
import WebViewer from "@rerun-io/web-viewer-react";
export default function App() {
- return (
-
-
-
- )
+ return
}
```
+The `rrd` in the snippet above should be a URL pointing to either:
+- A hosted `.rrd` file, such as
+- A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API
+
+If `rrd` is not set, the viewer will display the same welcome screen as .
+
βΉοΈ Note:
This package only targets recent versions of browsers.
-If your target browser does not support Wasm imports, you may need to install additional plugins for your bundler.
+If your target browser does not support Wasm imports or top-level await, you may need to install additional plugins for your bundler.
## Development
diff --git a/rerun_js/web-viewer/react/package.json b/rerun_js/web-viewer/react/package.json
index 4f026e6be98d2..6aa5617144f67 100644
--- a/rerun_js/web-viewer/react/package.json
+++ b/rerun_js/web-viewer/react/package.json
@@ -1,10 +1,11 @@
{
"name": "@rerun-io/web-viewer-react",
- "version": "0.0.8-alpha.2",
+ "version": "0.11.0",
"description": "Embed the Rerun web viewer in your React app",
"private": false,
"scripts": {
"build:types": "dts-buddy",
+ "build": "npm run build:types",
"prepublishOnly": "dts-buddy"
},
"repository": {
@@ -31,7 +32,7 @@
"tsconfig.json"
],
"dependencies": {
- "@rerun-io/web-viewer": "0.0.8-alpha.2",
+ "@rerun-io/web-viewer": "0.11.0",
"@types/react": "^18.2.33",
"react": "^18.2.0"
},
diff --git a/rerun_js/web-viewer/scripts/common.mjs b/rerun_js/web-viewer/scripts/common.mjs
index ef25057db706c..fdf430a45b001 100644
--- a/rerun_js/web-viewer/scripts/common.mjs
+++ b/rerun_js/web-viewer/scripts/common.mjs
@@ -45,5 +45,15 @@ export function stripSemverBuildMetadata(version) {
}
}
+/**
+ * Returns `true` if `package@version` is already published.
+ *
+ * @type {(packageName: string, version: string) => Promise}
+ */
+export async function isPublished(packageName, version) {
+ const response = await fetch(`https://registry.npmjs.org/${packageName}/${version}`);
+ return response.status === 200;
+}
+
export { path };
diff --git a/rerun_js/web-viewer/scripts/publish.mjs b/rerun_js/web-viewer/scripts/publish.mjs
index fe5c0c23a73d3..ca0873bed9eb4 100755
--- a/rerun_js/web-viewer/scripts/publish.mjs
+++ b/rerun_js/web-viewer/scripts/publish.mjs
@@ -1,12 +1,36 @@
#!/usr/bin/env node
-import { $, script_dir, path, argv, packages } from "./common.mjs";
+import { $, script_dir, path, argv, packages, isPublished } from "./common.mjs";
+import * as fs from "node:fs/promises";
-const args = argv.join(" ");
-const root_dir = path.resolve(script_dir, "..");
+/**
+ * @typedef {{
+ * name: string,
+ * version: string,
+ * }} PackageJson
+ */
-for (const pkg of packages) {
- const cwd = path.join(root_dir, pkg.path);
- $(`npm publish ${args}`, { cwd });
+async function main() {
+ const args = argv.join(" ");
+ const root_dir = path.resolve(script_dir, "..");
+
+ for (const pkg of packages) {
+ const cwd = path.join(root_dir, pkg.path);
+
+ /** @type {PackageJson} */
+ const packageJson = await fs
+ .readFile(path.join(cwd, "package.json"), "utf-8")
+ .then((s) => JSON.parse(s));
+
+ if (await isPublished(packageJson.name, packageJson.version)) {
+ continue;
+ }
+
+ $(`npm install`, { cwd });
+ $(`npm run build`, { cwd });
+ $(`npm publish ${args}`, { cwd });
+ }
}
+main();
+
diff --git a/rerun_js/web-viewer/scripts/version.mjs b/rerun_js/web-viewer/scripts/version.mjs
index 904e64639c16b..b23cdfe6e7d64 100755
--- a/rerun_js/web-viewer/scripts/version.mjs
+++ b/rerun_js/web-viewer/scripts/version.mjs
@@ -25,7 +25,10 @@ if (!isSemver(version)) {
for (const pkg of packages) {
const package_json_path = path.join(root_dir, pkg.path, "package.json");
- const package_json = JSON.parse(fs.readFileSync(package_json_path));
+ const readme_path = path.join(root_dir, pkg.path, "README.md");
+
+ let package_json = JSON.parse(fs.readFileSync(package_json_path, "utf-8"));
+ let readme = fs.readFileSync(readme_path, "utf-8");
// update package version
package_json.version = version;
@@ -39,6 +42,13 @@ for (const pkg of packages) {
}
}
+ // update link to example rrd file in README
+ readme = readme.replace(
+ //,
+ ``
+ );
+
fs.writeFileSync(package_json_path, JSON.stringify(package_json, null, 2));
+ fs.writeFileSync(readme_path, readme);
}
diff --git a/scripts/generate_changelog.py b/scripts/generate_changelog.py
index 2afa7f12a8a72..f2651582c30a6 100755
--- a/scripts/generate_changelog.py
+++ b/scripts/generate_changelog.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""
-Summarizes PRs since `latest` tag, grouping them based on their GitHub labels.
+Summarizes PRs since `latest` branch, grouping them based on their GitHub labels.
If the result is not satisfactory, you can edit the original PR titles and labels.
You can add the `exclude from changelog` label to minor PRs that are not of interest to our users.
@@ -35,6 +35,10 @@
]
+def eprint(*args, **kwargs) -> None: # type: ignore
+ print(*args, file=sys.stderr, **kwargs) # type: ignore
+
+
@dataclass
class PrInfo:
gh_user_name: str
@@ -66,7 +70,7 @@ def get_github_token() -> str:
except Exception:
pass
- print("ERROR: expected a GitHub token in the environment variable GH_ACCESS_TOKEN or in ~/.githubtoken")
+ eprint("ERROR: expected a GitHub token in the environment variable GH_ACCESS_TOKEN or in ~/.githubtoken")
sys.exit(1)
@@ -92,7 +96,7 @@ def fetch_pr_info(pr_number: int) -> PrInfo | None:
gh_user_name = json["user"]["login"]
return PrInfo(gh_user_name=gh_user_name, pr_title=json["title"], labels=labels)
else:
- print(f"ERROR {url}: {response.status_code} - {json['message']}")
+ eprint(f"ERROR {url}: {response.status_code} - {json['message']}")
return None
@@ -186,7 +190,7 @@ def main() -> None:
summary = f"{title} [#{pr_number}](https://github.com/{OWNER}/{REPO}/pull/{pr_number})"
if f"[#{pr_number}]" in previous_changelog:
- print(f"Ignoring dup: {summary}")
+ eprint(f"Ignoring dup: {summary}")
continue
chronological.append(f"{summary} {hexsha}")