aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md13
1 files changed, 10 insertions, 3 deletions
diff --git a/TODO.md b/TODO.md
index e601b10..7a892a3 100644
--- a/TODO.md
+++ b/TODO.md
@@ -241,9 +241,16 @@ the reasoning behind the open items survives the session.
translation validation of each compile over proving the compiler whole.
- native code: the hand-written jit exists for arm64 and (phase 1, no o3
regions or inlined enhancements yet) x86-64 linux; the llvm backend
- (`-DZYLLVM`) is the portable native tier but the default build leaves it
- out. cheap win: build the llvm core by default whenever `llvm-config` is
- found. the x86-64 port of the hand-written jit is worth it for compile
+ (`-DZYLLVM`) is the portable native tier. `make` puts it in `zy` on
+ non-x86_64 hosts whenever a usable llvm is found (`NOLLVM=1` turns it off);
+ on x86_64 it stays out unless `LLVM=1`, because `-DZYLLVM` replaces the
+ x86-64 jit (owner's call: keep the jit as the x86-64 default). usable means
+ `llvm-config` or `llvm-config-19` with `llvm-c/Core.h`, non-empty `--libs`
+ and a tiny test link; otherwise a one-line note. `build/llvm.mode` (llvm or
+ nollvm, rewritten only on change) makes switching rebuild `zy` without a
+ clean. checked on x86_64 with llvm 19: plain make uses the jit (no llvm
+ regions on o3.zc) and reaches the fixpoint, `make LLVM=1` rebuilds zy with
+ 8 llvm regions, plain make switches back. the non-x86_64 path is untested. the x86-64 port of the hand-written jit is worth it for compile
latency (microseconds per block against milliseconds for llvm), which
matters for short programs and the language server.