Releases: rerun-io/rerun
0.10.1 - Bug fixes
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.10.1/
Overview & Highlights
This is a small release primarily to tie up some loose ends for our C++ SDK.
🌊 C++ SDK
- Avoid possible link/symbol errors but defaulting all OSes to static linking of arrow #4101
- Fix compilation errors with C++20 #4098
- Improve C++ SDK perf 5x by respecting CMAKE_BUILD_TYPE and enabling mimalloc #4094
- Reduce amount of cmake log from building & downloading libArrow #4103
🧑💻 Dev-experience
Read the full changelog at https://github.com/rerun-io/rerun/blob/main/CHANGELOG.md
0.10.0 - C++ SDK
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.10.0/
Release blog post: https://www.rerun.io/blog/cpp-sdk
Overview & Highlights
- The C++ SDK is finally here!
#include <rerun.hpp> int main() { const auto rec = rerun::RecordingStream("rerun_example_points3d_simple"); rec.spawn().exit_on_failure(); rec.log("points", rerun::Points3D({{0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}})); }
- Add an integrated getting-started guide into the viewer splash screen
- Add a new and improved
spawn
method in the Rust SDK - Add support for NV12-encoded images #3541 (thanks @zrezke!)
- We now publish pre-built binaries for each release at https://github.com/rerun-io/rerun/releases
Details
🌊 C++ SDK
- Has all the features of the Python and C++ SDK:s
🐍 Python SDK
- Add
RERUN_STRICT
environment variable #3861 - Fix potential deadlock when saving to file after logging at the end of a Python program #3920
- Warn if no resolution provided to Pinhole #3923
- Python: remove unconditional sleep on
spawn
#4010 - Support
pathlib.Path
forrr.save
#4036 - Add
disable_timeline
function #4068 - Support fast install of the rerun viewer with
cargo binstall rerun-cli
thanks tocargo binstall
🦀 Rust SDK
- Introduce
re_types_core
#3878 - Fix crash when using
RecordingStream::set_thread_local
on macOS #3929 - Add improved
spawn
function #3996 #4031 - Redesign
clap
integration #3997 #4040 RecordingStream
: introduceconnect_opts
#4042- Add
disable_timeline
function #4068
🪳 Bug Fixes
- Fix grayscale images being too dark #3999
- Prevent badly sized tensors from crashing the viewer #4005
- Fix selection history right-click menu not working #3819
🌁 Viewer Improvements
- Replace
--strict
flag withRERUN_PANIC_ON_WARN
env-var #3872 - Support NV12-encoded images #3541 (thanks @zrezke!)
🧑🏫 Examples
--max-frame
support for tracking examples #3835
📚 Docs
- Synchronize code examples and their screenshots #3954
- Improve docs for
TextDocument
example #4008 - Fix typos in documentation and code comments #4061 (thanks @omahs!)
🖼 UI Improvements
- Add basic support for in-app "Quick Start" guides #3813 #3912
- Add copy-button to markdown code blocks #3882
- Add warning in the Quick Start guides about Safari breaking Copy to Clipboard #3898
🎨 Renderer Improvements
- Add easy way to dump out final wgsl shader #3947
🧑💻 Dev-experience
- Approve all workflow runs for a specific contributor PR #3876
- Make codegen I/O-free and agnostic to output location #3888
- Configure pytest to fail on warnings #3903
- Improve
taplo
output on failure #3909 - Automatically synchronize build.rerun.io & release assets #3945
- New helper script to run fast lints and pre-push hook that runs it #3949
- CI: Rerun CLI as a release asset #3959
- Add script to generate RRD vs. screenshots comparisons #3946
- Add a new build Environment option for CondaBuild to improve conda-built artifacts #4015
- Lock python in CI to 3.11 #4033
- Changed
spawn()
and thererun
script to call intorerun_bindings
(12x startup time improvement) #4053
0.9.1 - Bug fixes and performance improvements
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.9.1/
Overview & Highlights
- A bunch of bug fixes
- Fix big performance regression when hovering images
- The Rerun Viewer should now be visible to the system accessibility system
🐍 Python SDK
- Added support for PyTorch array to
Boxes2D
'sarray
convenience argument #3719 - Fix default stroke width handling in
log_line_strip_Xd
andlog_obbs
#3720 - Warn/raise when passing incompatible objects to
log
#3727 - Refactor
rerun.AnyValues
to handleNone
input more gracefully #3725 - Default
DisconnectedSpaces
boolean totrue
in Python #3760
🦀 Rust SDK
- Fix return type of
entity_path!()
andentity_path_vec!()
on empty input #3734 (thanks @kpreid!) - Export
RecordingStreamError
#3777
🪳 Bug Fixes
- Fix bug when joining cleared optional components #3726
- Update
winit
to 0.28.7 to fix UI glitch on macOS Sonoma #3763 - Show 1D-tensors as bar charts #3769
- Fix loading of
.obj
mesh files #3772 - Fix crash when loading huge image #3775
- Fix performance regression when viewing images and tensors #3767
🌁 Viewer Improvements
- Turn on
AccessKit
accessibility integration #3732 - Display space views using
ViewCoordinates
from closest ancestor #3748 - Improve 3D view bounds handling of camera frustums #3749 #3815 #3811
- Improve heuristics around 2D vs 3D space-view creation #3822
🚀 Performance Improvements
- Optimize gathering of point cloud colors #3730
🧑🏫 Examples
- Fix open photogrammetry example not working on Windows #3705
📚 Docs
- Document that entity-path
rerun/
is reserved #3747
🖼 UI Improvements
- Show all entities/components in the Streams UI, even if empty for the selected timeline #3779
🧑💻 Dev-experience
- Less automatic
build.rs
shenanigans #3814
🗣 Refactors
- Refactor our
build.rs
files #3789
📦 Dependencies
0.9.0 - New Logging API
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.9.0/
Overview & Highlights
Rerun 0.9.0 is a big release, that introduces a brand new logging API.
This API is code-generated from a common definition, meaning the Python and Rust SDKs are very similar now.
This will let us more easily extend and improve the API going forward.
It is also the basis for our C++ API, which is coming in Rerun 0.10.0.
Read the migration guide for details!
Other highlights:
- 🏃♀️ Large point clouds are up to 3x faster now
- 📚 Markdown view support
- 🔗 with easy to use in-viewer entity & component links
- 📺 New startup screen
- 🐛 Lots and lots of bugfixes
- 👷♀️ Internally we have now way more automated testing for the new API surfaces
- ✨ drag & drop for images & meshes (even on web!), time display in local time (thanks @jparismorgan!),
.obj mesh support, default enabled memory limit, new how-to guide for custom data… and many many more smaller features!
Read the full changelog at https://github.com/rerun-io/rerun/blob/main/CHANGELOG.md
0.8.2 - More bug fixes
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
or onconda
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://demo.rerun.io/version/0.8.2/
🪳 Bug Fixes
- Fix quadratic slowdown when ingesting data with uniform time #3088
- Normalize quaternions #3094
- Improve error message in common
re_renderer
crash #3070 - Fix crash on reaching line number limit #3093
- Handle serde-field that fails to deserialize #3130
- GC the blueprints before saving while preserving the current state #3148
🧑🏫 Examples
- Make
custom_space_view
example more verbose #3123
🖼 UI Improvements
- Change the "slow-down-camera" modifier to Alt on non-Mac #3051 (thanks @h3mosphere!)
🎨 Renderer Improvements
- Warn if using software rasterizer (lavapipe or llvmpipe) #3134
📦 Dependencies
- Update webpki: https://rustsec.org/advisories/RUSTSEC-2023-0052 #3176
0.8.1 - Bug Fixes
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
or onconda
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://demo.rerun.io/version/0.8.1/
🐍 Python SDK
- Add a warning category and stacklevel to rerun warnings.warn calls #2985
🪳 Bug Fixes
- Fix always redrawing in the presence of a 3D space view #2900
- Fix unable to set camera spinning until camera has moved #2990
🌁 Viewer Improvements
- Allow changing plot aspect ratio with scroll + cmd/ctrl + alt #2742
- Automatically select user timeline if no timeline was explicitly selected yet #2986
🧑🏫 Examples
- Add
Helix
todemo.rerun.io
#2930
📈 Analytics
- Make sure
re_analytics
never log higher than atdebug
level #3014
0.8.0 - Infrastructure investments and more transform improvements - 2023-07-27
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://demo.rerun.io/version/0.8.0/
Overview & Highlights
log_pinhole
is now easier to use in simple cases and supports non-RDF camera coordinates. #2614- You only need to set focal length and optional principal point instead of setting the full 3x3 matrix.
- There is also a new argument:
camera_xyz
for setting the coordinate system. The default is RDF (the old
default). This affects the visible camera frustum, how rays are projected when hovering a 2D image, and how depth
clouds are projected.
- The visualizer can now show coordinate arrows for all affine transforms within the view. #2577
- Linestrips and oriented bounding boxes can now be logged via batch APIs in python.
- Rust users that build their own Viewer applications can now add fully custom Space Views. Find more information here.
- New optional
flush_timeout
specifies how long Rerun will wait if a TCP stream is disconnected during a flush. #2821- In Rust,
RecordingStream::connect
now requiresflush_timeout
specified as anOption<Duration>
.- To keep default behavior, this can be specified using the
rerun::default_flush_time()
helper.
- To keep default behavior, this can be specified using the
- In Python
flush_init_sec
is now an optional argument torr.connect()
- In Rust,
- In Rust, the
RecordingStream
now offers a stateful time API, similar to the Python APIs. #2506- You can now call
set_time_sequence
,set_time_seconds
, andset_time_nanos
directly on theRecordingStream
,
which will set the time for all subsequent logs using that stream. - This can be used as an alternative to the the previous
MsgSender::with_time
APIs.
- You can now call
- The Rerun SDK now defaults to 8ms long microbatches instead of 50ms. This makes the default behavior more suitable for use-cases like real-time video feeds. #2220
- Check out the microbatching docs for more information
on fine-tuning the micro-batching behavior.
- Check out the microbatching docs for more information
- The web viewer now incremental loads
.rrd
files when streaming over HTTP. #2412
Ongoing Refactors
- There have been a number of significant internal changes going on during this release with little visible impact.
This work will land across future releases, but is highlighted here since much of it is visible through the
changelog.- The layout of the Viewer is now controlled by a Blueprint datastore. In the future this will allow for direct API
control of the layout and configuration of the Viewer. A very early prototype of this functionality is available
via thererun.experimental
module in Python. - An entirely new code-generation framework has been brought online for Rust, Python and C++. This will eventually enable
new object-centric APIs with a more scalable, consistent, and ergonomic experience. - Bringup of C++ support is now underway and will eventually become our third officially supported SDK language.
- The layout of the Viewer is now controlled by a Blueprint datastore. In the future this will allow for direct API
Known Regressions
- Due to the Blueprint storage migration, blueprint persistence on web is currently broken. Will be resolved in:
#2579
In Detail
🐍 Python SDK
- Clean up warnings printed when
rr.init
hasn't been called #2209 - Normalise Python typing syntax to 3.8+ #2361
- Simpler, sturdier stateful time tracking in both SDKs #2506
- Fix not taking np.array for single colors #2569
- Add a basic pyright config #2610
- Improve
log_pinhole
and support non-RDF pinholes #2614 - Expose batch APIs for linestrips #2822
- Expose batch APIs for oriented bounding boxes #2823
🦀 Rust SDK
- Add example for adding custom Space Views #2328
- Simpler, sturdier stateful time tracking in both SDKs #2506
- Automagic flush when
take()
ing aMemorySinkStorage
#2632 - Logging SDK: Log warnings if user data is dropped #2630
- Add support for
RecordingStream::serve
#2815
🌁 Viewer Improvements
- Better handle scroll-to-zoom in 3D views #1764
- Add command to screenshot the application #2293
- Show layout in blueprint tree view #2465
- Double-click to select entity #2504
- Add Rerun.io link/text in top bar #2540
- New auto-layout of space views #2558
- Add 'Dump datastore' command to palette #2564
- Support any
dtype
for depth images #2602 - Change "Save Selection" command to Cmd+Alt+S #2631
- Consistent transform visualization for all entities with transforms #2577
- Improve
log_pinhole
and support non-RDF pinholes #2614
🚀 Performance Improvements
- Flush the batches every 8ms instead of 50 ms #2220
- Replace
image
crate jpeg decoder with zune-jpeg #2376 - Stream
.rrd
files when loading via http #2412
🪳 Bug Fixes
- Fix deadlock when misusing the Caches #2318
- Fix unstable order/flickering of "shown in" space view list on selection #2327
- Fix transforms not applied to connections from transform context #2407
- Fix texture clamping and color gradient selection being displayed incorrectly #2394
- Fix projected ray length #2482
- Tweak the depth bias multiplier for WebGL #2491
- Clip image zoom rectangle #2505
- Fix missing feature flags for benchmarks #2515
run_all.py
script fixes #2519- Update egui_tiles with fix for drag-and-drop-panic #2555
- Convert objectron proto.py back to using typing.List #2559
- Exclude from
objectron/proto/objectron/proto.py
fromjust py-format
#2562 - Fix pinhole visualization not working with camera extrinsics & intrinsics on the same path #2568
- Fix: always auto-layout spaceviews until the user interveens #2583
- Fix freeze/crash when logging large times #2588
- Update egui_tiles to fix crash #2598
- Fix clicking object with single instance (of every component) selecting instance instead of entity #2573
- Cleanup internal data-structures when process has been forked #2676
- Fix shutdown race-condition by introducing a flush_timeout before dropping data #2821
- Fix ui-scale based point/line sizes incorrectly scaled when zooming based on horizontal dimension #2805
- Fix visibility toggle for maximized Space Views #2806
- Fix loading file via CLI #2807
- Fix disconnected space APIs in Python SDK #2832
- Avoid unwrap when generating authkey #2804
...
See the Full CHANGELOG for more details.
0.7.0 - improved transforms, better color mapping, bug & doc fixes
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/
Overview & Highlights
While we're working on significant updates around interfaces and customizability, here's a smaller release packed with useful improvements 🎉
- Much more powerful transformation logging
- any affine transforms works now!
- supports many more formats and shows them in the viewer as-is
- Better color mapping range detection for images and tensors
- Add support for motion JPEG via the new
jpeg_quality
parameter tolog_image
- Many small improvements to samples & documentation
In detail
🐍 Python SDK
- Improved 3D transform ingestion & affine transform support #2102
- Normalize Python typing syntax to 3.8+ #2361
- Enforce
from __future__ import annotations
in Python files #2377 - Add
jpeg_quality
parameter tolog_image
#2418
🦀 Rust SDK
- Improved 3D transform ingestion & affine transform support #2102
impl Copy for Arrow3D
. #2239 (thanks @kpreid!)
🪳 Bug Fixes
- Stable image order, fixing flickering #2191
- Fix double clicking objects no longer focusing the camera on them #2227
- Fix off-by-half pixel error in textured rectangle shader #2294
- Update wgpu-hal to 0.16.1 to fix mobile Safari #2296
- Fix some browsers failing due to 8k texture requirement, pick always highest available now #2409
- Fix visibility toggles for time series not working #2444
🌁 Viewer Improvements
- Time panel now always talks about "events" instead of "messages" #2247
- Automatically determine image/tensor color mapping & need for sRGB decoding #2342
🚀 Performance Improvements
- Optimization: avoid a memory allocation when padding RGB u8 to RGBA #2345
🧑🏫 Examples
- Example of how to embed the Rerun Viewer inside your own GUI (+ ergonomic improvements) #2250
- Objectron Rust example: install
protoc
for the user #2280 - Remove weird-looking argument parsing in examples #2398
- Fix
tracking_hf example
: put scaled thing under its own root entity #2419 - Clean up our examples #2424
- New face detection example based on MediaPipe #2360
- Update web examples #2420
- Update titles and tags for examples with real data #2416
📚 Docs
- Merge
rerun-docs
repository into this monorepo #2284 - Add manifest + readmes to examples #2309
- Fix and clean up BUILD.md #2319
- Link to
/examples
in PR description #2320 - Make examples setup a separate page #2323
- Add
site_url
tomkdocs.yml
#2326 - Add
log_cleared
to the common index #2400 - Use forked
mkdocs-redirects
#2404 - Add support for classes to generated python common API index #2401
- Added support for creating multi-resolution stacks with upload_image.py #2411
- Document annotation context in manual #2453
🕸️ Web
- Update
wasm-bindgen
to 0.2.87 #2406 - When loading on web, match style and show a progress indicator while wasm is loading #2421
📈 Analytics
- Add crash retriever script #2168
🧑💻 Dev-experience
- Image uploader script #2164
- Replace
wasm-bindgen-cli
with librarywasm-bindgen-cli-support
#2257 - Fix manual release/dispatch workflows #2230
- Add instructions on how to fix weird
gsutil
crash #2278 - Link to preview of latest commit in PR body #2287
- CI: Retry
linkinator
#2299 - Remove long dead code python unit test #2356
- Added gcloud project name to
upload_image.py
#2381 - Fix typo in
run_all.py
#2441 - Small changelog improvements #2442
- Minor fixes/improvements of
upload_image.py
#2449 - Improve changelog generator #2447
🗣 Refactors
- Centralize freestanding store helpers #2153
📦 Dependencies
0.6.0 - 3D in 2D and SDK batching
Rerun is an easy-to-use visualization toolbox for computer vision and robotics.
- Python:
pip install rerun-sdk
- Rust:
cargo add rerun
andcargo install rerun-cli
- Online demo: https://app.rerun.io/version/0.6.0/index.html
Overview & Highlights
- You can now show 3D objects in 2D views connected by Pinhole transforms #2008
- You can quickly view images and meshes with
rerun mesh.obj image.png
#2060 - The correct to install the
rerun
binary is now withcargo install rerun-cli
#2183 native_viewer
is now an opt-in feature of thererun
library, leading to faster compilation times #2064- Experimental WebGPU support #1965
- SDK log calls are now batched on the wire, saving CPU time and bandwidth
In Detail
🐍 Python SDK
⚠️ BREAKING: You must now callrr.init
if you want logging to work.⚠️ BREAKING:set_enabled
has been removed.
In order to disable logging at runtime, callset_global_data_recording(None)
.
See also the doc section on this topic.log_mesh_file
: accept either path or bytes #2098- Add
draw_order
to 2D primitives #2138 - Add
rr.version()
#2084 - Add an experimental text-box component and logtype #2011
- Fix a race condition for notebooks #2073
- Redesign multi-recording & multi-threading #2061
- More robust wait for exit condition during
.serve()
#1939 - SDK batching/revamp 3: sunset
PythonSession
#1985
🦀 Rust SDK
⚠️ BREAKING:set_enabled
has been removed.
In order to disable logging at runtime, create a no-op recording viaRecordingStream::disabled()
.
See also the doc section on this topic.⚠️ BREAKING:Session
has been replaced byRecordingStream
#1983⚠️ BREAKING:native_viewer
is now an opt-in feature of thererun
library #2064- Rust SDK: bring back support for implicit splats #2059
- Introduce a 2D
DrawOrder
component #2056 - Add
Tensor::from_image_file
andTensor::from_image_bytes
#2097 - Redesign multi-recording & multi-threading #2061
🌁 Viewer Improvements
- Support projecting 3D entities in 2D views #2008
- Set Rerun viewer native app icon using eframe #1976
- Use
alt
key again for rolling camera in 3d views #2066 - Show tensors shaped [H, W, 1, 1] as images (and more!) #2075
- Show meshes and images with
rerun foo.obj bar.png
#2060 - Don't persist blueprints for unknown apps #2165
🪳 Bug Fixes
- Fix hover/select highlights when picking single points in a scene with multiple point clouds #1942
- Fix crash for missing class ids causing zero sized texture #1947
- Handle leaking of prerelease into alpha version #1953
- Fix incorrect memory usage stats for destroyed on-creation-mapped buffers #1963
- Fix: don't starve web-socket decoding task #1977
- When hovering a 3D view in the presence of images, fix previously incorrect depth shown in 2D view #2009
- Fix: use the mac icon on mac #2023
- SDK batching/revamp 2.2: homegrown arrow size estimation routines #2002
- Fix twice as wide alpha-to-coverage edge on circles, leading to artifacts #2053
- Bugfix: allow hovered items to be clicked to set selection #2057
- Detect, warn and gracefully handle corrupt cells in
lookup_arrow
#2055 - Fix failing dependency install of mesh_to_sdf #2081
- Stop playback when we reach the end of the data #2085
tornado
>6.1 doesn't work with recentjupyter
#2092- Premultiply alpha of RGBA u8 images #2095
- Fix premature pausing when reaching end of still-streaming stream #2106
- 2D layering fixes #2080
- Fix depth precision issues on WebGL due to different NDC space #2123
- Fix flushing race in new multi-recording SDK #2125
- Web viewer: catch and show panic messages that happens at startup #2157
- Don't early-exit on non-pinhole transforms when looking up cameras #2194
- Mitigate depth offset precision issues on web #2187
- Fix colormaps #2204
- Fix annotation images sometimes drawn in the background #1933
- Fix hovering depth clouds #1943
- Fix incorrect 2D camera for scenes with negative 2D coordinates #2051
- Fix web depth/projection regression, causing incorrect rendering on all 3D scenes #2170
🚀 Performance Improvements
- SDK batching/revamp 1: impl
DataTableBatcher
#1980 - Upgrade arrow2/convert and use native buffers for the tensor u8 types #1375
- Use the same RRD encoding for the SDK comms as for everything else #2065
- Optimize GLTF/GLB texture loading in debug builds #2096
- Premultiply the alpha on the GPU #2190
- Switch compression algorithm from zstd to lz4 #2112
🧑🏫 Examples
- Join threads at end of multi-threading example #1934
- Add argument parsing to the rerun_demo #1925
- Use zipfile python library instead of
unzip
command in arkitscene #1936 - Fix backslashes in arkitscene rigid transformation path #1938
- Fix mp_pose example 2D points having incorrectly interpreted depth #2034
- SDK batching/revamp 2.1:
clock
example for Rust #2000 - Add
scripts/run_all.py
#2046 - Check
examples/python/requirements.txt
in CI #2063 - Fix glb mesh data set downloads #2100
- Add more examples to https://app.rerun.io/ #2062
🖼 UI Improvements
- Update egui to latest and wgpu to 0.16 #1958
- Add keyboard shortcut for "Follow", and stop following on "Restart" #1986 (thanks @h3mosphere!)
- Improve UI for keypoint and class-ids of annotations contexts #2071
- Improvements to memory measurements and reporting #2069
- Switch from
egui_dock
toegui_tiles
#2082 - Allow horizontal scrolling in blueprint panel #2114
- Nicer (& fixed up) help texts for space views #2070
- Allow dragging time cursor in plots #2115
🕸️ Web
- Set the GC limit to 2.5GB on web #1944
- Better crash reports on Web, plus WebGPU support detection #1975
- Work around sebcrozet/instant#49 #2094
- Update
wasm-bindgen
to 0.2.86 #2161
🎨 Renderer Improvements
- Full (experimental) WebGPU support [#1965](https://github.com/rer...
v0.5.1
0.5.1 - Patch Release - 2023-05-01
Overview & Highlights
This Release fixes a few small bugs on top of the v0.5.0 release.