Win32 Compatibility Matrix and Bring-Up Ladder
What is it?
This roadmap is how Impossible OS will measure Windows compatibility instead of claiming it: a per-DLL coverage tracker, a ladder of test tiers from "a program can exit" to full Win32 windows and eventually WinUI 3, counters that record which unimplemented functions real programs call, and a CI gate that fails a build when the score drops. It is tracking and test infrastructure only; the APIs themselves are implemented by other roadmaps. None of its thirteen sections has shipped.
How does it work?
Today. There is no tracker, ladder or score. The nearest thing to a compatibility inventory is the PE loader's export tables in pe.c: 14 kernel32 names and 96 ntdll names that an imported function can bind to. The user-mode Win32 test, test_win32.c, exercises the small Win32 shim in the user libc. The base "unimplemented function" logger this roadmap extends, win32_unimpl_stub(), is specified by the Win32 API surface roadmap but not written, and the src/win32/ directory it lives in does not exist.
Planned design.
- Coverage tracker.
sdk/docs/win32-compat.mdwith one table per DLL (kernel32,user32,gdi32,ntdll,advapi32,shell32,msvcrt,comdlg32) and a status per function: implemented, stub, partial or missing. A host script,tools/compat-scan.sh, refreshes the status from the code. - Stub counters. Each stub call also increments a counter in a shared-memory map named
Win32CompatCounters, created withSYS_SHMEM_CREATE(syscall.h);win32compat reportprints the 40 most-called missing functions. - Bring-up ladder.
sdk/compat/tier1/totier8/, each with small test programs and an expected serial line, run headless in QEMU byrun_tier.sh. - CI gate.
make compat-checkruns the tiers, records a score in the Registry (HKLM\SYSTEM\Win32Compat\Score) and fails when any enabled tier fails; tiers whose API gate is not met are skipped.
The tiers, each gated on the API work beneath it:
| Tier | Target |
|---|---|
| 1 | Process exit only |
| 2 | Console input and output |
| 3 | File input and output |
| 4 | Processes and the Registry |
| 5 | Memory and synchronization |
| 6 | MessageBox() and basic GUI |
| 7 | Full Win32 windows and controls |
| 8 | Extended Win32 surface |
| 9 | WinRT, DirectX, WinUI 3 and Windows App SDK apps |
flowchart LR
P[tier programs] --> Q[QEMU headless run]
Q --> C[serial check]
C --> S[compat score]
S --> G[CI gate]
X[stub counters] --> R[win32compat report]
What are its interfaces?
| Interface | Status |
|---|---|
PE loader export tables (14 kernel32, 96 ntdll) |
Shipped |
win32_unimpl_stub() base logger |
Planned in the Win32 API surface roadmap, section 9 |
sdk/docs/win32-compat.md, compat_stub(), win32compat.exe |
Planned in section 1 |
sdk/compat/ and run_tier.sh |
Planned in section 2 |
| Tier programs 1 to 9 | Planned in sections 3 to 10 and 13 |
make compat-check, scripts/compat-check.sh |
Planned in section 12 |
How do I use it?
Nothing in this roadmap runs yet. The current Win32 shim is tested with the user-mode test programs that the kernel test run launches:
bash scripts/test.sh
Who owns what?
The functions each tier needs come from other roadmaps: the PE loader and ring-3 execution from the Win32 PE Loader roadmap, the exports and the base stub logger from the Win32 API Surface roadmap, the runtime from NTDLL and the User-Mode Runtime, and windows and messages from the Win32 Subsystem Server. This file owns only the measurement. Its gate references are loose in places: the Tier 2 gate is written as two different section pairs, and some "TODO-07" gates mean the PE loader roadmap (10-platform-services/TODO-07), not this file.
What is not implemented yet?
- API Coverage Tracker
- Bring-Up Ladder Framework
- Tiers 1, 2, 3, 4, 5, 6, 7, 8 and 9
- Stub Call Log Analysis
- CI Compatibility Gate
How does it compare with Windows 11 and Linux?
Windows needs no ladder of its own; Microsoft tracks application compatibility privately and exposes stub calls through ETW and Application Verifier. On Linux, Wine publishes its AppDB and logs every call with WINEDEBUG=+relay, and ReactOS runs its own test bot. Impossible OS combines those ideas: a public, generated coverage table, a published ladder with explicit gates, and a CI gate that stops a failing tier from landing unnoticed.