Phase 22.x WIP: LLVM backend improvements + MIR builder enhancements
LLVM backend improvements: - Add native LLVM backend support (NYASH_LLVM_BACKEND=native) - Add crate backend selector with priority (crate > llvmlite) - Add native_llvm_builder.py for native IR generation - Add NYASH_LLVM_NATIVE_TRACE=1 for IR dump MIR builder enhancements: - Refactor lower_if_compare_* boxes for better code generation - Refactor lower_return_* boxes for optimized returns - Refactor lower_loop_* boxes for loop handling - Refactor lower_method_* boxes for method calls - Update pattern_util_box for better pattern matching Smoke tests: - Add phase2100 S3 backend selector tests (17 new tests) - Add phase2120 native backend tests (4 new tests) - Add phase2034 MIR builder internal tests (2 new tests) - Add phase2211 TLV shim parity test Documentation: - Update ENV_VARS.md with LLVM backend variables - Update CURRENT_TASK.md with progress - Update README.md and CHANGELOG.md Config: - Add NYASH_LLVM_BACKEND env support in src/config/env.rs - Update ny_mir_builder.sh for backend selection - Update dispatch.rs for backend routing Tools: - Add tools/native_llvm_builder.py - Update smokes/v2/profiles/quick/core/phase2100/run_all.sh Known: Many Hako builder internal files modified for optimization
This commit is contained in:
@ -12,30 +12,9 @@ pub(crate) fn execute_file_with_backend(runner: &NyashRunner, filename: &str) {
|
||||
// Note: hv1 direct route is now handled at main.rs entry point (before NyashRunner creation).
|
||||
// This function is only called after plugins and runner initialization have already occurred.
|
||||
|
||||
// Selfhost pipeline (Ny -> JSON v0)
|
||||
// Default: ON. Backward‑compat envs:
|
||||
// - NYASH_USE_NY_COMPILER={1|true|on} to force ON
|
||||
// - NYASH_USE_NY_COMPILER={0|false|off} or NYASH_DISABLE_NY_COMPILER/HAKO_DISABLE_NY_COMPILER to disable
|
||||
let mut use_selfhost = true;
|
||||
if let Ok(v) = std::env::var("NYASH_USE_NY_COMPILER") {
|
||||
let lv = v.trim().to_ascii_lowercase();
|
||||
use_selfhost = matches!(lv.as_str(), "1" | "true" | "on");
|
||||
}
|
||||
let disabled = std::env::var("NYASH_DISABLE_NY_COMPILER")
|
||||
.ok()
|
||||
.map(|v| {
|
||||
let lv = v.trim().to_ascii_lowercase();
|
||||
matches!(lv.as_str(), "1" | "true" | "on")
|
||||
})
|
||||
.unwrap_or(false)
|
||||
|| std::env::var("HAKO_DISABLE_NY_COMPILER")
|
||||
.ok()
|
||||
.map(|v| {
|
||||
let lv = v.trim().to_ascii_lowercase();
|
||||
matches!(lv.as_str(), "1" | "true" | "on")
|
||||
})
|
||||
.unwrap_or(false);
|
||||
if use_selfhost && !disabled {
|
||||
// Selfhost pipeline (Ny -> JSON v0) — consolidated env toggle
|
||||
// Primary: NYASH_USE_NY_COMPILER=0|1; legacy disables accepted with deprecation warning
|
||||
if crate::config::env::use_ny_compiler() {
|
||||
if runner.try_run_selfhost_pipeline(filename) {
|
||||
return;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user