Files
hakorune/lang/src/mir/builder/internal/builder_config_box.hako
nyash-codex 07a254fc0d feat(phase21.5): MirBuilder optimization prep + crate EXE infrastructure
Phase 21.5 optimization readiness - C-level performance target:
- MirBuilder: JsonFrag purify toggle (HAKO_MIR_BUILDER_JSONFRAG_PURIFY=1)
- Normalizer: extended f64 canonicalization + dedupe improvements
- loop_opts_adapter: JsonFrag path refinement for crate EXE compatibility

Infrastructure improvements:
- provider_registry: add diagnostics + ring-1 providers (array/console/map/path)
- mir_interpreter: add normalization/purify feature gates
- tools/selfhost_exe_stageb.sh: new end-to-end Stage-B→crate EXE pipeline
- tools/perf/microbench.sh: performance measurement tooling

Smoke tests (phase2100):
- Extend timeout 15s→120s for heavy crate EXE builds
- Add stageb_loop_jsonfrag_crate_exe_canary_vm.sh (target test)
- Add s3_backend_selector_crate_exe_vm_parity_return42_canary_vm.sh

Documentation:
- ENV_VARS.md: add Phase 21.5 optimization toggles
- README updates: clarify crate backend strategy
- phase215-optimization.md: new optimization roadmap

This commit sets the stage for Phase 21.5 critical optimization:
achieving C-level performance to decide hakorune's future viability.
2025-11-11 02:07:12 +09:00

45 lines
1.5 KiB
Plaintext

// builder_config_box.hako — Centralized env/toggles for MirBuilder
// Purpose: avoid scattered env.get calls. All HAKO_MIR_BUILDER_* toggles are read here.
static box BuilderConfigBox {
// Generic on/off reader for HAKO_MIR_BUILDER_* flags
_is_on(key) {
local v = env.get(key)
if v == null { return 0 }
local s = "" + v
if s == "1" || s == "true" || s == "on" { return 1 }
return 0
}
// Trace controls
trace_enabled() { return self._is_on("HAKO_MIR_BUILDER_TRACE") }
debug_enabled() { return self._is_on("HAKO_MIR_BUILDER_DEBUG") || self._is_on("NYASH_CLI_VERBOSE") }
// Registry and internal lowers
internal_on() {
local v = env.get("HAKO_MIR_BUILDER_INTERNAL")
// default ON
return (v == null) || ("" + v == "1")
}
registry_on() {
local v = env.get("HAKO_MIR_BUILDER_REGISTRY")
// default ON
return (v == null) || ("" + v == "1")
}
registry_only() { return env.get("HAKO_MIR_BUILDER_REGISTRY_ONLY") }
// Loop/JsonFrag related
loop_jsonfrag_on() { return self._is_on("HAKO_MIR_BUILDER_LOOP_JSONFRAG") }
jsonfrag_normalize_on() { return self._is_on("HAKO_MIR_BUILDER_JSONFRAG_NORMALIZE") }
skip_loops_on() { return self._is_on("HAKO_MIR_BUILDER_SKIP_LOOPS") }
// Return-mode for loop adapter: "string" (default) | "map"
loop_adapter_return_mode() {
local m = env.get("HAKO_MIR_BUILDER_LOOP_RETURN")
if m == null { return "string" }
local s = "" + m
if s == "string" { return "string" }
return "map"
}
}