Motiejus Jakštys a5b0e07d50 astgen: fix string dedup with string_table, handle embedded nulls
Replace linear scan of all string_bytes with a string_table that
only contains explicitly registered strings (via identAsString and
strLitAsString). This prevents false deduplication against multiline
string content that upstream's hash table would never match.

Also handle embedded null bytes in strLitAsString: when decoded string
contains \x00, skip dedup and don't add trailing null, matching upstream
AstGen.zig:11560. Fix c_include extended instruction small field to
0xAAAA (undefined) matching upstream addExtendedPayload.

Passes corpus tests for test_all.zig, build.zig, tokenizer_test.zig.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:08:11 +00:00
2026-02-13 11:37:57 +02:00
fmt
2025-01-08 19:04:40 +01:00
2026-02-10 10:03:44 +00:00
2026-02-12 14:08:49 +02:00
2026-02-13 08:00:57 +00:00
2026-02-11 18:14:32 +00:00
2026-02-10 11:35:41 +00:00
2026-02-12 16:13:56 +02:00
2026-02-12 14:06:15 +02:00
2026-02-12 16:13:56 +02:00
2026-02-12 16:13:56 +02:00
2026-02-10 11:35:41 +00:00
2025-07-01 19:48:18 +00:00

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.

Description
Replacing zig1.wasm with a C program (see stage0/).
Readme MIT 388 MiB
Languages
Zig 96.3%
C 2.7%
C++ 0.6%
Python 0.1%