<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/compiler/analyzer.zc, branch work/prover</title>
<subtitle> work-in-progress programming language.
</subtitle>
<id>https://git.downsta.ir/moon/zygotec/atom?h=work%2Fprover</id>
<link rel='self' href='https://git.downsta.ir/moon/zygotec/atom?h=work%2Fprover'/>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/'/>
<updated>2026-10-14T17:16:17+00:00</updated>
<entry>
<title>wip: prover gaps (inline len bound, cross-array, rt.new depth, fixed new, affine i*n+k); unbuilt and untested</title>
<updated>2026-10-14T17:16:17+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T17:16:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=900c59c4d72c692e0bb8e0d3a28cc52547e58c9b'/>
<id>urn:sha1:900c59c4d72c692e0bb8e0d3a28cc52547e58c9b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>detach doc comments on internal bounds helpers (genome size); todo: reuse capture_scan in the body scanner</title>
<updated>2026-10-14T16:34:11+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T16:33:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=70400c5f382f23c1a72e8a948b41d8039e39e94d'/>
<id>urn:sha1:70400c5f382f23c1a72e8a948b41d8039e39e94d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>explain-checks: the record writer moves to src/lib/explain.zc, embedded and compiled only in that mode; the genome keeps the call sites and a hook</title>
<updated>2026-10-14T16:34:08+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T16:33:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=6a7fe0898a2bde8abd3c28697e28c9fc0cb1e7b2'/>
<id>urn:sha1:6a7fe0898a2bde8abd3c28697e28c9fc0cb1e7b2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bounds: body scan, loop-entry hoisting, pointer proofs from requested size, --explain-checks v1 (non-o3 code)</title>
<updated>2026-10-14T16:33:38+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T14:52:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=459b7661aaa0d65d01be064bd4b9976c4f045a5c'/>
<id>urn:sha1:459b7661aaa0d65d01be064bd4b9976c4f045a5c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bounds checking: port agent/bounds-checking onto main 0879d0a; unbounded main in o3call, o3 tests expect no check, boundsrules, bounds_fixed, bounds_heap and zc0unbounded tests</title>
<updated>2026-10-14T12:28:58+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:28:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=d55b5fdf92a674a6495878f97a09e95bafdcba3f'/>
<id>urn:sha1:d55b5fdf92a674a6495878f97a09e95bafdcba3f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>zc: add the defer statement</title>
<updated>2026-10-14T10:39:47+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T10:39:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=54b8a8918bb63c98a8f58e823033232243647562'/>
<id>urn:sha1:54b8a8918bb63c98a8f58e823033232243647562</id>
<content type='text'>
defer expr; and defer { ... } register code that runs when the enclosing
block ends: at the end of the block, and at return, break and continue
that leave it. the tokens are kept at the defer and compiled again at each
exit (block_close, body, kw_return, kw_break, kw_continue), newest first,
before the block's variables are released, so the analyzer sees a deferred
rt.free(p) as the transfer of p where it runs. names mean what they meant
at the defer; values are read when it runs. return, break and continue
inside a deferred statement are errors, reported once. works in unchecked
code and closures (own base per function context).
</content>
</entry>
<entry>
<title>split compiler.zc into files by phase</title>
<updated>2026-10-14T10:05:40+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T10:05:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=ce920b6ff47f32bc06dd27124e1b882f82f3d6ae'/>
<id>urn:sha1:ce920b6ff47f32bc06dd27124e1b882f82f3d6ae</id>
<content type='text'>
src/compiler/compiler.zc is now twelve files under src/compiler/, listed in
order in src/compiler/parts. cat of the parts in order is byte-identical to
the old file, so every compiler and image except the language server's is
unchanged. no function was edited.

consumers read the list: the makefile, bootstrap-check, genmap (which still
writes one compiler.zc into a generated map directory), tinyvm.bat,
test.sh, test_win.ps1 and the lsp drivers. the language server embeds each
part and serves them joined as the one document tinyvm:/compiler.zc.
</content>
</entry>
</feed>
