Phase 21.7 normalization: optimization pre-work + bench harness expansion

- Add opt-in optimizations (defaults OFF)
  - Ret purity verifier: NYASH_VERIFY_RET_PURITY=1
  - strlen FAST enhancement for const handles
  - FAST_INT gate for same-BB SSA optimization
  - length cache for string literals in llvmlite
- Expand bench harness (tools/perf/microbench.sh)
  - Add branch/call/stringchain/arraymap/chip8/kilo cases
  - Auto-calculate ratio vs C reference
  - Document in benchmarks/README.md
- Compiler health improvements
  - Unify PHI insertion to insert_phi_at_head()
  - Add NYASH_LLVM_SKIP_BUILD=1 for build reuse
- Runtime & safety enhancements
  - Clarify Rust/Hako ownership boundaries
  - Strengthen receiver localization (LocalSSA/pin/after-PHIs)
  - Stop excessive PluginInvoke→BoxCall rewrites
- Update CURRENT_TASK.md, docs, and canaries

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-13 16:40:58 +09:00
parent 9e2fa1e36e
commit dda65b94b7
160 changed files with 6773 additions and 1692 deletions

View File

@ -8,6 +8,8 @@
export HAKO_SELFHOST_BUILDER_FIRST=${HAKO_SELFHOST_BUILDER_FIRST:-1}
# Set to 1 to hard-disable Rust delegate builder (fail fast on selfhost errors)
export HAKO_SELFHOST_NO_DELEGATE=${HAKO_SELFHOST_NO_DELEGATE:-0}
# Try minimal builder fallback to keep selfhost-first green on mini cases
export HAKO_SELFHOST_TRY_MIN=${HAKO_SELFHOST_TRY_MIN:-1}
# LoopJsonFrag: force minimal MIR for loops + normalize/purify
export HAKO_MIR_BUILDER_LOOP_JSONFRAG=${HAKO_MIR_BUILDER_LOOP_JSONFRAG:-1}
@ -18,6 +20,14 @@ export HAKO_MIR_BUILDER_JSONFRAG_PURIFY=${HAKO_MIR_BUILDER_JSONFRAG_PURIFY:-1}
# Keep normalization tag silent by default
export HAKO_MIR_BUILDER_NORMALIZE_TAG=${HAKO_MIR_BUILDER_NORMALIZE_TAG:-0}
# Functions/Call resolutionPhase 21.7 dev 一軍)
export HAKO_STAGEB_FUNC_SCAN=${HAKO_STAGEB_FUNC_SCAN:-1}
export HAKO_MIR_BUILDER_FUNCS=${HAKO_MIR_BUILDER_FUNCS:-1}
export HAKO_MIR_BUILDER_CALL_RESOLVE=${HAKO_MIR_BUILDER_CALL_RESOLVE:-1}
# Emit v1 JSON schema + unified mir_call委譲時の安定化
export NYASH_JSON_SCHEMA_V1=${NYASH_JSON_SCHEMA_V1:-1}
export NYASH_MIR_UNIFIED_CALL=${NYASH_MIR_UNIFIED_CALL:-1}
# Parser: Stage-3 ON, allow semicolons
export NYASH_PARSER_STAGE3=${NYASH_PARSER_STAGE3:-1}
export HAKO_PARSER_STAGE3=${HAKO_PARSER_STAGE3:-1}
@ -28,5 +38,6 @@ if [[ "${1:-}" != "quiet" ]]; then
echo "[mirbuilder/dev] HAKO_SELFHOST_NO_DELEGATE=$HAKO_SELFHOST_NO_DELEGATE"
echo "[mirbuilder/dev] LOOP_FORCE_JSONFRAG=$HAKO_MIR_BUILDER_LOOP_FORCE_JSONFRAG (normalize=$HAKO_MIR_BUILDER_JSONFRAG_NORMALIZE purify=$HAKO_MIR_BUILDER_JSONFRAG_PURIFY)"
echo "[mirbuilder/dev] NORMALIZE_TAG=$HAKO_MIR_BUILDER_NORMALIZE_TAG (0=silent)"
echo "[mirbuilder/dev] FUNCS=$HAKO_MIR_BUILDER_FUNCS CALL_RESOLVE=$HAKO_MIR_BUILDER_CALL_RESOLVE (func_scan=$HAKO_STAGEB_FUNC_SCAN)"
echo "[mirbuilder/dev] JSON_SCHEMA_V1=$NYASH_JSON_SCHEMA_V1 UNIFIED_CALL=$NYASH_MIR_UNIFIED_CALL"
fi