ece6f690548d3bc776fdfc27d666d1d21a44bcb8
- Move rvalue calls inside builtinCall (all builtins now call rvalue internally, matching upstream) and remove outer rvalue wrap from call site - Add rlResultTypeForCast that errors when no result type is available, used by @bitCast, @intCast, @truncate, @ptrCast, @enumFromInt - Fix @import to compute res_ty from result location instead of hardcoding ZIR_REF_NONE - Fix @embedFile to evaluate operand with coerced_ty=slice_const_u8_type - Fix @cInclude/simpleCBuiltin to check c_import scope and use comptimeExpr with coerced_ty=slice_const_u8_type - Fix @cImport to pass actual block_result to ensure_result_used instead of hardcoded ZIR_REF_VOID_VALUE Not fixed: Issue 14 (ptrCast nested pointer cast collapsing) — upstream routes @ptrCast through a dedicated ptrCast() function that walks nested pointer cast builtins. Currently uses simple typeCast path only. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
About
zig0 aspires to be an interpreter of zig 0.15.1 written in C.
This is written with help from LLM:
- Lexer:
- Datastructures 100% human.
- Helper functions 100% human.
- Lexing functions 50/50 human/bot.
- Parser:
- Datastructures 100% human.
- Helper functions 50/50.
- Parser functions 5/95 human/bot.
- AstGen: TBD.
Testing
Quick test:
zig build fmt test
Full test and static analysis with all supported compilers and valgrind (run before commit, takes a while):
zig build -Dvalgrind
Debugging tips
Test runs infinitely? Build the test program executable:
$ zig build test -Dno-exec
And then run it, capturing the stack trace:
gdb -batch \
-ex "python import threading; threading.Timer(1.0, lambda: gdb.post_event(lambda: gdb.execute('interrupt'))).start()" \
-ex run \
-ex "bt full" \
-ex quit \
zig-out/bin/test
You are welcome to replace -ex "bt full" with anything other of interest.
Languages
Zig
96.3%
C
2.7%
C++
0.6%
Python
0.1%