wayland-backend
Low-level bindings to the Wayland protocol
0.3.17
41M downloads/mo
#1408 most downloaded on crates.io
smithay/wayland-rs
What this package is like to depend on
Last release 9 days 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
6 releases in the last 12 months
see the full history below
Release timeline
48 releases · Jan 2022 to Aug 2026Releases
latest 48-
0.3.1714 Aug 2026Release notes
Open source →Backport from
master.Bugfixes
- client/sys: Make
ReadEventsGuardimplSend+Sync, likersbackend
- client/sys: Make
-
0.3.1622 Jul 2026Release notes
Open source →Backport from
master.Bugfixes
- client/sys: Fix deadlock if
Backendis used inObjectData::destroyed - client/sys: Fix some race conditions accessing udata in a thread while it is being set, or the proxy is being destroyed.
- client/sys: Fix deadlock if
-
0.3.1531 Mar 2026Release notes
Open source →Bugfixes
- server/rs: Fix potential deadlock destroying global udata
- client/rs: Do not send request with destroyed object as argument
- Matches
client/sys
- Matches
-
0.3.1405 Mar 2026Release notes
Open source →- client: Put
ObjectId::display_ptrbehindlibwayland_client_1_23feature- Breaking change to fix issue with release
- client: Put
-
0.3.1305 Mar 2026 withdrawnRelease notes
Open source →Additions
- client: Added
display_ptrmethod toObjectId - server: Addded
Handle::global_name- Requires
libwayland_server_1_22feature
- Requires
- client: Added
set_max_buffer_sizemethod - server: Added
set_default_max_buffer_sizeandset_client_max_buffer_sizemethods
- client: Added
-
0.3.1230 Dec 2025Release notes
Open source →Bugfixes
- backend/server/rs: Send protocol error if method requires newer protocol version
Changes
- backend/client/rs: Unbounded buffering, matching libwayland behavior
Additions
- backend: Added a
destroy_objectmethod - backend/server: Remove registry from
known_registriesif destructor is called
-
0.3.1128 Jul 2025Nothing published for this version
-
0.3.1029 Apr 2025Release notes
Open source →Bugfixes
- Freeze when dispatching within the queue dispatch on the same thread with system lib
-
0.3.928 Apr 2025 withdrawnRelease notes
Open source →Bugfixes
- backend/sys: Prevent send_request being called in parallel with dispatch_pending
Additions
- backend/client_sys:
ReadEventsGuard::read_without_dispatchfor just reading the events without dispatch
-
0.3.831 Jan 2025 -
0.3.704 Sep 2024Release notes
Open source →Bugfixes
- backend/sys: Fix importing external objects with
Backend::manage_objectby associating the proxy with the correct event queue
- backend/sys: Fix importing external objects with
-
0.3.616 Jul 2024Release notes
Open source →Bugfixes
- backend/rs: server: Fixed potential deadlock on object destruction
-
0.3.504 Jul 2024Release notes
Open source →Additions
Backend::manage_objectfor handling foreign proxies with the sys backend
Bugfixes
- backend/rs: server: Fixed potential deadlock caused by dead clients
- backend/sys: client dispatching now always uses distinct event queue
-
0.3.431 May 2024Release notes
Open source →Additions
- Add
rwh_06feature forraw-window-handle0.6
Bugfixes
- backend/rs:
WAYLAND_DEBUGnow displaysfixedas decimal, not integer.- Matches libwayland
- Add
-
0.3.329 Jan 2024Release notes
Open source →Additions
- client: Implement
EqforBackend
Bugfixes
- backend/sys: Fix error/segfault if object argument is no longer alive
- backend/rs: Retry send/recv on
EINTR- Matches the behavior of libwayland
- client: Implement
-
0.3.225 Sep 2023Release notes
Open source →Bugfixes
- server/sys: Fix an issue where the backend could deadlock in some cases when sending an event that destroys an object.
-
0.3.119 Sep 2023 -
0.3.002 Sep 2023Release notes
Open source →Breaking change
- MSRV bumped to 1.65
io-lifetimesis no longer a (public) dependency- The
Backend::prepare_read()method now returnsNoneif the inner queue of the backend needs to be dispatched usingBackend::dispatch_inner_queue(), instead of trying to dispatch it by itself. This can only happen when using thesysbackend, and allows the crate to behave properly when multiple threads try to read the socket using the libwayland API. - server:
ObjectData::destroyedfunction signature has changed to pass theHandleandselfasArc<Self>.
Additions
- Add
flushmethod to serverHandle.
Bugfixes
- Setting
WAYLAND_DEBUGserver-side now properly prints incoming requests
-
0.2.013 Jul 2023 -
0.1.313 Jul 2023 withdrawnNothing published for this version
-
0.1.219 Apr 2023Nothing published for this version
-
0.1.116 Feb 2023Nothing published for this version
-
0.1.027 Dec 2022Nothing published for this version
-
0.1.0-beta.1520 Dec 2022 pre-releaseNothing published for this version
-
0.1.0-beta.1406 Dec 2022 pre-releaseRelease notes
Open source →Bugfixes
- In rust backend, retry read if message is incomplete, instead of
Malformederror.
- In rust backend, retry read if message is incomplete, instead of
-
0.1.0-beta.1304 Nov 2022 pre-releaseNothing published for this version
-
0.1.0-beta.1213 Oct 2022 pre-releaseNothing published for this version
-
0.1.0-beta.1113 Oct 2022 pre-release withdrawnNothing published for this version
-
0.1.0-beta.1016 Sep 2022 pre-releaseRelease notes
Open source →Breaking changes
Messageis now also generic on theFdtype, andio_lifetimes::OwnedFdis used instead ofRawFdwhen appropriate.
Bugfixes
- The rust backend no longer ever does a blocking flush.
- Server-side sys backend is now able to track liveness of external objects.
-
0.1.0-beta.931 Aug 2022 pre-releaseNothing published for this version
-
0.1.0-beta.815 Jul 2022 pre-releaseRelease notes
Open source →Breaking changes
- all backends: creating null
ObjectIdis now done through theObjectId::null()method, and thenull_id()methods on the backends are removed. Argument::Strnow contains anOption, which is correctly mapped to nullable strings. This fixes segfaults that previously occurred dereferencing the null pointer in the system backend.- server:
disable_globalandremove_globalnow require the state type parameter, likecreate_global. This is required for compatibility with libwayland 1.21. ArgumentType::ArrayandArgumentType::NewIdno longer take aAllowNulland are never nullable.
Additions
- client: introduce
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. - introduce the
logcargo feature to control logging behavior - A dummy implementation of ClientData is now provided through
()and all trait methods are optional
- all backends: creating null
-
0.1.0-beta.704 Jul 2022 pre-releaseRelease notes
Open source →Bugfixes
- backend/sys: the inner lock is no longer held when destructors are invoked
- backend/sys: sys backend does not abort process when
Backend::disable_globalis invoked more than once
-
0.1.0-beta.625 Jun 2022 pre-releaseRelease notes
Open source →Additions
- client:
ObjectIdnow implements theHashtrait - server:
ObjectId,ClientIdandGlobalIdnow implement theHashtrait
Bugfixes
- backend/sys: the inner lock is no longer held when destructors are invoked
- client:
-
0.1.0-beta.520 Jun 2022 pre-releaseRelease notes
Open source →Additions
- client/sys: introduce
Backend::from_foreign_display
Bugfixes
- The server backend now correctly associates interfaces with its object arguments when parsing messages with nullable object arguments.
- client/sys: introduce
-
0.1.0-beta.408 Jun 2022 pre-releaseRelease notes
Open source →Bugfixes
- server-rs: the inner lock is no longer help when destructors are invoked
-
0.1.0-beta.327 May 2022 pre-releaseRelease notes
Open source →Bugfixes
- server-sys: Skip unmanaged globals in the global filter (caused a segfault)
-
0.1.0-beta.225 May 2022 pre-release -
0.1.0-beta.123 May 2022 pre-releaseRelease notes
Open source →Breaking changes
- Both client and server APIs have been profoundly reworked. The backend now has internal locking mechanism allowing handles to it to be cloned and shared accross the application.
Bugfixes
- Fix a crash when exactly filling the internal buffers.
-
0.1.0-alpha929 Mar 2022 pre-releaseNothing published for this version
-
0.1.0-alpha821 Mar 2022 pre-releaseNothing published for this version
-
0.1.0-alpha721 Mar 2022 pre-releaseRelease notes
Open source →Bugfixes
- Client-side with the rust backend,
wl_displayevents are now properly printed with other events whenWAYLAND_DEBUG=1is set.
- Client-side with the rust backend,
-
0.1.0-alpha607 Mar 2022 pre-releaseRelease notes
Open source →Changes
- Server-side, request callbacks are now allowed to omit providing an
ObjectDatafor newly created objects if they triggered a protocol error
Bugfixes
- Fix display leaks on system server backend.
- Fix a panic when trying to send a message with a null object argument followed by a non-null object argument
- Fix various memory leaks
- Server-side, request callbacks are now allowed to omit providing an
-
0.1.0-alpha504 Feb 2022 pre-release -
0.1.0-alpha404 Feb 2022 pre-releaseRelease notes
Open source →Breaking changes
- Server-side
ObjectData::destroyed()now has access to the&mut Dserver-wide data.
- Server-side
-
0.1.0-alpha323 Jan 2022 pre-release -
0.1.0-alpha207 Jan 2022 pre-releaseNothing published for this version
-
0.1.0-alpha1007 Apr 2022 pre-releaseNothing published for this version
-
0.1.0-alpha101 Jan 2022 pre-release