From 024abc2e7368090a4f64f6c84a8adccd401fa884 Mon Sep 17 00:00:00 2001 From: smarm-dev Date: Sun, 7 Jun 2026 21:54:04 +0000 Subject: [PATCH] docs: reflect arm-port carve-out; master is x86-only, aarch64 on branch Mainline now carries roadmap #1-#5; the aarch64 context-switch port is a single untested commit on the arm-port branch. Update the task.md resume block and the README build section accordingly. --- README.md | 6 ++++-- task.md | 31 ++++++++++++++++++------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 773b4c7..7d53f5c 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,10 @@ benches/ ## Building and running Standard Cargo. Requires Rust 1.95 or newer (the `#[naked]` attribute went stable -in 1.88; we use a few unrelated post-1.88 features). x86-64 Linux only — -ARM64 and macOS are on the deferred list because of the assembly shim and the +in 1.88; we use a few unrelated post-1.88 features). `master` is x86-64 Linux +only. An experimental, **untested** aarch64 context-switch backend lives on the +`arm-port` branch (extracted into a `target_arch`-gated `src/arch/`); it has not +been validated on hardware yet. macOS remains on the deferred list because of the epoll dependency. ```sh diff --git a/task.md b/task.md index 2caa43b..15ff11c 100644 --- a/task.md +++ b/task.md @@ -5,17 +5,19 @@ before starting; the gotchas section is hard-won and will save you a faceplant. ## Resume the environment -- Repo: `/home/claude/work/smarm`, branch `arm-port`, currently 8 commits past - `master`: - - `a8fec02` aarch64 context-switch port - - `183fd05` monitors (`monitor()` → `Receiver`) - - `f617266` one-for-one supervisor (restart policies + intensity cap) - - `a8ddb4a` cooperative cancellation (roadmap #1 — done) - - `e80334b` fix: orphaned timers no longer block runtime shutdown - - `351dc9c` one_for_all / rest_for_one + ordered shutdown (roadmap #2 — done) - - `31133a6` docs(roadmap): mark #1 and #2 done - - `6581484` links + trap_exit (roadmap #3 — done) - - (+ a trailing docs commit marking #3 done and refreshing supervisor/README) +- Repo: `smarm`. Two branches (the old single `arm-port` stack was split): + - `master` — the mainline, and HEAD. Carries roadmap #1–#5: cooperative + cancellation, supervisor strategies (one_for_one/all, rest_for_one) + the + orphaned-timer shutdown fix, links/trap_exit, selective receive, gen_server, + and demonitor/`MonitorId`. Tagged `v0.4.0`. x86-64 Linux only. + - `arm-port` — `master` plus a single commit: `feat(arch): aarch64 context + switch + cycle counter`. Extracts the x86-64 context-switch / stack-init / + cycle-counter out of `context.rs` into a `target_arch`-gated `src/arch/` + (x86_64 + aarch64 backends) and adds an AAPCS64 backend. ⚠️ UNTESTED: never + built or run on real ARM hardware. The x86-64 path is unchanged + (`arch/x86_64.rs` is the old `context.rs` body verbatim), so the x86 suite + passing says nothing about the aarch64 backend. Build + test on-device + before trusting it. - Toolchain is installed but NOT on PATH in a fresh shell. First line of every session: `. "$HOME/.cargo/env"` (rustc/cargo 1.96). - Build `cargo build` · all tests `cargo test` · one suite `cargo test --test monitor`. @@ -217,8 +219,11 @@ Shipped. What landed vs the plan: - Pure additive layer (no Slot/scheduler/spawn/finalize change) → no perf check run. Tests (`tests/gen_server.rs`): cast→call roundtrip, init/terminate ordering, both server-down paths. -- Docs lag: README still says "x86-64 Linux only — ARM64 … deferred" and the - module table calls `context` x86-64-only; update for the aarch64 backend. +- Docs: README now points at the experimental, untested aarch64 port on the + `arm-port` branch. The module table still calls `context` x86-64-only — true + for `master`, since the `src/arch/` split rides on `arm-port`. Fold the arch/ + split and ARM64-supported wording into the README module table + build section + once `arm-port` is validated on hardware and merged. ## Gotchas / invariants (respect these)