<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/compiler/analyzer.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>analyzer: a .u (declared or inferred) function can't return a borrowed parameter or a value derived from one; fixtures</title>
<updated>2026-10-15T11:31:29+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T11:31:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=5aaf70abdda0026a7b4d647746a109d94b25f7a0'/>
<id>urn:sha1:5aaf70abdda0026a7b4d647746a109d94b25f7a0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>analyzer: a back link (container's owner stored into it) stays a plain reference, fixing a compile hang on a&lt;-&gt;b and a leak; ending an owner kills its owned children too (fixes use after reassigning a container); escape fixtures</title>
<updated>2026-10-15T11:29:31+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T11:29:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=8703e2c85a8ecdea9e869e876e347ebd4cb6ef88'/>
<id>urn:sha1:8703e2c85a8ecdea9e869e876e347ebd4cb6ef88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>analyzer: an outer owner moved into a deeper container can take it back (loop-built lists); block-end frees name the owner (why 9) in messages and LSP related info</title>
<updated>2026-10-15T11:27:42+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T11:27:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=0432ac6aefccbc5a9af25bd4ed2d4451611c4ff4'/>
<id>urn:sha1:0432ac6aefccbc5a9af25bd4ed2d4451611c4ff4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lsp: borrow errors ranged on the use, with related information for where the owner ended and was declared; vscode client passes relatedInformation through</title>
<updated>2026-10-15T06:41:56+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T06:41:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=e1e0a265e931637f452ac05bb7d912e07bcee574'/>
<id>urn:sha1:e1e0a265e931637f452ac05bb7d912e07bcee574</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>x86-64 jit: inline new_k, recycle_leaf and own fast paths, in o3 regions and plain blocks</title>
<updated>2026-10-15T04:00:53+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T04:00:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=63ff1aacf764e692a7a29a7c0043278f637f1dbb'/>
<id>urn:sha1:63ff1aacf764e692a7a29a7c0043278f637f1dbb</id>
<content type='text'>
a call to rt.new_k / rt.recycle_leaf with a constant class, or to rt.own,
does its class-list pop or push (or owner store) inline and goes on after
the call; an empty list, memdebug, a held range, a block outside memory, a
translated word or a type/class mismatch takes the ordinary call. in a
region this replaces the o3_invoke round trip. o3 frees of leaf objects now
use recycle_leaf too (new_k stamps the type inside o3 since b86db60).
ZYNOFASTALLOC=1 turns it off; ZYPERFMAP=1 writes a perf map of translated code.
tests/programs/o3_freelist.zc: reuse, zeroing, an empty list, untyped
neighbours, memdebug; jit vs ZYNOFASTALLOC vs ZYO3INTERP.
</content>
</entry>
<entry>
<title>prover: do not restore length facts after a call-loop</title>
<updated>2026-10-15T01:55:58+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T01:55:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=a6e52065bb7eaee3bbef5a1c3f879c616e3d24bc'/>
<id>urn:sha1:a6e52065bb7eaee3bbef5a1c3f879c616e3d24bc</id>
<content type='text'>
Restoring undirtied lafacts when the body might free was wrong: push can
grow an array without dirtying its name, so a[99] after push warned against
a stale length 0. Keep the old lafact_keep rule; reorder explain_prover so
the constant/affine cases run before the touch() loops.
</content>
</entry>
</feed>
