NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1358 most downloaded on crates.io
Low-level bindings to the Wayland protocol
Last release 1 months ago
14 Aug 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 16 of 20 stable releases
4 versions withdrawn
withdrawn after publishing
5 years old
48 releases · first in 2022
One column per quarter.
client/sys: Make ReadEventsGuard impl Send+Sync, like rs backend
Backport from master.
ReadEventsGuard impl Send+Sync, like rs backendclient/sys: Fix deadlock if Backend is used in ObjectData::destroyed
Backport from master.
Backend is used in ObjectData::destroyedserver/rs: Fix potential deadlock destroying global udata
client/sysBreaking change to fix issue with release
ObjectId::display_ptr behind libwayland_client_1_23 feature
client: Added display_ptr method to ObjectId
display_ptr method to ObjectIdHandle::global_name
libwayland_server_1_22 featureset_max_buffer_size methodset_default_max_buffer_size and set_client_max_buffer_size methodsbackend/server/rs: Send protocol error if method requires newer protocol version
destroy_object methodknown_registries if destructor is calledNothing published for this version
Freeze when dispatching within the queue dispatch on the same thread with system lib
backend/sys: Prevent send_request being called in parallel with dispatch_pending
ReadEventsGuard::read_without_dispatch for just reading the events without dispatchbackend/rs: Prevent a potential deadlock during client cleanup
backend/sys: Fix importing external objects with Backend::manage_object by associating the proxy with the correct event queue
Backend::manage_object by
associating the proxy with the correct event queuebackend/rs: server: Fixed potential deadlock on object destruction
Backend::manage_object for handling foreign proxies with the sys backend
Backend::manage_object for handling foreign proxies with the sys backendAdd rwh_06 feature for raw-window-handle 0.6
rwh_06 feature for raw-window-handle 0.6WAYLAND_DEBUG now displays fixed as decimal, not integer.
client: Implement Eq for Backend
Eq for BackendEINTR
server/sys: Fix an issue where the backend could deadlock in some cases when sending an event that destroys an object.
client: Add Backend::poll_fd to return fd for polling
Backend::poll_fd to return fd for pollingio-lifetimes is no longer a (public) dependency
io-lifetimes is no longer a (public) dependencyBackend::prepare_read() method now returns None if the inner queue of the backend
needs to be dispatched using Backend::dispatch_inner_queue(), instead of trying to dispatch
it by itself. This can only happen when using the sys backend, and allows the crate to
behave properly when multiple threads try to read the socket using the libwayland API.ObjectData::destroyed function signature has changed to pass the Handle and self as Arc<Self>.flush method to server Handle.WAYLAND_DEBUG server-side now properly prints incoming requests#### Breaking changes - Update wayland-sys to 0.31
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
In rust backend, retry read if message is incomplete, instead of Malformed error.
Malformed error.Nothing published for this version
Nothing published for this version
Nothing published for this version
Message is now also generic on the Fd type, and io_lifetimes::OwnedFd is used instead of RawFd when appropriate.
Message is now also generic on the Fd type, and io_lifetimes::OwnedFd is used instead of RawFd when
appropriate.Nothing published for this version
all backends: creating null ObjectId is now done through the ObjectId::null() method, and the null_id() methods on the backends are removed.
ObjectId is now done through the ObjectId::null() method, and the
null_id() methods on the backends are removed.Argument::Str now contains an Option, which is correctly mapped to nullable strings. This fixes
segfaults that previously occurred dereferencing the null pointer in the system backend.disable_global and remove_global now require the state type parameter, like create_global.
This is required for compatibility with libwayland 1.21.ArgumentType::Array and ArgumentType::NewId no longer take a AllowNull and are never nullable.Backend::dispatch_inner_queue() meant for ensuring a system backend in guest mode can
still process events event it does not control reading the socket.log cargo feature to control logging behavior() and all trait methods are optionalbackend/sys: the inner lock is no longer held when destructors are invoked
Backend::disable_global is invoked more than onceclient: ObjectId now implements the Hash trait
ObjectId now implements the Hash traitObjectId, ClientId and GlobalId now implement the Hash traitclient/sys: introduce Backend::from_foreign_display
Backend::from_foreign_displayserver-rs: the inner lock is no longer help when destructors are invoked
server-sys: Skip unmanaged globals in the global filter (caused a segfault)
server-sys: move display_ptr() from Backend to Handle.
display_ptr() from Backend to Handle.Both client and server APIs have been profoundly reworked. The backend now has internal locking mechanism allowing handles to it to be cloned and shar
Nothing published for this version
Nothing published for this version
Client-side with the rust backend, wl_display events are now properly printed with other events when WAYLAND_DEBUG=1 is set.
wl_display events are now properly printed with other events
when WAYLAND_DEBUG=1 is set.Server-side, request callbacks are now allowed to omit providing an ObjectData for newly created objects if they triggered a protocol error
ObjectData for newly
created objects if they triggered a protocol errorExpose wl_display pointer on system server backend
wl_display pointer on system server backendServer-side ObjectData::destroyed() now has access to the &mut D server-wide data.
ObjectData::destroyed() now has access to the &mut D server-wide data.Introduce WEnum::into_result as a convenience method.
WEnum::into_result as a convenience method.Nothing published for this version
Nothing published for this version
Initial pre-release of the crate.
Initial pre-release of the crate.
Your coding agent can read these notes before it upgrades. Set up the MCP server →