Running WebKit on Windows
Updated: 2022-11-10
I’m working on WebKit on Windows these days. Sometimes I see someone asking about WebKit for Windows. I would summarize the current situation.
AppleWin port
AppleWin port is an upstream port that is used for iTunes for Windows. It uses the same components with Mac port, i.e. Core Graphics and Core Foundation, etc.
It supports only WebKit1. They removed AppleWin WebKit2. And, WebKit thread is not separated from UI thread. The browser becomes unresponsive while running JavaScript benchmarks.
AppleWin port is supporting both 32bit and 64bit versions because iTunes for Windows is supporting them. However, the 32bit version of Windows JavaScriptCore is supporting only Low-Level Interpreter C Loop, not supporting JIT. LLInt CLoop has the high stack consumption issue for MSVC.
The latest 64bit built binary can be downloaded from Buildbot. You need to install iTunes on your PC by using an MSI installer. You can’t use the Microsoft Store version of iTunes.
AppleWin has disabled WebInspectorUI as default. WebInspector can’t be used with the binaries.
You can compile out both 32bit and 64bit AppleWin port by yourself. However, the required library WebKitSupportLibrary.zip is not redistributable.
WinCairo port
WinCairo port is a redistributable upstream Windows port. It supports both WebKit1 and WebKit2, but it plans to remove WebKit1.
It supports only 64bit. Its JavaScriptCore supports LLInt Asm, baseline JIT, and DFG JIT, but neither FTL JIT nor Web Assembly.
The latest built binary can be downloaded from Buildbot.
Latest #WebKit MiniBrowser for Windows based on WinCairo 64https://t.co/SpdGSAsvW3 :
— Friedhold Matz (@FriedholdMatz) June 24, 2020
Todo: `Download build artifacts from Buildbot` .
~ 125mb
I'd like to embed this as WKwebView in Java .. but I can't. pic.twitter.com/uCBnngXPK9
Microsoft Playwright is distributing WinCairo port WebKit with some modifications.
Playwright (WebKit on Windows) pic.twitter.com/PCluWMkI2s
— Fujii Hironori (藤井宏憲) (@fujii0) June 17, 2020
Here is the list of Microsoft Playwright modifications to WinCairo as far as I know.
- Disables high DPI support
- Disables GPU process mode
- Uses the complex text code path always
- Added a option to disable accelerated compositing (–disable-accelerated-compositing)
- Hides the native scroll bars
If you have installed npm, you can run Playwright by the following command.
npx playwright wk https://webkit.org/
QtWebKit
QtWebKit a downstream port that supports WebKit1 and WebKit2.
In WebKit1, WebKit thread and UI thread are separated. It seems that Accelerated Compositing doesn’t work on Windows.
WebKitGTK
WebKitGTK is a well maintained upstream port but doesn’t support Windows. WebKitGTK is distributing prebuilt MiniBrowser bundles. You need WSL and X11 server (VcXsrv or Cygwin/X) to run them.
- https://webkitgtk.org/built-products/x86_64/release/
- Bug 215266 – [GTK][WPE] Add a script for generating MiniBrowser bundles
WPE WebKit
WPE WebKit is a well maintained upstream port but doesn’t support Windows. WPE is distributing prebuilt MiniBrowser bundles. It needs Wayland server on Windows. But, I haven’t tried yet.
JavaFX WebKit
Arunprasad Rajkumar is working on it in June 2019. But I don’t know.