Skip to content

spec(queen): preemption (slices + isolates) and nodes - actors.t27 sections 8 and 9 (Closes #7900) - #7907

Merged
gHashTag merged 1 commit into
masterfrom
spec/actors-preempt-nodes-master
Oct 8, 2026
Merged

gHashTag merged 1 commit into
masterfrom
spec/actors-preempt-nodes-master

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Closes #7900

#7901 merged into the side branch of #7866, not into master. This lands the final text on master, with the measured correction that came after #7901.

  • Section 8, between turns: a slice of 64 turns or 5 ms, then yield to timers and I/O.
  • Section 8, within a turn: turn_isolation(cpu, foreign, must_stop) picks the loop, a thread or a process. Only a process kill stops the work: a terminated Bun worker thread was measured still spinning 3 s later, so kill_effect(ISO_THREAD) is KILL_ABANDONS.
  • Section 9, nodes: a pid names its node (top 12 bits of the slot). The section adds send_remote, remote_down (X_NOCONNECTION), node_up (lease TTL 20 s) and place_before.

Tests: zig 32 pass, 0 fail, 0 vacuous; C 32/32; all four backends exit 0.

Runtime and measurements: gHashTag/trios#1704.

🤖 Generated with Claude Code

…tors.t27 sections 8 and 9 (Closes #7900)

Owner, 2026-10-09: no distribution across machines, no preemption as in the
BEAM - improve it and do it. This lands on master what t27#7901 merged into
the side branch of #7866, plus the measured correction that came after it.

Section 8. Between turns, a slice: at most SLICE_TURNS (64) turns or
SLICE_MICROS (5 ms), then yield to the host's timers and I/O.
Within a turn, isolation: turn_isolation(cpu_bound, runs_foreign_code,
must_stop) picks the host's thread, an OS thread or an OS process. Only a
process kill stops the work. Measured on the Queen's host: a terminated Bun
worker thread kept spinning 3 s later, so kill_effect(ISO_THREAD) is
KILL_ABANDONS and holds_after_kill keeps its row until the work ends.

Section 9. A pid carries its node in the top 12 bits of its slot, and node 0
is section 1 unchanged. send_remote, remote_down (X_NOCONNECTION when the node
is down), node_up (lease TTL 20 s, heartbeat 5 s), place_before.

Section 7: TRANSPARENT_DISTRIBUTION true, PREEMPTIVE_SLICES true,
PREEMPTIVE_REDUCTIONS still false.

zig test-report: 32 pass, 0 fail, 0 vacuous. C: 32/32. gen, gen-rust, gen-c
and gen-verilog exit 0. Runtime and measurements: gHashTag/trios#1704.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-08 19:42:32 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 32
PRs with All Checks Green 18
READY 1
FAILING 32
PENDING 0
NO CHECKS YET 0

These columns do not partition: 1 + 32 + 0 + 0 = 33, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=21a1173dfe32 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

actors.t27: preemption (slices + isolates) and nodes (a pid names its host)

2 participants