Builds WebKit's WebCore and JavaScriptCore with Ranvier's C ABI host (RanvierWebCoreHost) and packs them
as versioned native packages. Ranvier.WebCore.Native aggregates the five runtime packages;
Ranvier.WebCore provides the canonical managed interop. Ranvier's WebCore view loads the native host
through those declarations rather than copying them into its own sources.
The current ABI 25 development batch includes typed DOM transports, namespace and document factories, shared .NET/Fable contracts, CSS support/registration, typed CSS values/maps/transforms, geometry values and native Windows UI Automation. The generator emits 1,926 DOM functions across 153 selected native interfaces, with zero stubs; the generator guide records scope, ownership and omitted members. Typed map delivery distinguishes private verification from remaining platform/public acceptance. Geometry delivery records point, rectangle, quad and matrix producer verification and the remaining shared/platform/public gates. Typed transforms tracks component bindings and matrix conversion. Accessibility lists the Windows bridge's supported patterns and limitations.
The slim flavor cuts WebKit to what presentation needs: no network stack, crypto library, GPU code, browser storage, service workers, WebGPU, WebXR or inspector, and JavaScriptCore without its JIT tiers. The initial Windows measurement was 77.59 MB in 18 DLLs, against 125.84 MB in 31 for the lean reference build; this is not a fresh size measurement of ABI 25.
| WebKit | b95c91b1c0ee43cc86d25ff7af73038f67a88e04 (pins.json) |
| Runtimes | win-x64, win-arm64, linux-x64, linux-arm64, osx-arm64; build details in docs/CI.md |
| Toolchain | clang-cl 23.1.4, MSVC 14.50, vcpkg at pins.json's commit |
| Path | Contents |
|---|---|
pins.json |
Every external version: WebKit, vcpkg, LLVM, ICU, the package version |
patches/ |
The WebKit patch series, applied in series order (docs/PATCHES.md) |
host/ |
The C ABI (RanvierWebCoreAbi.h, .cpp) and the CMake target added to Tools/TestWebKitAPI |
config/ |
CMake settings per flavor (docs/SETTINGS.md) |
scripts/ |
build.py (fetch, prepare, configure, build, package), patches.py, icu_data.py, angle_stub.py |
packaging/ |
The project dotnet pack turns the staged DLLs into a package |
.github/workflows/build.yml |
CI (docs/CI.md) |
docs/ACCESSIBILITY.md |
The accessibility tree and its events, for screen readers |
docs/UPDATING.md |
Moving to a new WebKit commit |
docs/VERIFICATION.md |
What the first build checked, and what it did not |
On Windows with Visual Studio's x64 C++ build tools, Python 3.12+, Perl, Ruby and gperf:
python -I scripts/build.py all
This clones WebKit and vcpkg at their pins into C:/rw, downloads LLVM, applies the patches, installs the
host, configures, builds and packs. The package lands in C:/rw/packages, and the staged files, with
manifest.json listing each DLL's size and SHA-256, in C:/rw/out/slim.
- One concern per patch. Feature-removal options default to OFF; documented correctness repairs apply
in every flavor, as listed in
docs/PATCHES.md. - Keep upstream C++ corrections bounded and paired with permanent regressions in
tests/abi. - Generate stubs from upstream headers where a member list follows a header.
- Speed over size: the build stays at
/O2.