Architecture
Avalonia has no C API. D cannot call C# types directly, so avalonia-d splits the stack:
| Layer | Role |
|---|---|
D ( |
|
C ABI ( |
|
DNNE shim ( |
Native exports that bootstrap CoreCLR and forward into managed methods. |
|
Handle table, |
avd_init must run before creating widgets (SetupWithLifetime). avd_run
blocks on the desktop lifetime until the window closes.
The ABI is intentionally small. It is not a generated 1:1 projection of every Avalonia type.