aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 09:43:55 +0000
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 09:43:55 +0000
commit52972fe525abde6e107d7240be91a8985abf0683 (patch)
tree571fcb7b8f424eb131421b63bc91cae9ceccf051 /Makefile
parenttodo: record the reverted unchecked trial and what it showed (diff)
parity: compare what zc0 and the self-hosted compiler print
src/tools/parity.sh compiles each program of tests/programs, examples and examples/learn with zc0 (runtime, program, mkgenome, a microcore with the image embedded, kept under build/parity/) and runs it beside build/bin/zy < prog.zc, then compares stdout. what zc0 rejects is skipped and counted. tests/parity.known lists the differences that are by design (zc0 has no ownership analysis or memdebug checks). make parity runs it. tests/programs/parity_ops.zc pins operator precedence and associativity across every binary operator, unary operators, assignment and short-circuit order; its output matches a c compiler's.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile9
1 files changed, 8 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index d5caa92..519d4d2 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,8 @@
# make test the whole suite (tests/test.sh)
# make check the minimal suite, for iterating (tests/test.sh -q)
# make test JOBS=4 the same, four sections at a time
+# make parity compile the test programs with zc0 and with the self-hosted
+# compiler and compare what they print (src/tools/parity.sh)
# make genome build/core/genome.bin from src/, with the fixpoint check
# make lsp build/bin/zclsp, the language server
# make web build/web/: the page, its script and zc.wasm
@@ -143,6 +145,11 @@ run:
$(CC) $(CFLAGS) $(MICRO_THREADS) src/micro/micro.c $(PORT) -Isrc/core -Isrc/micro -I$(B)/run --embed-dir=$(B)/run -o $(B)/run/zymr$(EXE)
@echo "built $(B)/run/zymr$(EXE)"
+# the two compilers on the same programs: whatever zc0 accepts must print the same
+# under both. work files go to build/parity/.
+parity: $(BIN)/zc0$(EXE) $(BIN)/mkgenome$(EXE) $(BIN)/zy$(EXE)
+ bash src/tools/parity.sh
+
# JOBS sets how many sections run at once: make test JOBS=4
test:
bash tests/test.sh -j $(or $(JOBS),1)
@@ -154,4 +161,4 @@ check:
clean:
rm -rf $(B)
-.PHONY: all lsp genome js lspimage vsix web run test check clean
+.PHONY: all lsp genome js lspimage vsix web run parity test check clean