Mir 2.0.0 Release
We are pleased to announce the release of Mir 2.0.0.
For Ubuntu, Mir is available from the Mir PPAs.
It is also available as a source tarball
Summary
This release combines a number of ABI breaking changes that we’ve been working on this year. In particular, it removes support for a number of legacy APIs and clears the way for future development.
mirclient and mirserver APIs
We’ve finally dropped these deprecated APIs, while Mir continues to make use these libraries internally, we no longer publish the headers and make no guarantees of ABI stability. This has allowed us to drop a lot of code, and more will follow in future releases.
This change will impact downstream projects who have still not migrated away from these APIs. Specifically, UBports still makes use of both APIs. We have been in discussions with them about the way forward and believe Mir 1.x is sufficient for their current needs and that they will be able to migrate to 2.x following further work on both sides.
graphics platforms
The removal of mirclient functionality has allowed us to drop a number of graphics platform interfaces used only through the mirclient API. Although this simplification should have no user visible effect, it will ease follow-up work to improve platform handling, particularly for multi-GPU systems and use-cases with variant output needs such as headless systems or remote desktop systems.
As part of this clean-up we’ve remove any specific mesa dependencies from our former “mesa-kms” and mesa-x11" platforms. These now only depend on gbm. An immediate benefit of this is that “Mir-on-X11” now works on an Nvidia based desktop.
We’ve also added a rpi-dispmanx graphics platform that allows Mir to work on the Broadcom drivers for the RPi3.
MirAL
There’s been some small clean-up of this API to remove mirclient dependencies. Downstream code that didn’t use mirclient should mostly still compile. The main thing to know is that the event-handling functions formerly provided by mirclient are now provided by miral and can be used with:
#include <miral/toolkit_event.h>
using namespace miral::toolkit;
Changelog
ABI summary:
- mirclient ABI bumped to 10
- miral ABI bumped to 4
- mirserver ABI bumped to 54
- mirplatform ABI bumped to 19
- mirplatformgraphics ABI bumped to 17
- mirclientplatform dropped
Enhancements:
- Drop legacy packages: libmirclient-dev, mir-client-platform*, mir-utils, libmirserver-dev and mirtest-dev
- Drop legacy config options: “host-socket”, “nested-passthrough” & “name”
- [mirclient] Drop obsolete stuff we don’t use
- [graphics] Reworked graphics platform API
- [graphics] Improved probing of egmstreams-kms platform
- [graphics] Improved probing of gbm-kms platform
- [graphics] gbm-kms (formerly mesa-kms) platform is independent of mesa
- [graphics] gbm-x11 (formerly mesa-x11) platform is independent of mesa
- [graphics] rpi-dispmanx New DispmanX platform
- [miral] Remove dependency on mirclient; drop deprecated APIs and tidy up
- [miral] Allow shells to enable/disable SSD
- [miral] Add scale support to DisplayConfiguration. (Fixes: #1423)
- [mir-demos] miral-shell uses a better default terminal emulator
- [mir-demos] mir-shell gets the user keymap from gsetting
- [mir-demos] Add a “fake-mir-kiosk” script to assist snap development
- [Wayland] Clean up code
- [X11] Clean up code
- [performance tests] Remove mirclient legacy, add X11 based tests
- Improve WLCS integration: change
mir_discover_external_gtests
to take an explicit list of expected failures. - [Tests] mir-smoke-test-runner: Start with Mir’s eglinfo
Bugs fixed:
- [input] Use xkb scan code to identify modifier keys. (Instead of unreliable key_sym). (Fixes: #1515)
- [input] Don’t auto repeat modifier keys. (Fixes: #1598)
- [X11] Do not force XWayland EGL to use DRM
- [X11] Treat COMPOUND_TEXT as a string type. (Fixes: #1552)
- [X11] Initialize BasicDecoration in a threadsafe way. (Fixes #1479)
- [X11] Stack X11 surfaces correctly on the XWayland server
- [X11] Handle failure to open both abstract and ordinary X11 sockets. (Fixes: #1449)
- [graphics] Add a
PlatformPriority::hosted
probe value. We now select a hardware-accelerated X11 platform over a software-rasterised mesa-kms platform. (Fixes: #1543) - [miral] Add WindowManagerTools::active_application_zone() (Fixes: #1530)
- [miral] Drop the --startup-apps configuration option from MirRunner. (Fixes: #1531)
- [Wayland] WaylandInputDispatcher only takes input events (fixes #1047)
- [Tests] Make LTTNG fork()-safe. (Fixes #1405)