Nishi Family › Compare › NishiLang and Compiler Toolchain
NishiLang and Compiler Toolchain — mechanically measured, liar-killed, sovereign.
Nishi vs Rust and Zig and Go and Elm
| Capability | Nishi | Rust | Zig | Go | Elm | Notes |
|---|---|---|---|---|---|---|
| Self-hosted sovereign compiler (native x86-64 ELF) | Yes | Yes | Yes | Yes | No | Self-hosts through nx_cc_sovereign.elf; equiv gate 10/10 GREEN + self-host gen2/gen3 (blessed 2026-07-07); Elm compiler is Haskell-hosted |
| Optimization pipeline (const-fold SCCP mem2reg GVN CSE LICM DSE DCE) | Yes | Best | Yes | Yes | Yes | About O1-class today; LICM correctness-gated; Rust rides LLVM full O3 depth |
| Generics + monomorphization | Yes | Yes | Yes | Yes | Yes | Full monomorphization port landed; Go added generics in 1.18 |
| Sum types + pattern match | Yes | Yes | Yes | No | Best | Payload ctor and match probes re-verified run-exit=0 (2026-07-09, earlier SIGSEGV fixed by the 07-07 bless); Go lacks sum types; Elm ADTs are the bar |
| Threads / parallel runtime | Yes | Yes | Yes | Best | No | Ring-arena pool, measured 7x pooled speedup (2026-07-06 gate); Go goroutines lead; Elm has no threads |
| Bounded-loop safety primitives (JPL Rule 2) | Yes | No | No | No | No | nx_loop watchdog and settle primitives; peers leave loop bounds to external lint standards |
| WebAssembly target | Yes | Best | Yes | Yes | No | Own .nx to .wat to .wasm chain (nx_wat_compiler); Rust wasm ecosystem leads; Elm targets JS only |
| RISC-V target | Yes | Yes | Yes | Yes | No | Second native backend; the linear-scan allocator (nx_regalloc, Poletto-Sarkar) is wired HERE, not x86 |
| In-repo compiler fuzz generator | Yes | Part | Part | Part | No | Shape-axis generator found a real nx_cc bug (about 1500 early-exit blocks = empty .s, 2026-07-05); peers rely on external fuzzers (rustlantis, go-fuzz) |
| Differential EMI oracle on the compiler gate | Yes | Part | Part | Part | No | Baseline-vs-challenger build+stdout byte-equal + self-host stage; gate 10/10 GREEN (2026-07-07); born catching a silent optimizer miscompile |
| Per-function miscompile bisector | Yes | Part | No | No | No | Function-splice frankenbuild names the breaker function; Rust cargo-bisect-rustc bisects nightlies, not functions |
| Compiler health witness, autonomously driven | Yes | Yes | Yes | Yes | Yes | Generate-build-verify witness; nx_exec_engine drove it 3/3 GREEN autonomously (2026-07-06) |
| Never-brick compiler bless (equiv-gated install + rollback) | Yes | Yes | Yes | Yes | Yes | Refuses install unless differential equivalence is GREEN; byte-identical corpus check |
| Equality-saturation engine | Yes | No | No | No | No | Engine complete with union-find and constfold rules but NOT wired into any backend yet (honest); peers do not ship eqsat either |
| Energy measurement infra (RAPL) | Yes | No | No | No | No | Probe reads energy_uj; zero measured Joules vs C yet (X-PERF-002 open) -- beat-C-on-energy is UNMEASURED |
| Competitive native speed vs C | No | Best | Best | Yes | No | Measured honest: 3.65x slower than gcc -O0, Stabilizer-validated (2026-05-20 bench); root cause = stack-machine x86-64 backend with regalloc wired only into RISC-V |
| Call arity + param-type checking | No | Yes | Yes | Yes | Yes | In-source admission at nx_parse.nx:627 (MVP: no arity or param-type check); a missing argument compiles silently and the callee reads a garbage register -- cost 4 debug cycles on 2026-07-09 |
| Match exhaustiveness checking | No | Yes | Yes | No | Best | Elm made exhaustive ADTs famous; ours parses match but never checks variant coverage |
| Memory safety (bounds, ownership, use-after-free) | No | Best | Part | Part | Yes | Rust borrow checker is Best; Zig runtime safety modes; Go GC plus bounds checks; raw pointers here SIGSEGV |
| Rich diagnostics in the shipping compiler (caret, did-you-mean, multi-error) | No | Yes | Yes | Yes | Best | Sovereign compiler is first-error parse_die (nx_parse.nx:85); the caret and Levenshtein UX exists only in the retired C bootstrap parse.c -- wrong side of the sovereignty boundary; Elm is Best |
| Closures / lambdas | No | Yes | Yes | Yes | Yes | Function pointers only (VK_FUNC_ADDR); no capturing closures |
| Namespaces / qualified imports | No | Yes | Yes | Yes | Yes | File-import only; name collisions caught by lint not language (22 shadow collisions found 2026-06-23) |
| Language server / editor integration | No | Best | Yes | Best | Yes | rust-analyzer and gopls lead the field; we ship none |
| Canonical source formatter | No | Yes | Yes | Best | Yes | gofmt set the standard; zig fmt and elm-format follow; we ship none |
| Incremental compilation / build cache | No | Yes | Yes | Yes | Yes | Every peer caches compilation; we rebuild whole modules each time |
| Debug info (DWARF / source maps) | No | Yes | Yes | Yes | Part | Emitted ELFs carry no source-line mapping; printf-and-bisect is the debug story |
| Free multi-line expressions | No | Yes | Yes | Yes | Yes | Line-oriented statements: a continuation line opening with a binary op silently becomes a dead statement (caused the det2x2 bug, runtime-wide sweep 2026-07-09); every peer parses free layout |
| Working floating point (f64) | No | Yes | Yes | Yes | Yes | f64 lexes and compiles but arithmetic codegen is wrong: nx_probe_float run-exit=1 re-verified 2026-07-09 (1.5+1.5 not 3.0); deliberately low priority under the no-float determinism doctrine |
| Out-of-bounds write and read prevented (CWE-787 and CWE-125 class) | No | Best | Part | Yes | Yes | Raw pointers SIGSEGV; the public dumps put this class at the top of what bites C (CISA roadmap banked 2026-07-10); our own 2026-07-08 READ-TO-NUL over-read trap was exactly this class in the wild |
| Use-after-free prevented (CWE-416 class) | No | Best | Yes | Best | Best | Arena no-free doctrine mitigates in practice (nothing frees), but no checker ENFORCES it; Rust borrow checker is the bar |
| Integer overflow checked (CWE-190 class) | No | Part | Best | No | Part | i64 wraps silently; our own register carries the class: immediate shift over 31 blanks the emitted .s (2026-07-06); Zig safe-mode checks lead; Go wraps by definition |
| Null and sentinel-zero deref prevented (CWE-476 class) | No | Best | Best | Part | Best | Sentinel-zero-as-null is our recurring P2 meta-class; Option and Result EXIST in the stdlib but nothing enforces their use; Elm ships no null at all |
| Data-race prevention (CWE-362 class) | No | Best | No | Part | Yes | Thread pool is real (7x measured) but there is no Send-Sync-class typing; Go ships a race detector tool |
| Living bug-class ledger wired to language evolution | Yes | Part | Part | Part | Part | F1-F16 taxonomy + P1-P10 meta-patterns + the nx_cc trap register drive make-it-unrepresentable rungs; peers have public bug trackers (the dumps we bank) but not a ledger wired to language change |
| Sovereign whole-stack toolchain (language compiler assembler runtime -- zero LLVM GCC libc beneath) | Best | No | No | Part | No | The entire chain nx_cc to nxasm_x86 to ELF is ours bits-up and compiles on the NAS over the mgmt API (build-over-API GREEN 2026-07-06); Rust and Zig sit on LLVM; Go owns its backend but links foreign substrate below |
| Integer-deterministic no-float doctrine (cross-platform bit-exact by construction) | Best | No | No | No | No | A 100 percent integer LLM greedy-matches the float reference 4-for-4 (ledger AHEAD, 2026-07-09); gate-grounded across the codec and compute censuses; no peer ships float-free determinism as language doctrine |
Generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/lang.matrix — every Nishi cell verified against real organ source on disk. Zero JS, zero trackers.