Skip to content

deps(rust): migrate to running-process 4.0.0 mono-crate#272

Merged
zackees merged 1 commit into
mainfrom
deps/running-process-4.0.0
May 24, 2026
Merged

deps(rust): migrate to running-process 4.0.0 mono-crate#272
zackees merged 1 commit into
mainfrom
deps/running-process-4.0.0

Conversation

@zackees
Copy link
Copy Markdown
Member

@zackees zackees commented May 24, 2026

Summary

  • Upstream zackees/running-process 4.0.0 consolidated 5 crates (running-process-core, -proto, -client, -daemon, daemon-trampoline) into a single running-process crate with feature-gated subsystems. fbuild only consumes the spawn API + containment primitives, so the new dep is pinned with default-features = false (the client/daemon features and their prost/interprocess/tokio transitives stay out of fbuild's graph).
  • All use running_process_core:: rewritten to use running_process:: in crates/fbuild-core/src/{subprocess,containment}.rs. No behavioural change; identical NativeProcess, ContainedProcessGroup, ORIGINATOR_ENV_VAR, CommandSpec, ProcessConfig, StdinMode, StderrMode, ProcessError surface as 3.4.
  • Doc comments, the dylints/ban_raw_subprocess README/allowlist/lint message, and the lint-subprocess workflow header updated to reference the new crate name (no functional dylint change).

Test plan

  • soldr cargo check --workspace --all-targets — clean.
  • soldr cargo test --workspace --no-fail-fast — all suites pass on Windows MSVC, including:
  • cargo tree -p running-process confirms only core deps (libc, portable-pty, serde, sysinfo) — no prost/tokio/interprocess pulled in via running-process.
  • CI green on Linux and macOS runners.

Notes

  • The two historical-context references to running-process-core left in subprocess.rs / containment.rs doc comments are intentional — they describe the prior API divergence (the pre-publication ContainedProcessGroup::spawn_with_containment and the post-3.4 SpawnedChild vs Child mismatch) that motivated the current bridge code. Rewriting them to "4.0" would erase the historical accuracy of why this file exists.
  • Cargo.lock regenerated by cargo update -p running-process-core --precise 0.0.0, which removed the 3.4.1 entry and added running-process v4.0.0 (no other dependency churn beyond the prost/protox build-script chain that running-process 4.0 brings in for its own optional client feature build — but those crates aren't compiled because default-features = false strips them).

Closes #271.
Refs zackees/running-process#203.

Generated with Claude Code (claude.ai/code)

Summary by CodeRabbit

  • Chores
    • Updated internal dependencies and associated build configurations
    • Refreshed documentation and comments to maintain consistency with dependency updates
    • No changes to user-facing functionality or APIs

Review Change Stack

Upstream (zackees/running-process) consolidated `running-process-core`,
`-proto`, `-client`, `-daemon`, and `daemon-trampoline` into a single
`running-process` crate with feature-gated subsystems (see CHANGELOG
4.0.0). The Python wheel ABI is unchanged; only direct Rust consumers
need to update their dependency name and import paths.

fbuild only uses the spawn API + containment primitives, so the
dependency is pinned with `default-features = false` to skip the
`client`/`daemon` features (and their prost/interprocess/tokio
transitives).

Changes:
- Cargo.toml: `running-process-core = "3.4"` ->
  `running-process = { version = "4.0.0", default-features = false }`
- crates/fbuild-core/Cargo.toml: track new dep name via workspace.
- crates/fbuild-core/src/{subprocess,containment}.rs:
  `running_process_core::` -> `running_process::`. No behavioural
  change; same `NativeProcess`, `ContainedProcessGroup`,
  `ORIGINATOR_ENV_VAR`, `CommandSpec`, `ProcessConfig`, etc.
- Doc-comment + lint/allowlist text references updated to the new
  crate name for accuracy.

Tests: `soldr cargo test --workspace --no-fail-fast` is fully green
on Windows, including the #129 containment regression
in `fbuild-core` (sequential contained spawns + EPERM avoidance).

Closes #271.
Refs zackees/running-process#203.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 24, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7ce001b1-e6bb-43fa-baef-69743b8c0a08

📥 Commits

Reviewing files that changed from the base of the PR and between 112ab19 and 352298b.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (8)
  • .github/workflows/lint-subprocess.yml
  • Cargo.toml
  • crates/fbuild-core/Cargo.toml
  • crates/fbuild-core/src/containment.rs
  • crates/fbuild-core/src/subprocess.rs
  • dylints/ban_raw_subprocess/README.md
  • dylints/ban_raw_subprocess/src/allowlist.txt
  • dylints/ban_raw_subprocess/src/lib.rs

📝 Walkthrough

Walkthrough

This PR migrates fbuild's subprocess infrastructure from the deprecated running-process-core 3.4 to the consolidated running-process 4.0.0 crate. Dependency declarations, module imports, and documentation are updated throughout the workspace to reflect the new crate structure and API surface.

Changes

Running-process consolidation migration

Layer / File(s) Summary
Workspace dependency declaration
Cargo.toml
running-process-core = "3.4" is replaced with running-process = { version = "4.0.0", default-features = false }, accompanied by inline comments documenting the mono-crate consolidation and feature selection.
Crate-level dependency wiring
crates/fbuild-core/Cargo.toml
Updates the fbuild-core crate to use running-process (workspace-pinned) instead of running-process-core.
Subprocess module import and documentation
crates/fbuild-core/src/subprocess.rs
Module documentation and imports shift from running_process_core::* to running_process::*, bringing in NativeProcess, ProcessConfig, and related command/stdin/stderr types from the consolidated crate.
Containment module import and API documentation
crates/fbuild-core/src/containment.rs
Imports for ContainedProcessGroup and ORIGINATOR_ENV_VAR migrate to running_process::*. Inline documentation is reworded to reflect the running-process 4.0 API surface, including updates to containment spawn behavior, Windows Job Object handling, and tokio integration semantics.
Lint and workflow documentation updates
dylints/ban_raw_subprocess/README.md, dylints/ban_raw_subprocess/src/lib.rs, dylints/ban_raw_subprocess/src/allowlist.txt, .github/workflows/lint-subprocess.yml
References to the subprocess wrapper and deadlock-prevention mechanism are updated from running-process-core::NativeProcess to running-process::NativeProcess. The allowlist comment is extended to clarify the expected API return type behavior.

🎯 2 (Simple) | ⏱️ ~8 minutes


Possibly related PRs

  • FastLED/fbuild#200: Main PR that migrated crates/fbuild-core/src/subprocess.rs and the subprocess/containment usage to running_process::* API, directly overlapping with this migration's core module changes.
  • FastLED/fbuild#270: Aligns the dylints/ban_raw_subprocess lint and documentation with the subprocess wrapper migration, referencing the same running-process::NativeProcess naming change.
  • FastLED/fbuild#254: Updates crates/fbuild-core/src/subprocess.rs and src/containment.rs to integrate with changes in the running-process* API around containment and spawn handling.

🐰 A crate that once was split apart,
Now unified—a tech heart!
From core to whole, the imports flow,
Four-point-zero steals the show.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: migrating from running-process-core to running-process 4.0.0 mono-crate.
Linked Issues check ✅ Passed The PR successfully implements all objectives from issue #271: dependency replaced, use paths updated, features configured with default-features=false, and build/tests verified.
Out of Scope Changes check ✅ Passed All changes are directly related to the running-process migration objective; no unrelated modifications detected across Cargo.toml files, imports, and documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch deps/running-process-4.0.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zackees zackees merged commit 5fb20a5 into main May 24, 2026
83 checks passed
@zackees zackees deleted the deps/running-process-4.0.0 branch May 24, 2026 15:59
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.

deps: upgrade running-process-core 3.4 → running-process 4.0.0 (crate consolidated)

1 participant