Uh oh!
There was an error while loading. Please reload this page.
docs(fspy): document shared-memory facade ownership semantics - #521
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
3d5e984 to
9ca03e0CompareUh oh!
There was an error while loading. Please reload this page.
Document the cross-platform create/open contract of the fspy_shm facade: owner lifetime gates new opens, already-open views survive owner teardown, and Windows may keep the name resolvable while other handles hold the section object alive. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
Uh oh!
There was an error while loading. Please reload this page.
wan9chi
commented
Jul 10, 2026
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:2b0d301fbe
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| lock_file.try_lock_shared()?; | ||
| let shm = fspy_shm::open(&self.shm_id, self.shm_size)?; | ||
| let shm = fspy_shm::open(&self.shm_id)?; |
There was a problem hiding this comment.
Preserve the original channel capacity when opening senders
On Windows, opening without the original capacity lets shared_memory recompute the opened view length from the OS mapping, which is page-rounded, while the receiver's owner still reports the requested channel(capacity) length. For non-page-aligned capacities, a sender can therefore use a larger shm.len() for ShmWriter bounds checks and advance the shared header past the receiver's slice, so ReceiverLockGuard::iter_frames can panic when it slices content[..content_size] after enough writes. Keep the configured size in ChannelConf or clamp opened views to the requested capacity.
Useful? React with 👍 / 👎.
Bumps the `vite-task` git dependency from `cb580c2` to `4003f65`. ## Changes The delta is entirely internal `fspy` (file-access tracking) shared-memory work — no user-facing CLI flags, config fields, or behavior changes, so no docs updates were needed. - **fix(fspy):** use `memfd` for Linux shared memory — automatic file-access tracking on Linux now works in containers and Kubernetes runners with limited `/dev/shm` space ([#523](voidzero-dev/vite-task#523), [#353](voidzero-dev/vite-task#353)) - **perf(fspy):** use sparse Windows shared memory — Windows file-access tracking now uses sparse temporary backing files where supported, avoiding upfront allocation of the full backing file on disk ([#524](voidzero-dev/vite-task#524)) - **refactor(fspy):** own macOS shared-memory mapping ([#526](voidzero-dev/vite-task#526)) - **docs/test(fspy):** document shared-memory facade ownership semantics ([#521](voidzero-dev/vite-task#521)); reproduce constrained dev shm failure ([#522](voidzero-dev/vite-task#522)) The lockfile change reflects this refactor: `fspy` now pulls in `memfd` and drops `shared_memory`. ## Validation - `cargo check --workspace` passes — the new `vite-task` compiles cleanly, confirming no breaking changes on the consuming side (including `vite_cli_snapshots`, which compiles against vite-task's PTY/snapshot test crates). - vite-plus crate tests pass. (One pre-existing, environment-specific stack overflow in `vite_global_cli`'s `unknown_argument_detected_with_pass_as_value_hint` clap-parsing test reproduces identically on `main` and is unrelated to this bump.) - PTY snapshot output is unchanged by the bump; the remaining local snapshot diffs in this sandbox are all environmental (no built `packages/cli/dist`, plus registry TLS/network restrictions), left to CI, which builds the JS CLI and has registry access. ## Changelog Full vite-task CHANGELOG diff: ``https://github.com/voidzero-dev/vite-task/compare/cb580c214bb2314fc1f633a3812782c9b3a1d956...4003f65a3e5e3d957ff81b157e85e6ee41cc59fc#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed`` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- _Generated by [Claude Code](https://claude.ai/code/session_01YERo1yECf81w37US2Gqnow)_ Co-authored-by: Claude <noreply@anthropic.com>

Motivation
Define how shared-memory owners and opened views behave before replacing the platform backends.
Changes
create,open, owner drop, and opened-view lifetime.opento take only the identifier and derive the mapped size from the operating-system object.ChannelConf.