Weave Weave

A Windows compatibility layer.
Built in Rust. From scratch.

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.

75 Win32 functions 1,661 registered 8 milestone-proven apps
🦀 100% Rust core
🔒 Sandboxed by default
🧩 Modular DLL crates
🏗️ x86_64 + ARM64
📜 GPL-3.0 licensed

Technical brief

What Weave is

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.

Why not just use Wine

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.

Why now, not 1993

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.

Two-layer execution model

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.

Sandboxing by default

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.

Current state

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.

The long tail

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.

What runs. What's next.

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
More coming soon.