Q+ 文档

Windows / Wine 构建运行指南(1.12.0-dev 文档预览)

English summary. Build a Windows x86-64 VM-only bqvm.exe with mingw-w64 and run it under wine: bash tools/build_win32_async.sh → PE32+ build-win-async/bqvm.exe (real: sha256 1d84aed6…); compile .qbc with native build/bqvm, then wine build-win-async/bqvm.exe --timeout-ms 30000 hello.qbc → Hello, Win32 Q+!; async Fiber matrix bash tools/test_win_async.sh → PASS=27 FAIL=0 SKIP=2 (WIN32_ASYNC_PASS). Windows AOT is not supported (no AOT backend; feasibility only) and real Windows/MSVC is untested — a VM-only/async-subset validation, not Windows platform-usability evidence. 1.12 docs preview; base v210_rc1 (1.11.0-dev/spec v4.42); NOT PUBLISHED.

Q+ 在 Linux 上用 mingw-w64 交叉构建 Windows x86-64 VM-only bqvm.exe,用 wine 运行 Q+ 字节码与 async Fiber 测试;AOT 不支持 Windows。以下命令/输出为 v220-docs 工作区 (v210_rc1 基线)真实执行结果。

构建(mingw-w64)

bash tools/build_win32_async.sh            # 输出 build-win-async/bqvm.exe
# 等价:bash tools/build.sh --target win32 [OUT]

实测:

[build] P3-D win32 target: .../build-win-async/bqvm.exe
PE32+ executable for MS Windows 5.02 (console), x86-64, 19 sections
1d84aed6...  .../build-win-async/bqvm.exe
WIN32_ASYNC_BUILD_PASS .../build-win-async/bqvm.exe

要点:win32 HAL mk_hal_win32.c + bqvm_win32_compat.h(ucontext → loud abort)、win32 mini-kernel、-lws2_32、静态链接、-DBQVM_WIN32_ASYNC=1(Fiber async)。缺 mingw 时明确 SKIP。

运行(wine)

build/bqvm --timeout-ms 0 build/qboot.qbc hello.q -o hello.qbc
wine build-win-async/bqvm.exe --timeout-ms 30000 hello.qbc

实测 wine_hello_rc=0,输出 Hello, Win32 Q+!。首次运行创建 WINEPREFIX(可用 WINEPREFIX_DIR/WINEPREFIX 指向临时目录,WINEDEBUG=-all 降噪);qbc 由 Linux 侧编译, Windows VM 只解释执行。

async Fiber 测试矩阵

bash tools/test_win_async.sh

实测尾部:覆盖 Fiber 调度、毫秒时钟/Sleep、计时器、EAGAIN 复用、pipe/socketpair 就绪 (loopback TCP socketpair 模拟)、TCP connect/accept、容量 loud(BQVM_TIMER_CAP/ BQVM_MAX_WAIT_FDS/spawn limit);最终 WIN32_ASYNC: PASS=27 FAIL=0 SKIP=2、WIN32_ASYNC_PASS。

已知限制(不得宣称 Windows 平台可用)

相关

完整指南(中文) · PORTABILITY · Windows AOT 可行性 · Playground · 英文摘要索引

← Q+ Hub