aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 16:02:22 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 16:02:22 +0330
commitb43d75a987836ee192d62e5c970cc16a143f8efd (patch)
tree206812e4462eb106da6dab9d2b4589b4da870f5a /TODO.md
parentmake: build zy with the llvm backend when an llvm with headers is found; NOLL... (diff)
make: keep the x86-64 jit by default (LLVM=1 opts in), record the llvm mode so switching rebuilds zy, check llvm with a test link
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md17
1 files changed, 10 insertions, 7 deletions
diff --git a/TODO.md b/TODO.md
index e76b7c3..4d93633 100644
--- a/TODO.md
+++ b/TODO.md
@@ -241,13 +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, and `make` now puts it in `zy`
- whenever `llvm-config` or `llvm-config-19` with headers is found
- (`NOLLVM=1` turns it off; without llvm the build prints a note and goes on).
- checked on x86-64 with llvm 19: the fixpoint with llvm, without llvm on
- `PATH`, and with `NOLLVM=1`, and `tests/test.sh --section llvm` (149 ok).
- open: `-DZYLLVM` replaces the x86-64 jit, so the default x86-64 `zy` now
- uses llvm rather than the hand-written jit; decide whether that is wanted. 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.