<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/compiler/ops.zc, branch work/uninit-locals</title>
<subtitle> work-in-progress programming language.
</subtitle>
<id>https://git.downsta.ir/moon/zygotec/atom?h=work%2Funinit-locals</id>
<link rel='self' href='https://git.downsta.ir/moon/zygotec/atom?h=work%2Funinit-locals'/>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/'/>
<updated>2026-10-15T18:45:38+00:00</updated>
<entry>
<title>definite assignment: reading a local before it is initialized is a compile error (spec 4.1.5, b.1.9)</title>
<updated>2026-10-15T18:45:38+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T18:45:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=be43babc1886fc5efee898b2a3d0285012e511fb'/>
<id>urn:sha1:be43babc1886fc5efee898b2a3d0285012e511fb</id>
<content type='text'>
track linited per local alongside the ownership state; snapshots, exit records and joins carry it, and a join keeps a local set only when every reaching path set it. x = e, a declaration initializer, &amp;x (out-parameter), a full array initializer, or using an aggregate as an address set a local; field and element writes do not set the aggregate. while/for bodies that may run zero times do not count; do/while does. compiler, runtime, std, actor and lsp sources initialize the locals the rule flagged; zc0 accepts = {} brace lists (zeroed). tests: tests/errors/uninit_*.zc, tests/conformance/4-statements/uninit_*.zc
</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>
