<feed xmlns='http://www.w3.org/2005/Atom'>
<title>moon/zygotec/src/core/core.c, branch main</title>
<subtitle> work-in-progress programming language.
</subtitle>
<id>https://git.downsta.ir/moon/zygotec/atom?h=main</id>
<link rel='self' href='https://git.downsta.ir/moon/zygotec/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/'/>
<updated>2026-10-15T14:44:02+00:00</updated>
<entry>
<title>fix: bytes test read one byte past the fixed map into the heap</title>
<updated>2026-10-15T14:44:02+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T14:44:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=4fb4dffa202bb7a09eb2c0c2784f28eb11137f04'/>
<id>urn:sha1:4fb4dffa202bb7a09eb2c0c2784f28eb11137f04</id>
<content type='text'>
rt.MW is the end of the fixed map (PW) since the growing heap landed; the
heap starts right there, so ld16(addr_b(rt.MW)-1) read the heap's first
byte: 0 on the default map by luck, 0x40 on the small map (16384).
Probe the real byte-op bound instead: core answers syscall(9,10) with the
host reservation MW; micro ports, whose bound is their memory size, fall
back to syscall(9,0).
</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>actors: micro workers map a copy-on-write snapshot too; inherited input is only the unread bytes; worker stacks 4 MB</title>
<updated>2026-10-15T10:55:01+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T10:55:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=8c0c0b0dad6a7ddf2b3075db2285dce8130ef2d0'/>
<id>urn:sha1:8c0c0b0dad6a7ddf2b3075db2285dce8130ef2d0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>actors: remaining tls tables and the input buffer allocated on use; a worker inherits only unread input</title>
<updated>2026-10-15T10:51:49+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T10:51:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=5b43760187e21f80d3a57e7a80058c8baed051a2'/>
<id>urn:sha1:5b43760187e21f80d3a57e7a80058c8baed051a2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>actors: large per-thread compiler tables mapped on first use instead of static tls (13 MB of every worker's stack mapping)</title>
<updated>2026-10-15T10:50:07+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T10:50:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=693a2f16aacd939115cee87674c9c0417bc6635a'/>
<id>urn:sha1:693a2f16aacd939115cee87674c9c0417bc6635a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>actors: worker memory is copy-on-write against a snapshot of the parent (memfd/shm), o3 entry tables handed over sparse</title>
<updated>2026-10-15T10:47:26+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T10:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=2f9ace272a71970d6aadd1d2f04fd2927fead401'/>
<id>urn:sha1:2f9ace272a71970d6aadd1d2f04fd2927fead401</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>find_replace: cover o3 function prologues on every backend</title>
<updated>2026-10-15T02:45:36+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T02:45:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=1db57f77e9c627bc9c00f9e2f827aa72b425b739'/>
<id>urn:sha1:1db57f77e9c627bc9c00f9e2f827aa72b425b739</id>
<content type='text'>
arm64, llvm and the region-interpreter rdrop path now watch the two
prologue words the way the x86-64 jit already did, so icon.replace_function's
lit+jmp patch retires a compiled callee (and clears fn_nat) instead of leaving
a stale stub. three new icon regressions: repeated o3 replace, failed
publication keeps the old entry, and a direct call after warming the region.
</content>
</entry>
<entry>
<title>x86-64 o3: direct o3-to-o3 calls (rcall_x64 / rfinish_x64)</title>
<updated>2026-10-15T01:41:59+00:00</updated>
<author>
<name>zinc</name>
<email>zinc@downsta.ir</email>
</author>
<published>2026-10-15T01:41:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.downsta.ir/moon/zygotec/commit/?id=c3156f6a910581c7ca98ffa08470d1f81e21bdde'/>
<id>urn:sha1:c3156f6a910581c7ca98ffa08470d1f81e21bdde</id>
<content type='text'>
Port arm64's rcall/rfinish to the x86-64 region jit: call the callee's entry
stub through fn_nat with a built frame, return via linkstk, and fall back to
o3_invoke when the stub is missing or the frame/depth check fails. Clear
fn_nat on rforget and cover the function prologue so icon.replace_function
drops the region (o3_caller_replace). vm_until saves jit_depth around nested
bytecode, matching arm64.
</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>
</feed>
