Luke Street 4dc599381f Refactor memory management into wibo::heap
- Removes blockUpper2GB hack; we now start early in the process
  and reserve all (available) space in the lower 2GB address
  space, leaving the upper 2GB untouched for host code
- All virtual memory operations flow through wibo::heap for
  bookkeeping
- All guest code uses a guest mimalloc area + thread-local heaps
  reserved in the guest address space
2025-11-03 13:58:33 -07:00
2025-10-27 01:09:41 -06:00
2024-07-23 00:27:03 -06:00

wibo

A minimal, low-fuss wrapper that can run simple command-line 32-bit Windows binaries on 32-bit Linux - developed to run Windows compilers faster than Wine.

Download the latest release from GitHub releases or build from source.

Building

cmake --preset debug
cmake --build --preset debug

This will produce a debug binary at build/debug/wibo.

Use --preset release to produce an optimized binary at build/release/wibo.

Usage

wibo [options] <program.exe> [arguments...]
wibo path [subcommand options] <path> [path...]

General Options

Option Description
-h, --help Show usage information and exit
-V, --version Show version information and exit

Runtime Options

Option Description
-C, --chdir DIR Change working directory before launching the program
-D, --debug Enable debug logging (same as WIBO_DEBUG=1)
--cmdline STRING Use STRING as the exact guest command line (must include the program name, e.g. "test.exe a b c")
-- Stop option parsing; following arguments are used verbatim as the guest command line, including the program name

Subcommands

Subcommand Description
path Convert between host and Windows-style paths (see wibo path --help for details)

Examples

Normal usage

wibo path/to/test.exe a b c
wibo -C path/to test.exe a b c

Advanced: full control over the guest command line

wibo path/to/test.exe -- test.exe a b c
wibo --cmdline 'test.exe a b c' path/to/test.exe
wibo -- test.exe a b c

Tests

Self-checking Windows fixtures run through CTest. They require a 32-bit MinGW cross toolchain (i686-w64-mingw32-gcc and i686-w64-mingw32-windres).

ctest --preset fixtures

This will cross-compile the fixture executables, run them through wibo, and fail if any WinAPI expectations are not met.

  • taviso/loadlibrary - Initial inspiration for this project.
  • evmar/retrowin32 - A similar project with different goals and architecture.
  • decomp.me - Collaborative decompilation website; uses wibo to run Windows compilers.

License

wibo is licensed under the MIT License. See LICENSE for details.

Description
Quick-and-dirty wrapper that tries to run 32-bit Windows command-line executables on Linux
Readme MIT 3.1 MiB
Languages
C++ 73.3%
C 17.9%
Python 4.7%
CMake 2.8%
Assembly 1.1%
Other 0.2%