Xwayland 26.0.99.902 lands as RC2, targeting crash fixes and byte-swap headaches
Following the first release candidate back in August, the standalone Xwayland project has published its second release candidate for version 26.1.0. Olivier Fourdan of Red Hat announced the build on September 9, 2026, targeting testers and distro packagers who are eager to stress-test the upcoming stable release.
This is the second candidate in the series, tagged xwayland-26.0.99.902. If you're keeping score, that's 17 files modified across 15 commits by three contributors. The diff lands squarely in the subsystem areas that tend to cause the most headaches for desktop users: keyboard handling, scroll wheel data over the wire, and general server stability.
Keyboard crashes and byte-swap headaches
The biggest wins in this build come from Jeremy Huddleston Sequoia's work on the X Keyboard Extension. He shipped four patches to plug a class of bugs where the keyboard group count could collapse to zero under specific edge cases. The result of that collapse is predictable: a divide-by-zero crash in XkbWrapIntoRange(), an out-of-bounds memory read via an unsigned wrap-around, and even thread wedging when a negative group case tries to add zero while holding a lock.
Triggering this usually involves XQuartz asking for the "empty" model on macOS, or a custom keymap that compiles to nothing at all. The upstream commit message walks through the bug chain clearly, noting how XkbClampIntoRange can compute a negative value, truncate it to 255, and then use that as an index into a four-element array. It's the kind of subtle bug that survives hardening campaigns because it doesn't require crafted input, just a keymap that reports zero groups.
Lukáš Lipinský handled the X Input Extension side, fixing byte-order issues that corrupt scroll and valuator data for cross-endian clients. If you run a big-endian server and connect a little-endian client over TCP, SwapLongs() was leaving certain multi-byte fields in server byte order. The fix ensures that SwapScrollInfo() and related routines actually swap every field, including ScrollClass flags. The bug was likely latent because most local setups run on x86_64, where both ends share the same endianness.
Stability tweaks and the road to 26.1.0
Olivier Fourdan and Jeremy Huddleston Sequoia also closed the loop on several core stability issues. There's a fix for a double free of badreg->data when region validation fails, a pixel masking correction for rootless windows with safe alpha, and a list corruption guard in the damage tracking subsystem.
The Xwayland-specific highlight is the guard against cursor warping without a valid seat. If an input event tries to warp a cursor when xwl_seat is null, the server would previously dereference a null pointer. It's a small patch, but the kind of thing that keeps Xwayland from throwing unexpected segfaults during heavy input workloads.
It's been about three weeks since RC1. That turnaround tells you the team is treating feedback seriously and shipping targeted corrections rather than waiting for the stable release to mop up. The stable 26.1.0 is expected later in September or October, assuming no critical issues surface during this round of testing.
Notably, the standalone Xwayland cadence is already outpacing the monolithic xorg-server tree, which sits at 26.0.99.901. That gap signals how firmly Xwayland has moved into its own release cycle, separate from the broader X server codebase.
Where to get it
You can grab the tarball directly from the Freedesktop archive. The SHA256 is 4b2d95ace26ccd07af818d93967514f501591070d5c6b7addc1d2be45686d029.
