WebKitGTK+ 2.52 highlights
The WebKit team at Igalia is happy to announce a new release series of WebKitGTK. This is a summary of the most noteworthy changes from the latest release cycle.
libsoup 2 support has been removed
As it was announced in October last year, this is the first release series that only supports libsoup 3. Please take a look at the official annoucement for the details.
Graphics improvements
WebKitGTK graphics support has seen numerous improvements with a positive impact in rendering performance, resource usage, and better rendering. Let’s have a look at some of the most significant changes:
- Compute the layers tile size, using a different strategy depending on whether GPU rendering is enabled. This optimizes resource usage depending on both hardware and software rendering mode.
- WebKitGTK now uses run-loop observers to properly schedule layer flushing and composition, which results in snappier and better performing rendering and animation.
- 2D-canvas acceleration has now improved performance, as operations are recorded for batched replay.
- Text rendering has better performance too.
- In non-composite mode, it’s now also possible to use damage propagation.
- Asynchronous scrolling has also seen performance improvements.
Additionally, many rendering issues have been fixed.
Multimedia improvements
WebRTC
When using GstWebRTC, WebRTC network access has been moved to the network process. This also requires librice, and building with the CMake USE_LIBRICE option. When this is enabled, it is still possible to choose the older libnice-based implementation at runtime by setting WEBKIT_GST_DISABLE_WEBRTC_NETWORK_SANDBOX=1 in the environment.
Having WebRTC network access in the network process is a security improvement, as it reduces the surface of attack in other more sensitive processes.
Other multimedia improvements
- Videos with BT2100-PQ colorspace are now tone-mapped to SDR, ensuring colours do not appear washed out.
- Support for the Audio Output Devices API, which allows Web content to enumerate audio devices and decide which one to use for output. This feature is disabled by default, and may be previewed using the
ExposeSpeakers,ExposeSpeakersWithoutMicrophone, andPerElementSpeakerSelectionfeature flags. - Many code improvements to the GStreamer backend that will result in a more stable multimedia experience.
WebXR
WebXR support through OpenXR has seen substantial development this cycle:
- New API has been added in order to support WebXR session permissions, querying whether a session is active and requesting to leave a session.
- Support for WebXR Hand Input module has been added for ports using OpenXR.
- Support for WebXR Hit Test Module is added with testable status, so it can be enabled at runtime (
--features=+WebXRHitTestModule) or at build time passing-DENABLE_WEBXR_HIT_TEST=ON.
API Changes
- An initial API to support Web Extensions has been added in this release cycle.
Web Standards support
As usual, this list is not exhaustive as WebKit continuously progresses in its support for new standards. Some of the highlights for this release are:
- Largest Contentful Paint is now enabled.
- Pointer and Touch Events now use more precise fractional coordinates.
- The Fetch API now accepts local connections.
- The Navigation API is now enabled.
- The Event Timing API is now enabled.
- The CSS random() function (in draft status) is now available.
- CSS field-sizing is now available.
- The Keyboard lock API is now available.
- The Origin API is now available.
- The Readable Byte Streams API is now available.
- Enabled CSS grid-lanes (a.k.a. Masonry layout), part of CSS Grid Layout Module Level 3.
Other notes
The Flatpak-based development SDK has been removed. Developers are encouraged to use the WebKit Container SDK instead.
Building with Enchant 1.x is no longer supported, Enchant 2.x is now always used for spell-checking.