This is the stage-0 Rust workspace for bootstrapping XBasic 6.5.0.
Resolved decisions:
- Floating point: use plain
f64/libm-style operations by default. Exact x87 JIT behavior is deferred unless compatibility tests prove it is required. - Windows: focus on Win64 first. Linux and macOS remain first-class targets.
- Self-hosting: use Rust as the stage-0 host, keep compiler layers clean enough to port back into XBasic later, and start self-hosting from low-level utility/library surfaces before attempting a compiler-in-XBasic stage.
| Crate | Role |
|---|---|
xb-frontend |
Tokens and lexer for the XBasic syntax surface |
xb-compiler |
Typed compiler boundary and optional LLVM backend (llvm feature; default off) |
xb-runtime |
XxxMain entry contract, exception mappings, f64 math defaults, fault-hook skeletons |
xb-link |
Object-link command construction for Unix and Win64 drivers |
xb-cli |
xb command that parses/analyzes/lowers .x files and prints stable IR summaries |
xb-gui |
GDI-spirit drawing trait and deterministic framebuffer backend |
xb-ide |
eframe/egui IDE shell, feature-gated behind eframe-app |
Core check, no LLVM required:
cargo check --workspace --exclude xb-ide
cargo test --workspace --exclude xb-ideIDE stack check, requires Rust compatible with egui/eframe 0.36.1:
cargo check -p xb-ide --features eframe-appLLVM backend check, requires LLVM 22 in PATH or LLVM_SYS_221_PREFIX:
cargo check -p xb-compiler --features llvmOn this machine, rustc in PATH is Homebrew Rust 1.94, while rustup stable is 1.97.1 after update. The IDE feature requires Rust ≥1.95 and was checked with explicit rustup cargo/rustc. LLVM 22 is not installed (llvm@21 is present), so the LLVM backend is intentionally feature-gated off by default.