Ranvier.View.WebCore.Traced
0.1.0-rc.1
dotnet add package Ranvier.View.WebCore.Traced --version 0.1.0-rc.1
NuGet\Install-Package Ranvier.View.WebCore.Traced -Version 0.1.0-rc.1
<PackageReference Include="Ranvier.View.WebCore.Traced" Version="0.1.0-rc.1" />
<PackageVersion Include="Ranvier.View.WebCore.Traced" Version="0.1.0-rc.1" />
<PackageReference Include="Ranvier.View.WebCore.Traced" />
paket add Ranvier.View.WebCore.Traced --version 0.1.0-rc.1
#r "nuget: Ranvier.View.WebCore.Traced, 0.1.0-rc.1"
#:package Ranvier.View.WebCore.Traced@0.1.0-rc.1
#addin nuget:?package=Ranvier.View.WebCore.Traced&version=0.1.0-rc.1&prerelease
#tool nuget:?package=Ranvier.View.WebCore.Traced&version=0.1.0-rc.1&prerelease
Ranvier.View.WebCore
Runs Ranvier.View components on .NET against a native WebCore page from
Ranvier.WebCore, with no browser. WebCoreHost owns the page:
its Document takes the same Mounting.mount as the browser renderer, and the app forwards window input to it and
paints it into its window.
Experimental, on Windows x64, Windows ARM64, Linux x64 and macOS arm64 (macOS 26). The backend references
the canonical Ranvier.WebCore managed interop and Ranvier.WebCore.Native aggregate, which selects native
assets for the application's RID. On macOS, create the host and run WebCore on the process main thread,
shared with SDL's event pump.
Install
dotnet add package Ranvier.View.WebCore --version 0.1.0-alpha.1
Use Ranvier.View.WebCore.Traced for the traced build. The package brings the shared Ranvier.Dom
contracts, canonical managed interop and five-RID native aggregate; no native download or copied interop
is needed. Publish with the supported target RID so the SDK selects its libraries and resources. For an
SDL window, install the presenter package instead.
macOS CI passed 770 tests, with 16 ignored and no failures, including the SDL hidden-window tests.
The subsequent four-platform CI run passed 773 tests per platform, with 16 existing ignored and no failures, plus the visible sample and both NativeAOT apps. Windows ARM64 ran on a real ARM runner; Linux used Ubuntu 24.04 with Xvfb.
The ABI 21 integration uses shared Ranvier.Dom contracts and canonical packaged interop, including
namespace creation, secondary documents, node/string unions, sequences and variadic operations. Against
the corrected preview.7 CI packages from run 40729363033,
the full Windows x64 backend suite passed 781 tests, with 12 existing ignored and no failures or errors.
Fresh normal/traced package-only consumers also passed both apps under JIT and NativeAOT; each smoke run
passed 15 checks, including hydration retaining its server node and a native click updating state.
Fresh runs against all seven public preview.7 native packages also pass both apps under normal/traced
JIT and NativeAOT, with exact release-source and payload checks. View libraries are locally packed in
those runs. Full source CI passed
all 17 enabled jobs, with 781 backend tests and 12 existing ignored per supported platform, both AOT apps
and the browser/analyzer/package gates. Strict public-runtime GPU integration
also passed all 18 jobs. Fully published normal/traced CPU/GPU consumers are checked by the
package acceptance workflow.
Final public-package acceptance passed all four normal/traced CPU/GPU jobs: 16 app runs, 120 smoke assertions, eight independent UIA checks and 16 native/resource payload verifications, with fresh official-feed restores and no producer project references. Package-only normal/traced Fable/browser counters also pass with the explicit Fable DOM companion. The shared View metadata retains standard Fable.Core attributes; native runtime graphs contain no Xantham or legacy Fable.Ranvier binding packages.
open Ranvier
open Ranvier.View
open Ranvier.View.Dom
open Ranvier.View.WebCore
use host = WebCoreHost.Create (320, 200)
use graph = new Graph ()
let container = host.Document.createElement "div"
host.Document.body.appendChild container |> ignore
let mounted =
Mounting.mount graph None (fun errors -> raise (AggregateException errors)) container None (fun context ->
Program.run (Component.render counter 1) context.Backend)
host.Click (40, 30) |> ignore // input in page pixels
host.Cycle () // run WebCore's timers and the posted callbacks
host.Frame () // lay out and paint
let struct (width, height) = host.PaintSize
let pixels = Array.zeroCreate<byte> (width * height * 4)
host.Paint pixels // RGBA, row by row
All calls go on the thread that created the host.
Native file picker
On Windows, an SDL window can use the system file dialog for <input type="file">:
open Ranvier.View.WebCore
open Ranvier.View.WebCore.Sdl
use window = Window.Create ("Files", 800, 600)
use picker = WindowsFilePickers.install window.Host window.NativeHandle
while window.Step () do ()
Install it only when WindowsFilePickers.available and WebCoreHost.Has "file-picker" are true. The provider
supports single and multiple files and extension filters. Directory requests are cancelled; MIME-only filters show
all files. Disposing the provider or removing its input dismisses an open dialog. Applications on other platforms
can install their own provider with FilePickers.install.
CssQueries.forHost host provides document-scoped CSS.supports queries through the engine parser.
ComputedStyles.forHost host returns live, read-only declarations for an element or pseudo-element
through the shared Ranvier.Dom.ComputedStyleService contract. Both providers borrow the host and
require elements from its document; returned declarations expire when the host is disposed.
Use the matching forDocument providers in Fable.Ranvier.Dom for browser code.
Element.getClientRects() and Range.getClientRects() return retained fragment snapshots through
DOMRectList. Its length and item(uint32) preserve engine ordering and double-precision rectangle
coordinates; an out-of-range item is null. Repeated reads of an item preserve wrapper identity.
Snapshots remain readable after layout changes or element removal and expire with their owning host.
Collapsed ranges inside rendered text may have a zero-width caret rectangle.
The shared conformance fixtures cover element, cascade, pseudo-element, live-update and read-only behaviour in Chromium, Windows JIT and Windows NativeAOT. Other-platform conformance and official package acceptance are tracked separately.
NativeAOT
Publish the smoke app and counter on the target OS:
dotnet publish tests/Ranvier.View.WebCore.AotSmoke -c Release -r win-x64 -o artifacts/native-aot/smoke
dotnet publish examples/Ranvier.NativeCounter -c Release -r win-x64 -o artifacts/native-aot/counter
Use -r osx-arm64 on macOS 26. Windows needs the .NET 10 SDK, Visual Studio C++ Build Tools (the Desktop
development with C++ workload) and a Windows SDK; macOS needs the .NET 10 SDK and Xcode command-line tools.
Run the published smoke executable directly; it verifies mount, paint, native click and repaint. Run the
published counter with RANVIER_SMOKE=1 for its bounded visible-window check. Keep all native libraries and
WebKit.resources from the publish folder beside the executable. The app is native; the WebCore libraries
and resources remain separate files.
Both apps published and ran on Windows x64 locally and in Windows and macOS arm64 CI. The counter opened a visible 480x320 window, with scale 1, matching backing dimensions, painted content and a successful text/plain clipboard round-trip on each platform. Retina scale 2 and a real IME remain manual checks. NativeAOT still reports FSharp.Core/view reflection, trimming and generic-recursion warnings; the exercised app paths pass, and broader AOT coverage remains work to do.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.Core (>= 10.1.401)
- Ranvier.View.Dom.Traced (>= 0.1.49-rc.1)
- Ranvier.WebCore (>= 0.1.1-rc.2)
- Ranvier.WebCore.Native (>= 0.1.1-rc.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Ranvier.View.WebCore.Traced:
| Package | Downloads |
|---|---|
|
Ranvier.View.WebCore.Sdl.Traced
Shows a Ranvier.View.WebCore page in an SDL3 window: paints it, forwards mouse, keyboard and input method events to it, and bridges the cursor and the clipboard. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-rc.1 | 0 | 11/4/2026 |
| 0.1.0-alpha.48 | 43 | 11/4/2026 |
| 0.1.0-alpha.47 | 40 | 11/3/2026 |
| 0.1.0-alpha.46 | 53 | 11/3/2026 |
| 0.1.0-alpha.45 | 58 | 11/3/2026 |
| 0.1.0-alpha.44 | 60 | 11/1/2026 |
| 0.1.0-alpha.39 | 62 | 11/1/2026 |
| 0.1.0-alpha.8 | 59 | 10/31/2026 |
| 0.1.0-alpha.7 | 59 | 10/31/2026 |
| 0.1.0-alpha.6 | 68 | 10/31/2026 |
| 0.1.0-alpha.5 | 54 | 10/30/2026 |
| 0.1.0-alpha.4 | 64 | 10/30/2026 |
| 0.1.0-alpha.3 | 63 | 10/29/2026 |
| 0.1.0-alpha.2 | 64 | 10/29/2026 |
| 0.1.0-alpha.1 | 67 | 10/29/2026 |
Experimental. The API may change.