DisplayXR Runtime v2.20.1
Highlights
The Linux .deb and tarball are now built on Ubuntu 22.04, dropping the glibc floor so one package installs and runs on 22.04, 24.04 and 26.04. Previously the Linux artifacts were built on a newer host and declared unversioned dependencies, so apt would install them on 22.04 and every OpenXR app then failed at dlopen(). Windows, macOS and Android are unchanged from v2.20.0.
Fixes
- Linux packaging is portable by construction (#1659, closes #1656). Both release artifacts —
displayxr-runtime_<ver>_amd64.deband thedist/*.tar.gz— now build in anubuntu:22.04container, so the shipped binaries carry the oldest supported release's glibc floor rather than the build host's newest. - Versioned dependencies.
scripts/package_deb_linux.shderivesDependswithdpkg-shlibdepsinstead of mapping sonames to unversioned package names. apt now refuses a package whose host is too old, rather than installing a runtime that cannot load. - Tarball install gate.
scripts/package_linux.shrecords the build's floor in aGLIBC_FLOORfile andscripts/linux/install.shrefuses a host older than that floor, instead of unpacking a tree that only fails later atdlopen().
CI / Build
- Packaging guards. Packaging now fails if the glibc floor rises above the supported minimum (
DXR_DEB_MAX_GLIBC, which CI sets to 2.35), if aDT_NEEDEDsoname falls outside the cross-releaseSTABLE_SONAMESlist — libraries whose package name is identical on all three supported releases — or ifDependswould name the vendor SR package. - New
DebInstallmatrix. Installs the built.debinto pristine 22.04 / 24.04 / 26.04 containers without Recommends, runsldd -rover every shipped ELF, asserts every declared dependency name exists on that release, and runsdisplayxr-cli info+selftestenv-free against the packaged sim-display. The release attachment moved to aDebReleasejob gated on that matrix, so a non-portable package cannot be published. - New
Newestjob. The newest-toolchain coverage thePackagejob provided before it moved to 22.04 now lives in its ownubuntu:26.04build + selftest job. scripts/verify_deb_install_linux.shis the single verifier shared by CI and the local Docker acceptance test (scripts/test_deb_linux.sh, now a 22.04 builder with tri-release verification).
Docs
docs/getting-started/building.md,docs/roadmap/linux-support.mdandCLAUDE.mdrecord the supported-release matrix and the build-on-oldest rule.
Other
chore(versions):versions.json[runtime]pinned to v2.20.0 by the automatic post-release bump.
Known issues (Linux)
- On a native Wayland session the weave shimmers while a window is dragged, and is correct on drop. Pre-existing; a fix is in progress.
- The phase snap needs the bundled GNOME Shell extension plus a logout.
- New: on Ubuntu 22.04 the bundled GNOME Shell extension does not load — it targets GNOME Shell 45+ and 22.04 ships GNOME 42. The runtime logs why. Without the extension, Wayland weaving is display-scoped rather than window-scoped, and the vendor plug-in's desktop capture for transparency is unavailable, so transparent apps fall back to a silhouette. X11 sessions on 22.04 are unaffected for weaving and phase snap; transparency needs the extension on both session types. A GNOME 42 variant is planned.
Full changelog: v2.20.0...v2.20.1