Skip to content

HyperBridge engine 0049 (MacRunner 1.0.7)

Choose a tag to compare

@t0b1kent t0b1kent released this 03 Oct 02:32

HyperBridge is MacRunner's CPU engine for running Windows x86-64 and x86 programs on Apple Silicon through ARM64 Wine. It is built on FEX-Emu (MIT) and carries MacRunner's own patch series, kept in fex/ of this repository.

This build: the engine shipped in MacRunner 1.0.7 (October 3, 2026): patches 0001–0049 on FEX-Emu fd141ed6d, taken from the notarized application. The exact patched source is in that release's MacRunner-1.0.7-sources.tar (hyperbridge/fex/src, with SOURCE-EXPORT.json); binary reproduction from the patch series is not promised for this build. The CI checks that all 49 patches apply to the pinned upstream commit.

File in the archive Role SHA-256
engine/fex/aarch64-windows/xtajit64.dll ARM64EC, 64-bit x86 processes ac3735d6…
engine/fex/aarch64-windows/xtajit.dll WOW64, 32-bit x86 processes 8a58ead0…
engine/fex/aarch64-unix/libarm64ecfex.so host library for xtajit64.dll (signed with MacRunner's Developer ID) f7964bb9…
engine/fex/aarch64-unix/libwow64fex.so host library for xtajit.dll (signed with MacRunner's Developer ID) 456480da…

Full hashes, and those of the unstripped build outputs, are in fex/MANIFEST.json and in SHA256SUMS.

New compared with engine 0019

  • 0020–0025 translation reuse and invalidation experiments (REVIVE, executable ranges, PF/AF/DF across exceptions, MACRUNNER_FEX_RANGE_CACHE, precise invalidation for Mono call targets)
  • 0026 MACRUNNER_FEX_RA_NO_X16 for ARM64EC
  • 0027–0031 code written through a second mapping (.NET): NoTrap validation modes, MACRUNNER_FEX_ALIAS_VIEWS, MACRUNNER_FEX_HOOK_GUARD
  • 0032 diagnostic output without Wine's buffer
  • 0033–0047 guarded x87: fast arithmetic through the host's double with a fall-back to the exact path, tag/status/FIP handling, guarded subnormal loads, FST/FSTP stores and FSCALE; 0036–0037 are tests
  • 0048 floating-point switches default off; ARM64EC integer-width correction
  • 0049 hook and alias correctness switched on automatically when the .NET runtime (coreclr.dll, clrjit.dll) is mapped — this is what lets .NET 6 games such as Stardew Valley start

Patches marked EXPERIMENT are behind switches that are off by default. MacRunner 1.0.7 turns on, through its ENGINE.json, MACRUNNER_FEX_DIV_OVERFLOW_DE=1 (Windows divide exceptions), MACRUNNER_FEX_SHLD16_CF=1 (16-bit SHLD/SHRD carry as hardware) and MACRUNNER_FEX_EFLAGS_KEEP=1.

Measured

Loop times against Microsoft Prism and CrossOver Preview, measured on October 3 with this engine, are in the comparison table. Division is slower than in engine 0019 because MACRUNNER_FEX_DIV_OVERFLOW_DE=1 is on; MACRUNNER_FEX_DIV_PROVEN_HIGH=1 (0017, exact) recovers most of it for idiv and is off in 1.0.7.

Known limits

  • Hardware memory ordering (TSO) is not on by default in this build; it is planned for 1.0.8.
  • Floating-point exactness, alias/W^X outside .NET and 32-bit sound remain open; see the MacRunner 1.0.7 release notes.

Licenses

FEX-Emu with MacRunner's modifications, MIT. The binaries statically link {fmt}, xxHash, unordered_dense, range-v3, rpmalloc, tiny-json, cpp-optparse, Cephes and SoftFloat 3e from the FEX-Emu source tree; their notices are in the archive. FEX-Emu has not reviewed or endorsed these modifications, and they are not contributions to FEX-Emu.