<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/compiler/expr.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:58:06+00:00</updated>
<entry>
<title>uninit: track aggregate fills per part, sticky computed-index fills, &amp;a[k] and method calls set the aggregate; fix test/example hits; docs</title>
<updated>2026-10-15T18:58:06+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T18:58:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=5a4dc62a79af6135c7050e81a82dbfdfb0a7d4e0'/>
<id>urn:sha1:5a4dc62a79af6135c7050e81a82dbfdfb0a7d4e0</id>
<content type='text'>
</content>
</entry>
<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>constant expressions: c precedence and / % ^ (b.1.3); local const usable in constant expressions (b.1.7, b.2.16); zc0 matches</title>
<updated>2026-10-15T14:55:36+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T14:55:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=08173d7f88f8551caca81594ed8af79d82d3f71f'/>
<id>urn:sha1:08173d7f88f8551caca81594ed8af79d82d3f71f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>merge work/demo-fixes: analyzer ownership fixes (back links, loop-built lists, .u inference), Io.print any args, block-end borrow messages</title>
<updated>2026-10-15T14:20:10+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T14:20:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=251b0212f626d0f92eda51906d353712ef4a63b8'/>
<id>urn:sha1:251b0212f626d0f92eda51906d353712ef4a63b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>std.Io.print/println take any mix of printable arguments (compiler expands per type); docs, conformance</title>
<updated>2026-10-15T11:30:36+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T11:30:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=a5a5029a80a14be46c244b5bcca63e5e2cd9026f'/>
<id>urn:sha1:a5a5029a80a14be46c244b5bcca63e5e2cd9026f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>hold blocks: top-level hold { shared let ...; fn ... } monitors; shared values kept by the host and copied in/out at the outermost call, reentrant per-block locks in declaration order (core, micro)</title>
<updated>2026-10-15T11:02:10+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T11:02:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=253ac862c696d73fb17c14a847270b6e08aa8769'/>
<id>urn:sha1:253ac862c696d73fb17c14a847270b6e08aa8769</id>
<content type='text'>
</content>
</entry>
<entry>
<title>analyzer: check borrow returns of forward-called functions at the unit's end; borrows clause for prototypes, definitions, externs and function types, checked against the body</title>
<updated>2026-10-15T06:26:19+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T06:26:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=6bbac2edf7c50dac4d755a364b6dfd16471284d7'/>
<id>urn:sha1:6bbac2edf7c50dac4d755a364b6dfd16471284d7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>analyzer: use-after-end messages name the borrower, the owner and how the owner ended (freed, moved, .d parameter, push, global, reassignment), with fixtures</title>
<updated>2026-10-15T06:18:10+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T06:18:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=0a87c4663fc52bf60f3d440200b3b3ad6b39bd3e'/>
<id>urn:sha1:0a87c4663fc52bf60f3d440200b3b3ad6b39bd3e</id>
<content type='text'>
</content>
</entry>
<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-15T01:47:02+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=a1d546cc74a72abc4973bf96f72bbd529320d711'/>
<id>urn:sha1:a1d546cc74a72abc4973bf96f72bbd529320d711</id>
<content type='text'>
</content>
</entry>
<entry>
<title>o3: use new_k (size-class free lists) like plain code</title>
<updated>2026-10-15T01:46:53+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T01:46:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=b86db60d8b2a50b179d9a3e69a0b4951e0c196f9'/>
<id>urn:sha1:b86db60d8b2a50b179d9a3e69a0b4951e0c196f9</id>
<content type='text'>
Constant-size typed new inside o3 now calls rt.new_k instead of always
taking new_t/new_raw. new_k and recycle_leaf skip the o3 argument-fatten
path the way free/recycle already do. trees o3 new/free on the x86-64
jit dropped from about 4.1 ms to about 2.7 ms per iter (matches plain).
</content>
</entry>
</feed>
