aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-15 14:36:10 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-15 14:36:10 +0330
commit24a21f7520ce91681e573833b7f33156e308964a (patch)
tree9b2684173ee515649f4209192d9ed7f4acda6754 /TODO.md
parentlsp: hold and shared hovers, completion of the keywords, shared variables mar... (diff)
docs: hold blocks in LEARN.md (36-hold), spec 5.16, ACTOR.md; TODO: m:n scheduler and follow-ups
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md4
1 files changed, 4 insertions, 0 deletions
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.