Skip to content

Proton 10.0-4 — FEX unixlib + fast-yield (arm64ec/bionic) · stripped + zstd · SDK 28 + SDK 35

Choose a tag to compare

@The412Banner The412Banner released this 13 Jul 14:41

🍷 Proton 10.0-4 — FEX unixlib support · arm64ec (bionic)

Bionic arm64ec Proton 10.0-4 (Valve's latest 10.x point release), recompiled from source against Android bionic — a drop-in Wine/Proton runtime for Winlator-bionic emulators, carrying the built-in FEXCore unixlib load-by-name loader.

🪶 Smaller & faster to install: these builds are now compiled -g0 -O2 (no debug info) and stripped (llvm-strip --strip-all), cutting the installed tree from ~2 GB down to ~390 MB. The .wcp is now zstd-packed (zstd -T0 -19), dropping the download from 269 MB (xz) → ~88 MB (~3× smaller) and decompressing far faster (the app's ContentsManager auto-detects xz/zstd, so no app change is needed). CI is also ccache-accelerated now, so rebuilds are much faster. Assets: arm64ec, for SDK 28 (Android 9+, 4 KB pages) and SDK 35 (Android 15 / 16 KB pages).


✨ What it provides / does

  • 🎮 Runs Windows games on Android (arm64ec) — via Wine + FEXCore
  • 🆕 Valve Proton 10.0-4 base — the latest 10.x point release
  • 🪝 FEX unixlib loader — adds the MemoryWineLoadUnixLibByName ntdll loader (load_unixlib_by_name) so Wine can load FEXCore's native .so backend (libarm64ecfex.so / libwow64fex.so) by name
  • 📁 Auto-finds the FEX .so — searches $PREFIX/lib/wine/aarch64-unix/ on its own, so a separately-installed FEXCore -unix component is picked up with no app change
  • Fast-yield gate — opt-in (WINE_FAST_YIELD=1) fix for the bug that pins one CPU core at 100% via busy-wait SwitchToThreadNtYieldExecution; better perf/battery. Dormant by default (no behavior change unless the env var is set) — full parity with Proton 11
  • 🧩 Works with any FEXCore version — not locked to one
  • 🖼️ Graphics via DXVK / VKD3D → Vulkan (Turnip / Adreno)
  • 🔄 esync + fsync + ntsync — modern threading for heavy games
  • 🤖 Bionic — works on Bannerlator, WinNative, and other Winlator-bionic apps

In one sentence: it's the latest Proton 10.0-4 at full parity with P11's consolidated build — FEX unixlib loader + $PREFIX auto-search + env-gated fast-yield — that loads the FEX unixlib on its own with no app changes, now a fraction of the download size.


✅ Device-verified

Booted in a fresh arm64ec container (proton-10.0-4-arm64ec + emulator FEXCore + a FEXCore-…-unix component). /proc/<pid>/maps confirmed libarm64ecfex.so loaded with executable segments from .../lib/wine/aarch64-unix/ — the end-to-end FEX-unixlib load. Without a -unix FEX component it safely falls back to the standard in-DLL JIT. This stripped + zstd build was re-verified booting/rendering on real hardware.


🌙 Matching FEX unixlib builds (Nightlies)

The unixlib loader stays dormant until you install a matched -unix FEXCore. Grab one from the Nightlies:

➡️ https://github.com/The412Banner/Nightlies/releases

Look for the -unix assets on the latest build (e.g. FEX-…-Nightly-…-unix.wcp). Install that alongside this Proton and the .so companion is picked up automatically — no app change.

⚠️ Use the Nightlies -unix builds specifically. Other FEX -unix wcps leave shm_open/shm_unlink unresolved — Android's bionic doesn't provide those symbols, so the .so fails to dlopen and silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the .so loads correctly.


📦 Which file do I want?

Your device Pick
Newer device / Android 15+ / 16 KB pages proton-10.0-4-arm64ec-sdk35.wcp
Everything else (API 28, 4 KB pages) proton-10.0-4-arm64ec-sdk28.wcp

Both assets are arm64ec and ready to install.

🚀 How to use

  1. Install this Proton (appears as proton-10.0-4-arm64ec).
  2. (Optional) Install a FEXCore -unix component (WinNative / Nightlies FEXCore-…-unix).
  3. Create a fresh arm64ec container, set Wine = this Proton, emulator = FEXCore, and pick the FEX version (the -unix one if you installed it).
  4. Boot your game.

🧩 Compatible with

  • Apps: Bannerlator, WinNative, and other Winlator-bionic / Cmod-lineage emulators (bionic ABI, /system/bin/linker64)
  • Translators: FEXCore (any version) for x86 / x86_64
  • Graphics: DXVK / VKD3D-Proton → Vulkan (Turnip / Adreno)

⚠️ Notes

  • arm64ec requires a fresh container.
  • x86_64 is intentionally omitted. The x86_64 build has the same pre-existing box64 display bug as Proton 11 (unrelated to this strip/zstd work), so only arm64ec is shipped.
  • This is stock Valve Proton, not GE-Proton — no GE game-fixes / FSR / OptiScaler tier.
  • The FEX unixlib loader is build-ahead: games run identically today; it future-proofs you for when FEX ships thin DLLs that need the native .so.

Credit: the FEXCore unixlib load-by-name loader (MemoryWineLoadUnixLibByName / load_unixlib_by_name) and the env-gated fast-yield path (WINE_FAST_YIELD), the same features shipped for Proton 11, now on Proton 10.