Files
hakorune/tools/selfhost/README.md
nyash-codex cd67911dae BuildBox: env alias/require minimal bundling; selfhost tool: add --mir and docs
- BuildBox.emit_program_json_v0: use BundleResolver via env (HAKO_BUNDLE_ALIAS_TABLE, HAKO_REQUIRE_MODS)
- selfhost_build.sh: add --mir to emit MIR(JSON); document HAKO_USE_BUILDBOX for emit-only path
2025-11-02 18:48:34 +09:00

32 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Hybrid Selfhost Build (80/20)
Purpose
- Provide a minimal, fast path to compile Hako source via Hakorune StageB to Program(JSON v0), and optionally run it via CoreDirect (inproc).
- Future: add MIR emit and ny-llvmc EXE build in small increments.
Script
- tools/selfhost/selfhost_build.sh
- --in <file.hako>: input Hako source
- --json <out.json>: write Program(JSON v0); default: /tmp/hako_stageb_$$.json
- --mir <out.json>: emit MIR(JSON) from source (runner path)
- --exe <out>: build native executable via ny-llvmc (llvmlite harness)
- --run: run via GateC/Core Direct (inproc). Exit code mirrors program return.
- Env:
- NYASH_BIN: path to hakorune/nyash binary (auto-detected)
- NYASH_ROOT: repo root (auto-detected)
- HAKO_USE_BUILDBOX=1: use BuildBox for emit-only (no run/exe)
Examples
```bash
# Emit JSON only (StageB)
tools/selfhost/selfhost_build.sh --in apps/demo/main.hako --json /tmp/demo.json
# Run and use exit code
tools/selfhost/selfhost_build.sh --in apps/demo/return7.hako --run; echo $?
```
Notes
- StageB emit uses either the StageB entry or BuildBoxHAKO_USE_BUILDBOX=1 for emit-only
- Runner executes CoreDirect in-proc under HAKO_CORE_DIRECT_INPROC=1.
- For heavier cases (bundles/alias/require), keep StageB canaries optin in quick profile.