Files
hakorune/CHANGELOG.md
nyash-codex f6c5dc9e43 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
2025-11-09 23:40:36 +09:00

4.1 KiB
Raw Blame History

Nyash Project Changelog (Work in progress)

This changelog tracks highlevel milestones while Core MIR and Phase 12 evolve. For detailed perfile history, see git log and docs under docs/development/roadmap/.

20250906

Phase 22.3 (Kernel Minimal C Runtime — design wrap)

  • Added minimal C runtime crate (design-stage): crates/nyash_kernel_min_c (staticlib).
  • LLVM extern lowering: normalized nyash.console.*nyash_console_* for C linkage.
  • Hako-first MIR emit stabilized via wrapper (tools/hakorune_emit_mir.sh): StageB JSON is emitted with NYASH_JSON_ONLY=1 and sanitized; builder falls back to Rust CLI on failure (defaults keep quick green).

Prep for Phase 21.10 (LLVM line — crate backend)

  • Backend selector and S3 canaries exist; print EXE canary currently SKIP pending small normalization. Next: enable print EXE PASS with envguarded normalization in nyllvmc (no default behavior changes).
  • Core13 flip complete: code/tests enforce Core13 minimal kernel. Normalizations (Array/Ref→BoxCall, TypeCheck/Cast/Barrier/WeakRef unification) are ON by default via env (NYASH_MIR_CORE13=1). New tests validate normalization.
  • Docs synced: step50 marked done; DEV quickstart points to Core13 reference.

20250904

  • Phase 12.7A complete: peek, continue, ? operator, lambda, field type annotations. Language reference updated.
  • Phase 12.7B (basic) complete: parserlevel desugaring for |>, ?., ??, +=/-=/*=/=, .. behind NYASH_SYNTAX_SUGAR_LEVEL.
  • Docs: language reference and Phase 12.7 README updated to reflect basic completion; extensions tracked under gated plan.
  • MIR Core migration: previously enforcing Core15 during transition; superseded by 20250906 Core13 flip.

20250903

  • Nyash ABI TypeBox integration stabilized across core boxes; differential tests added; loader defaults adjusted (builtin + plugins).

Notes

  • Core13 is canonical minimal kernel. Historical Core15 notes remain under docs/development/roadmap/ for reference.
  • Phase 12.7B desugaring is gated by NYASH_SYNTAX_SUGAR_LEVEL; tokenizer additions are nonbreaking.

20250911 (Phase 15)

  • llvm: BoxCall arm cleanup — unreachable legacy block removed; arm now delegates solely to instructions::lower_boxcall.
  • llvm/docs: Documented LLVM lowering rules (StringBox i8* fast path, ExternCall ptr/handle selection, minimal fallback policy for string concat).
  • docs: Added ARCHITECTURE.md, LOWERING_LLVM.md, EXTERNCALL.md, PLUGIN_ABI.md.
  • nyrt: resolved plugin module duplication; build green.
  • builder: suppressed StringBox birth (constructed in LLVM path).

20251106 — Phase 21.0 (Full SelfHosting)

  • Full SelfHosting achieved (DoD met):
    • S1/S2 determinism: v1 emit for const/compare/threeblockcollect repeats 3× with identical normalized hash.
    • PRIMARY nofallback (hv1 inline): selfhost_v1 minimal OptionA/B reps PASS (rc=42).
    • S3 (llvmlite + Nyash Kernel link + run): ternary collect (rc=44) / map set→size (rc=1) PASS. Autoruns when LLVM18/llvmlite is present.
  • Harness/root changes:
    • ny_mir_builder.sh routes v1 JSON directly to llvmlite harness; EXE links against libnyash_kernel.a.
    • Python LLVM builder fixes: cmp field normalization (Lt/Le/… → < <= …), ret PHI synthesis (avoid ret=0), flat mir_call shape acceptance.
  • Using/alias polish (prod): modules mapping preferred; missing module aliases added (StrCast / MethodAliasPolicy). Duplicate using in VM extern_provider cleaned.
  • Docs: phase21.0 marked COMPLETE (Quick Verify updated). CURRENT_TASK closed.

20251106 — Phase 21.1 (LLVM CAPI emitonly) finalize

  • CAPI path green for both reps (ternary rc=44 / map set→size rc=1). tools/smokes/v2/profiles/quick/core/phase2111/run_all.sh runs both.
  • VM handler cleanup (SSOT): removed duplicated hostbridge.extern_invoke branches in calls.rs; all externs route through extern_provider_dispatch.
  • Trace polish: consolidated [hb:*] to lownoise, gated by HAKO_CABI_TRACE=1.
  • Docs updated: phase21.1 README set to COMPLETE with Quick Verify and troubleshooting.