Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BoxiOS

BoxiOS is an iOS shell/runtime experiment for running Linux x86 and x86_64 binaries through embedded Box86 and Box64 static libraries.

Current release snapshot: 0.1.0 build 126, tested on the target device IPhone 16 Pro Max on April 27, 2026.

Current Status

  • Linux x86_64 binaries are routed to embedded Box64.
  • Linux x86 binaries are routed to embedded Box86.
  • Runtime logs are written to Documents/BoxiOS/Logs/runtime.log.
  • JIT/dynarec is intentionally disabled for the current iOS bring-up path.
  • Powder Toy v99.5.394+steam-x86_64-linux-gnu starts through the Box64 interpreter.
  • Powder Toy now renders through the BoxiOS MetalGL bridge instead of the old BMP-only fallback.
  • Powder Toy colors are corrected on the MetalGL path.
  • Touch input is translated to left mouse button events and reaches Powder Toy.
  • Observed Powder Toy performance on the current device is about 4.5-5 FPS.

What Was Debugged

  • Static embedded Box64 launch through box64_library_main(...).
  • Darwin/native symbol resolution for statically linked Box64.
  • Guest pointer relocation for libc and memory wrappers that receive guest ELF addresses.
  • libc wrappers for string and memory calls used during Powder Toy startup.
  • pthread/TLS bring-up issues on the Box64 interpreter path.
  • SDL offscreen rendering through EGL/GLES resolver hooks.
  • BoxiOS MetalGL texture upload and raw BGRA publication.
  • RGBA/BGRA color handling on the MetalGL texture path.
  • Powder Toy input despite SDL being statically linked inside the game ELF.

Validated Runtime Path

The current confirmed path is:

  1. Import a Linux x86_64 game binary in the app.
  2. BoxiOS selects Box64.
  3. SDL uses the offscreen video driver.
  4. Box64 resolves guest EGL/GLES calls to BoxiOS MetalGL.
  5. MetalGL receives glTexSubImage2D uploads and publishes BGRA frames to the Swift display view.
  6. Native iOS touches are queued and pumped on eglSwapBuffers.
  7. For Powder Toy, the Box64 bridge injects SDL mouse motion/button events into the guest SDL event queue.

Fresh build 126 log markers:

BOXIOS_POWDER_SDL_INPUT=1
[BoxiOS MetalGL] texture upload id=2 size=629x424 ... format=0x1908
[BoxiOS MetalGL] eglSwapBuffers
[BoxiOS MetalGL] published raw texture id=2 size=629x424 stride=2516
[BoxiOS input bridge] pumped Powder SDL LMB ... pressed=1 changed=1

Release Artifacts

  • Latest IPA: boxios-126.ipa
  • IPA SHA-256: d7635cf4d212d3085e2a90e8a75c1a2ced410a45891849d5d92ea232727e1349
  • Box64 iOS static library SHA-256: 08155073e1ac68b3dba1cd93016efbb1613b067f42576599a3e0921bbd725bbb
  • Box86 iOS static library SHA-256: d3d7b5fe986e60aaa220e733d976e8759c4198fb043efae440d0c5c31b2780dd

Upstream Snapshot

  • Box64 source: official ptitSeb/box64, current working iOS snapshot based on 2deb99ae4aa4b326819806ac2541477273244741.
  • Box64 upstream main checked on April 27, 2026: 2c72942faef0d67d036e3110dd1dc5ac950599a5.
  • Box86 source: official ptitSeb/box86, current working iOS snapshot based on 0579f8b9c47d87d700724f4cce559b06cbd2b0f5.

The Box64 iOS snapshot is deliberately not rebased to the newer upstream HEAD in this release because build 126 is the first confirmed working MetalGL plus input checkpoint.

Known Limits

  • This is not a general-purpose Linux desktop environment yet.
  • JIT/dynarec is not enabled.
  • The current proven game path is Powder Toy x86_64 through Box64.
  • The Powder Toy SDL input bridge is currently targeted to the tested Powder Toy binary layout.
  • Box86 is packaged and routed for x86 binaries, but this checkpoint was validated primarily on the Box64 x86_64 Powder Toy path.

About

iOS shell/runtime experiment for Linux x86/x86_64 games through embedded Box86 and Box64

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages