Igalia WebKit Team Zola 2026-03-09T20:02:33+00:00 https://blogs.igalia.com/webkit/atom.xml WebKit Igalia Periodical #59 2026-03-09T20:02:33+00:00 2026-03-09T20:02:33+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-59/ <p>Update on what happened in WebKit in the week from March 2 to March 9.</p> <p itemprop="abstract"> As part of this week's handful of news, WebKitGTK and WPE WebKit now have support for Gamepad's "VibationActuator" property, the video decoding limit is now configurable at runtime in addition to build time, and an interesting fix that makes WebKit render fonts like other browsers by making it blend text incorrectly (!). </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Using <code>libmanette</code>'s <em>rumble</em> support, enabled <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Gamepad/vibrationActuator">Gamepad <em>VibrationActuator</em></a> for <a rel="external" href="https://commits.webkit.org/308799@main">WebKitGTK</a> and <a rel="external" href="https://commits.webkit.org/308792@main">WPE WebKit</a>.</p> <p>With these changes, <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/GamepadHapticActuator/playEffect">playEffect()</a> can be used to play <em>dual-rumble</em> vibration effects.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><code>VIDEO_DECODING_LIMIT</code> is now <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=308969">configurable at runtime</a>, in addition to build time. That will allow vendors that share a single binary build on different platforms to fine-tune their needs without a rebuild.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/59880">a change</a> that tweaks the text rendering done with Skia. With this change, the text looks more natural now - just like in other browsers. However, this is done by blending text incorrectly as a compromise.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>One more set of release candidates for the upcoming stable branch, <a rel="external" href="https://webkitgtk.org/2026/03/06/webkitgtk2.51.93-released.html">WebKitGTK 2.51.93</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.93.html">WPE WebKit 2.51.93</a>, have been published. For those interested in previewing the upcoming 2.52.x series this release is expected to be quite stable. Reporting <a rel="external" href="https://bugs.webkit.org/">issues in Bugzilla</a> are, as usual, more than welcome.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #58 2026-03-02T20:11:00+00:00 2026-03-02T20:11:00+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-58/ <p>Update on what happened in WebKit in the week from February 23 to March 2.</p> <p itemprop="abstract"> This installment of the periodical brings news about support for Qualcomm qtivdec2 and qtivenc2 on GStreamer, GPU texture atlas creation and replay substitution, enhancement of the scroll gesture in WPE, and two new releases: WebKitGTK 2.51.92 and WPE WebKit 2.51.92. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Work on adding support for the Qualcomm GStreamer qtivdec2 and qtivenc2 elements is on-going</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/308458@main">Implemented GPU texture atlas creation and replay substitution</a> in the Skia painting engine on GTK/WPE. After recording, raster images are packed into GPU atlases via <code>BitmapTexture</code>, with two upload paths: an optimized DMA-buf path that memory-maps GPU buffers and dispatches uploading to a dedicated worker thread, and a synchronous GL fallback using <code>BitmapTexture::updateContents()</code>. Atlas uploads are synchronized across workers using a countdown-latch fence. During replay, <code>SkiaReplayCanvas</code> intercepts raster image draws and substitutes them with atlas texture draws, mapping source coordinates into atlas space.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The recent WPE WebKit 2.51.92 release is the first one to have its <a rel="external" href="https://wpewebkit.org/reference/2.51.92/wpe-platform-2.0/">WPEPlatform documentation online</a>, but it was not included in the tarball. This issue <a rel="external" href="https://commits.webkit.org/308408@main">has been corrected</a> and tarballs for future releases will also include this documentation.</p> </div> <div class="wip-item"> <p>Scrolling using touch input with WPEPlatform would result in scrolling faster when more than one touch point was in effect. The gesture detector <a rel="external" href="https://commits.webkit.org/308271@main">has been fixed</a> to make scrolling have always a consistent speed.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>The third —and likely the last— release candidates for the upcoming stable branch, <a rel="external" href="https://webkitgtk.org/2026/02/27/webkitgtk2.51.92-released.html">WebKitGTK 2.51.92</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.92.html">WPE WebKit 2.51.92</a>, have been published. For those interested in previewing the upcoming 2.52.x series this release is expected to be quite stable; but there might be still some rough edges. Reporting <a rel="external" href="https://bugs.webkit.org/">issues in Bugzilla</a> are, as usual, more than welcome.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #57 2026-02-23T19:52:49+00:00 2026-02-23T19:52:49+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-57/ <p>Update on what happened in WebKit in the week from February 9 to February 23.</p> <p itemprop="abstract"> In this week we have a nice fix for video streams timestamps, a fix for a PDF rendering regression, support for rendering video buffers provided by Qualcomm video decoders, and a fix for a font selection issue. Also notable we had a new WPE Android release, and the libsoup 3.6.6 release. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Added a <a rel="external" href="https://commits.webkit.org/307348@main">new <code>webkit_feature_list_find()</code> convenience function</a> to the public API, which searches for a <a rel="external" href="https://webkitgtk.org/reference/webkitgtk/2.51.91/struct.Feature.html">WebKitFeature</a> given its identifier.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/307359@main">Opportunistically fix decoding timestamps to prevent deletion of preexisting samples when PTS doesn't conflict</a>, fixing potential glitches when inserting videos (eg: ad insertion).</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/308033@main">Fixed</a> a <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=306621">PDF rendering regression</a> caused by the canvas 2D operation recording feature, where switching between the recording canvas and the GPU surface canvas failed to preserve the full save/restore nesting, clip stack, and transparency layer state. Replaced the fragile state-copying approach with a state replay mechanism in GraphicsContextSkia that tracks the full sequence of save restore, clip, and transparency layer operations, then reconstructs the exact nesting on the target canvas when flushing a recording.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/307174@main">Added support</a> for rendering video buffers provided by Qualcomm hardware-accelerated decoders, with aid from the <a rel="external" href="https://registry.khronos.org/OpenGL/extensions/EXT/EXT_YUV_target.txt">EXT_YUV_target</a> OpenGL extension.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/307565@main">Fixed</a> the font selection issue that the system fallback font cache mixed up different font styles.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/wpe-android/releases/tag/v0.3.2">WPE Android 0.3.2</a> has been released, and prebuilt packages are available <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview/">at the Maven Central repository</a>. This is a stable maintenance release which updates WPE WebKit to 2.50.5, which is the most recent stable release.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://gitlab.gnome.org/GNOME/libsoup/-/releases/3.6.6">libsoup 3.6.6</a> has been released with numerous bug and security fixes.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #56 2026-02-09T23:21:30+00:00 2026-02-09T23:21:30+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-56/ <p>Update on what happened in WebKit in the week from February 2 to February 9.</p> <p itemprop="abstract"> The main event this week was FOSDEM (pun intended), which included presentations related to WebKit; but also we got a batch of stable and development releases, asynchronous scrolling work, OpenGL logging, cleanups, and improving the inspector for the WPE work. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>While asynchronous scrolling for mouse wheel events was already supported, scrollbar layers were still being painted on the main thread. This has been <a rel="external" href="https://commits.webkit.org/306838@main">changed</a> to paint scrollbars on the scrolling thread instead, which avoids scrollbars to “lag” behind scrolled content.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/306987@main">Fixed</a> flickering caused by the combination of damage tracking and asynchronous scrolling for mouse wheel events.</p> </div> <div class="wip-item"> <p>It is now possible to <a rel="external" href="https://commits.webkit.org/306778@main">enable debug logging for OpenGL contexts</a> using the new <code>GLContext</code> log channel, which takes advantage of the message events produced by the <a rel="external" href="https://wikis.khronos.org/opengl/Debug_Output">widespread KHR_debug extension</a>.</p> <p>Figuring out the exact location inside WebKit that triggered an OpenGL issue may still be challenging with this aid, and therefore <a rel="external" href="https://commits.webkit.org/306862@main">a backtrace will be appended</a> in case of errors to help pinpoint the source, when the log channel is enabled at the “debug” level with <code>GLContext=debug</code>.</p> </div> <div class="wip-item"> <p>Configuring the build with <code>USE_SKIA=OFF</code> to make WebKit use the <a rel="external" href="https://cairographics.org/">Cairo</a> graphics library <a rel="external" href="https://commits.webkit.org/306343@main">is no longer supported</a>. Using <a rel="external" href="https://skia.org">Skia</a> has been the default <a rel="external" href="https://blogs.igalia.com/carlosgc/2024/09/27/graphics-improvements-in-webkitgtk-and-wpewebkit-2-46/">since late 2024</a>, and after two full years the 2.54.0 release (due in September 2026) will be the first one where the choice is no longer possible.</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>The “on demand” hardware acceleration policy has been rarely used lately, and thus support for it has been <a rel="external" href="https://commits.webkit.org/306855@main">removed</a>. Note that this affects only the GTK port when built with GTK 3—the option never existed when using GTK 4.</p> <p>Existing GTK 3 applications that use <code>WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND</code> will continue to work and do <strong>not</strong> need rebuilding: they will be promoted to use the “always enabled” policy starting with WebKitGTK 2.54.0 (due in September 2026).</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>The Web Inspector <a rel="external" href="https://commits.webkit.org/306914@main">has received support</a> for saving data to local files, allowing things such as saving page resources or exporting the network session to a <a rel="external" href="https://en.wikipedia.org/wiki/HAR_(file_format)">HAR archive</a>.</p> <p>Note that using the Web Inspector locally is supported when using the WPEPlatform API, and the keyboard shortcut <kbd title="Control + Shift + I">Ctrl+Shift+I</kbd> may be used to bring it up.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2026/02/09/webkitgtk2.50.5-released.html">WebKitGTK 2.50.5</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.50.5.html">WPE WebKit 2.50.5</a> have been released. These are stable maintenance releases that improves stability, correct bugs, and fixes small rendering issues.</p> <p>The second release candidates for the upcoming stable branch, <a rel="external" href="https://webkitgtk.org/2026/02/06/webkitgtk2.51.91-released.html">WebKitGTK 2.51.91</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.91.html">WPE WebKit 2.51.91</a>, have been published as well. Those using those to preview the upcoming 2.52.x series are encouraged to provide <a rel="external" href="https://bugs.webkit.org/">bug reports in Bugzilla</a> for any issue they may experience.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>We have published a <a rel="external" href="https://blogs.igalia.com/compilers/2026/02/02/implementing-the-temporal-proposal-in-javascriptcore/">blog post</a> on our work implementing the <a rel="external" href="https://tc39.es/proposal-temporal/docs/">Temporal</a> proposal in JavaScriptCore, WebKit's JavaScript engine.</p> </div> <div class="wip-item"> <p>This year's edition of <a rel="external" href="https://fosdem.org/2026/">FOSDEM</a> took place in Brussels between January 31st and February 1st, and featured a number of sessions related to WebKitGTK and WPE:</p> <ul> <li><a rel="external" href="https://fosdem.org/2026/schedule/event/8ZL9BZ-web-platform-on-linux-devices-with-webkit/">The Web Platform on Linux devices with WebKit: where are we now?</a>, by Mario Sánchez, is a good introduction-level talk about the GTK and WPE WebKit ports.</li> <li><a rel="external" href="https://fosdem.org/2026/schedule/event/KMMLGM-webrtc_support_in_webkitgtk_and_wpewebkit_with_gstreamer_current_status_and_plan/">WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Current status and plans</a> by Philippe Normand. Exactly what it says on the tin.</li> <li><a rel="external" href="https://fosdem.org/2026/schedule/event/NJM3KB-mathml-core/">Interop and MathML Core</a> by Eri Pazos, about the ongoing effort to improve how different Web engines handle MathML—including WebKit!</li> </ul> <p>The videos for the talks are already available, too.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #55 2026-02-02T20:11:18+00:00 2026-02-02T20:11:18+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-55/ <p>Update on what happened in WebKit in the week from January 26 to February 2.</p> <p itemprop="abstract"> A calm week for sure! The highlight this week is the fix for scrolling not starting when the main thread is blocked. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/306396@main">Fixed</a> the problem of wheel event async scrolling doesn't start while the main thread is blocked. This should make WebKit feel more responsive even on heavier websites.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #54 2026-01-26T21:00:55+00:00 2026-01-26T21:00:55+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-54/ <p>Update on what happened in WebKit in the week from January 19 to January 26.</p> <p itemprop="abstract"> The main event this week has been the creation of the branch for the upcoming stable series, accompanied by the first release candidate before 2.52.0. But there's more: the WPE port gains hyphenation support and the ability to notify of graphics buffer changes; both ports get graphics fixes and a couple of new Web features, and WPE-Android also gets a new stable release. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/305917@main">Implemented</a> support for the <code>:open</code> pseudo-class on dialog and details elements. This is currently behind the <code>OpenPseudoClass</code> feature flag.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/306152@main">Implemented</a> the <code>source</code> property for <code>ToggleEvent</code>. This can be used to run code dependent on the triggering element in response to a popover or dialog toggle.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/306119@main">Fixed</a> the rendering glitches with wheel event asynchronous scrolling, which occurred when the page was scrolled to areas not covered by tiles while the main thread was blocked.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>Support for <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/hyphens">hyphenation</a> has been <a rel="external" href="https://commits.webkit.org/305816@main">added to WPE</a>. This requires <code>libhyphen</code> and can be disabled at build-time with the <code>USE_LIBHYPHEN=OFF</code> CMake option.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>WPEPlatform <a rel="external" href="https://commits.webkit.org/306008@main">gained support</a> to notify changes in the configuration of graphics buffers allocated to render the contents of a web view, either by handling the <code>WPEView::buffers-changed</code> signal or by overriding the <code>WPEViewClass.buffers_changed</code> virtual function. This feature is mainly useful for platform implementations which may need to perform additional setup in advance, before updated web view contents are provided in the buffers configured by WebKit.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/wpe-android/releases/tag/v0.3.1">WPE-Android 0.3.0</a> has been released, and prebuilt packages are available <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview/">at the Maven Central repository</a>. The main change in this this version is the update to WPE WebKit 2.50.4, which is the most recent stable release.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commits/webkitglib/2.52">A new branch has been created</a> for the upcoming 2.52.x stable release series of the GTK and WPE WebKit ports. The first release candidates from this branch, <a rel="external" href="https://webkitgtk.org/2026/01/23/webkitgtk2.51.90-released.html">WebKitGTK 2.51.90</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.90.html">WPE WebKit 2.51.90</a> are now available. Testing and <a rel="external" href="https://bugs.webkit.org">issue reports in Bugzilla</a> are welcome to help with stabilization before the first stable release, which is planned for mid-March.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #53 2026-01-19T19:25:32+00:00 2026-01-19T19:25:32+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2026/wip-53/ <p>Update on what happened in WebKit in the week from December 26 to January 19.</p> <p itemprop="abstract"> We're back! The first periodical of 2026 brings you performance optimizations, improvements to the memory footprint calculation, new APIs, the removal of the legacy Qt5 WPE backend, and as always, progress on JSC's Temporal implementation. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The memory footprint calculation mechanism <a rel="external" href="https://github.com/WebKit/WebKit/pull/56493">has been unified</a> across GTK, JSC, and WPE ports. Therefore, the expensive <code>/proc/self/smaps</code> is not used anymore and the WPE uses <code>/proc/self/statm</code> with extra cache now to prevent frequent file reading.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/305444@main">Added</a> a new <code>webkit_context_menu_get_position()</code> function to the API that allows obtaining the pointer coordinates, relative to the web view origin, at the moment when a context menu was triggered.</p> <p>Additionally, behaviour of context menus <a rel="external" href="https://commits.webkit.org/305461@main">has been made more consistent</a> between the GTK and WPE ports, and handling of <code>GAction</code> objects attached to menu items has been <a rel="external" href="https://commits.webkit.org/305267@main">rewritten</a> and <a rel="external" href="https://commits.webkit.org/305504@main">improved</a> with the goal of better supporting context menus in the WPE port.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/56210/">fixed a bug</a> in <code>Temporal.PlainTime.from</code> that read options in the wrong order, which caused a test262 test to fail.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/56460">fixed several bugs</a> in <code>PlainYearMonth</code> methods and enabled all <code>PlainYearMonth</code> tests that don't depend on the <code>Intl</code> object. This completes the implementation of Temporal <code>PlainYearMonth</code> objects in JSC.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>In WebKit's Skia graphics backend, <a rel="external" href="https://commits.webkit.org/304898@main">fixed GrDirectContext management</a> for GPU resources. Operations on GPU-backed resources must use the context that created them, not the current thread's context. The fix stores <code>GrDirectContext</code> at creation time for <code>NativeImage</code> and uses <code>surface-&gt;recordingContext()-&gt;asDirectContext()</code> for SkSurface, correcting multiple call sites that previously used the shared display's context incorrectly.</p> </div> <div class="wip-item"> <p>Damage propagation <a rel="external" href="https://github.com/WebKit/WebKit/pull/55697">has been added</a> to the recently-added, non-composited mode in WPE.</p> </div> <div class="wip-item"> <p>In WebKit's Skia graphics backend for GTK/WPE, <a rel="external" href="https://commits.webkit.org/305273@main">added canvas 2D operation recording</a> for GPU-accelerated rendering. Instead of executing drawing commands immediately, operations are recorded into an <code>SkPicture</code> and replayed in batch when the canvas contents are needed, reducing GPU state change overhead for workloads with many small drawing operations, improving the MotionMark <em>Canvas Lines</em> performance on embedded devices with low-end tiled GPUs.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>Due to Qt5 not receiving maintenance since mid-2025, the WPE Qt5 binding that used the legacy libwpe API <a rel="external" href="https://commits.webkit.org/305824@main">has been removed</a> from the tree. The Qt6 binding <a rel="external" href="https://github.com/WebKit/WebKit/tree/main/Source/WebKit/UIProcess/API/wpe/qt6">remains part of the source tree</a>, which is a better alternative that allows using supported Qt versions, and is built atop the new WPEPlatform API, making it a future-proof option. The WPE Qt API may be enabled when configuring the build with CMake, using the <code>ENABLE_WPE_QT_API</code> option.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The <code>WPEScreenSyncObserver</code> class has been improved to <a rel="external" href="https://commits.webkit.org/305509@main">support multiple callbacks</a>. Instead of a single callback set with <code>wpe_screen_sync_observer_set_callback()</code>, clients of the API can now use <code>wpe_screen_sync_observer_add_callback()</code> and <code>wpe_screen_sync_observer_remove_callback()</code>. The observer will be paused automatically when there are no callbacks attached to it.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #52 2025-12-25T18:26:43+00:00 2025-12-25T18:26:43+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-52/ <p>Update on what happened in WebKit in the week from December 16 to December 25.</p> <p itemprop="abstract"> 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. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/52066">Landed support for <code>font-size: math</code></a>. Now <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/math-depth"><code>math-depth</code></a> can automatically control the font size inside of <code>&lt;math&gt;</code> blocks, making scripts and nested content smaller to improve readability and presentation.</p> </div> <div class="wip-item"> <p>Two new functions <a rel="external" href="https://commits.webkit.org/304810@main">have been added</a> to the public API:</p> <ul> <li> <p><code>webkit_context_menu_item_get_gaction_target()</code> to obtain the <code>GVariant</code> associated with a context menu item created from a <code>GAction</code>.</p> </li> <li> <p><code>webkit_context_menu_item_get_title()</code> may be used to obtain the title of a context menu item.</p> </div> <div class="wip-item"> </li> </ul> <p><a rel="external" href="https://commits.webkit.org/304553@main">Improved timers</a>, by making some of them use the <a rel="external" href="https://lwn.net/Articles/251413/">timerfd API</a>. 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 <code>timerfd_create</code> and <code>timerfd_settime</code> functions are not available will continue working as before.</p> </div> <div class="wip-item"> <p>On the WebXR front, support <a rel="external" href="https://commits.webkit.org/304631@main">was added</a> for <code>XR_TRACKABLE_TYPE_DEPTH_ANDROID</code> through the <code>XR_ANDROID_trackables</code> extension, which allows reporting depth information for elements that take part in hit testing.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/54518">a change</a> that implements non-composited page rendering in the WPE port. This new mode is disabled by default, and may be activated by disabling the <code>AcceleratedCompositing</code> 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.</p> </div> <div class="wip-item"> <p>Since version 2.10.2, the <a rel="external" href="https://freetype.org">FreeType</a> library can be built with direct support for loading fonts in the <a rel="external" href="https://www.w3.org/TR/WOFF2/">WOFF2</a> format. Until now, the WPE and GTK WebKit ports used <a rel="external" href="https://github.com/google/woff2">libwoff2</a> in an intermediate step to convert those fonts on-the-fly before handing them to FreeType for rendering. The CMake build system will now <a rel="external" href="https://commits.webkit.org/304864@main">detect when FreeType supports WOFF2 directly</a> and skip the conversion step. This way, in systems which provide a suitable version of FreeType, <code>libwoff2</code> will no longer be needed.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The legacy libwpe-based API <a rel="external" href="https://commits.webkit.org/304671@main">can now be disabled at build time</a>, by toggling the <code>ENABLE_WPE_LEGACY_API</code> CMake option. This allows removal of uneeded code when an application is exclusively using the new WPEPlatform API.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://developer.android.com/ndk/reference/group/a-hardware-buffer">AHardwareBuffer</a> is <a rel="external" href="https://commits.webkit.org/304567@main">now supported</a> 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.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/12/16/webkitgtk2.50.4-released.html">WebKitGTK 2.50.4</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.50.4.html">WPE WebKit 2.50.4</a> 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, <code>WSA-2025-0010</code>, has been published (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0010.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0010.html">WPE</a>).</p> <p>Development releases of <a rel="external" href="https://webkitgtk.org/2025/12/19/webkitgtk2.51.4-released.html">WebKitGTK 2.51.4</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.4.html">WPE WebKit 2.51.4</a> are available as well, and may be used to preview upcoming features. As usual, bug reports are <a rel="external" href="https://bugs.webkit.org">welcome in Bugzilla</a>.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Paweł Lampe has published a <a rel="external" href="https://blogs.igalia.com/plampe/wpe-performance-considerations-pre-rendering/">blog post</a> that discusses various pre-rendering techniques useful in the context of using WPE on embedded devices.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #51 2025-12-15T19:58:42+00:00 2025-12-15T19:58:42+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-51/ <p>Update on what happened in WebKit in the week from December 8 to December 15.</p> <p itemprop="abstract"> In this end-of-year special have a new GMallocString helper that makes management of malloc-based strings more efficient, development releases, and a handful of advancements on JSC's implementation of Temporal, in particular the PlainYearMonth class. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Added <a rel="external" href="https://github.com/WebKit/WebKit/pull/55162">GMallocString</a> class to WTF to adopt UTF8 C strings and make them WebKit first class citizens efficiently (no copies). Applied in GStreamer code together with <a rel="external" href="https://github.com/WebKit/WebKit/pull/51259">other improvements by using CStringView</a>. Fixed other <a rel="external" href="https://github.com/WebKit/WebKit/pull/54312">two</a> <a rel="external" href="https://github.com/WebKit/WebKit/pull/54762">bugs</a> about string management.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/55153">added the <code>with</code> method for <code>PlainYearMonth</code> objects</a>, as well as <a rel="external" href="https://github.com/WebKit/WebKit/pull/55076">the <code>equals</code>, <code>compare</code>, and <code>valueOf</code> methods</a>, <a rel="external" href="https://github.com/WebKit/WebKit/pull/54800">and also the <code>from</code> method</a>. Also <a rel="external" href="https://github.com/WebKit/WebKit/pull/55201">implemented the <code>toPlainDate</code> method for PlainYearMonth objects</a>.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Development releases of <a rel="external" href="https://webkitgtk.org/2025/12/09/webkitgtk2.51.3-released.html">WebKitGTK 2.51.3</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.3.html">WPE WebKit 2.51.3</a> are now available. These include a number of API additions and new features, and are intended to allow interested parties to test those in advance, prior to the next stable release series. As usual, bug reports are <a rel="external" href="https://bugs.webkit.org/">welcome in Bugzilla</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #50 2025-12-08T20:26:32+00:00 2025-12-08T20:26:32+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-50/ <p>Update on what happened in WebKit in the week from December 1 to December 8.</p> <p itemprop="abstract"> In this edition of the periodical we have further advancements on the Temporal implementation, support for Vivante super-tiled format, and an adaptation of the DMA-BUF formats code to the Android port. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/54717">Implemented</a> the <code>toString</code>, <code>toJSON</code>, and <code>toLocaleString</code> methods for <code>PlainYearMonth</code> objects in JavaScriptCore's implementation of Temporal.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><code>BitmapTexture</code> and <code>TextureMapper</code> <a rel="external" href="https://commits.webkit.org/303849@main">were prepared</a> to handle textures where the logical size (e.g. 100×100) differs from the allocated size (e.g. 128×128) due to alignment requirements. This allowed <a rel="external" href="https://commits.webkit.org/303900@main">to add support</a> for using memory-mapped GPU buffers in the Vivante super-tiled format available on i.MX platforms. Set <code>WEBKIT_SKIA_USE_VIVANTE_SUPER_TILED_TILE_TEXTURES=1</code> to activate at runtime.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The <code>WPEBufferDMABufFormats</code> class has been <a rel="external" href="https://commits.webkit.org/303891@main">renamed</a> to <code>WPEBufferFormats</code>, as it can be used in situations where mechanisms other than DMA-BUF may be used for buffer sharing—on Android targets <a rel="external" href="https://developer.android.com/ndk/reference/group/a-hardware-buffer">AHardwareBuffer</a> is used instead, for example. The naming change involved also <code>WPEBufferFormatsBuilder</code> (renamed from <code>WPEBufferDMABufFormatsBuilder</code>), and methods and signals in other classes that use these types. Other than the renames, there is no change in functionality.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #49 2025-12-02T14:15:36+00:00 2025-12-02T14:15:36+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-49/ <p>Update on what happened in WebKit in the week from November 24 to December 1.</p> <p itemprop="abstract"> The main highlights for this week are the completion of `PlainMonthDay` in Temporal, moving networking access for GstWebRTC to the WebProcess, and Xbox Cloud Gaming now working in the GTK and WPE ports. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://xbox.com/play">Xbox Cloud Gaming</a> is now usable in WebKitGTK and WPE with the GstWebRTC backend, we had to fix <a rel="external" href="https://commits.webkit.org/303668@main">non-spec compliant ICE candidates handling</a> and add a <a rel="external" href="https://commits.webkit.org/303669@main">WebRTC quirk forcing <code>max-bundle</code> in PeerConnections</a> to make it work. Happy cloud gaming!</p> </div> <div class="wip-item"> <p>Support for remote inbound RTP statistics was improved in <a rel="external" href="https://commits.webkit.org/303671@main">303671@main</a>, we now properly report <code>framesPerSecond</code> and <code>totalDecodeTime</code> metrics, those fields are used in the Xbox Cloud Gaming service to show live stats about the connection and video decoder performance in an overlay.</p> </div> <div class="wip-item"> <p>The GstWebRTC backend now relies on <a rel="external" href="https://github.com/ystreet/librice">librice</a> for its <a rel="external" href="https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment">ICE</a>. The Sans-IO architecture of librice allows us to keep the WebProcess sandboxed and to route WebRTC-related UDP and (eventually) TCP packets using the NetworkProcess. This work landed in <a rel="external" href="https://commits.webkit.org/303623@main">303623@main</a>. The GNOME SDK should also soon <a rel="external" href="https://gitlab.gnome.org/GNOME/gnome-build-meta/-/merge_requests/4146">ship librice</a>.</p> </div> <div class="wip-item"> <p>Support for seeking in <code>loop</code>ing videos was fixed in <a rel="external" href="https://commits.webkit.org/303539@main">303539@main</a>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>Implemented the <a rel="external" href="https://github.com/WebKit/WebKit/pull/54563"><code>valueOf</code></a> and <a rel="external" href="https://github.com/WebKit/WebKit/pull/54342"><code>toPlainDate</code></a> for <code>PlainMonthDay</code> objects. This completes the implementation of <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal">Temporal</a> <code>PlainMonthDay</code> objects in JSC!</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>The GTK port has <a rel="external" href="https://commits.webkit.org/303532@main">gained support</a> for interpreting touch input as <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events">pointer events</a>. This matches the behaviour of other browsers by following the corresponding specifications.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/54398">Fixed</a> an issue that prevented WPE from processing further input events after receiving a secondary mouse button press.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/303518@main">Fixed</a> an issue that caused right mouse button clicks to prevent processing of further pointer events.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>We landed a <a rel="external" href="https://commits.webkit.org/303531@main">patch</a> to add a new signal in <code>WPEDisplay</code> to notify when the connection to the native display has been lost.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>Modernized the CMake modules used to find <a rel="external" href="https://commits.webkit.org/303333@main">libtasn1</a>, <a rel="external" href="https://commits.webkit.org/303341@main">libsecret</a>, <a rel="external" href="https://commits.webkit.org/303118@main">libxkbcommon</a>, <a rel="external" href="https://commits.webkit.org/303127@main">libhyphen</a>, and <a rel="external" href="https://commits.webkit.org/303387@main">Enchant</a> libraries.</p> <p>Note that this work removed the support for building against <a rel="external" href="https://rrthomas.github.io/enchant/">Enchant</a> 1.x, and only version 2 will be supported. The first stable release to require Enchant 2.x will be 2.52.0 due in March 2026. Major Linux and BSD distributions have included Enchant 2 packages for years, and therefore this change is not expected to cause any trouble. The Enchant library is used by the GTK port for spell checking.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>We have published <a rel="external" href="https://conflor.es/blog/2025-11-27-interop-and-mathml/">an article</a> detailing our work making <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/MathML">MathML</a> interoperable across browser engines! It has live demonstrations and feature tables with our progress on WebKit support.</p> </div> <div class="wip-item"> <p>We have published new blogs post highlighting the most important changes in both <a rel="external" href="https://wpewebkit.org/blog/2025-11-27-wpewebkit-2.50.html">WPE WebKit</a> and <a rel="external" href="https://webkitgtk.org/2025/11/26/webkitgtk-2.50.html">WebKitGTK</a> 2.50. Enjoy!</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #48 2025-11-24T20:12:28+00:00 2025-11-24T20:12:28+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-48/ <p>Update on what happened in WebKit in the week from November 17 to November 24.</p> <p itemprop="abstract"> In this week's rendition, the WebView snapshot API was enabled on the WPE port, further progress on the Temporal and Trusted Types implementations, and the release of WebKitGTK and WPE WebKit 2.50.2. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>A WebKitImage-based implementation of WebView snapshot <a rel="external" href="https://commits.webkit.org/303449@main">landed</a> this week, enabling this feature on WPE when it was previously only available in GTK. This means you can now use <code>webkit_web_view_get_snapshot</code> (and <code>webkit_web_view_get_snapshot_finish</code>) to get a WebKitImage-representation of your screenshot.</p> <p>WebKitImage implements the <code>GLoadableIcon</code> interface (as well as <code>GIcon</code>'s), so you can get a PNG-encoded image using <code>g_loadable_icon_load</code>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/303376@main">Remove</a> incorrect early return in Trusted Types DOM attribute handling to align with spec changes.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/52251">implemented</a> the <code>with</code> method for <code>PlainMonthDay</code> objects.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/54281">implemented</a> the <code>from</code> and <code>equals</code> methods for <code>PlainMonthDay</code> objects.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/11/19/webkitgtk2.50.2-released.html">WebKitGTK 2.50.2</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.50.2.html">WPE WebKit 2.50.2</a> have been released.</p> <p>These stable releases include a number of patches for security issues, and as such a new security advisory, <code>WSA-2025-0008</code>, has been issued (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0008.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0008.html">WPE</a>).</p> <p>It is recommend to apply an <a rel="external" href="https://github.com/WebKit/WebKit/commit/730bffd856d2a1e56dd3bd2a0702282f19c5242a">additional patch</a> that fixes building with the JavaScriptCore “CLoop” interpreter is enabled, which is typicall for architectures where JIT compilation is unsupported. Releases after 2.50.2 will include it and manual patching will no longer be needed.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #47 2025-11-17T21:22:23+00:00 2025-11-17T21:22:23+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-47/ <p>Update on what happened in WebKit in the week from November 10 to November 17.</p> <p itemprop="abstract"> This week's update is composed of a new CStringView internal API, more MathML progress with the implementation of the "scriptlevel" attribute, the removal of the Flatpak-based SDK, and the maintanance update of WPEBackend-fdo. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/53028">Implement</a> the MathML <code>scriptlevel</code> attribute using <code>math-depth</code>.</p> </div> <div class="wip-item"> <p>Finished <a rel="external" href="https://github.com/WebKit/WebKit/pull/51619">implementing</a> CStringView, which is a wrapper around UTF8 C strings. It allows you to recover the string without making any copies and perform string operations safely by taking into account the encoding at compile time.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://wpewebkit.org/release/wpebackend-fdo-1.16.1.html">WPEBackend-fdo 1.16.1</a> has been released. This is a maintenance update which adds compatibility with newer Mesa versions.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>Most of the Flatpak-based SDK was <a rel="external" href="https://commits.webkit.org/303035@main">removed</a>. Developers are warmly encouraged to use the <a rel="external" href="https://github.com/Igalia/webkit-container-sdk">new SDK</a> for their contributions to the Linux ports, this SDK has been successfully deployed on EWS and post-commits bots.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #46 2025-11-10T23:04:17+00:00 2025-11-10T23:04:17+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-46/ <p>Update on what happened in WebKit in the week from November 3 to November 10.</p> <p itemprop="abstract"> This week brought a hodgepodge of fixes in Temporal and multimedia, a small addition to the public API in preparation for future work, plus advances in WebExtensions, WebXR, and Android support. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The platform-independent part of the <a rel="external" href="https://www.w3.org/TR/webxr-hit-test-1/">WebXR Hit Test Module</a> has been <a rel="external" href="https://commits.webkit.org/302646@main">implemented</a>. The rest, including the <code>FakeXRDevice</code> mock implementation used for testing will be done later.</p> </div> <div class="wip-item"> <p>On the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> front, parts of the <code>WebExtensionCallbackHandler</code> code <a rel="external" href="https://commits.webkit.org/302549@main">have been rewritten</a> to use more C++ constructs and helper functions, in preparation to share more code among the different WebKit ports.</p> </div> <div class="wip-item"> <p>A new <code>WebKitImage</code> utility class <a rel="external" href="https://commits.webkit.org/302720@main">landed</a> this week. This image abstraction is one of the steps towards delivering a <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=301086">new improved API for page favicons</a>, and it is also expected to be useful for the WebExtensions work, and to enable the <code>webkit_web_view_get_snapshot()</code> API for the WPE port.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Videos with BT2100-PQ colorspace are now <a rel="external" href="https://commits.webkit.org/302751@main">tone-mapped to SDR</a> in WebKit's compositor, ensuring colours do not appear washed out.</p> </div> <div class="wip-item"> <p>Lots of deadlock fixes this week, one among many in the <a rel="external" href="https://commits.webkit.org/302641@main">MediaStream GStreamer source element</a>.</p> </div> <div class="wip-item"> <p>Video frame rendering to WebGL was <a rel="external" href="https://commits.webkit.org/302474@main">fixed</a>. Another pending improvement is GPU-to-GPU texture copies, which might be coming soon.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JavaScriptCore's implementation of <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal">Temporal</a> received a number of improvements this week:</p> <ul> <li> <p><a rel="external" href="https://commits.webkit.org/302573@main">Fixed a bug</a> that would cause wrong results when adding a duration with a very large microseconds or nanoseconds value to a <code>PlainTime</code>.</p> </li> <li> <p><a rel="external" href="https://commits.webkit.org/302403@main">Fixed a rounding bug</a> of <code>Instant</code> values.</p> </li> <li> <p><a rel="external" href="https://commits.webkit.org/302460@main">Fixed a bug</a> that resulted in incorrect printing of certain <code>Instant</code> values before the Epoch.</p> </li> <li> <p><a rel="external" href="https://commits.webkit.org/302413@main">Fixed a bug</a> that resulted in wrong results instead of exceptions when a date addition operation would result in an out-of-range date.</p> </div> </li> </ul> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>One of the last pieces needed to have the WPEPlatform API working on Android <a rel="external" href="https://commits.webkit.org/302638@main">has been merged</a>: a custom platform EGL display implementation, and enabling the default display as fallback.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>The dates for the next <a rel="external" href="https://webengineshackfest.org/">Web Engines Hackfest</a> have been announced: it will take place from Monday, June 15th to Wednesday, June 17th. As it has been the case in the last years, it will be possible to attend both on-site, and remotely for those who cannot to travel to A Coruña.</p> </div> <div class="wip-item"> <p>The video recording for Adrian Pérez's “WPE Android 🤖 State of the Bot” talk from this year's edition of the <a rel="external" href="https://webkit.org/meeting">WebKit Contributors' Meeting</a> has been <a rel="external" href="https://www.youtube.com/watch?v=arH93B82SJM">published</a>. This was an update on what the Igalia WebKit team has been done during the last year to improve WPE WebKit on Android, and what is coming up next.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #45 2025-11-03T19:16:30+00:00 2025-11-03T19:16:30+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-45/ <p>Update on what happened in WebKit in the week from October 27 to November 3.</p> <p itemprop="abstract"> A calmer week this time! This week we have the GTK and WPE ports implementing the RunLoopObserver infrastructure, which enables more sophisticated scheduling in WebKit Linux ports, as well as more information in webkit://gpu. On the Trusted Types front, the timing of check was changed to align with spec changes. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Implemented the <a rel="external" href="https://commits.webkit.org/301378@main">RunLoopObserver</a> infrastructure for GTK and WPE ports, a critical piece of technology previously exclusive to Apple ports that enables sophisticated scheduling features like <code>OpportunisticTaskScheduler</code> for optimal garbage collection timing.</p> <p>The implementation refactored the GLib run loop to notify clients about activity-state transitions (<code>BeforeWaiting</code>, <code>Entry</code>, <code>Exit</code>, <code>AfterWaiting</code>), then <a rel="external" href="https://commits.webkit.org/302026@main">moved from timer-based to observer-based</a> layer flushing for more precise control over rendering updates. Finally support was added to support cross-thread scheduling of <code>RunLoopObserver</code>s, allowing <a rel="external" href="https://commits.webkit.org/302433@main">the ThreadedCompositor to use them</a>, enabling deterministic composition notifications across thread boundaries.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/302272@main">Changed</a> timing of Trusted Types checks within DOM attribute handling to align with spec changes.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>The <code>webkit://gpu</code> page now <a rel="external" href="https://commits.webkit.org/302185@main">shows</a> <a rel="external" href="https://commits.webkit.org/302293@main">more</a> <a rel="external" href="https://commits.webkit.org/302337@main">information</a> like the list of preferred buffer formats, the list of supported buffer formats, threaded rendering information, number of MSAA samples, view size, and toplevel state.</p> <p>It is also <a rel="external" href="https://commits.webkit.org/302341@main">now possible</a> to make the page autorefresh every the given amount of seconds by passing a <code>?refresh=&lt;seconds&gt;</code> parameter in the URL.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #44 2025-10-28T14:31:37+00:00 2025-10-28T14:31:37+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-44/ <p>Update on what happened in WebKit in the week from October 21 to October 28.</p> <p itemprop="abstract"> This week has again seen a spike in activity related to WebXR and graphics performance improvements. Additionally, we got in some MathML additions, a fix for hue interpolation, a fix for WebDriver screenshots, development releases, and a blog post about memory profiling. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Support for <a rel="external" href="https://www.w3.org/TR/webxrlayers-1/">WebXR Layers</a> has seen the <a rel="external" href="https://commits.webkit.org/301937@main">very first</a> <a rel="external" href="https://commits.webkit.org/301941@main">changes needed</a> to have them working on WebKit. This is expected to take time to complete, but should bring improvements in performance, rendering quality, latency, and power consumption down the road.</p> </div> <div class="wip-item"> <p>Work has started on the <a rel="external" href="https://www.w3.org/TR/webxr-hit-test-1/">WebXR Hit Test Module</a>, which will allow WebXR experiences to check for real world surfaces. The JavaScript API bindings <a rel="external" href="https://commits.webkit.org/301799@main">were added</a>, followed by an <a rel="external" href="https://commits.webkit.org/302060@main">initial XRRay implementation</a>. More work is needed to actually provide data from device sensors.</p> </div> <div class="wip-item"> <p>Now that the WebXR implementation used for the GTK and WPE ports is closer to the Cocoa ones, it was possible to <a rel="external" href="https://commits.webkit.org/302027@main">unify the code</a> used to handle opaque buffers.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/51271">Implemented</a> the <code>text-transform: math-auto</code> CSS property, which replaces the legacy <code>mathvariant</code> system and is used to make identifiers italic in MathML Core.</p> </div> <div class="wip-item"> <p><a href="https://blogs.igalia.com/webkit/blog/2025/wip-44/github.com/WebKit/WebKit/pull/52063">Implemented</a> the <code>math-depth</code> CSS extension from MathML Core.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/CSS/hue-interpolation-method">hue interpolation method</a> for gradients has been <a rel="external" href="https://commits.webkit.org/301859@main">fixed</a>. This is expected to be part of the upcoming 2.50.2 stable release.</p> </div> <div class="wip-item"> <p>Usage of <a rel="external" href="https://en.wikipedia.org/wiki/Multisample_anti-aliasing">Multi-Sample Antialiasing</a> (MSAA) has <a rel="external" href="https://commits.webkit.org/302015@main">been enabled</a> when using GPU rendering, and then <a rel="external" href="https://commits.webkit.org/302227@main">further changed</a> to use <a rel="external" href="https://groups.google.com/g/skia-discuss/c/RcynJQaRryk/m/8petvh_RCwAJ">dynamic MSAA</a> to improve performance.</p> </div> <div class="wip-item"> <p>Paths that contain a single arc, oval, or line have been changed to <a rel="external" href="https://commits.webkit.org/302081@main">use a specialized code path</a>, resulting in improved performance.</p> </div> <div class="wip-item"> <p>WebGL content rendering will be handled by a new isolated process (dubbed “GPU Process”) <a rel="external" href="https://commits.webkit.org/301939@main">by default</a>. This is the first step towards moving more graphics processing out of the process that handles processing Web content (the “Web Process”), which will result in increased resilience against buggy graphics drivers and certain kinds of malicious content.</p> </div> <div class="wip-item"> <p>The internal <code>webkit://gpu</code> page has been <a rel="external" href="https://commits.webkit.org/302185@main">improved</a> to also display information about the graphics configuration used in the rendering process.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The new WPE Platform, when using Skia (the default), <a rel="external" href="https://commits.webkit.org/301948@main">now takes WebDriver screenshots in the UI Process</a>, using the final assembled frame that was sent to the system compositor. This fixes the issues of some operations like 3D CSS animations that were not correctly captured in screenshots.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>The first development releases for the current development cycle have been published: <a rel="external" href="https://webkitgtk.org/2025/10/24/webkitgtk2.51.1-released.html">WebKitGTK 2.51.1</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.51.1.html">WPE WebKit 2.51.1</a>. These are intended to let third parties test upcoming features and improvements and as such bug reports for those are particularly <a rel="external" href="https://bugs.webkit.org/">welcome in Bugzilla</a>. We are particularly interested in reports related to WebGL, now that it is handled in an isolated process.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Paweł Lampe has published a <a rel="external" href="https://blogs.igalia.com/plampe/tracking-webkit-s-memory-allocations-with-malloc-heap-breakdown/">blog post</a> that discusses GTK/WPE WebKit memory profiling using industry-standard tools and a built-in "Malloc Heap Breakdown" WebKit feature.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #43 2025-10-20T20:35:17+00:00 2025-10-20T20:35:17+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-43/ <p>Update on what happened in WebKit in the week from October 13 to October 20.</p> <p itemprop="abstract"> This week was calmer than previous week but we still had some meaningful updates. We had a Selenium update, improvements to how tile sizes are calculated, and a new Igalian in the list of WebKit committer! </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Selenium's <a rel="external" href="https://www.selenium.dev/documentation/webdriver/elements/locators/#relative-locators">relative locators</a> are now supported after <a rel="external" href="https://commits.webkit.org/301445@main">commit 301445@main</a>. Before, finding elements with <code>locate_with(By.TAG_NAME, "input").above({By.ID: "password"})</code> could lead to "Unsupported locator strategy" errors.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>A <a rel="external" href="https://commits.webkit.org/301398@main">patch landed</a> to compute the layers tile size, using a different strategy depending on whether GPU rendering is enabled, which improved the performance for both GPU and CPU rendering modes.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Our coworker Philip Chimento <a rel="external" href="https://github.com/WebKit/WebKit/pull/52338">gained WebKit committer status</a>!</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #42 2025-10-13T20:02:47+00:00 2025-10-13T20:02:47+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-42/ <p>Update on what happened in WebKit in the week from October 6 to October 13.</p> <p itemprop="abstract"> Another week with many updates in Temporal, the automated testing infrastructure is now running WebXR API tests; and WebKitGTK gets a fix for the janky Inspector resize while it drops support for libsoup 2. Last but not least, there are fresh releases of both the WPE and GTK ports including a security fix. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>When using libwebrtc, support has been added to <a rel="external" href="https://commits.webkit.org/301397@main">register MDNS addresses of local networks</a> as ICE candidates, to avoid exposing private addresses.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JavaScriptCore's implementation of <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal">Temporal</a> received a flurry of improvements:</p> <ul> <li> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/52042">Implemented</a> the <code>toString</code>, <code>toJSON</code>, and <code>toLocaleString</code> methods for the <code>PlainMonthDay</code> type.</p> </li> <li> <p>Brought the implementation of the <code>round</code> method on <code>TemporalDuration</code> objects up to spec. <a rel="external" href="https://github.com/WebKit/WebKit/pull/51897">This</a> is the last in the series of patches that refactor <code>TemporalDuration</code> methods to use the <code>InternalDuration</code> type, enabling mathematically precise computations on time durations.</p> </li> <li> <p>Implemented <a rel="external" href="https://github.com/WebKit/WebKit/pull/52010">basic support</a> for the <code>PlainMonthDay</code> type, without most methods yet.</p> </li> <li> <p>Brought the implementations of the <code>since</code> and <code>until</code> functions on Temporal <code>PlainDate</code> objects <a rel="external" href="https://github.com/WebKit/WebKit/pull/51889">up to spec</a>, improving the precision of computations.</p> </div> </li> </ul> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>WebKitGTK will <a rel="external" href="https://commits.webkit.org/301131@main">no longer</a> support using libsoup 2 for networking starting with version 2.52.0, due in March 2026. An <a rel="external" href="https://webkitgtk.org/2025/10/07/webkitgtk-soup2-deprecation.html">article in the website</a> has more details and migrations tips for application developers.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/301119@main">Fixed</a> <a rel="external" href="https://youtu.be/D2HDOnXup0k">the jittering bug</a> of the docked Web Inspector window width and height while dragging the resizer.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/10/10/webkitgtk2.50.1-released.html">WebKitGTK 2.50.1</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.50.1.html">WPE WebKit 2.50.1</a> have been released. These include a number of small fixes, improved text rendering performance, and a fix for audio playback on Instagram.</p> <p>A security advisory, <code>WSA-2025-0007</code> (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0007.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0007.html">WPE</a>), covers one security issue fixed in these releases. As usual, we recommend users and distributors to keep their WPE WebKit and WebKitGTK packages updated.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/52114">Updated the API test runner</a> to run <code>monado-service</code> without standard input using <code>XRT_NO_STDIN=TRUE</code>, which allows the WPE and GTK bots to start validating the WebXR API.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/51318">Submitted a change</a> that allows relaxing the DMA-BUF requirement when creating an OpenGL display in the <code>OpenXRCoordinator</code>, so that bots can run API tests in headless environments that don't have that extension.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #41 2025-10-06T20:20:37+00:00 2025-10-06T20:20:37+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-41/ <p>Update on what happened in WebKit in the week from September 29 to October 6.</p> <p itemprop="abstract"> Another exciting weekful of updates, this time we have a number of fixes on MathML, content secutiry policy, and Aligned Trusted types, public API for WebKitWebExtension has finally been added, and fixed enumeration of speaker devices. In addition to that, there's ongoing work to improved compatibility for broken AAC audio streams in MSE, a performance improvement to text rendering with Skia was merged, and fixed multi-plane DMA-BUF handling in WPE. Last but not least, The 2026 edition of the Web Engines Hackfest has been announced! It will take place from June 15th to the 17th. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300580@main">Fixed</a> rendering for unknown elements in MathML.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300770@main">Fixed</a> incorrect parsing of malformed <code>require-trusted-types-for</code> CSP directive.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300832@main">Align</a> reporting of Trusted Types violations with spec in case of multiple Content-Security-Policy headers.</p> </div> <div class="wip-item"> <p>Aligned Trusted Types event handler <a rel="external" href="https://commits.webkit.org/300783@main">namespace checks</a> with an update to the specification.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300892@main">Fixed</a> some incorrect handling of <code>null</code> or <code>undefined</code> policy values in Trusted Types.</p> </div> <div class="wip-item"> <p>On the WebExtensions front, the <a rel="external" href="https://commits.webkit.org/301078@main">WebKitWebExtension API has finally been added</a>, after <a rel="external" href="https://commits.webkit.org/300905@main">porting some more code</a> from Objective-C code to C++.</p> </div> <div class="wip-item"> <p>Improved alignment with MathML Core by making <a rel="external" href="https://commits.webkit.org/300587@main"><code>mfenced</code></a>, <a rel="external" href="https://commits.webkit.org/300875@main"><code>semantics</code> and <code>maction</code></a> render like an <code>mrow</code>, <a rel="external" href="https://commits.webkit.org/300817@main">ignoring the <code>subscriptshift</code>/<code>superscriptshift</code> legacy attributes</a> and <a rel="external" href="https://commits.webkit.org/300688@main">cleaning the User-Agent stylesheet</a> to more closely match the spec.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Speaker device enumeration has been <a rel="external" href="https://commits.webkit.org/301082@main">fixed</a> to properly enumerate ALSA PCM devices, while improving audio output device handling in general.</p> </div> <div class="wip-item"> <p>Improved compatibility for broken AAC audio streams in MSE is currently <a rel="external" href="https://github.com/WebKit/WebKit/pull/51805">in review</a>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/51637">improved the precision of addition and subtraction on Durations</a>.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/50468">improved the precision of calculations</a> with the <code>total()</code> function on Durations. This was joint work with Philip Chimento.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/51723">continued refactoring</a> addition for Durations to be closer to the spec.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed a <a rel="external" href="https://commits.webkit.org/300818@main">patch</a> to build a <code>SkTextBlob</code> when recording <code>DrawGlyphs</code> operations for the <code>GlyphDisplayListCache</code>, which shows a significant improvement in MotionMark “design” test when using GPU rendering.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300687@main">Improved</a> <code>wpe_buffer_import_to_pixels()</code> to work correctly on non-linear and multi-plane DMA-BUF buffers by taking into account their modifiers when mapping the buffers.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>The 2026 edition of the <a rel="external" href="https://webengineshackfest.org/">Web Engines Hackfest</a> has <a rel="external" href="https://www.igalia.com/2025/10/01/Announcing-the-16th-Web-Engines-Hackfest.html">been announced</a>, and it will take place from June 15th to the 17th.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #40 2025-09-29T20:34:10+00:00 2025-09-29T20:34:10+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-40/ <p>Update on what happened in WebKit in the week from September 22 to September 29.</p> <p itemprop="abstract"> Many news this week! We've got a performance improvement in the Vector implementation, a fix that makes a SVG attribute work similarly to HTML, and further advancements on WebExtension support. We also saw an update to WPE Android, the test infrastructure can now run WebXR tests, WebXR support in WPE Android, and a rather comprehensive blog post about the performance considerations of WPE WebKit with regards to the DOM tree. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Vector copies performance was <a rel="external" href="https://github.com/WebKit/WebKit/commit/fb30ea0502c628aa0c469505cc754deac4b767c6">improved</a> across the board, and specially for MSE use-cases</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300462@main">Fixed</a> SVG <code>&lt;a&gt;</code> rel attribute to work the same as HTML  <code>&lt;a&gt;</code>'s.</p> </div> <div class="wip-item"> <p>Work on WebExtension support continues with more Objective-C converted to C++, which allows all WebKit ports to reuse the <a rel="external" href="https://commits.webkit.org/300669@main">same utility code</a> in all ports.</p> </div> <div class="wip-item"> <p>Added <a rel="external" href="https://commits.webkit.org/300383@main">handling of the <code>visibilityState</code> value</a> for inline WebXR sessions.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>WPE now supports importing pixels from non-linear DMABuf formats since <a rel="external" href="https://commits.webkit.org/300687@main">commit 300687@main</a>. This will help the work to make WPE take screenshots from the UIProcess (<a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=299732">WIP</a>) instead of from the WebProcess, so they match better what's actually shown on the screen.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/300376@main">Added</a> support for the WebXR <a rel="external" href="https://www.w3.org/TR/webxr/#dom-xrrenderstate-passthroughfullyobscured">passthroughFullyObscured rendering hint</a> when using the OpenXR backend.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The build system will now <a rel="external" href="https://commits.webkit.org/300312@main">compile WPEPlatform with warning-as-errors</a> in developer builds. This helps catch potential programming errors earlier.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>WPE-Android is <a rel="external" href="https://github.com/Igalia/wpe-android/pull/215">being updated</a> to <a rel="external" href="https://github.com/Igalia/wpe-android-cerbero/pull/80">use WPE WebKit 2.50.0</a>. As usual, the ready-to-use packages will arrive in a few days to the Maven Central repository.</p> </div> <div class="wip-item"> <p>Added support to run WebXR content on Android, by <a rel="external" href="https://commits.webkit.org/300466@main">using AHarwareBuffer</a> to share graphics buffers between the main process and the content rendering process. This required coordination to make the WPE-Android runtime glue <a rel="external" href="https://github.com/Igalia/wpe-android/pull/214">expose the current JavaVM and Activity</a> in a way that WebKit could then use to initialize the OpenXR platform bindings.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Paweł Lampe has published in his blog the <a rel="external" href="https://blogs.igalia.com/plampe/wpe-performance-considerations-dom-tree/">first post in a series</a> about different aspects of Web engines that affect performance, with a focus on WPE WebKit and interesting comparisons between desktop-class hardware and embedded devices. This first article analyzes how “idle” nodes in the DOM tree render measurable effects on performance (pun intended).</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>The test infrastructure can now <a rel="external" href="https://commits.webkit.org/300454@main">run API tests</a> that need WebXR support, by using a dummy OpenXR compositor provided by the <a rel="external" href="https://monado.dev/">Monado</a> runtime, along with the first tests and <a rel="external" href="https://commits.webkit.org/300621@main">an additional one</a> that make use of this.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #39 2025-09-22T23:12:36+00:00 2025-09-22T23:12:36+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-39/ <p>Update on what happened in WebKit in the week from September 15 to September 22.</p> <p itemprop="abstract"> The first release in a new stable series is now out! And despite that, the work continues on WebXR, multimedia reliability, and WebExtensions support. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Fixed <a rel="external" href="https://commits.webkit.org/299948@main">running WebXR tests</a> in the WebKit build infrastructure, and made <a rel="external" href="https://commits.webkit.org/299963@main">a few more</a> of them run. This both increases the amount of WebXR code covered during test runs, and helps prevent regressions in the future.</p> </div> <div class="wip-item"> <p>As part of the ongoing work to get <a rel="external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> support in the GTK and WPE WebKit ports, a number of classes have been <a rel="external" href="https://commits.webkit.org/300056@main">converted</a> <a rel="external" href="https://commits.webkit.org/300057@main">from Objective-C</a> <a rel="external" href="https://commits.webkit.org/300065@main">to C++</a>, in order to use share their functionality among all ports.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>A number of multimedia-related memory leaks <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=298834">have been plugged</a>. These have been found thanks to <a rel="external" href="https://gstreamer.freedesktop.org/documentation/coretracers/leaks.html?gi-language=c">the GStreamer leak tracer</a>.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/09/17/webkitgtk2.50.0-released.html">WebKitGTK 2.50.0</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.50.0.html">WPE WebKit 2.50.0</a> are now available. These are the first releases of a new stable series, and are the result of the last six months of work. This development cycle focused on rendering performance improvements, improved support for font features, and more. <a rel="external" href="https://webkitgtk.org/reference/webkitgtk/2.50.0/method.WebView.get_theme_color.html">New public API</a> has been added to obtain the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/theme-color">theme color</a> declared by Web pages.</p> <p>For those longer to integrate newer releases, which we know can be a longer process when targeting embedded devices, we have also published <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.48.7.html">WPE WebKit 2.48.7</a> with a few stability and security fixes.</p> <p>Accompanying these releases there is security advisory <code>WSA-2025-0006</code> (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0006.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0006.html">WPE</a>), with information about solved security issues. As usual, we encourage everybody to use the most recent versions where such issues are known to be fixed.</p> <p>Bug reports are always welcome <a rel="external" href="https://bugs.webkit.org/">at the WebKit Bugzilla</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #38 2025-09-15T19:42:13+00:00 2025-09-15T19:42:13+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-38/ <p>Update on what happened in WebKit in the week from September 8 to September 15.</p> <p itemprop="abstract"> The JavaScriptCore implementation of Temporal continues to be polished, as does SVGAElement, and WPE and WebKitGTK accessibility tests can now run (but they are not passing yet). </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/299704@main">Add</a> support for the <code>hreflang</code> attribute on <code>SVGAElement</code>, this helps to align it with <code>HTMLAnchorElement</code>.</p> </div> <div class="wip-item"> <p>An <a rel="external" href="https://github.com/WebKit/WebKit/pull/50487">improvement in harnessing code for A11y tests</a> allowed to unblock many tests marked as Timeout/Skip in WPEWebKit and WebKitGTK ports. These tests are not passing yet, but they are at least running now.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/cce70bac4210b0c88e84132ec46c830309ed6f5e">Add</a> suport for the type attribute on <code>SVGAElement</code>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In the JavaScriptCore (JSC) implementation of Temporal, <a rel="external" href="https://github.com/WebKit/WebKit/pull/50388">refactored the implementations of the difference operations</a> (since and until) for the TemporalPlainTime type in order to match the spec. This enables further work on Temporal, which is being done incrementally.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #37 2025-09-08T19:46:56+00:00 2025-09-08T19:46:56+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-37/ <p>Update on what happened in WebKit in the week from September 1 to September 8.</p> <p itemprop="abstract"> In this week's installment of the periodical, we have better spec compliance of JavaScriptCore's implementation of Temporal, an improvement in how gamepad events are handled, WPE WebKit now implements a helper class which allows test baselines to be aligned with other ports, and finally, an update on recent work on Sysprof. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Until now, unrecognized gamepads didn't emit button presses or axis move events if they didn't map to the standard mapping layout according to W3C (https://www.w3.org/TR/gamepad/#remapping). Now we ensure that <a rel="external" href="https://github.com/WebKit/WebKit/pull/50230">unrecognized gamepads always map to the standard layout</a>, so events are always emitted if a button is pressed or the axis is moved.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>In the JavaScriptCore (JSC) implementation of Temporal, the <code>compare()</code> method on Temporal durations was <a rel="external" href="https://github.com/WebKit/WebKit/pull/50328">modified to follow the spec</a>, which increases the precision with which comparisons are made. This is another step towards a full spec-compliant implementation of Temporal in JSC.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>Added a specific <a rel="external" href="https://github.com/WebKit/WebKit/pull/50172">implementation for helper class ImageAdapter for WPE</a>. This class allows to load image resources that until now were only shipped in WebKitGTK and other ports. This change has aligned many WPE specific test baselines with the rest of WebKit ports, which were now removed.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Sysprof has received a variety of new features, improvements, and bugfixes, as part of the integration with Webkit. We continued pushing this front in the past 6 months! A few highlights:</p> <ul> <li>An important bug with counters was fixed, and further integration was added to WebKit</li> <li>It is now possible to hide marks from the waterfall view</li> <li>Further work on the remote inspector integration, wkrictl, was done</li> </ul> <p><a rel="external" href="https://feaneron.com/2025/09/08/marks-and-counters-in-sysprof/">Read more here</a>!</p> <p><img src="https://blogs.igalia.com/webkit/blog/2025/wip-37/sysprof.png" alt="Screenshot of Sysprof showing Mesa and WebKit marks" /></p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #36 2025-09-01T21:02:56+00:00 2025-09-01T21:02:56+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-36/ <p>Update on what happened in WebKit in the week from August 25 to September 1.</p> <p itemprop="abstract"> The rewrite of the WebXR support continues, as do improvements when building for Android, along with smaller fixes in multimedia and standards compliance. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The WebXR implementation has <a rel="external" href="https://commits.webkit.org/299200@main">gained input</a> through OpenXR, including support for the hand interaction—useful for devices which only support hand-tracking—and the generic simple profile. This was soon followed by the <a rel="external" href="https://commits.webkit.org/299314@main">addition</a> of support for the <a rel="external" href="https://www.w3.org/TR/webxr-hand-input-1/">Hand Input module</a>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/49889">Aligned</a> the <code>SVGStyleElement</code> type and media attributes with <code>HTMLStyleElement</code>'s.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Support for FFMpeg GStreamer audio decoders was <a rel="external" href="https://github.com/WebKit/WebKit/commit/b87a52fd5788fcd275446bb61c2ca49b8f85430a">re-introduced</a> because the alternative decoders making use of FDK-AAC might not be available in some distributions and Flatpak runtimes.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Usage of fences has been <a rel="external" href="https://commits.webkit.org/299154@main">introduced</a> to control frame submission of rendered WebXR content when using OpenXR. This approach avoids blocking in the renderer process waiting for frames to be completed, resulting in slightly increased performance.</p> </div> <div class="wip-item"> <p>Loading a font from a collection will now <a rel="external" href="https://commits.webkit.org/299380@main">iterate until finding the correct one</a>. This solved a few font rendering issues.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>Changed WPEPlatform to be <a rel="external" href="https://commits.webkit.org/299246@main">built as part of the libWPEWebKit library</a>. This avoids duplicating some code in different libraries, brings in a small reduction in used space, and simplifies installation for packagers. Note that the <code>wpe-platform-2.0</code> module is still provided, and applications that consume the WPEPlatform API must still check and use it.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>Support for sharing <code>AHardwareBuffer</code> handles across processes <a rel="external" href="https://commits.webkit.org/299311@main">is now available</a>. This lays out the foundation to use graphics memory directly across different WebKit subsystems later on, making some code paths more efficient, and paves the way towards enabling the WPEPlatform API on Android.</p> </div> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/MediaSession">MediaSession API</a> has been <a rel="external" href="https://commits.webkit.org/299392@main">disabled when building for Android</a>. The existing implementation would attempt to use <a rel="external" href="https://specifications.freedesktop.org/mpris-spec/latest/">the MPRIS D-Bus interface</a>, which does not work on Android.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #35 2025-08-25T19:42:11+00:00 2025-08-25T19:42:11+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-35/ <p>Update on what happened in WebKit in the week from August 18 to August 25.</p> <p itemprop="abstract"> This week continue improvements in the WebXR front, more layout tests passing, support for CSS's generic font family for math, improvements in the graphics stack, and an Igalia Chat episode! </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/298956@main">Align the experimental <code>CommandEvent</code> with recent specification changes</a>. This should finalise the implementation ready to enable by default.</p> </div> <div class="wip-item"> <p>The WebXR implementation has gained support to funnel <a rel="external" href="https://commits.webkit.org/298944@main">usage permission requests through the public API</a> for immersive sessions. Note that this is a basic implementation, and fine-grained control of requested session capabilities may be added at a later time.</p> <p>The GTK MiniBrowser has been <a rel="external" href="https://commits.webkit.org/298996@main">updated to handle WebKitXRPermissionRequest</a> accordingly.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/49445">Implemented <code>rawKeyDown</code> and <code>rawKeyUp</code> in WKTestRunner</a> for WPEWebKit and WebkitGTK, which made more than 300 layout tests pass.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/299012@main">Enable <code>command</code> and <code>commandfor</code> attributes</a> in stable. These are part of the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API">invoker commands API</a> for buttons.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>The CSS <code>font-family: math</code> generic font family is now <a rel="external" href="https://commits.webkit.org/299006@main">supported in WebKit</a>. This is <a rel="external" href="https://www.w3.org/TR/css-fonts-4/#valdef-font-family-math">part</a> of the CSS Fonts Level 4 specification.</p> </div> <div class="wip-item"> <p>The WebXR implementation has gained to ability to <a rel="external" href="https://commits.webkit.org/299044@main">use GBM graphics buffers as fallback</a>, which allows usage with drivers that do not provide the <code>EGL_MESA_image_dma_buf_export</code> extension, yet use GBM for buffer allocation.</p> </div> <div class="wip-item"> <p>The WebXR render loop has <a rel="external" href="https://commits.webkit.org/298948@main">been simplified by using a work queue</a> and offloading the session handling to the render thread.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Early this month, a new episode of Igalia Chat titled <a rel="external" href="https://www.igalia.com/chats/GetDownWithTheWebKit">"Get Down With the WebKit"</a> was released, where Brian Kardell and Eric Meyer talk with Igalia's Alejandro (Alex) Garcia about the WebKit project and Igalia's WPE port.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #34 2025-08-18T19:21:39+00:00 2025-08-18T19:21:39+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-34/ <p>Update on what happened in WebKit in the week from August 11 to August 18.</p> <p itemprop="abstract"> This week we saw updates in WebXR support, better support for changing audio outputs, enabling of GLib API when building the JSCOnly port, improvements to damaging propagation, WPE platform enhancements, and more! </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Complementing our WebXR efforts, it is now possible to <a rel="external" href="https://github.com/WebKit/WebKit/pull/49055">query whether a WebView is in immersive mode</a> and request to <a rel="external" href="https://github.com/WebKit/WebKit/pull/46988">leave immersive mode</a>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Changing audio outputs <a rel="external" href="https://commits.webkit.org/298747@main">has been changed</a> to use <code>gst_device_reconfigure_element()</code> instead of relying on knowledge about how different GStreamer sink elements handle the choice of output device. Note that audio output selection support is in development and disabled by default, the <code>ExposeSpeakers</code>, <code>ExposeSpeakersWithoutMicrophone</code>, and <code>PerElementSpeakerSelection</code> features flags may be toggled to test it.</p> <p>While most systems use PipeWire or PulseAudio these days, some systems may need <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9558">a fix for the corresponding ALSA and OSS elements</a>, which has been already merged in GStreamer.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>Support for enabling the GLib API when building the JSCOnly port <a rel="external" href="https://github.com/WebKit/WebKit/pull/49004">has been added</a>.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>With the <a rel="external" href="https://github.com/WebKit/WebKit/pull/44192">#44192</a> PR landed, the damage propagation feature is now able to propagate damage from accelerated 2D canvas.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>Fixed minor bug in WPE's: pressing Esc key inside a dialog closes dialog. See <a rel="external" href="https://github.com/WebKit/WebKit/pull/49265">PR #49265</a>.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The WPEPlatform DRM backend can now <a rel="external" href="https://commits.webkit.org/298561@main">report available input devices</a>. This is mainly used to support <a rel="external" href="https://www.w3.org/TR/mediaqueries-4/#mf-interaction">Interaction Media Features</a> queries, which allow web sites to better adapt to the available input devices.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #33 2025-08-11T21:07:12+00:00 2025-08-11T21:07:12+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-33/ <p>Update on what happened in WebKit in the week from July 29 to August 11.</p> <p itemprop="abstract"> This update covers two weeks, including a deluge of releases and graphics work. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>CSS animations with a cubic-bezier timing function are <a rel="external" href="https://commits.webkit.org/298329@main">now</a> correctly rendered</p> </div> <div class="wip-item"> <p>The rewrite of the WebXR support <a rel="external" href="https://commits.webkit.org/298184@main">continued</a> <a rel="external" href="https://commits.webkit.org/298278@main">making</a> <a rel="external" href="https://commits.webkit.org/298279@main">steady</a> <a rel="external" href="https://commits.webkit.org/298355@main">progress</a>, and is getting closer to being able to render content again.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>The WPE port gained <a rel="external" href="https://commits.webkit.org/298126@main">basic undo support</a> in text inputs.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>WPE-Android has been <a rel="external" href="https://github.com/Igalia/wpe-android/pull/208">updated to use WebKit 2.48.5</a>. This update particular interest for development on Android is the support for using the system <code>logd</code> service, which can be configured using system properties. For example, the following will enable logging all warnings:</p> <pre class="giallo z-code"><code data-lang="shellscript"><span class="giallo-l"><span class="z-entity z-name z-function">adb</span><span class="z-string"> shell setprop debug.log.WPEWebKit all</span></span> <span class="giallo-l"><span class="z-entity z-name z-function">adb</span><span class="z-string"> shell setprop log.tag.WPEWebKit WARN</span></span></code></pre> <p>Updated prebuilt packages are also available in the <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview">Central repository</a>.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Stable releases of <a rel="external" href="https://webkitgtk.org/2025/08/01/webkitgtk2.48.5-released.html">WebKitGTK 2.48.5</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.48.5.html">WPE WebKit 2.48.5</a> are now available. These include the fixes and improvements from the <a rel="external" href="https://webkitgtk.org/2025/07/30/webkitgtk2.48.4-released.html">corresponding</a> <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.48.4.html">2.48.4 ones</a>, and additionally solve a number of security issues. Advisory WSA-2025-0005 (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0005.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0005.html">WPE</a>) covers the included security patches.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/07/31/webkitgtk2.49.4-released.html">WebKitGTK 2.49.3</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.49.4.html">WPE WebKit 2.49.4</a> have been released, intended to test out upcoming features and improvements. As usual, issue reports are <a rel="external" href="https://bugs.webkit.org/">welcome in Bugzilla</a>, and are particularly important now to stabilize the <a rel="external" href="https://lists.webkit.org/pipermail/webkit-wpe/2025-August/000725.html">newly created branch</a> for the upcoming 2.50.x series.</p> </div> <div class="wip-item"> <p>Ruby was re-added to the GNOME SDK, thanks to Michael Catanzaro and Jordan Petridis. So we're happy to report that the WebKitGTK nightly builds for GNOME Web Canary are now fixed and Canary updates were resumed.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #32 2025-07-28T21:04:17+00:00 2025-07-28T21:04:17+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-32/ <p>Update on what happened in WebKit in the week from July 21 to July 28.</p> <p itemprop="abstract"> This week the trickle of improvements to the graphics stack continues with more font handling improvements and tuning of damage information; plus the WPEPlatform Wayland backend gets server-side decorations with some compositors. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>The <a rel="external" href="https://drafts.csswg.org/css-fonts/#font-variant-emoji-prop">font-variant-emoji</a> CSS property is <a rel="external" href="https://commits.webkit.org/297452@main">now enabled</a> by default in the GTK and WPE ports.</p> </div> <div class="wip-item"> <p>Font synthesis properties (synthetic bold/italic) are <a rel="external" href="https://commits.webkit.org/297512@main">now correctly handled</a>, so that fonts are rendered bold or italic even when the font itself does not provide these variants.</p> </div> <div class="wip-item"> <p>A few <a rel="external" href="https://github.com/WebKit/WebKit/pull/48364">minor</a> <a rel="external" href="https://github.com/WebKit/WebKit/pull/48472">improvements</a> to the damage propagation feature have landed.</p> </div> <div class="wip-item"> <p>The screen device scaling factor in use is <a rel="external" href="https://commits.webkit.org/297728@main">now shown</a> in the <code>webkit://gpu</code> internal information page.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>The Wayland backend included with WPEPlatform has been taught how to <a rel="external" href="https://commits.webkit.org/297865@main">request server-side decorations</a> using the <a rel="external" href="https://wayland.app/protocols/xdg-decoration-unstable-v1">XDG Decoration protocol</a>. This means that compositors that support the protocol will provide window frames and title bars for <code>WPEToplevel</code> instances. While this is a welcome quality of life improvement in many cases, window decorations will not be shown on Weston and Mutter (used by GNOME Shell among others), as they do not support the protocol at the moment.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2025/wip-32/wpe-minibrowser-ssd.png" alt="WPE MiniBrowser, showing server-side decorations with the Labwc compositor" /></p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #31 2025-07-21T19:24:11+00:00 2025-07-21T19:24:11+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-31/ <p>Update on what happened in WebKit in the week from July 14 to July 21.</p> <p itemprop="abstract"> In this week we had a fix for the libsoup-based resource loader on platforms without the shared-mime-info package installed, a fix for SQLite usage in WebKit, ongoing work on the GStreamer-based WebRTC implementation including better encryption for its default DTLS certificate and removal of a dependency, and an update on the status of GNOME Web Canary version. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>ResourceLoader delegates local resource loading (e.g. gresources) to ResourceLoaderSoup, which in turn uses <code>g_content_type_guess</code> to identify their content type. In platforms where <code>shared-mime-info</code> is not available, this fails silently and reports "text/plain", breaking things such as PDFjs.</p> <p>A <a rel="external" href="https://github.com/WebKit/WebKit/pull/47815">patch was submitted</a> to use <code>MIMETypeRegistry</code> to get the MIME type of these local resources, falling back to <code>g_content_type_guess</code> when that fails, making internal resource loading more resilient.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/48110">Fixed</a> "PRAGMA incrementalVacuum" for SQLite, which is used to reclaim freed filesystem space.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Most web engines migrated from a default DTLS certificate signed with a RSA key to a ECDSA p-256 key, almost a decade ago. GstWebRTC is now also <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/6db20592ef4eef1aa0973d33c6ac513f06a8b7c1">signing its default DTLS certificate with that private key format</a>. This improves compatibility with various SFUs, the Jitsi Video Bridge among them.</p> </div> <div class="wip-item"> <p>Work is on-going in GStreamer, adding support for <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8484">getting the currently selected ICE candidates pair</a> and a new webrtcbin signal to <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9379">close the connection</a>.</p> </div> <div class="wip-item"> <p>The WebKit GStreamer <a rel="external" href="https://www.w3.org/TR/mediastream-recording/">MediaRecorder</a> backend <a rel="external" href="https://commits.webkit.org/297593@main">no longer depends on GstTranscoder</a></p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>Changed <a rel="external" href="https://github.com/Igalia/wpe-android-cerbero/pull/73">libpsl to include built-in public-suffix data</a> when building WPE for Android. Among other duties, having this working correctly is important for site isolation, resource loading, and cookie handling.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>The GNOME Web Canary build has been stale for several weeks, since the GNOME nightly SDK was updated to freedesktop SDK 25.08beta which no longer ships one of the WebKitGTK build dependencies (Ruby). We will do our best to get the builds back to a working state, soon hopefully.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #30 2025-07-14T20:01:14+00:00 2025-07-14T20:01:14+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-30/ <p>Update on what happened in WebKit in the week from July 7 to July 14.</p> <p itemprop="abstract"> This week saw a fix for IPv6 scope-ids in DNS responses, frame pointers re-enabled in JSC developer builds, and a significant improvement to emoji fonts selection. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4676">Fixed</a> support for <a rel="external" href="https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses_(with_zone_index)">IPv6 scope-ids</a> in DNS responses.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>Developer builds of JSC <a rel="external" href="https://commits.webkit.org/297281@main">now</a> default to having frame pointers, to allow for more useful backtraces.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Improved the selection of emoji fonts to <a rel="external" href="https://commits.webkit.org/297109@main">follow the spec</a> more closely, and ensure the choice is <a rel="external" href="https://commits.webkit.org/297256@main">honored while iterating over fallback fonts</a>.</p> <p>This work has been done in preparation to <a rel="external" href="https://github.com/WebKit/WebKit/pull/47881">enable</a> the support for the new <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-emoji">font-variant-emoji CSS property</a> down the line.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #29 2025-07-07T20:49:35+00:00 2025-07-07T20:49:35+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-29/ <p>Update on what happened in WebKit in the week from June 30 to July 7.</p> <p itemprop="abstract"> Improvements to Sysprof and related dependencies, WebKit's usage of std::variant replaced by mpark::variant, major WebXR overhauling, and support for the logd service on Android, are all part of this week's bundle of updates. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Fundamentals">WebXR</a> support in the GTK and WPE WebKit ports has been <a rel="external" href="https://commits.webkit.org/296365@main">ripped off</a> in preparation for an overhaul that will make it better fit WebKit's multi-process architecture.</p> <p>The new implementation, still based on <a rel="external" href="https://www.khronos.org/openxr/">OpenXR</a> is being re-added piecewise, starting with <a rel="external" href="https://commits.webkit.org/296610@main">the foundational support code</a> to coordinate XR content inside the Web engine. Next <a rel="external" href="https://commits.webkit.org/296971@main">starting and stopping immersive sessions</a> was brought back, and a <a rel="external" href="https://commits.webkit.org/297048@main">basic render loop</a>.</p> <p>Note these are the first steps on this effort, and there is still plenty to do before WebXR experiences work again.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/297077@main">Changed</a> usage of <code>std::variant</code> in favor of an alternative implementation based on <a rel="external" href="https://github.com/mpark/variant">mpark::variant</a>, which reduces the size of the built WebKit library—currently saves slightly over a megabyte for release builds.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>Logging support is being improved to <a rel="external" href="https://github.com/WebKit/WebKit/pull/47339">submit entries</a> to the <code>logd</code> service on Android, and also to <a rel="external" href="https://github.com/WebKit/WebKit/pull/47352">configure logging</a> using a system property. This makes debugging and troubleshooting issues on Android more manageable, and is particularly welcome to develop WebKit itself.</p> <p>While working on this feature, the definition of logging channels was <a rel="external" href="https://commits.webkit.org/296858@main">simplified</a>, too.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>WebKit on Linux integrates with Sysprof and reports a plethora of marks. As we report more information to Sysprof, we eventually pushed Sysprof internals to its limit! To help with that, we're adding a new feature to Sysprof: hiding marks from view.</p> <p>This required diving a little deeper into the stack, and <a rel="external" href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8746">add a new feature to a dependency</a> as well.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #28 2025-07-01T13:29:10+00:00 2025-07-01T13:29:10+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-28/ <p>Update on what happened in WebKit in the week from June 24 to July 1.</p> <p itemprop="abstract"> This was a slow week, where the main highlight are new development releases of WPE WebKit and WebKitGTK. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>Made some further <a rel="external" href="https://commits.webkit.org/296580@main">progress</a> bringing the 32-bit version of OMG closer to the 64-bit one</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/06/24/webkitgtk2.49.3-released.html">WebKitGTK 2.49.3</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.49.3.html">WPE WebKit 2.49.3</a> have been released. These are development snapshots intended to allow those interested to test the new features and improvement which will be part of the next stable release series. As usual, bug reports are welcome <a rel="external" href="https://bugs.webkit.org/">in the WebKit Bugzilla</a>.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>The video recording for the talk “Jumping Over the Garden Wall - WPE WebKit on Android” from this year's <a rel="external" href="https://webengineshackfest.org/">Web Engines Hackfest</a> is now <a rel="external" href="https://www.youtube.com/watch?v=tjtvjmr-Zyw">available for watching</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #27 2025-06-23T19:58:31+00:00 2025-06-23T19:58:31+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-27/ <p>Update on what happened in WebKit in the week from June 16 to June 23.</p> <p itemprop="abstract"> This week saw a variety of fixes on multimedia, including GStreamer, a fix for JSC, and the addition of analog gamepad buttons support for WPE. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://www.w3.org/TR/webrtc/#peer-to-peer-dtmf">WebRTC DTMF</a> support was recently <a rel="external" href="https://github.com/WebKit/WebKit/commit/0894e1f17293001ef1c06bf569b9be49a8d58d03">implemented</a> in our GstWebRTC backend.</p> </div> <div class="wip-item"> <p>The WebCodecs VideoFrame <code>copyTo()</code> function now correctly <a rel="external" href="https://github.com/WebKit/WebKit/commit/87fc7e8d47cc775907534375c4f2d1473431c522">handles odd-sized frames</a>.</p> </div> <div class="wip-item"> <p>Multiple MediaRecorder-related improvements landed in main recently (<a rel="external" href="https://github.com/WebKit/WebKit/commit/4f13b96103b633f9f1c0b7fa70ac9866fd4ff604">1</a>, <a rel="external" href="https://github.com/WebKit/WebKit/commit/7c88eea5c5aa7433753140909120baf5eb562ab7">2</a>, <a rel="external" href="https://github.com/WebKit/WebKit/commit/d7af118b7faae0345681ede0c04f156661977eb2">3</a>, <a rel="external" href="https://github.com/WebKit/WebKit/commit/e6f47f5abf05a0fde8c175a98a30d5bd150d5f28">4</a>), and <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/2a1890c03c6b22245a2203e0d16a85c868aa57ae">also in GStreamer</a>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JSC saw some <a rel="external" href="https://github.com/WebKit/WebKit/commit/2edcd1e56e940009ee341fe1bdf61e21a1964e86">fixes</a> in i31 reference types when using Wasm GC.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>WPE now has <a rel="external" href="https://github.com/WebKit/WebKit/pull/46846">support for analog gamepad buttons</a> when using libwpe. Since version 1.16.2 libwpe has the capability to handle analog gamepad button events, but the support on the WPE side was missing. It has now been added, and will be enabled when the appropriate versions of libwpe are used.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #26 2025-06-16T21:44:56+00:00 2025-06-16T21:44:56+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-26/ <p>Update on what happened in WebKit in the week from May 27 to June 16.</p> <p itemprop="abstract"> After a short hiatus coinciding with this year's edition of the Web Engines Hackfest, this issue covers a mixed bag of new API features, releases, multimedia, and graphics work. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>A new <code>WebKitWebView::theme-color</code> property <a rel="external" href="https://commits.webkit.org/296035@main">has been</a> <a rel="external" href="https://commits.webkit.org/296160@main">added</a> to the public API, along with a corresponding <code>webkit_web_view_get_theme_color()</code> getter. Its value follows that of the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/theme-color"><code>theme-color</code> metadata attribute</a> declared by pages loaded in the web view. Although applications may use the theme color in any way they see fit, the expectation is that it will be used to adapt their user interface (as in <a rel="external" href="https://gist.github.com/aperezdc/cc41e8ae10c3028a7c3653eaf76c08d5">this example</a>) to complement the Web content being displayed.</p> <video autoplay loop> <source src="wkgtk-theme-color.webm" type="video/webm" aria-label="Video showing a screen capture of a GTK application that displays a website that has buttons to change colour scheme of the Web content; changing the colour scheme also makes the background and text color of the window title change accordingly."> <p> Video showing a screen capture of a GTK application that displays a website that has buttons to change colour scheme of the Web content; changing the colour scheme also makes the background and text color of the window title change accordingly. </p> </video> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>The video capture pipeline has gained the ability to <a rel="external" href="https://commits.webkit.org/295499@main">optionally rotate the input</a> before encoding.</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>Damage propagation has been <a rel="external" href="https://commits.webkit.org/295437@main">toggled for the GTK port</a>: for now only a single rectangle is passed to the UI process, which then is used to let GTK know which part of a <code>WebKitWebView</code> has received changes since the last repaint. This is a first step to get damage tracking code widely tested, with further improvements to be enabled later when considered appropriate.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/wpe-android/releases/tag/v0.2.0">WPE-Android 0.2.0</a> has been released. The main change in this version is the update to WPE WebKit 2.48.3, which is the first that can be built for Android out of the box, without needing any additional patching. Thanks to this, we expect that the WPE WebKit version used will receive more frequent updates going forward. The prebuilt packages available <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview/">at the Maven Central repository</a> have been updated accordingly.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/05/30/webkitgtk2.49.2-released.html">WebKitGTK 2.49.2</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.49.2.html">WPE WebKit 2.49.2</a> have been released. These are development snapshots and are intended to let those interested test out upcoming features and improvements, and as usual issue reports are <a rel="external" href="https://bugs.webkit.org">welcome in Bugzilla</a>.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>This year's <a rel="external" href="https://webengineshackfest.org/">Web Engines Hackfest</a> had two <a rel="external" href="https://blogs.igalia.com/webkit/blog/2025/web-engines-hackfest/">WebKit-related sessions</a>, and the slides are available already for the <a rel="external" href="https://webengineshackfest.org/slides/jumping_over_the_garden_wall_-_wpe_webkit_on_android_by_adrian_perez_de_castro.pdf">WPE-Android talk</a> and the <a rel="external" href="https://github.com/Igalia/webengineshackfest/issues/58#issuecomment-2934489543">Multimedia in WebKit session</a>. Video recordings will be available later on.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit at the Web Engines Hackfest 2025 2025-05-30T19:21:00+03:00 2025-05-30T19:21:00+03:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/web-engines-hackfest/ <p>The Web Engines Hackfest 2025 is kicking off next Monday in A Coruña and among <a rel="external" href="https://github.com/Igalia/webengineshackfest/wiki#scheduling">all the interesting talks and sessions</a> about different engines, there are a few that can be interesting to people involved one way or another with WebKitGTK and WPE:</p> <ul> <li> <p><a rel="external" href="https://webengineshackfest.org/#wpe-android">“Jumping Over the Garden Wall - WPE WebKit on Android”</a>, by Adrián Pérez (Monday 2nd at 16:00 CEST) with a status update about the effort to bring WebKit into Android via WPE.</p> </li> <li> <p><a rel="external" href="https://github.com/Igalia/webengineshackfest/issues/58">“Multimedia in WebKit”</a>, by Philippe Normand (Tuesday 3rd at 12:00 CEST), will focus on the current status and future plans for the multimedia stack in WebKit.</p> </li> </ul> <p>All talks will be live streamed and a Jitsi Meet link will be available for those interested in participating remotely. You can find all the details at <a rel="external" href="https://webengineshackfest.org">webengineshackfest.org</a>.</p> WebKit Igalia Periodical #25 2025-05-26T19:38:40+00:00 2025-05-26T19:38:40+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-25/ <p>Update on what happened in WebKit in the week from May 19 to May 26.</p> <p itemprop="abstract"> This week saw updates on the Android version of WPE, the introduction of a new mechanism to support memory-mappable buffers which can lead to better performance, a new gamepad API to WPE, and other improvements. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/295330@main">Implemented</a> support for the new 'request-close' command for dialog elements.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/295194@main">Added</a> support for using the GDB JIT API when dynamically generating code in JSC.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/43411">Added</a> support for memory-mappable GPU buffers. This mechanism allows to allocate linear textures that can be used from OpenGL, and memory-mapped into CPU-accessible memory. This allows to update the pixel data directly, bypassing the usual <code>glCopyTexSubImage2D</code> logic that may introduce implicit synchronization / perform staging copies / etc. (driver-dependant).</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>Landed a <a rel="external" href="https://commits.webkit.org/295094@main">patch</a> to add a gamepads API to WPE Platform with an optional default implementation using <a rel="external" href="https://gnome.pages.gitlab.gnome.org/libmanette/">libmanette</a>.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>WPE-Android has been <a rel="external" href="https://github.com/Igalia/wpe-android-cerbero/pull/67">updated</a> <a rel="external" href="https://github.com/Igalia/wpe-android/pull/194">to use WebKit 2.48.2</a>. Updated packages will be available in the <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview">Central repository</a> in the coming days.</p> </div> <div class="wip-item"> <p>The WPE-Android MiniBrowser <a rel="external" href="https://github.com/Igalia/wpe-android/pull/201">no longer crashes</a> when opening the “Settings” activity when the system-wide dark user interface mode is enabled.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #24 2025-05-19T21:10:35+00:00 2025-05-19T21:10:35+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-24/ <p>Update on what happened in WebKit in the week from May 12 to May 19.</p> <p itemprop="abstract"> This week focused on infrastructure improvements, new releases that include security fixes, and featured external projects that use the GTK and WPE ports. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/58dae86e4a988e51738d9d1115e6ddd5266707fa">Fixed</a> a reference cycle in the <code>mediastreamsrc</code> element, which prevented its disposal.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/295056@main">Added an internal class</a> that will be used to represent Temporal <code>Duration</code> objects in a way that allows for more precise calculations. This is not a user-visible change, but will enable future PRs to advance Temporal support in JSC towards completion.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/wpe-platform-gtk/commit/79dd48ffa4e0b1189e7be5505dc504f55304f4eb">Added</a> an initial demo application to the GTK4 WPEPlatform implementation.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2025/wip-24/wpeplatform-gtk4-demo.png" alt="Screenshot of a Web browser application using a WPEPlatform backend based on GTK4" /></p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/05/14/webkitgtk2.48.2-released.html">WebKitGTK 2.48.2</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.48.2.html">WPE WebKit 2.48.2</a> have been released. These are paired with a security advisory (<code>WSA-2025-0004</code>: <a rel="external" href="https://webkitgtk.org/security/WSA-2025-0004.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0004.html">WPE</a>), and therefore it is advised to update.</p> <p>On top of security fixes, these release also include correctness fixes, and support for <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_overscroll_behavior">CSS Overscroll Behaviour</a> is now enabled by default.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>GNOME Web has <a rel="external" href="https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1323">gained</a> a preferences page that allows toggling WebKit features at run-time. Tech Preview builds of the browser will show the settings page by default, while in regular releases it is hidden and may be enabled with the following command:</p> <pre class="giallo z-code"><code data-lang="shellscript"><span class="giallo-l"><span class="z-entity z-name z-function">gsettings</span><span class="z-string"> set org.gnome.Epiphany.ui webkit-features-page</span><span class="z-constant z-language"> true</span></span></code></pre> <p>This should allow frontend developers to test upcoming features more easily. Note that the settings for WebKit features are <em>not</em> persistent, and they will be reset to their default state on every launch.</p> <picture> <img src="ephy-features-prefs.png" class="light-mode" alt="Features page in the GNOME Web preferences dialog"> <img src="ephy-features-prefs-dark.png" class="dark-mode" alt="Features page in the GNOME Web preferences dialog"> </picture> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/294801@main">Landed an improvement</a> to error reporting in the script within WebKit that runs <code>test262</code> JavaScript tests.</p> </div> <div class="wip-item"> <p>The WebKit Test Runner (WKTR) <a rel="external" href="https://github.com/WebKit/WebKit/pull/45307">will no longer crash</a> if invalid UTF-8 sequences are written to the standard error stream, (e.g. from 3rd party libraries' debugging options.</p> </div> <div class="wip-item"> <p>Experimentation is ongoing to un-inline <code>String::find()</code>, which saves ~50 KiB in the resulting binary size worth of repeated implementations of SIMD “find character in UTF-16” and “find character in UTF-32” algorithms. Notably, the algorithm for “find character in ASCII string” was not even part of the inlining.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/webkit-container-sdk/pull/121">Added the LLVM repository</a> to the WebKit container SDK. Now it is possible to easily install Clang 20.x with <code>wkdev-setup-default-clang --version=20</code>.</p> </div> <div class="wip-item"> <p>Figured out that a performance bug related to jump threading optimization in Clang 18 resulted in a bottleneck adding up to five minutes of build time in the container SDK. This may be fixed by updating to Clang 20.x.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #23 2025-05-12T19:29:21+00:00 2025-05-12T19:29:21+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-23/ <p>Update on what happened in WebKit in the week from May 5 to May 12.</p> <p itemprop="abstract"> This week saw one more feature enabled by default, additional support to track memory allocations, continued work on multimedia and WebAssembly. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The <a rel="external" href="https://w3c.github.io/media-capabilities">Media Capabilities</a> API is now enabled by default. It was previously available as a run-time option in the WPE/WebKitGTK API (<code>WebKitSettings:enable-media-capabilities</code>), so this is just <a rel="external" href="https://commits.webkit.org/294625@main">a default tweak</a>.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/43628">a change</a> that integrates malloc heap breakdown functionality with non-Apple ports. It works similarly to <a rel="external" href="https://docs.webkit.org/Infrastructure/MemoryInspection.html">Apple's one</a> yet in case of non-Apple ports the per-heap memory allocation statistics are printed to stdout periodically for now. In the future this functionality will be integrated with Sysprof.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Support for WebRTC RTP header extensions was <a rel="external" href="https://github.com/WebKit/WebKit/commit/5210b64d88459204ee6c4acbcf97f7e9d3aa4095">improved</a>, a RTP header extension for video orientation metadata handling was <a rel="external" href="https://github.com/WebKit/WebKit/commit/2d8ffc935bc80c9c7d3630dd8a44abf8ebce16b4">introduced</a> and several simulcast tests are now <a rel="external" href="https://github.com/WebKit/WebKit/commit/e2ef134aedd82648216d0fc83f0e7558eff0ccc8">passing</a></p> </div> <div class="wip-item"> <p>Progress is ongoing on resumable player suspension, which will eventually allow us to handle websites with lots of simultaneous media elements better in the GStreamer ports, but this is a complex task.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>The in-place Wasm interpreter (IPInt) port to 32-bits has seen some <a rel="external" href="https://github.com/WebKit/WebKit/commit/0cc84c157b37a8b8af8103a668e597a66ff60850">more work</a>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/294475@main">Fixed</a> a bug in OMG caused by divergence with the 64-bit version. Further <a rel="external" href="https://commits.webkit.org/294684@main">syncing</a> is <a rel="external" href="https://commits.webkit.org/294752@main">underway</a>.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Michael Catanzaro has published a <a rel="external" href="https://blogs.gnome.org/mcatanzaro/2025/04/28/webkitgtk-api-versions/">writeup on his blog</a> about how the WebKitGTK API versions have changed over time.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/Igalia/webkit-container-sdk/pull/116">Landed</a> some improvements in the WebKit container SDK for Linux, particularly in error handling.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #22 2025-05-06T13:27:02+00:00 2025-05-06T13:27:02+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-22/ <p>Update on what happened in WebKit in the week from April 15 to May 6.</p> <p itemprop="abstract"> WPEPlatform continued closing the feature gap with <code>libwpe</code>-based WPE backends, WPE got improved clipboard support, and JSC gets assorted improvements. </p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Cookie_Store_API">Cookie Store API</a> is now <a rel="external" href="https://commits.webkit.org/294448@main">enabled</a> by default, and <a rel="external" href="https://drafts.csswg.org/css-overscroll">CSS Overscroll Behaviour</a> was <a rel="external" href="https://commits.webkit.org/294445@main">enabled as well</a>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>The GstWPE2 GStreamer plugin landed in <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/28d97212c5662ac4a3371e078533fe75f833de3f">GStreamer main</a>, it makes use of the WPEPlatform API. It will ship in GStreamer 1.28. Compared to GstWPE1 it provides the same features, but improved support for NVIDIA GPUs. The main regression is lack of audio support, which is work-in-progress, both on the WPE and GStreamer sides.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>Work on enabling the in-place Wasm interpreter (IPInt) on 32-bits has <a rel="external" href="https://commits.webkit.org/294090@main">progressed</a> <a rel="external" href="https://commits.webkit.org/294069@main">nicely</a></p> </div> <div class="wip-item"> <p>The JSC tests runner can now <a rel="external" href="https://commits.webkit.org/294423@main">guard</a> against a pathological failure mode.</p> </div> <div class="wip-item"> <p>In JavaScriptCore's implementation of <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal">Temporal</a>, Tim Chevalier fixed the parsing of <a rel="external" href="https://datatracker.ietf.org/doc/html/rfc9557">RFC 9557</a> annotations in date strings to work according to the standard. So now syntactically valid but unknown annotations <code>[foo=bar]</code> are correctly ignored, and the <code>!</code> flag in an annotation is handled correctly. Philip Chimento expanded the test suite around this feature and fixed a couple of crashes in Temporal.</p> </div> <div class="wip-item"> <p><code>Math.hypot(x, y, z)</code> received a <a rel="external" href="https://commits.webkit.org/294127@main">fix</a> for a corner case.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>WPE now <a rel="external" href="https://commits.webkit.org/294103@main">uses the new pasteboard API</a>, aligning it with the GTK port, and enabling features that were previously disabled. Note that the new features work only with WPEPlatform, because <code>libwpe</code>-based backends are limited to access clipboard text items.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>A new interface <a rel="external" href="https://commits.webkit.org/294505@main">for handling clipboard requests</a> was added, with a generic implementation that only operated within WebKit.</p> <p>Platform backends may add their own clipboard handling, with the Wayland one being <a rel="external" href="https://commits.webkit.org/294551@main">the first one to</a>, using <code>wl_data_device_manager</code>.</p> <p>This continues the effort to close the feature gap between the “traditional” <code>libwpe</code>-based WPE backends and the new WPEPlatform ones.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Carlos García has published a blog post about the <a rel="external" href="https://blogs.igalia.com/carlosgc/2025/04/21/graphics-improvements-in-webkitgtk-and-wpewebkit-after-the-switch-to-skia/">optimizations introduced in the WPE and GTK WebKit ports</a> since the introduction of Skia replacing Cairo for 2D rendering. Plus, there are some hints about what is coming next.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #21 2025-04-14T19:41:16+00:00 2025-04-14T19:41:16+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-21/ <p>Update on what happened in WebKit in the week from April 7 to April 14.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/42798">It is now possible</a> to customize the limit of the content resources kept for the network page of WebInspector.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/43448">Reduce the amount of data kept</a> for network page of WebInspector after eviction in case the memory limit is exceeded.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>On the WebRTC front, <a rel="external" href="https://commits.webkit.org/293566@main">basic support for Rapid Synchronization</a> was added, along with a couple of spec coverage improvements (https://commits.webkit.org/293567@main, https://commits.webkit.org/293569@main).</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/43109">Fixed</a> some upstream regressions in OMG.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/43377">Dispatch</a> a "canceled" error event for all queued utterances in case of SpeechSynthesis.</p> </div> <div class="wip-item"> <p>Support for the Camera <a rel="external" href="https://flatpak.github.io/xdg-desktop-portal/">desktop portal</a> was <a rel="external" href="https://commits.webkit.org/292932@main">added recently</a>, it will benefit mostly Flatpak apps using WebKitGTK, such as GNOME Web, for access to capture devices, which is a requirement for WebRTC support.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/43535">Fixed</a> a corner case in BBQJIT.</p> </div> <div class="wip-item"> <p>Work <a rel="external" href="https://github.com/WebKit/WebKit/commit/85a8ccef08a7a28c16e7719ade5f8f409eebbfb3">continued</a> on porting the in-place wasm interpreter (IPInt) to 32-bits.</p> </div> <div class="wip-item"> <p>We have been working on bringing the Temporal implementation in JSC up to the current spec, and a step towards that goal was implemented in <a rel="external" href="https://github.com/WebKit/WebKit/pull/43849">WebKit PR #43849</a>. This PR changes how calendar annotation key parsing works; it doesn't change anything observable, but sets the groundwork for parsing calendar critical flags and unknown annotations.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>The recent releases of WebKitGTK and WPE WebKit 2.48 introduced a number of improvements to performance, reduced resource usage, better support for web platform features and standards, multimedia, and more!</p> <p>Read more about these updates in the freshly published articles for <a rel="external" href="https://webkitgtk.org/2025/04/08/webkitgtk-2.48.html">WebKitGTK</a>, and <a rel="external" href="https://wpewebkit.org/blog/2025-04-11-wpewebkit-2.48.html">WPE WebKit</a>.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Support for <a rel="external" href="https://gitlab.gnome.org/GNOME/epiphany/-/commit/cd414d5883cb0f144770f1fb0539b27db4b18aa0">Display device permission requests</a> was recently added in GNOME Web, this is a requirement for <a rel="external" href="https://www.w3.org/TR/screen-capture/">Screen Capture</a> handling on the User-Agent side.</p> </div> <div class="wip-item"> <p>Pawel Lampe published a <a rel="external" href="https://blogs.igalia.com/plampe/introduction-to-damage-propagation-in-wpe-and-gtk-webkit-ports/">blog post</a> on the damage propagation feature. This feature reduces browser's GPU utilization at the expense of increased CPU and memory utilization in the WPE and GTK WebKit ports.</p> </div> <div class="wip-item"> <p>Our efforts to bring GstWebRTC support to WebKitGTK and WPEWebKit also include direct contributions to GStreamer. We <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/18f6fec49f0985d2e187cf3d84c2fd1c49dd3839">recently</a> improved WebRTC spec compliance in <code>webrtcbin</code>, by making the SDP mid attribute optional in offers and answers.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #20 2025-04-07T21:49:00+00:00 2025-04-07T21:49:00+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-20/ <p>Update on what happened in WebKit in the week from March 31 to April 7.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>By default we divide layers that need to be painted into 512x512 tiles, and only paint the tiles that have changed. We record each layer/tile combination into a <code>SkPicture</code> and replay the painting commands in worker threads, either on the CPU or the GPU. <a rel="external" href="https://github.com/WebKit/WebKit/pull/43183">A change was landed</a> to improve the algorithm, by recording the changed area of each layer into a single <code>SkPicture</code>, and for each tile replay the same picture, but clipped to the tile dimensions and position.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>A WPE Platform-based implementation of Media Queries' <a rel="external" href="https://www.w3.org/TR/mediaqueries-4/#mf-interaction">Interaction Media Features</a>, supporting pointer and hover-related queries, has <a rel="external" href="https://github.com/WebKit/WebKit/pull/41924">landed</a> in WPE WebKit.</p> <p>When using the Wayland backend, this change exposes the current state of pointing devices (mouse and touchscreen), dynamically reacting to changes such as plugging or unplugging. When the new WPEPlatform API is not used, the previous behaviour, defined at build time, is still used.</p> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>A number of fixes <a rel="external" href="https://commits.webkit.org/293096@main">have</a> <a rel="external" href="https://commits.webkit.org/293334@main">been</a> <a rel="external" href="https://commits.webkit.org/293351@main">merged</a> to fix and improve building WPE WebKit for Android. This is part of an ongoing effort to make it possible to build WPE-Android using upstream WebKit without needing additional patches.</p> </div> <div class="wip-item"> <p>The example MiniBrowser included with WPE-Android has <a rel="external" href="https://github.com/Igalia/wpe-android/pull/190">been</a> <a rel="external" href="https://github.com/Igalia/wpe-android/pull/193">fixed</a> to handle edge-to-edge layouts on Android 15.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #19 2025-03-31T19:58:04+00:00 2025-03-31T19:58:04+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-19/ <p>Update on what happened in WebKit in the week from March 24 to March 31.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://www.w3.org/TR/media-source-2/#dom-managedmediasource">ManagedMediaSource</a> was <a rel="external" href="https://commits.webkit.org/292812@main">enabled</a> in WPE WebKit and WebKitGTK.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>The JSC jitless Wasm tests <a rel="external" href="https://commits.webkit.org/292645@main">now work again on ARMv7</a>.</p> </div> <div class="wip-item"> <p>Doing a 32-bit build on ARM64 hardware now <a rel="external" href="https://commits.webkit.org/292739@main">works</a> with GCC 11.x as well.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/42805">a change</a> that improves the painting of tile fragments in the compositor if damage propagation is enabled and if the tiles sizes are bigger than 256x256. In those cases, less GPU is utilized when damage allows.</p> </div> <div class="wip-item"> <p>The GTK and WPE ports <a rel="external" href="https://github.com/WebKit/WebKit/pull/42185">no longer use</a> <code>DisplayList</code> to serialize the painting commands and replay them in worker threads, but <code>SkPictureRecorder</code>/<code>SkPicture</code> from Skia. Some parts of the WebCore painting system, especially font rendering, are not thread-safe yet, and our current cross-thread use of <code>DisplayList</code> makes it harder to improve the current architecture without breaking GTK and WPE ports. This motivated the search for an alternative implementation.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Sysprof is now able to filter samples by marks. This allows for statistically relevant data on what's running when a specific mark is ongoing, and as a consequence, allows for better data analysis. <a rel="external" href="https://feaneron.com/2025/03/26/a-sysprof-enhancement/">You can read more here</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #18 2025-03-24T19:50:35+00:00 2025-03-24T19:50:35+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-18/ <p>Update on what happened in WebKit in the week from March 17 to March 24.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292282@main">Limited</a> the amount data stored for certain elements of <code>WebKitWebViewSessionState</code>. This results in memory savings, and avoids oddly large objects which resulted in web view state being restored slowly.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Reduced parsing overhead in incoming WebRTC video streams by <a rel="external" href="https://github.com/WebKit/WebKit/pull/42690">reducing excessive tag events at startup</a> and by <a rel="external" href="https://github.com/WebKit/WebKit/pull/42818">avoiding the plugging of parser elements for already-parsed streams</a>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292355@main">Fixed</a> an integer overflow when using wasm/gc on 32-bits.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/42687">Landed a change</a> that fixes a few scenarios where the damage was not generated on layer property changes.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p><a rel="external" href="https://webkitgtk.org/2025/03/14/webkitgtk2.48.0-released.html">WebKitGTK 2.48.0</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.48.0.html">WPE WebKit 2.48.0</a> have been released. While they may not look as exciting as the 2.46 series, which introduced the use of Skia for painting, they nevertheless includes half a year of improvements. This development cycle focused on reworking internals, which brings modest performance improvements for all kinds of devices, but most importantly cleanups which will enable further improvements going forward.</p> <p>For those who need longer to integrate newer releases, which we know can be a longer process for embedded device distrihytos, we have also published <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.46.7.html">WPE WebKit 2.46.7</a> with a few stability and security fixes.</p> <p>Accompanying these releases there is security advisory <code>WSA-2025-0002</code> (<a rel="external" href="https://webkitgtk.org/security/WSA-2025-0002.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0002.html">WPE</a>), which covers the solved security issues. Crucially, all three contain the fix for an issue known to be exploited in the wild, and therefore we strongly encourage updating.</p> <p>As usual, bug reports are always welcome <a rel="external" href="https://bugs.webkit.org/">at the WebKit Bugzilla</a>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://gitlab.gnome.org/GNOME/libsoup/-/releases/3.6.5">libsoup 3.6.5</a> has been released with bug fixes and security improvements.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #17 2025-03-17T20:31:12+00:00 2025-03-17T20:31:12+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-17/ <p>Update on what happened in WebKit in the week from March 10 to March 17.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292010@main">Updated</a> button activation behaviour and type property reflection with <code>command</code> and <code>commandfor</code>. Also aligned <code>popovertarget</code> behaviour with latest specification.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291954@main">Fixed</a> reflection of command IDL property.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292217@main">Implemented</a> the <code>trusted-types-eval</code> keyword for the script-src CSP directive.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292067@main">Implemented</a> accessibility handling for command buttons.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/292069@main">Enabled</a> <code>command</code> and <code>commandfor</code> in preview.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291887@main">Fixed</a> an integer overflow in JSC (only happens on 32-bit systems with lots of RAM).</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/a313922e015f202c632c5a0eac88e8284eba16b5">Fixed</a> <a rel="external" href="https://github.com/WebKit/WebKit/commit/02548798b5b8a8a4156eb94463470b67aa0203a7">theming</a> <a rel="external" href="https://github.com/WebKit/WebKit/commit/8526139c8f35e81f4a0a5fd286ff21d6d1f33170">issues</a> in WPE/WebKitGTK with <a rel="external" href="https://webkit.org/blog/15190/implementing-vertical-form-controls/">vertical writing-modes</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #16 2025-03-10T22:59:27+00:00 2025-03-10T22:59:27+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-16/ <p>Update on what happened in WebKit in the week from March 3 to March 10.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291833@main">Forced</a> styling to <code>field-sizing: fixed</code> when an input element is auto filled, and added <a rel="external" href="https://commits.webkit.org/291851@main">support</a> for changing <code>field-sizing</code> dynamically.</p> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291719@main">Fixed</a> an issue where the imperative popover APIs didn't take into account the <code>source</code> parameter for focus behavior.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291817@main">Fixed</a> YouTube breakage on videos with advertisements. The fix prevents scrolling to the comments section when the videos are fullscreened, but having working video playback was considered more important for now.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291783@main">Fixed re-layout issues</a> for form controls with the experimental <code>field-sizing</code> implementation.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/39909">a change</a> that improves the quality of damage rectangles and reduces the amount of painting done in the compositor in some simple scenarios.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/291106@main">Introduce</a> a hybrid threaded rendering mode, scheduling tasks to both the CPU and GPU worker pools. By default we use CPU-affine rendering on WPE, and GPU-affine rendering on the GTK port, saturating the CPU/GPU worker pool first, before switching to the GPU/CPU.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>We have recently enabled automatic nightly runs of WPT tests with WPE for the Web Platform Tests (WPT) dashboard. If you click on the “Edit” button at the <a rel="external" href="https://wpt.fyi">wpt.fyi dashboard</a> now there is the option to select WPE.</p> <p>For example, one may <a rel="external" href="https://wpt.fyi/results/?label=master&amp;product=chrome%5Bexperimental%5D&amp;product=edge%5Bexperimental%5D&amp;product=firefox%5Bexperimental%5D&amp;product=safari%5Bexperimental%5D&amp;product=wpewebkit">compare the results for WPE to other browsers</a> or examine <a rel="external" href="https://wpt.fyi/results/?diff&amp;filter=ADC&amp;run_id=6236445864099840&amp;run_id=6210501174624256">the differences between the WPE and GTK ports</a>.</p> <p>These nightly runs happen now daily on the TaskCluster CI sponsored by Mozilla (Thanks to <a rel="external" href="https://hacks.mozilla.org/author/jgrahammozilla-com/">James Graham</a>!). If you want to run WPT tests with WPE WebKit locally, there are instructions <a rel="external" href="https://web-platform-tests.org/running-tests/wpewebkit_minibrowser.html">at the WPT documentation</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #15 2025-03-03T14:15:37+00:00 2025-03-03T14:15:37+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-15/ <p>Update on what happened in WebKit in the week from February 19 to March 3.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/d7e26d13ce41e3841ce00d005823ff78581bf02d">Implemented</a> support for setting <code>returnValue</code> for <code>&lt;dialog&gt;</code> with <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API">Invoker Commands</a>.</p> </div> <div class="wip-item"> <p>After <a rel="external" href="https://github.com/WebKit/WebKit/commit/4dad722e68b54ae7d38cd91dac521310e18417a8">fixing</a> an issue with Trusted Types when doing attribute mutation within the default callback, and <a rel="external" href="https://github.com/WebKit/WebKit/commit/160b58921311c5f62fe63c7b32d2b7a9e184f1ca">implementing</a> performance improvements for Trusted Types enforcement, the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API">Trusted Types</a> implementation is now considered stable and has been <a rel="external" href="https://github.com/WebKit/WebKit/commit/971b9ba19d62aad183c5e3e47e2c1eff7c92f7c6">enabled by default</a>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://commits.webkit.org/291490@main">one fix</a> which, along with previous patches, solved the <code>webKitMediaSrcStreamFlush()</code> crash reported in <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=260455">bug #260455</a>.</p> <p>Unfortunately, in some pages where the crash previously occurred, now a different blank video bug has been revealed. The cause of this bug is known, but fixing it would cause performance regressions in pages with many video elements. Work is ongoing to find a better solution for both.</p> <p>The <a rel="external" href="https://github.com/WebKit/WebKit/pull/41012">initial support of MP4-muxed WebVTT in-band text tracks</a> is about to be merged, which will bring this MSE feature to the ports using GStreamer. Text tracks for the macOS port of WebKit only <a rel="external" href="https://commits.webkit.org/290705@main">landed two weeks ago</a> and we expect there will be issues to iron out in WebKit ports, multiplatform code and even potentially in spec work—we are already aware of a few potential ones.</p> <p>Note that out-of band text-tracks are well supported in MSE across browsers and commonly used. On the other hand, no browsers currently ship with in-band text track support in MSE at this point.</p> </div> <div class="wip-item"> <p>Support for <code>MediaStreamTrack.configurationchange</code> events was <a rel="external" href="https://github.com/WebKit/WebKit/commit/70b217d22d3a08d4eec2767e2029cf3d673fc97d">added</a>, along with <a rel="external" href="https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/9296d1645f344aa67426c7bf50db6c3f56981b4c">related improvements</a> in the GStreamer PipeWire plugin. This will allow WebRTC applications to seamlessly handle default audio/video capture changes.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Continued improving the support for handling graphics damage:</p> <ul> <li> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/74803a0710d915fb9d76175f7c22186f8315e54e">Added support</a> for validating damage rectangles in Layout Tests.</p> </li> <li> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/41278">a change</a> that adds layout tests covering the damage propagation feature.</p> </li> <li> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/41389">a change</a> that fixes damage rectangles on layer resize operations.</p> </li> <li> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/41399">a change</a> that improves damage rectangles produced by scrolling so that they are clipped to the parent container.</p> </div> <div class="wip-item"> </li> </ul> <p>The number of threads used for painting with the GPU has been <a rel="external" href="https://commits.webkit.org/290781@main">slightly tweaked</a>, which brings a measurable performance improvement in all kinds of devices with four or mores processor cores.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>The <a rel="external" href="https://github.com/WebKit/WebKit/commits/webkitglib/2.48">stable branch</a> for the upcoming 2.48.x stable release series of the GTK and WPE ports has been created. The first preview releases from this branch are <a rel="external" href="https://webkitgtk.org/2025/02/25/webkitgtk2.47.90-released.html">WebKitGTK 2.47.90</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.47.90.html">WPE WebKit 2.47.90</a>. People willing to report issues and help with stabilization are encouraged to test them and report <a rel="external" href="https://bugs.webkit.org">issues in Bugzilla</a>.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Published <a rel="external" href="https://blogs.igalia.com/plampe/working-with-webkit-and-gstreamer-logs-in-emacs/">a blog post</a> that presents an opinionated approach to the work with textual logs obtained from WebKit and GStreamer.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #14 2025-02-18T11:34:03+00:00 2025-02-18T11:34:03+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-14/ <p>Update on what happened in WebKit in the week from February 11 to February 18.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Several multimedia-related optimizations landed this week, memory allocations were reduced in <a rel="external" href="https://commits.webkit.org/290146@main">the video rendering code path</a> and in the <a rel="external" href="https://commits.webkit.org/290153@main">MediaStreamAudioDestinationNode implementation</a>.</p> </div> <div class="wip-item"> <p>On the WebRTC fronts, the GstWebRTC backend has gained support for <a rel="external" href="https://commits.webkit.org/290209@main">stats rate limiting support</a> and the <a rel="external" href="https://commits.webkit.org/290393@main">send/receive buffer sizes were adjusted</a>.</p> </div> <div class="wip-item"> <p>The GStreamer video frame converter, used to show video frames in the canvas or WebGL, has been fixed to use the right GL context and <a rel="external" href="https://commits.webkit.org/290266@main">now supports DMA-BUF video frames</a>, too.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/40539">Added support</a> to the <code>eotf</code> additional MIME type parameter when checking for supported multimedia content types. This is required by some streaming sites like YouTube TV.</p> </div> <div class="wip-item"> <p>The GStreamer-based WebCodecs <a rel="external" href="https://commits.webkit.org/290147@main"><code>AudioData::copyTo()</code> is now spec compliant</a>, handling all possible format conversions defined in the WebCodecs specification.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>The WebKit ports that use CMake as their build system—as is the case for the GTK and WPE ones—now <a rel="external" href="https://commits.webkit.org/290394@main">enable C++ library assertions by default</a>, when building against GNU <code>libstdc++</code> or LLVM's <code>libc++</code>. This adds lightweight runtime checks to a number of C++ library facilities, mostly aimed at detecting out-of-bounds memory access, and does not have a measurable performance impact on typical browsing workloads.</p> <p>A number of Linux distributions were already enabling these assertions as part of their security hardening efforts (e.g. <a rel="external" href="https://fedoraproject.org/wiki/Changes/HardeningFlags28#Detailed_Description">Fedora</a> or <a rel="external" href="https://wiki.gentoo.org/wiki/Hardened/Toolchain#Changes">Gentoo</a>) and they <em>do</em> help finding actual bugs. As a matter of fact, a number of issues were fixed <em>before</em> all the WebKit API and layout tests with the assertions enabled and the patch could be merged! Going forward, this will prevent accidentally introducing bugs new due to wrong usage of the C++ standard library.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #13 2025-02-11T10:43:08+00:00 2025-02-11T10:43:08+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-13/ <p>Update on what happened in WebKit in the week from February 3 to February 11.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/39713">Fixed</a> an assertion crash in the remote Web Inspector when its resources contain an UTF-8 “non-breaking space” character.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Media playback <a rel="external" href="https://commits.webkit.org/289783@main">now supports</a> choosing the output audio device on a per element basis, using <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId">the setSinkId() API</a>. This also added the support needed for <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices">enumerating</a> audio outputs, which is needed by Web applications to obtain the identifiers of the available devices. Typical usage includes allowing the user to choose the audio output used in WebRTC-based conference calls.</p> <p>For now feature flags <code>ExposeSpeakers</code>, <code>ExposeSpeakersWithoutMicrophone</code>, and <code>PerElementSpeakerSelection</code> need to be enabled for testing.</p> <video autoplay loop> <source src="dZSuDrFICwkiMkMJFtIiiHuR.mp4" type="video/mp4" aria-label="Screen capture of the WebKitGTK Minibrowser program choosing among different audio outputs"> <p> Video showing a screen capture of the WebKitGTK Minibrowser program choosing among different audio outputs. </p> </video> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/39681">Set proper playbin flags</a> which are needed to properly use OpenMax on the RaspberryPi.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/39903">a change</a> that adds a visualization for damage rectangles, controlled by the <code>WEBKIT_SHOW_DAMAGE</code> environment variable. This highlights areas damaged during rendering of every frame—as long as damage propagation is enabled.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2025/wip-13/rjRkPRgOfshvpUgFbGuNmgIM.png" alt="Screenshot of a web page showing the “Poster Circle” CSS transforms demo, with red rectangles overlapping the areas that have been last re-rendered" /></p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Stable releases of <a rel="external" href="https://webkitgtk.org/2025/02/07/webkitgtk2.46.6-released.html">WebKitGTK 2.46.6</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.46.6.html">WPE WebKit 2.46.6</a> are now available. These come along with the first security advisory of the year (WSA-2025-0001: <a rel="external" href="https://webkitgtk.org/security/WSA-2025-0001.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2025-0001.html">WPE</a>): they contain mainly security fixes, and everybody is advised to update.</p> <p>The unstable release train continues as well, with <a rel="external" href="https://webkitgtk.org/2025/02/05/webkitgtk2.47.4-released.html">WebKitGTK 2.47.4</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.47.4.html">WPE WebKit 2.47.4</a> available for testing. These are snapshots of the current development status, and while expected to work there may be rough edges—if you encounter any issue, reports at the <a rel="external" href="https://bugs.webkit.org/">WebKit Bugzilla</a> are always welcome.</p> </div> <div class="wip-item"> <p>The recently released <a rel="external" href="https://wpewebkit.org/release/libwpe-1.16.1.html">libwpe 1.16.1</a> accidentally introduced an ABI break, which has been corrected in <a rel="external" href="https://wpewebkit.org/release/libwpe-1.16.2.html">libwpe 1.16.2</a>. There are no other changes, and the latter should be preferred.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #12 2025-02-03T22:33:48+00:00 2025-02-03T22:33:48+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-12/ <p>Update on what happened in WebKit in the week from January 27 to February 3.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The documentation now has a <a rel="external" href="https://commits.webkit.org/289603@main">section on how to use the Web Inspector remotely</a>. This makes information on this topic easier to find, as it was previously scattered around a few different locations.</p> </div> <div class="wip-item"> <p>Jamie continues her Coding Experience work around bringing WebExtensions to the WebKitGTK port. A good part of this involves <a rel="external" href="https://github.com/WebKit/WebKit/pulls?q=is%3Apr+is%3Aclosed+author%3AItsJamie9494+port+%22to+C%2B%2B%22+">porting functionality</a> from Objective-C, which only the Apple WebKit ports would use, into C++ code that all ports may use. The latest in this saga was <a rel="external" href="https://commits.webkit.org/289633@main">WebExtensionStorageSQLiteStore</a>.</p> </div> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p>The experimental support for <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API">Invoker Commands</a> has been <a rel="external" href="https://github.com/WebKit/WebKit/pull/39778">updated</a> to match latest spec changes.</p> </div> <div class="wip-item"> <p>WPE and WebKitGTK <a rel="external" href="https://github.com/WebKit/WebKit/commit/cb077473952d7036cceedb1a721502d74ee766c5">now have support</a> for the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/Cookie_Store_API">Cookie Store API</a>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/74e0b308c9978fbbd289a8b070f3352c411d173d">Implemented</a> experimental support for the <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/CloseWatcher">CloseWatcher API</a>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>The GStreamer WebRTC backend can now <a rel="external" href="https://github.com/WebKit/WebKit/commit/952a0889f8b3f2d81c698dad21ffa655b95913e5">recycle inactive senders</a> and support for inactive receivers was also improved. With these changes, support for screen sharing over WebRTC is now more reliable.</p> </div> <div class="wip-item"> <p>On the playback front, a bug on the silent video automatic pause optimization was <a rel="external" href="https://commits.webkit.org/289607@main">fixed</a>, the root case for certain VP9 videos appearing as empty sometimes was <a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4193">found out to be in GStreamer</a>, and there is effort ongoing to solve <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=260455">racy crashes when flushing MSE streams</a>.</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>Support for <a rel="external" href="https://w3c.github.io/webdriver-bidi/">WebDriver BiDi</a> has been <a rel="external" href="https://commits.webkit.org/289497@main">enabled in WebKitGTK</a> as an experimental feature.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #11 2025-01-27T17:56:22+00:00 2025-01-27T17:56:22+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-11/ <p>Update on what happened in WebKit in the week from January 20 to January 27.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>GLib 2.70 will be required starting with the upcoming 2.48 stable releases. This made it possible to <a rel="external" href="https://commits.webkit.org/289318@main">remove some code</a> that is no longer needed.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/37536">Fixed</a> unlimited memory consumption in case of playing regular video playback and using web inspector.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/39064">Speed up</a> reading of large messages sent by the web inspector.</p> </div> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/39470">Implemented support</a> for <code>dialog.requestClose()</code>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/38937">Fixed</a> the assertion error "pipeline and player states are not synchronized" related to muted video playback in the presence of scroll. Work is ongoing regarding other bugs reproduced with the same video, some of them related to scroll and some likely indepedent.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/pull/38336">Fixed lost initial audio samples</a> played using WebAudio on 32-bit Raspberry Pi devices, by preventing the OpenMAX subsystem to enter standby mode.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/39074">a change</a> that fixes damage propagation of 3D-transformed layers.</p> </div> <div class="wip-item"> <p>Fixed a <a rel="external" href="https://github.com/WebKit/WebKit/pull/39585">regression</a> visiting any web page making use of accelerated ImageBuffers (e.g. canvas) when CPU rendering is used. We were unconditionally creating OpenGL fences, even in CPU rendering mode, and tried to wait for completion in a worker thread, that had no OpenGL context (due to CPU rendering). This is an illegal operation in EGL and fired an assertion, crashing the WebProcess.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Despite the work on the WPE Platform API, we continue to maintain the “classic” stack based on libwpe. Thus, we have <a rel="external" href="https://wpewebkit.org/release/libwpe-1.16.1.html">released libwpe 1.16.1</a> with the small—but important—addition of support for representing analog button inputs for devices capable of reporting varying amounts of pressure.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #10 2025-01-20T22:32:32+00:00 2025-01-20T22:32:32+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-10/ <p>Update on what happened in WebKit in the week from January 13 to January 20.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>The JavaScriptCore GLib API has <a rel="external" href="https://github.com/WebKit/WebKit/commit/f4cbe7bf3972971aa4feba14a2e466b81af92980">gained support</a> for creating <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a> objects. This allows integrating asynchronous functionality more ergonomically when interfacing between native code and JavaScript.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Elements with outlines inside scrolling containers <a rel="external" href="https://github.com/WebKit/WebKit/pull/39130">now</a> <a rel="external" href="https://github.com/WebKit/WebKit/pull/39229">render their outlines properly</a>.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/38719">a change</a> that adds multiple fixes to the damage propagation functionality in scenarios such as:</p> <ul> <li> <p>Layers with custom transforms.</p> </li> <li> <p>Pages with custom viewport scale.</p> </li> <li> <p>Dynamic layer size changes.</p> </li> <li> <p>Scrollbar layers.</p> </div> <div class="wip-item"> </li> </ul> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/37707">a change</a> that improves damage propagation in terms of animations handling.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/pull/38934">a change</a> that prevents any kind of damage propagation when the feature is disabled at runtime using its corresponding flag. Before that, even though the functionality was runtime-disabled some memory usage and unneeded calculations were being done.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>Drag gesture threshold, and key repeat delay/interval are now <a rel="external" href="https://commits.webkit.org/288922@main">handled through the WPESettings API</a> instead of using hardcoded values. While defaults typically work well, being able to tweak them for certain setups without rebuilding WPE is a welcome addition.</p> </div> <div class="wip-item"> <p>Sylvia has also improved the WPE Platform DRM/KMS backend to <a rel="external" href="https://commits.webkit.org/289142@main">pick the default</a> output device scaling factor using <code>WPESettings</code>.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>libsoup has been <a rel="external" href="https://github.com/google/oss-fuzz/pull/12925">added</a> to Google's <a rel="external" href="https://google.github.io/oss-fuzz/">OSS-Fuzz</a> program to help find security issues.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #9 2025-01-13T13:36:47+00:00 2025-01-13T13:36:47+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2025/wip-9/ <p>Update on what happened in WebKit in the week from December 31, 2024 to January 13, 2025.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/commit/4d3260a66f0b8fb9eed262d966c3841d78388bc4">a fix</a> to the experimental Trusted Types implementation for certain event handler content attributes not being protected even though they are sinks.</p> </div> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/commit/335fd43a016d8e26fa13dc6fba4e8207d73fea26">a fix</a> to experimental Trusted Types implementation where the <code>SVGScriptElement.className</code> property was being protected even though it's not a sink.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Support for the H.264 “constrained-high” and “high” profiles was <a rel="external" href="https://commits.webkit.org/288701@main">improved</a> in the GStreamer WebRTC backend.</p> </div> <div class="wip-item"> <p>The GStreamer WebRTC backend now has basic support for <a rel="external" href="https://commits.webkit.org/288696@main">network conditions simulation</a>, that will be useful to improve error recovery and packet loss coping mechanisms.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JSC got a <a rel="external" href="https://github.com/WebKit/WebKit/commit/ac25b0d35045d87ea988c01b2f02beba36fb2f80">fix</a> for a tricky garbage-collection issue.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Landed <a rel="external" href="https://github.com/WebKit/WebKit/commit/5d4417e6cd246abca7c9b0becf3cee525cfb3487">a change</a> that enables testing the "damage propagation" functionality. This is a first step in a series of fixes and improvements that should stabilize that feature.</p> <p>Damage propagation passes extra information that describes the viewport areas that have visually changed since the last frame across different graphics subsystems. This allows the WebKit compositor and the system compositor to reduce the amount of painting being done thus reducing usage of resources (CPU, GPU, and memory bus). This is especially helpful on constrained, embedded platforms.</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>A <a rel="external" href="https://commits.webkit.org/288643@main">patch</a> landed to add metadata (title and creation/modification date) to PDF documents generated for printing.</p> </div> <div class="wip-item"> <p>The “suspended” toplevel state is <a rel="external" href="https://commits.webkit.org/288685@main">now handled in GTK port</a> to pause rendering when web views are fully obscured.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://itsjamie.dev/">Jamie Murphy</a> is doing a <a rel="external" href="https://www.igalia.com/coding-experience/">Coding Experience</a> focused on adding support for <a rel="external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a>. After porting a number of Objective-C classes to C++, to allow using them in all WebKit ports, she has recently <a rel="external" href="https://commits.webkit.org/287517@main">made the code build on Linux</a>, and started <a rel="external" href="https://commits.webkit.org/287627@main">adding</a> <a rel="external" href="https://commits.webkit.org/288424@main">new public API</a> to expose the functionality to GTK applications that embed web views. There is still plenty of work to do, but this is great progress nevertheless.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>Sylvia Li, who is also doing a <a rel="external" href="https://www.igalia.com/coding-experience/">Coding Experience</a>, has <a rel="external" href="https://commits.webkit.org/288148@main">updated WPEView</a> so it will pick its default configuration values using the recently added <a rel="external" href="https://commits.webkit.org/285702@main">WPESettings API</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #8 2024-12-30T16:39:15+00:00 2024-12-30T16:39:15+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-8/ <p>Update on what happened in WebKit in the week from December 23 to December 30.</p> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Published <a rel="external" href="https://blogs.igalia.com/plampe/contributing-to-css-anchor-positioning-in-webkit/">an article</a> on CSS Anchor Positioning. It discusses the current status of the support across browsers, Igalia's contributions to the WebKit's implementation, and the predictions for the future.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #7 2024-12-23T16:03:47+00:00 2024-12-23T16:03:47+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-7/ <p>Update on what happened in WebKit in the week from December 16 to December 23.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/288150@main">Improved logging in WebDriver service executables</a>, using the same infrastructure as the browser (e.g. journald logging and different levels).</p> </div> <div class="wip-item"> <p>Added support for the first WebDriver-BiDi event in WebKit: <a rel="external" href="https://commits.webkit.org/288145@main">monitoring console messages</a>.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JavaScriptCore got a <a rel="external" href="https://commits.webkit.org/288154@main">fix</a> for a wasm test that was flaky on 32-bits. We also submitted a new <a rel="external" href="https://github.com/WebKit/WebKit/pull/38128">PR</a> to fix handling of Air (Air is an intermediate representation) Args with offsets that are not directly addressable in the O0 register allocator.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Since the switch to Skia we have been closely following upstream changes, and making small contributions when needed. After adding support for OpenType-SVG fonts the build with Clang was broken, and needed a <a rel="external" href="https://skia-review.googlesource.com/c/skia/+/930496">fix to allow building Skia in C++ 23 mode</a> (as we do in WebKit). The Skia <a rel="external" href="https://commits.webkit.org/288086@main">update for this week</a> resulting in a <a rel="external" href="https://skia-review.googlesource.com/c/skia/+/930996">fix to avoid <code>SK_NO_SANITIZE("cfi")</code> when using GCC</a>.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>Stable releases of <a rel="external" href="https://webkitgtk.org/2024/12/18/webkitgtk2.46.5-released.html">WebKitGTK 2.46.5</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.46.5.html">WPE WebKit 2.46.5</a> are now available. While they include some minor fixes, these are focused on patches for security issues, and come accompanied with a new security advisory (WSA-2024-0008: <a rel="external" href="https://webkitgtk.org/security/WSA-2024-0008.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2024-0008.html">WPE</a>). As usual, it is recommended to stay up to date, and fresh packages have been already making their way to mainstream Linux distributions.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #6 2024-12-16T13:33:33+00:00 2024-12-16T13:33:33+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-6/ <p>Update on what happened in WebKit in the week from December 9 to December 16.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/287732@main">Shipped</a> the X25519 algorithm of the WebCrypto API for the Mac, GTK+ and WPE ports.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://github.com/WebKit/WebKit/commit/8a02dacf8e5b11135f826944889ac535264f3e41">Fixed corner</a> case invoker issue with popover inside invoker, matching the updated spec.</p> </div> <div class="wip-item"> <p>Form controls have long standing interoperability issues and <code>&lt;textarea&gt;</code> is no exception. <a rel="external" href="https://github.com/WebKit/WebKit/commit/cda20f66eecb111c71be0960b981e596473e889f">This patch</a> fixes space being reserved for scrollbars despite overlay scrollbars being enabled. This brings WebKit in line with Firefox's behaviour.</p> </div> <div class="wip-item"> <p>Implemented <a rel="external" href="https://github.com/WebKit/WebKit/commit/899ca0cd494c188aeb6bf1566f35e7b29bab8869">improvements to the popover API</a> to allow imperative invokers relationships, this brings the JavaScript APIs inline with the declarative <code>popovertarget</code> attribute.</p> </div> <div class="wip-item"> <p>Implemented the CanvasRenderingContext2D <code>letterSpacing</code>/<code>wordSpacing</code> <a rel="external" href="https://commits.webkit.org/287661@main">support</a>.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Due to on-going work on improving memory usage in WebRTC use-cases, several patches landed in WebKit (<a rel="external" href="https://commits.webkit.org/287596@main">1</a>, <a rel="external" href="https://commits.webkit.org/287659@main">2</a>,<a rel="external" href="https://commits.webkit.org/287660@main">3</a>) and GStreamer (<a rel="external" href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8125">4</a>). Another related task is under review in <a rel="external" href="https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/281">libnice</a>.</p> </div> <div class="wip-item"> <p><a rel="external" href="https://commits.webkit.org/287875@main">Several WebCodecs GStreamer backend fixes</a> landed, mostly related with Opus and LPCM decoding support.</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>JavaScriptCore now has <a rel="external" href="https://commits.webkit.org/287649@main">Wasm tail call support on ARMv7</a>.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>OpenType color fonts with SVG outlines stopped working with the <a rel="external" href="https://blogs.igalia.com/carlosgc/2024/09/27/graphics-improvements-in-webkitgtk-and-wpewebkit-2-46/">transition from Cairo to Skia</a>. This was unintentional, and support for this kind of fonts has been <a rel="external" href="https://commits.webkit.org/287859@main">re-enabled for Skia</a>.</p> <p>Building the OpenType-SVG support required building Skia's SVG module, which uses <a rel="external" href="https://libexpat.github.io/">Expat</a> as its XML parser. Packagers will need to add it as a build dependency, or configure the compilation passing <code>-DUSE_SKIA_OPENTYPE_SVG=OFF</code>, which disables the feature.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2024/wip-6/lftLABSybNPDMfRgdgjCevbn.png" alt="" /></p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #5 2024-12-10T22:05:00+00:00 2024-12-10T22:05:00+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-5/ <p>Update on what happened in WebKit in the week from December 3 to December 10.</p> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p>Improved interoperability somewhat by including <code>font-weight</code> <a rel="external" href="https://github.com/WebKit/WebKit/pull/37499">in the <code>CanvasRenderingContext2D.font</code> serialization</a>.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Support for cross-thread transfer of accelerated <code>ImageBitmap</code> objects <a rel="external" href="https://github.com/WebKit/WebKit/pull/37309">landed upstream</a> for the GTK and WPE ports. It improves performance of applications that use worker threads and pass accelerated <code>ImageBitmap</code> objects (with ownership) around.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #4 2024-12-02T13:06:21+00:00 2024-12-02T13:06:21+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-4/ <p>Update on what happened in WebKit in the week from November 23 to December 2.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The documentation on GTK/WPE port profiling with Sysprof <a rel="external" href="https://github.com/WebKit/WebKit/pull/37203">landed upstream</a>.</p> </div> <div class="wip-item"> <p>Support for <code>anchor-center</code> alignment <a rel="external" href="https://github.com/WebKit/WebKit/pull/36705">landed upstream</a> for all the WebKit ports. This is a part of cutting-edge CSS spec called <a rel="external" href="https://drafts.csswg.org/css-anchor-position-1/">CSS Anchor Positioning</a>. To test this feature, the <code>CSSAnchorPositioning</code> runtime preference needs to be enabled.</p> </div> <h3 id="web-platform-globe-with-meridians">Web Platform 🌐</h3> <div class="wip-item"> <p>WebKit has since a long time offered a non-standard method <code>Document.caretRangeFromPoint()</code> to get the caret range at a certain coordinate, but now offers the <a rel="external" href="https://github.com/WebKit/WebKit/commit/129140715fbb75dd8c82cf598f622c98deee56ba">same functionality in a standardised way</a>.</p> </div> <div class="wip-item"> <p>We <a rel="external" href="https://commits.webkit.org/287077@main">improved the multi touch support on WPE</a>: the touch identifiers are now more reliable when using the Web API Pointer Events. This has been backported to the last stable release 2.46.4</p> </div> <h3 id="javascriptcore-fish">JavaScriptCore 🐟</h3> <div class="wip-description"> <p>The built-in JavaScript/ECMAScript engine for WebKit, also known as JSC or SquirrelFish.</p> </div> <div class="wip-item"> <p>On the JSC front, Justin Michaud has fixed a <a rel="external" href="https://github.com/WebKit/WebKit/pull/37093">tricky issue</a> in the implementation of Air shuffles (i.e. smartly copying N arbitrary locations to N different arbitrary locations). He also <a rel="external" href="https://github.com/WebKit/WebKit/pull/37240">fixed</a> some lowering code that generated invalid B3, as well as the 32-bit version of <a rel="external" href="https://github.com/WebKit/WebKit/pull/37240">addI31Ref</a> (part of the GC wasm extension).</p> <p>Angelos Oikonomopoulos <a rel="external" href="https://github.com/WebKit/WebKit/pull/37181">fixed</a> another corner case in the testing of single-precision floating point arguments on 32-bits.</p> </div> <h3 id="graphics-frame-photo">Graphics 🖼️</h3> <div class="wip-item"> <p>Support for multi-threaded GPU rendering <a rel="external" href="https://commits.webkit.org/287060@main">landed upstream</a> for both GTK/WPE ports. In <code>main</code> branch, GPU accelerated tile rendering was already activated by default—it is still the case, but now it utilizes one extra GPU rendering thread instead of performing the GPU rendering using (and blocking) the main thread.</p> <p>The number of threads used for CPU multi-threaded rendering was controlled by the <code>WEBKIT_SKIA_PAINTING_THREADS</code> environment variable and has been renamed to <code>WEBKIT_SKIA_CPU_PAINTING_THREADS</code>. Likewise we now support the setting <code>WEBKIT_SKIA_GPU_PAINTING_THREADS</code> (where <code>0</code> implies using the main thread, and values in the <code>1</code> to <code>4</code> range enable threaded GPU rendering) to control the amount of GPU rendering threads used.</p> </div> <div class="wip-item"> <p>Negotiation of buffer formats with Wayland using DMA-BUF feedback was getting the first format that fits with the requirements in the first tranche even when the transparency did not match. Now we <a rel="external" href="https://github.com/WebKit/WebKit/commit/81aa1260056f33a2a49fc11c2dc4fc807a12591f">honor the transparency if there is a way to do it</a>, even when other tranches than the first one need to be used. This allows the compositor to do direct scanout in more cases.</p> </div> <h2 id="releases-package">Releases 📦️</h2> <div class="wip-item"> <p>This has been a week filled with releases!</p> <p>On the stable series, <a rel="external" href="https://webkitgtk.org/2024/11/27/webkitgtk2.46.4-released.html">WebKitGTK 2.46.4</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.46.4.html">WPE WebKit 2.46.4</a> include the usual stream of small fixes, a number of multimedia handling improvements focused on around Media Stream, and two important security fixes covered in a new security advisory (WSA‑2024‑0007: <a rel="external" href="https://webkitgtk.org/security/WSA-2024-0007.html">GTK</a>, <a rel="external" href="https://wpewebkit.org/security/WSA-2024-0007.html">WPE</a>). The covered vulnerabilities are known to be exploited in the wild, and updating is strongly encouraged; fresh packages are already available (or will be soon) in popular Linux distributions.</p> <p>Also, development releases <a rel="external" href="https://webkitgtk.org/2024/11/26/webkitgtk2.47.2-released.html">WebKitGTK 2.47.2</a> and <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.47.2.html">WPE WebKit 2.47.2</a> are now available. The main highlights are the multi-threaded GPU rendering, and the added system settings API in WPEPlatform. These development snapshots are often timed around important changes; we greatly appreciate when people put the effort to give them a try, because detecting (and reporting) any issues earlier is a great help that gives us developers more time to polish the code before it reaches a stable version.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p><a rel="external" href="https://github.com/flatpak/flatpak/releases/tag/1.15.11">Flatpak 1.15.11 was released</a> with a handful of patches related to accessibility. These patches enable WebKit accessibility to work in sandboxed environments. With this release, all the pieces of this puzzle fell in place, and now sandboxed apps that use WebKit are properly accessible and introspectable by screen readers and Braille generators.</p> <p>Of course, there are further improvements to be made, and lots of fine-tuning to how WebKit handles accessibility of web pages. But this is nonetheless an exciting step, both for accessibility on Linux and also for the platform.</p> </div> <div class="wip-item"> <p>A WPE MiniBrowser runner for the Web-Platform-Tests (WPT) cross-browser test suite <a rel="external" href="https://github.com/web-platform-tests/wpt/commit/c9da6f7270d868ff2c3a734f55bef6df6bd58549">was added recently</a>. Please check <a rel="external" href="https://web-platform-tests.org/running-tests/wpewebkit_minibrowser.html">the documentation on how to use it</a> and remember that there is also <a rel="external" href="https://web-platform-tests.org/running-tests/webkitgtk_minibrowser.html">a WebKitGTK MiniBrowser runner there also available</a>. Both runners allow to automatically download and use the last nightly universal bundle for running the tests if you pass the flag <code>--install-browser</code> to <code>./wpt run</code>. Pass also <code>--log-mach=-</code> for increased verbosity. Please note that this only adds the runner for manual testing. We are still working on adding WPE to the automated testing dashboard at <a rel="external" href="https://wpt.fyi">wpt.fyi</a></p> </div> <div class="wip-item"> <p>Justin Michaud submitted a <a rel="external" href="https://github.com/WebKit/WebKit/pull/37031">fix</a> for flashing Yocto images to external SD cards.</p> </div> <div class="wip-item"> <p>The WPE WebKit web site now has a separate <a rel="external" href="https://github.com/Igalia/wpewebkit.org/pull/243">RSS feed for security advisories</a>. It can be reached at <code>https://wpewebkit.org/security.xml</code> and may be useful for those interested in automated notifications about security fixes.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #3 2024-11-22T22:46:44+00:00 2024-11-22T22:46:44+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-3/ <p>Update on what happened in WebKit in the week from November 15 to November 22.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData">getImageData()</a> canvas method has been <a rel="external" href="https://commits.webkit.org/286795@main">optimized</a> to avoid an intermediate memory copy. This made fetching pixel data about ten times faster in the embedded hardware and laptops with integrated GPUs used for testing. The improvement is slated for inclusion in the upcoming 2.46.4 stable release.</p> </div> <div class="wip-item"> <p>The <a rel="external" href="https://github.com/WebKit/WebKit/pull/31458">WebKit#31458</a> PR landed today. This adds a mechanism that leverages the damage information to reduce the amount of painting during composition. The biggest gains of that are expected with WPE used on embedded devices.</p> </div> <div class="wip-item"> <p>Running WebKit layout tests using the multi-threaded Skia-CPU mode (<code>WEBKIT_SKIA_ENABLE_CPU_RENDERING=1</code>, <code>WEBKIT_SKIA_PAINTING_THREADS&gt;0</code>) fired assertions in debug/assert-enabled builds. Recording a <a rel="external" href="https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/graphics/displaylists/DisplayList.h">DisplayList</a> on the main thread and replaying it on a worker thread exposed a thread-safety issue. The <a rel="external" href="https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/graphics/Pattern.h">Pattern class</a> was not expecting to be dereferenced from a non-main thread. <code>Pattern</code> now inherits from <code>ThreadSafeRefCounted</code> to <a rel="external" href="https://commits.webkit.org/286744@main">fix the problem</a>.</p> </div> <div class="wip-item"> <p>Traditionally, we supported multi-threaded tile rendering using Cairo (which is CPU-only), and also using Skia in CPU rendering mode. Skia with GPU accelerated rendering is driven from the main thread and does <em>not</em> support multi-threading. However, there is a non-negligible amount of CPU work to be performed prior to using the GPU for rendering, where it can be beneficial to parallelize that work across multiple cores.</p> <p>Preparation is ongoing for threaded GPU rendering, by <a rel="external" href="https://github.com/WebKit/WebKit/pull/36794">adding GPU synchronization primitives</a> to <a rel="external" href="https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/graphics/NativeImage.h">NativeImage</a> and <a rel="external" href="https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/graphics/ImageBuffer.h">ImageBuffer</a> for Skia, and <a rel="external" href="https://github.com/WebKit/WebKit/pull/36796">making use of the new GPU synchronization primitives</a> during <a rel="external" href="https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/graphics/displaylists/DisplayList.h">DisplayList</a> recording (on the main thread) and replays—which will happen in a GPU worker thread, once we have added support for that.</p> </div> <h3 id="multimedia-movie-camera">Multimedia 🎥</h3> <div class="wip-description"> <p>GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.</p> </div> <div class="wip-item"> <p>Canvas to PeerConnection streaming was <a rel="external" href="https://github.com/WebKit/WebKit/commit/4b3a7f836f5a7280741561df02e74908690dd703">fixed</a>, there was an issue with video orientation tags handling leading to flipped frames on receiving side.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2024/wip-3/VkaCecXhXOqPqONyxJxDkDjy.png" alt="" /></p> </div> <div class="wip-item"> <p><a rel="external" href="https://www.w3.org/TR/screen-capture/">Screen capture</a> support using PipeWire and GStreamer was <a rel="external" href="https://github.com/WebKit/WebKit/commit/34beac2e36062cf3deab0683312ecf76458e0648">fixed</a>, DMA-BUFs are now negotiated with PipeWire, enabling zero-copy rendering to video elements. Screen capture streaming to PeerConnection is still an <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=258018">open issue</a> though.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>WPEPlatform <a rel="external" href="https://commits.webkit.org/286738@main">now supports</a> a <a rel="external" href="https://commits.webkit.org/285702@main">Settings API</a> allowing platforms and applications to set options such as fonts or dark mode. This can be tested by launching MiniBrowser and passing an INI-style configuration file with settings:</p> <pre class="giallo z-code"><code data-lang="shellscript"><span class="giallo-l"><span class="z-entity z-name z-function">MiniBrowser</span><span class="z-string"> --use-wpe-platform-api --config-file=config.ini</span></span></code></pre> </div> <h3 id="wpe-android-robot">WPE Android <a rel="external" href="https://github.com/Igalia/wpe-android">↗</a> 🤖</h3> <div class="wip-description"> <p>Adaptation of WPE WebKit targeting the Android operating system.</p> </div> <div class="wip-item"> <p>WPE-Android got <a rel="external" href="https://github.com/Igalia/wpe-android-cerbero/pull/48">updated</a> <a rel="external" href="https://github.com/Igalia/wpe-android/pull/175">to</a> WebKit <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.46.3.html">2.46.3</a>. Coming from 2.46.0, it includes a fix for DuckDuckGo results link, better text kerning, a better performing Canvas <code>putImageData()</code>operation, improved selection of H.264 encoding parameters, and more.</p> <p>As usual, the <a rel="external" href="https://github.com/Igalia/wpe-android/releases/tag/v0.1.2">0.1.2 release at GitHub</a> contains the downloadable <code>.apk</code> packages. The <a rel="external" href="https://central.sonatype.com/artifact/org.wpewebkit.wpeview/wpeview">Maven repository</a> has been updated as well.</p> </div> <div class="wip-item"> <p>Producing WPE-Android releases on GitHub has been <a rel="external" href="https://github.com/Igalia/wpe-android/compare/0e2c13da29969e9a12ca8feb080da024f2aba5a6...02e2f1b3bd9d1f9d0bb02569d07b8634dde1eb87">automated</a>, and version 0.1.2 has already been made this way, the only manual intervention being the approval of the draft created by the CI setup.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>GNOME Web Canary builds are working again, now based on the GNOME Flatpak runtime instead of the soon-to-be-deprecated WebKit Flatpak SDK runtime. To install it run:</p> <pre class="giallo z-code"><code data-lang="shellscript"><span class="giallo-l"><span class="z-entity z-name z-function">flatpak</span><span class="z-string"> --user install</span><span> \</span></span> <span class="giallo-l"><span class="z-string"> https://nightly.gnome.org/repo/appstream/org.gnome.Epiphany.Canary.flatpakref</span></span></code></pre> <p>This version of GNOME Web leverages nightly WebKitGTK builds from the WebKit Git <code>main</code> development branch.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2024/wip-3/cCwzglVSsRmaxfSSToJWVtVh.png" alt="" /></p> </div> <div class="wip-item"> <p>The <a rel="external" href="https://build.webkit.org/#/builders/992">WebKitGTK Debian 11 bot</a> has been retired. We officially stopped supporting WebKitGTK on Debian 11 on June 12th (one year after the release of Debian 12), however we have been maintaining WebKitGTK on Debian 11 for a longer time than initially expected. Debian 11 Security support reached end-of-life on August 14th, 2024.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #2 2024-11-15T23:10:08+00:00 2024-11-15T23:10:08+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-2/ <p>Update on what happened in WebKit in the week from November 8 to November 15.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>Sysprof received a round of improvements to the Marks Waterfall view, <a rel="external" href="https://gitlab.gnome.org/GNOME/sysprof/-/merge_requests/113">the hover tooltip now show the duration of the mark</a>. The Graphics view also <a rel="external" href="https://gitlab.gnome.org/GNOME/sysprof/-/merge_requests/112">received some visual improvements</a>, such as taller graphs and line rendering without cutoffs. Finally, Sysprof collector is now <a rel="external" href="https://gitlab.gnome.org/GNOME/sysprof/-/merge_requests/111">able to handle multiprocess scenarios better</a>.</p> <p>A new tool for Sysprof was added: <code>sysprof-cat</code>. It takes a capture file, and dumps it in textual form.</p> <p>This is all in preparation to further profiler integration in WebKit on Linux. A new set of integration points is being prepared for WebKit where it can, for example, report the page FPS and memory usage to Sysprof in the Graphics view.</p> <p><img src="https://blogs.igalia.com/webkit/blog/2024/wip-2/eFUhWENOTvpMAMzYDdDGUNyV.png" alt="Sysprof user interface screenshot, showing the updated “Graphics” tab" /></p> </div> <div class="wip-item"> <p>The JSCOnly port may be built with support for the GLib main loop when configured with <code>cmake -DPORT=JSCOnly -DEVENT_LOOP_TYPE=GLib</code>. This is a seldom used option and the build was broken for months, but <a rel="external" href="https://github.com/WebKit/WebKit/pull/36411">it has now been fixed</a>.</p> </div> <div class="wip-item"> <p>This week the team took some time to kickstart improvements to the documentation. One of the goals we have had in mind for long is adding pages to the manual on a number of topics, and in this vein Georges has <a rel="external" href="https://github.com/WebKit/WebKit/pull/36691">added an overview page for WebKitGTK</a> and Alex started a page listing some of the <a rel="external" href="https://github.com/WebKit/WebKit/pull/36690">available environment variables</a>.</p> <p>In order to allow sharing selected content between the GTK and WPE ports, Adrian is adding support to <a rel="external" href="https://github.com/WebKit/WebKit/pull/36692">setup additional content directories for gi-docgen</a> and to <a rel="external" href="https://github.com/WebKit/WebKit/pull/36717">process templates</a> to pick fragments of the source files depending on the port.</p> <p>Improving what we already have is important, and Lauro has <a rel="external" href="https://github.com/WebKit/WebKit/pull/36689">clarified how WebKitWebView::is-controlled-by-automation works</a>.</p> </div> <h2 id="infrastructure-construction-site">Infrastructure 🏗️</h2> <div class="wip-item"> <p>We lately have been deploying <a rel="external" href="https://build.webkit.org/#/builders?tags=%2BPackaging">nightly packaging bots</a>, to provide binaries ready to use for different projects.</p> <p>These bots run once per day and upload different built products that you can check below:</p> <ol> <li> <p>GNOME Web Canary (<a rel="external" href="https://webkitgtk.org/built-products/x86_64/release/nightly/GNOMEWebCanary">built products</a>):</p> <p>This one is meant to build GNOME Web with the GNOME SDK to produce the Canary builds of Web. Follow the progress at <a rel="external" href="https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/164">the corresponding Web merge request</a>.</p> </li> <li> <p><a rel="external" href="https://webkitgtk.org/built-products/x86_64/release/nightly/MiniBrowser">WebKitGTK</a> and <a rel="external" href="https://wpewebkit.org/built-products/x86_64/release/nightly/MiniBrowser">WPE WebKit</a> MiniBrowser/WebDriver universal bundles.</p> <p>These universal bundles should work on any Linux distribution and are intended for running tests on third-party CI systems without having to build WebKit. They include inside the tarball all the system libraries and resources needed to run WebKit, from <code>libc</code> up to the Mesa graphics drivers without requiring the usage of containers (similar concept to <a rel="external" href="https://appimage.org/">AppImage</a>). Currently these builds are used to for the WPT tests at <a rel="external" href="https://wpt.fyi">wpt.fyi</a>, running on the Mozilla TaskCluster CI.</p> </li> <li> <p>JSC universal bundle (<a rel="external" href="https://webkitgtk.org/jsc-built-products/x86_64/release">built products</a>.</p> <p>Same content as the other universal bundles, but only including the <code>jsc</code> command line program. This is currently used by <a rel="external" href="https://mths.be/jsvu">jsvu</a> to easily allow developers to test the latest version of JavaScriptCore.</p> </li> </ol> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div> WebKit Igalia Periodical #1 2024-11-08T23:25:32+00:00 2024-11-08T23:25:32+00:00 Igalia WebKit Team https://blogs.igalia.com/webkit/blog/2024/wip-1/ <p>Update on what happened in WebKit in the week from November 1 to November 8.</p> <h2 id="cross-port-cat">Cross-Port 🐱</h2> <div class="wip-item"> <p>The end-to-end latency <a rel="external" href="https://commits.webkit.org/286323@main">slightly improved</a> in the GstWebRTC backend, as the latency from capture devices is now properly taken into account.</p> </div> <div class="wip-item"> <p>Georges has proposed a new feature for Linux ports of WebKit: support for a new category of profiling information called “counters”. Counters are useful to track information over time, for example, the <abbr title="Frames Per Second">FPS</abbr> of WebKit while showing a web page, or how much memory a web page is consuming during its display. The counters are integrated with Sysprof.</p> <p>This is another tool that developers and enthusiasts can use to help profile and improve the performance of WebKit on Linux. The FPS counter is added as a proof of concept. <a rel="external" href="https://github.com/WebKit/WebKit/pull/36123">This is still under review</a>. <img src="https://blogs.igalia.com/webkit/blog/2024/wip-1/ToOIJDoisrCvGXTVwViKMFaB.png" alt="" /></p> </div> <div class="wip-item"> <p>The <code>prefer-hardware</code> WebCodecs option for video decoders is <a rel="external" href="https://commits.webkit.org/285692@main">no longer ignored</a>. It is used as a hint to attempt decoding with hardware-accelerated components. If that fails, the decoder falls back to software.</p> </div> <div class="wip-item"> <p>On the <abbr title="JavaScriptCore">JSC</abbr> ARMv7 front, work on enabling OMG, the highest WebAssembly optimizing JIT tier, is ongoing. Max Rottenkolber has <a rel="external" href="https://commits.webkit.org/286082@main">added support</a> for atomics. Justin Michaud has <a rel="external" href="https://bugs.webkit.org/show_bug.cgi?id=282543">synced up</a> the tail call code with 64-bits and submitted PRs to <a rel="external" href="https://github.com/WebKit/WebKit/pull/36084">further sync</a> the 64/32-bit OMG generators. Most importantly, he's been working on an <a rel="external" href="https://github.com/WebKit/WebKit/pull/35923">OSR fix</a> (On Stack Replacement, the ability for the VM to tier up to an optimizing tier even in the middle of a loop, which is vital for taking advantage of the optimized code). Angelos Oikonomopoulos has been going over corner cases in the B3 (the intermediate representation used by OMG) tests and submitting numerous fixes.</p> </div> <div class="wip-item"> <p>The minimum required ICU version is now 70.1. <a rel="external" href="https://github.com/WebKit/WebKit/commit/95d71be25d5b838b1171e6b9b2cd526190118fba">This change</a> updates ICU version checked by CMake to reflect a change that had already been done in <a rel="external" href="https://commits.webkit.org/284568@main">284568@main</a>, which rebaselined JavaScriptCore to ICU 70. By updating the version checks the build will fail as early as possible in case the required ICU version is not installed. In addition to ICU, the minimum versions of Harfbuzz and LibXML were updated too. These two libraries depend on ICU.</p> </div> <div class="wip-item"> <p>Philip <a rel="external" href="https://github.com/WebKit/WebKit/commit/7982fa5b773723aa51a7d3879a75f3290aac6a96">fixed</a> the <code>--enable-write-console-messages-to-stdout</code> setting so that it works inside <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/AudioWorklet">AudioWorklet</a> environments; previously it would have been ignored.</p> </div> <div class="wip-item"> <p>The <a rel="external" href="https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/MediaRecorder">MediaRecorder</a> backend <a rel="external" href="https://commits.webkit.org/286080@main">gained</a> WebM support (which requires GStreamer 1.24.9 or newer), and audio bitrate configuration support.</p> </div> <h2 id="webkitgtk-desktop">WebKitGTK 🖥️</h2> <div class="wip-item"> <p>The GTK port of the MiniBrowser <a rel="external" href="https://github.com/WebKit/WebKit/commit/d3e439c99c4b5466391c506fd3b8f033e0981fb9">now uses the GtkGraphicsOffload widget</a> when built with a modern GTK4 version. This allows GTK and the compositor to optimize the web view contents, potentially direct scanout it, or maybe put it in a monitor overlay plane as well. This should lead to less power consumption. This is an “invisible” improvement, meaning users won't be able to notice this.</p> </div> <h2 id="wpe-webkit-pager">WPE WebKit 📟</h2> <div class="wip-item"> <p>The WPE WebKit 2.47.1 development release <a rel="external" href="https://wpewebkit.org/release/wpewebkit-2.47.1.html">is now available</a>. This is the first preview release for the upcoming stable series, and includes a few new features like support for the <a rel="external" href="https://project-spiel.org/">Spiel speech synthesis library</a>, improvements to DMA-BUF usage in WebGL and video decoding, and the WPEPlatform API has gotten some new features and improvements.</p> <p>As usual, feedback for development releases is welcome, including issue reports <a rel="external" href="https://bugs.webkit.org/">on Bugzilla</a>.</p> </div> <h3 id="wpe-platform-api-jigsaw">WPE Platform API 🧩</h3> <div class="wip-description"> <p>New, modern platform API that supersedes usage of libwpe and WPE backends.</p> </div> <div class="wip-item"> <p>Carlos Garcia <a rel="external" href="https://commits.webkit.org/286075@main">added</a> basic touch input support to WPEPlatform DRM plug-in.</p> </div> <h2 id="community-events-handshake">Community &amp; Events 🤝</h2> <div class="wip-item"> <p>Mario published an article based on the talk delivered at the WebKit Contributors meeting on October 22nd, summarizing the work on WebKit done at Igalia in the past twelve months: <a rel="external" href="https://mariospr.org/2024/11/03/igalia-and-webkit-status-update-and-plans-2024">Igalia and WebKit: status update and plans</a>.</p> <p>The original slides are also <a rel="external" href="https://www.slideshare.net/slideshow/igalia-and-webkit-status-update-and-plans-72bd/272669557">available</a>.</p> </div> <div class="wip-end"> <p>That’s all for this week!</p> </div>