{	"version": "https://jsonfeed.org/version/1.1",
	"title": "Fujii&#39;s Blog",
	"language": "en",
	"home_page_url": "https://blogs.igalia.com/fujii/fujii",
	"feed_url": "https://blogs.igalia.com/fujii/feed/feed.json",
	"description": "Igalian blog.",
	"author": {
		"name": "Hironori Fujii",
		"url": "https://blogs.igalia.com/fujii"
	},
	"items": [
		{
			"id": "https://blogs.igalia.com/fujii/async-scrolling-improvements/",
			"url": "https://blogs.igalia.com/fujii/async-scrolling-improvements/",
			"title": "Async Scrolling Improvements",
			"content_html": "<p>WPE WebKit and WebKitGTK support <a href=\"https://docs.webkit.org/Ports/WebKitGTK%20and%20WPE%20WebKit/Graphics.html#async-scrolling\">async scrolling</a> for wheel events.\nI landed several improvements for the upcoming 2.52 release.</p>\n<ul>\n<li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=305451\">Bug 305451</a> – wheel event async scrolling doesn’t start while the main thread is blocked</li>\n<li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=305560\">Bug 305560</a> – rendering glitches for unpainted tiles</li>\n<li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=305561\">Bug 305561</a> – Paint scrollbars in the scrolling thread for async scrolling</li>\n</ul>\n<p>Here are videos of before and after the changes.\nThis is <a href=\"https://bug-305441-attachments.webkit.org/attachment.cgi?id=477989\">the test content</a>.</p>\n<p><video src=\"https://blogs.igalia.com/fujii/video/async-scrolling-before.mp4\" controls=\"\" autoplay=\"\" muted=\"\" loop=\"\"></video>\n<video src=\"https://blogs.igalia.com/fujii/video/async-scrolling-after.mp4\" controls=\"\" autoplay=\"\" muted=\"\" loop=\"\"></video></p>\n<p>There is still room for further improvement.</p>\n<ul>\n<li>The scrollbar hiding animation timer is still running in the main thread.\n<ul>\n<li>It can use CoordinatedPlatformLayer::setAnimations.</li>\n<li>Or CoordinatedPlatformLayer::setOpacity.</li>\n</ul>\n</li>\n<li>Add the showing animation and transition animations of mouse hover states like GTK Adwaita theme</li>\n<li>Support touch and gesture events async scrolling</li>\n</ul>\n",
			"date_published": "2026-03-16T00:00:00Z"
		}
		,
		{
			"id": "https://blogs.igalia.com/fujii/building-webkit-and-libsoup-with-addresssanitizer-asan/",
			"url": "https://blogs.igalia.com/fujii/building-webkit-and-libsoup-with-addresssanitizer-asan/",
			"title": "Building WebKit and libsoup with AddressSanitizer (ASan)",
			"content_html": "<p>I built libsoup and WebKit with ASan today.\nIt works almost out of the box.\nI used Clang.\nGCC also supports ASan, but WebKit has a problem with it.\n<a href=\"https://github.com/Igalia/webkit-container-sdk\">WebKit Container SDK</a> is based on Ubuntu 20.04 LTS at the moment.\nIt contains clang 18 by default.</p>\n<p>Installed required packages.</p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> <span class=\"token function\">install</span> libclang-rt-18-dev llvm-18-dev</code></pre>\n<p>Set env vars.</p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">CC</span><span class=\"token operator\">=</span>clang <span class=\"token assign-left variable\">CXX</span><span class=\"token operator\">=</span>clang++</code></pre>\n<p>Passed some flags to libsoup.</p>\n<pre class=\"language-diff\" tabindex=\"0\"><code class=\"language-diff\"><span class=\"token coord\">--- /jhbuild/webkit-sdk-deps.modules.orig</span><br><span class=\"token coord\">+++ /jhbuild/webkit-sdk-deps.modules</span><br><span class=\"token coord\">@@ -149,7 +149,7 @@</span><br><span class=\"token unchanged\"><span class=\"token prefix unchanged\"> </span><span class=\"token line\">    &lt;/dependencies><br></span><span class=\"token prefix unchanged\"> </span><span class=\"token line\">  &lt;/meson><br></span></span><br><span class=\"token deleted-sign deleted\"><span class=\"token prefix deleted\">-</span><span class=\"token line\">  &lt;meson id=\"libsoup\" mesonargs=\"-Dtests=false\"><br></span></span><span class=\"token inserted-sign inserted\"><span class=\"token prefix inserted\">+</span><span class=\"token line\">  &lt;meson id=\"libsoup\" mesonargs=\"-Dtests=false -Db_sanitize=address -Db_lundef=false\"><br></span></span><span class=\"token unchanged\"><span class=\"token prefix unchanged\"> </span><span class=\"token line\">    &lt;branch repo=\"github.com\"<br></span><span class=\"token prefix unchanged\"> </span><span class=\"token line\">            checkoutdir=\"libsoup\"<br></span><span class=\"token prefix unchanged\"> </span><span class=\"token line\">            module=\"GNOME/libsoup.git\" tag=\"3.6.6\"/></span></span></code></pre>\n<p>Then, build and install libsoup.</p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\">jhbuild buildone <span class=\"token parameter variable\">-f</span> libsoup</code></pre>\n<p>Then, build WebKit with ASan.</p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\">./Tools/Scripts/build-webkit <span class=\"token parameter variable\">--gtk</span> <span class=\"token parameter variable\">--release</span> <span class=\"token parameter variable\">--cmakeargs</span><span class=\"token operator\">=</span>-DENABLE_SANITIZERS<span class=\"token operator\">=</span>address</code></pre>\n<p>WebKit has a lot of memory leaks by design. Don’t detect leaks.</p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">ASAN_OPTIONS</span><span class=\"token operator\">=</span>detect_leaks<span class=\"token operator\">=</span><span class=\"token number\">0</span></code></pre>\n<p>For run-webkit-tests, I had to modify a script a bit.</p>\n<pre class=\"language-diff\" tabindex=\"0\"><code class=\"language-diff\">diff --git a/Tools/Scripts/webkitpy/port/driver.py b/Tools/Scripts/webkitpy/port/driver.py<br>index eb12801a455b..c9f74eeab4e2 100644<br><span class=\"token coord\">--- a/Tools/Scripts/webkitpy/port/driver.py</span><br><span class=\"token coord\">+++ b/Tools/Scripts/webkitpy/port/driver.py</span><br>@@ -482,7 +482,7 @@ class Driver(object):<br><span class=\"token unchanged\"><span class=\"token prefix unchanged\"> </span><span class=\"token line\">        else:<br></span><span class=\"token prefix unchanged\"> </span><span class=\"token line\">            environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)<br></span><span class=\"token prefix unchanged\"> </span><span class=\"token line\">        environment['LOCAL_RESOURCE_ROOT'] = str(self._port.layout_tests_dir())<br></span></span><span class=\"token deleted-sign deleted\"><span class=\"token prefix deleted\">-</span><span class=\"token line\">        environment['ASAN_OPTIONS'] = \"allocator_may_return_null=1\"<br></span></span><span class=\"token inserted-sign inserted\"><span class=\"token prefix inserted\">+</span><span class=\"token line\">        environment['ASAN_OPTIONS'] = \"allocator_may_return_null=1:detect_leaks=0\"<br></span></span><span class=\"token unchanged\"><span class=\"token prefix unchanged\"> </span><span class=\"token line\">        environment['__XPC_ASAN_OPTIONS'] = environment['ASAN_OPTIONS']<br></span></span><br><span class=\"token unchanged\"><span class=\"token prefix unchanged\"> </span><span class=\"token line\">        # Disable vnode-guard related simulated crashes for WKTR / DRT (rdar://problem/40674034).</span></span></code></pre>\n<p>That’s it. Enjoy.</p>\n",
			"date_published": "2026-03-11T00:00:00Z"
		}
		
	]
}
