Migrating from 0.19 to 0.20

⚠️ Breaking changes -breaking-changes

re_query::Caches -> re_query::QueryCache & re_query::CacheKey -> re_query::QueryCacheKey requerycaches--requeryquerycache--requerycachekey--requeryquerycachekey

re_query::Caches has been renamed re_query::QueryCache, and similarly for re_query::CacheKey.

Note that this doesn't affect re_dataframe, where this type was already re-exported as QueryCache.

Python colors change in behavior for single-dimensional lists python-colors-change-in-behavior-for-singledimensional-lists

Single-dimensional lists that don't otherwise provide type information are now be assumed to be packed integers color representations (e.g. 0xRRGGBBAA), unless the length is exactly 3 or 4.

In the case of single lists of 3 or 4 elements, we continue to allow the common pattern of writing: colors=[r, g, b].

This change primarily impacts a previous feature in which all lists divisible by 4 were assumed to be alternating, [r, g, b, a, r, g, b, a, …]. This feature is still available, but depends on your input explicitly being typed as a numpy array of np.uint8.

If you depend on code that uses a bare python list of alternating colors, such as:

rr.log("my_points", rr.Points3D(, colors=[r, g, b, a, r, g, b, a,]))

You should wrap your input explicitly in a np.uint8 typed numpy array:

rr.log("my_points", rr.Points3D(, colors=np.array([r, g, b, a, r, g, b, a,], dtype=np.uint8)))

Additionally, if you are making use of packed integer colors, it is also advised to add the np.uint32 type, as otherwise length-3 or length-4 lists will risk being interpreted incorrectly.

rr.log("my_points", rr.Points3D(, colors=[0xff0000ff, 0x00ff00ff, 0x0000ffff,]))

becomes

rr.log("my_points", rr.Points3D(, colors=np.array([0xff0000ff, 0x00ff00ff, 0x0000ffff,], dtype=np.uint32)))

❗ Deprecations -deprecations

Python 3.8 python-38

Support for Python 3.8 is being deprecated. Python 3.8 is past end-of-life. See: https://devguide.python.org/versions/ In the next release, we will fully drop support and switch to Python 3.9 as the minimum supported version.

connect -> connect_tcp & serve -> serve_web connect--connecttcp--serve--serveweb

In all SDKs:

  • connect() is now deprecated in favor connect_tcp()
  • serve() is now deprecated in favor serve_web()

The old methods will be removed in a future release.

The rationale behind this change is that it was easy to confuse what these functions do exactly:

We frequently had reports from users that were understandably expecting a serving process (rr.serve()) to be ready to accept connections from other processes (rr.connect()), when in reality the two things are completely unrelated: one is hosting a websocket server to be polled by the web-viewer, while the other is trying to connect to the TCP SDK comms pipeline.

You can learn more about Rerun's application model and the different servers and ports by reading our new documentation page on the matter.