feat(selfhost): Phase 81 Strict + Fail-Fast mode support
Phase 81: selfhost_build.sh に JoinIR Core/Strict モードサポート追加 ## 変更内容 ### 新オプション - `--core`: JoinIR Core ON モード有効化 (Phase 80) - `--strict`: Strict モード有効化(失敗時フォールバック禁止) ### 環境変数伝播 - `NYASH_JOINIR_CORE`: apply_selfhost_env() 経由で伝播 - `NYASH_JOINIR_STRICT`: apply_selfhost_env() 経由で伝播 ### ドキュメント - Usage コメントに全オプションと環境変数を記載 ## 使用例 ```bash # Core ON + Strict mode tools/selfhost/selfhost_build.sh --in test.hako --core --strict --run # 環境変数経由 NYASH_JOINIR_CORE=1 NYASH_JOINIR_STRICT=1 tools/selfhost/selfhost_build.sh --in test.hako --run ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -8,9 +8,20 @@
|
|||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# tools/selfhost/selfhost_build.sh --in source.hako [--json out.json] [--run]
|
# tools/selfhost/selfhost_build.sh --in source.hako [--json out.json] [--run]
|
||||||
|
# Options:
|
||||||
|
# --in FILE Input .hako source file (required)
|
||||||
|
# --json FILE Output Program(JSON v0) to FILE
|
||||||
|
# --run Run via Core-Direct after compilation
|
||||||
|
# --mir FILE Also emit MIR(JSON) to FILE
|
||||||
|
# --exe FILE Build native EXE via ny-llvmc
|
||||||
|
# --keep-tmp Keep temporary files
|
||||||
|
# --core Phase 80: Enable JoinIR Core ON (mainline path)
|
||||||
|
# --strict Phase 81: Enable Strict mode (fail-fast, no fallback)
|
||||||
# Env:
|
# Env:
|
||||||
# NYASH_BIN: path to hakorune/nyash binary (auto-detected if omitted)
|
# NYASH_BIN: path to hakorune/nyash binary (auto-detected if omitted)
|
||||||
# NYASH_ROOT: repo root (auto-detected)
|
# NYASH_ROOT: repo root (auto-detected)
|
||||||
|
# NYASH_JOINIR_CORE: Set to 1 for Core ON mode
|
||||||
|
# NYASH_JOINIR_STRICT: Set to 1 for Strict mode
|
||||||
#
|
#
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@ -47,6 +58,14 @@ apply_selfhost_env() {
|
|||||||
# Ensure core plugins (Console/Array/Map/String/Integer) are discoverable
|
# Ensure core plugins (Console/Array/Map/String/Integer) are discoverable
|
||||||
export NYASH_PLUGIN_PATH="${NYASH_PLUGIN_PATH:-$ROOT/target/release}"
|
export NYASH_PLUGIN_PATH="${NYASH_PLUGIN_PATH:-$ROOT/target/release}"
|
||||||
export NYASH_PLUGIN_PATHS="${NYASH_PLUGIN_PATHS:-$NYASH_PLUGIN_PATH}"
|
export NYASH_PLUGIN_PATHS="${NYASH_PLUGIN_PATHS:-$NYASH_PLUGIN_PATH}"
|
||||||
|
# Phase 80/81: JoinIR Core/Strict mode propagation
|
||||||
|
# Pass through NYASH_JOINIR_CORE and NYASH_JOINIR_STRICT if set
|
||||||
|
if [ -n "${NYASH_JOINIR_CORE:-}" ]; then
|
||||||
|
export NYASH_JOINIR_CORE
|
||||||
|
fi
|
||||||
|
if [ -n "${NYASH_JOINIR_STRICT:-}" ]; then
|
||||||
|
export NYASH_JOINIR_STRICT
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
@ -57,6 +76,8 @@ while [ $# -gt 0 ]; do
|
|||||||
--mir) MIR_OUT="$2"; shift 2;;
|
--mir) MIR_OUT="$2"; shift 2;;
|
||||||
--keep-tmp) KEEP_TMP=1; shift;;
|
--keep-tmp) KEEP_TMP=1; shift;;
|
||||||
--exe) EXE_OUT="$2"; shift 2;;
|
--exe) EXE_OUT="$2"; shift 2;;
|
||||||
|
--strict) export NYASH_JOINIR_STRICT=1; shift;; # Phase 81: Fail-Fast mode
|
||||||
|
--core) export NYASH_JOINIR_CORE=1; shift;; # Phase 80: Core ON mode
|
||||||
*) echo "[selfhost] unknown arg: $1" >&2; exit 2;;
|
*) echo "[selfhost] unknown arg: $1" >&2; exit 2;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user