From 24a21f7520ce91681e573833b7f33156e308964a Mon Sep 17 00:00:00 2001 From: zinc Date: Thu, 15 Oct 2026 14:36:10 +0330 Subject: docs: hold blocks in LEARN.md (36-hold), spec 5.16, ACTOR.md; TODO: m:n scheduler and follow-ups --- TODO.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'TODO.md') diff --git a/TODO.md b/TODO.md index 558d834..f2863b7 100644 --- a/TODO.md +++ b/TODO.md @@ -578,3 +578,7 @@ brief someone without re-reading the code. - [x] c typedefs. - [x] the compiler split into phase files listed in `src/compiler/parts`. - [x] standard-library api documentation, `examples/std_tour.zc`. +- [ ] actors, next step: an m:n scheduler. workers still get one os thread each (a 4 MB stack reservation, a kernel thread, its tls), which bounds the count at thousands. run actors as tasks on a few threads, switching at the safepoints the vm already has (statement boundaries, blocking channel reads), with a small per-actor vm stack segment in place of the thread. +- [ ] actors: a worker's compiler tables (rpool, pg_node, dep_node, mapped on first use) stay resident after its first jit compile, about 0.4 MB per busy worker; madvise them away after each compile, or share one set per thread pool once workers are tasks. +- [ ] actors: the snapshot is taken at the first spawn and retaken when the parent drifts past a quarter of its pages; a parent that keeps changing a large heap between spawns pays a page compare of its live memory per spawn (about 2 ms per 18 MB). +- [ ] hold blocks: the arm64 jit is untested here (no cross toolchain on the box); the blocks use only the syscall gate, which every backend already handles. -- cgit v1.2.3