<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/compiler/stmt.zc, branch work/bench</title>
<subtitle> work-in-progress programming language.
</subtitle>
<id>https://git.downsta.ir/moon/zygotec/atom?h=work%2Fbench</id>
<link rel='self' href='https://git.downsta.ir/moon/zygotec/atom?h=work%2Fbench'/>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/'/>
<updated>2026-10-14T12:39:07+00:00</updated>
<entry>
<title>merge bounds checking</title>
<updated>2026-10-14T12:39:07+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:39:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=e228e7609929763d5acddb728ba543832fcffc6a'/>
<id>urn:sha1:e228e7609929763d5acddb728ba543832fcffc6a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>merge: seven self-hosted compiler fixes from conformance</title>
<updated>2026-10-14T12:33:48+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:33:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=29eb9e50d33d417035e133dcebb7111074a23b24'/>
<id>urn:sha1:29eb9e50d33d417035e133dcebb7111074a23b24</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>switch: case member(): with no names matches a tagged member by tag even when it has fields (spec 4.7.3)</title>
<updated>2026-10-14T12:27:41+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:27:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=2633a5ec3b1d8423b913e2d1868dfc445897d93d'/>
<id>urn:sha1:2633a5ec3b1d8423b913e2d1868dfc445897d93d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>return: a value returned from a void function is dropped and the function yields 0 (typecheck off, spec 4.8.3)</title>
<updated>2026-10-14T12:26:18+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:26:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=f4efb7811b741d006e33838219b7f3857655a71b'/>
<id>urn:sha1:f4efb7811b741d006e33838219b7f3857655a71b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>line tables and backtraces: port agent/line-tables onto main, op 56 on the x86-64 jit, docs, measurements, tests; default genome reservation 0x68000</title>
<updated>2026-10-14T12:22:01+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-14T12:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=7c54e48bca711a6596be4bb17fcaa4330b9928e3'/>
<id>urn:sha1:7c54e48bca711a6596be4bb17fcaa4330b9928e3</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>
