Update on what happened in WebKit in the week from December 16 to December 25.
Right during the holiday season 🎄, the last WIP installment of the year comes packed with new releases, a couple of functions added to the public API, cleanups, better timer handling, and improvements to MathML and WebXR support.
Cross-Port 🐱
Landed support for font-size: math. Now
math-depth
can automatically control the font size inside of <math> blocks, making
scripts and nested content smaller to improve readability and presentation.
Two new functions have been added to the public API:
-
webkit_context_menu_item_get_gaction_target()to obtain theGVariantassociated with a context menu item created from aGAction. -
webkit_context_menu_item_get_title()may be used to obtain the title of a context menu item.
Improved timers, by making some of
them use the timerfd API. This reduces
timer “lateness”—the amount of time elapsed between the configured trigger
time, and the effective one—, which in turn improves the perceived smoothness
of animations thanks to steadier frame delivery timings. Systems where the
timerfd_create and timerfd_settime functions are not available will
continue working as before.
On the WebXR front, support was added
for XR_TRACKABLE_TYPE_DEPTH_ANDROID through the XR_ANDROID_trackables
extension, which allows reporting depth information for elements that take part
in hit testing.
Graphics 🖼️
Landed a change that implements
non-composited page rendering in the WPE port. This new mode is disabled by
default, and may be activated by disabling the AcceleratedCompositing runtime
preference. In such case, the frames are rendered using a simplified code path
that does not involve the internal WebKit compositor. Therefore it may offer a
better performance in some specific cases on constrained embedded devices.
Since version 2.10.2, the FreeType library can be built
with direct support for loading fonts in the
WOFF2 format. Until now, the WPE and GTK WebKit
ports used libwoff2 in an intermediate step
to convert those fonts on-the-fly before handing them to FreeType for
rendering. The CMake build system will now detect when FreeType supports WOFF2
directly and skip the conversion step.
This way, in systems which provide a suitable version of FreeType, libwoff2
will no longer be needed.
WPE WebKit 📟
WPE Platform API 🧩
New, modern platform API that supersedes usage of libwpe and WPE backends.
The legacy libwpe-based API can now be disabled at build
time, by toggling the
ENABLE_WPE_LEGACY_API CMake option. This allows removal of uneeded code when
an application is exclusively using the new WPEPlatform API.
WPE Android ↗ 🤖
Adaptation of WPE WebKit targeting the Android operating system.
AHardwareBuffer is now supported as backing for accelerated graphics surfaces that can be shared across processes. This is the last piece of the puzzle to use WPEPlatform on Android without involving expensive operations to copy rendered frames back-and-forth between GPU and system memory.
Releases 📦️
WebKitGTK
2.50.4 and
WPE WebKit 2.50.4 have
been released. These stable releases include a number of important patches for
security issues, and we urge users and distributors to update to this release
if they have not yet done it. An accompanying security advisory,
WSA-2025-0010, has been published
(GTK,
WPE).
Development releases of WebKitGTK 2.51.4 and WPE WebKit 2.51.4 are available as well, and may be used to preview upcoming features. As usual, bug reports are welcome in Bugzilla.
Community & Events 🤝
Paweł Lampe has published a blog post that discusses various pre-rendering techniques useful in the context of using WPE on embedded devices.
That’s all for this week!