Not a Wine fork. Weave reimplements the Windows API in Rust.
Memory safe with default sandboxing and a clean architecture
that doesn't carry 30 years of C legacy.
Weave is a reference-first implementation of the Windows API for Linux. When a Windows binary calls kernel32.dll or ntdll.dll, Weave intercepts those calls and translates them to native Linux syscalls, written entirely in Rust, with no shared code with Wine. The result is a compatibility layer that speaks the same language as Windows applications without inheriting the weight of a legacy codebase. The Weave compatibility engine is distro-agnostic infrastructure, any Linux distribution can integrate it.
Wine works, and for most people it's the right answer today. Weave exists because Wine carries 30 years of accumulated C: memory unsafety, no isolation model, and architectural decisions made before modern Linux primitives existed. Weave's current codebase is roughly 5–10% the size of Wine's: a smaller, sharper surface that's easier to audit, easier to reason about, and far easier to sandbox correctly. That's not a limitation; it's the point.
Wine was the right architecture for 1993: the only way to get Windows apps running on Linux was a monolithic C codebase that did everything itself. Thirty years later, the host has caught up. Linux now has Rust for memory safety, Landlock for filesystem isolation, Vulkan for graphics, and PipeWire for audio. These are mature primitives Wine predates by decades. A from-scratch rebuild isn't a rewrite of Wine; it's a new architecture that delegates to modern host capabilities instead of reimplementing them. The same constraints that forced Wine's design no longer exist.
Weave Native: Pure Rust API translation. Every Windows call is mapped to native Linux syscalls, with graphics routed through DXVK/VKD3D over the host Vulkan stack. Weave Sandbox: Always active underneath. Landlock filesystem isolation is enforced before the guest process starts; bubblewrap process containment and seccomp-BPF syscall filtering are on the roadmap. The layers stack: an app runs natively while the sandbox enforces its constraints around it. There is no trade-off between compatibility and isolation.
Wine can't sandbox. The architecture doesn't allow it without breaking compatibility. Weave was designed with isolation as a requirement from day one. Before any Windows code executes, Weave applies Landlock rules that confine the guest to its own directory. The guest runs out-of-process, so a crash in the Windows app can't touch the host runtime. Seccomp-BPF syscall filtering is the next layer: per-application profiles that restrict what syscalls the guest can make. No other compatibility layer offers this. The difference is "running untrusted Windows binaries safely" versus hoping nothing goes wrong.
Pre-alpha, actively progressing. The PE loader, ntdll gateway, and syscall dispatcher are built and running real applications. Across 26 DLL emulation crates, 1,661 Win32 exports are registered and 75 are fully implemented, with Wine-referenced behavior, milestone-gated, and verifiable. Seven applications have green end-to-end CI gates with real-desktop validation on GNOME Wayland, all inside a Landlock sandbox. Audio (PipeWire/ALSA), the D3D11 thunk path, and complete COM/OLE coverage remain open, but the foundation is proven and the milestone cadence closes new surface every sprint.
Windows has hundreds of thousands of applications. The goal isn't to test them one by one; it's to implement the API surface completely enough that the long tail runs without special-casing. Most apps that fail today fail for the same handful of missing calls. Fix those, and hundreds more start working at once. That's the leverage: each implemented function opens dozens of apps.
Coverage is growing fast: 1,661 exports across 26 DLL crates, 75 implemented, a milestone every few days. Not everything works yet, but here's the honest picture of where we are and where we're headed.
| Application | Category | Capability | Key Surface |
|---|---|---|---|
| 7-Zip | Supported | GUI extract + CLI round-trip byte-identical. M14 closed CI-green. Real-desktop validated. | kernel32 · shell32 · comctl32 |
| IrfanView | Supported | BMP/JPEG/PNG/GIF open, Save As PNG, folder nav. 7 CI-green milestones. Real-desktop validated. | gdi32 · gdiplus · kernel32 |
| Notepad++ | Supported | Syntax highlighting, editor save/reopen byte-match, plugin folder honored. Real-desktop validated. | Scintilla · comctl32 · gdi32 |
| PuTTY / Plink | Supported | SSH terminal + CLI: TCP connect, key exchange, remote exec, ExtTextOutW text rendering. All CI-green. | ws2_32 · kernel32 · gdi32 |
| wget | Supported | Plain HTTP GET to example.com, exit 0, stdout verified. Full Winsock stack exercised. | ws2_32 · kernel32 |
| curl | Supported | HTTPS via Rustls-backed SSPI. IAT resolution + TLS handshake CI-green. | ws2_32 · crypt32 · secur32 |
| SciTE | Supported | Scintilla editor, Lua re-export EXE edge case, GDI text rendering, non-black pixels verified. | Scintilla · gdi32 · kernel32 |
| D3D9 via DXVK | Supported | D3D9→DXVK→Vulkan pipeline proven on NXEngine and testsprite2. M9 CLOSED CI-green. | D3D9 · DXVK · Vulkan |
| NXEngine-evo (Cave Story) | Supported | Full game via software + D3D9/DXVK paths, keyboard input. Audio deferred (SDL_AUDIODRIVER=dummy). | SDL2 · D3D9 · DXVK · Vulkan |
| SDL2 testsuite (testsprite2) | Supported | Animated sprites in X11 window via SDL2 (software + D3D9). Pixel-check verified, 15s runtime. | SDL2 · X11 · kernel32 |
| Q-Dir | In Progress | Launches, file-pane populates, 541 IAT imports resolve. Shell namespace + drag-drop remaining. | shell32 · comctl32 · kernel32 |
| SumatraPDF | In Progress | GDI+ path working. Render gate provable but crash under investigation, frozen (27 strikes, verdict 5). Human RE required. | GDI+ · GDI32 · COM |
| Audacity | In Progress | CRT stub accumulation in progress. Audio blocked on PipeWire/ALSA bridge. | ucrt · msvcp140 · kernel32 |
| SPSS Statistics | In Progress | Launch gate defined, surface audit complete. Deferred during E4 sandbox arc. 437 imports, 1 unknown phase (mfc140u). | mfc140u · kernel32 · comctl32 |
| DirectX 11 / 12 | Planned | D3D12 crate scaffolded. D3D11 via DXVK path exists but unvalidated. No active milestone. | D3D11 · D3D12 · DXVK · Vulkan |
| OBS Studio | Planned | Needs D3D11/DXVK, screen capture, audio, encoder pipeline. No work started. | D3D11 · DXVK · mmdevapi |
| Signal Desktop | Planned | Electron app. Decision: host in Weave. Blocked on named pipes, WinHTTP, DirectWrite, child PE bootstrap. | Electron · WinHTTP · DirectWrite |
| Obsidian | Planned | Electron app. Inherits Signal's blockers. Proprietary. Fixture OK, not bundleable. | Electron · Chromium · kernel32 |
| Git for Windows | Planned | CRT depth, MSVC runtime, async DNS resolution needed. No active milestone. | msvcrt · ws2_32 · kernel32 |
| Firefox (Win32) | Planned | Requires Electron/Chromium precedent. NSS, libuv depth not scoped. | NSS · ntdll · ws2_32 |
| Adobe Acrobat Pro | Planned | PDF redaction, OCR, forms, JavaScript. Heavy COM/OLE cliff. | COM · GDI+ · kernel32 |
| R + RStudio | Planned | Statistical computing, CRAN binaries, R kernel. Not scoped. | kernel32 · CRAN · gdi32 |
| PyCharm | Planned | Python IDE, remote interpreters, Jupyter. Java-based, relies on JVM Win32 surface. | Java · kernel32 · ws2_32 |
| Zotero | Planned | Reference manager, browser plugin, file watching, PDF annotation. Electron-based. | Electron · kernel32 · ws2_32 |
| Toggl Desktop | Planned | Time tracking, system tray, one-click timer, offline sync. | kernel32 · ws2_32 · shell32 |