From 728de50dd9402ea18a6938f92ca38c95656c0e46 Mon Sep 17 00:00:00 2001 From: Zach Vorhies Date: Mon, 26 Oct 2026 21:44:48 -0700 Subject: [PATCH] release: 4.10.18 after service and CI fixes --- CHANGELOG.md | 5 +++++ Cargo.lock | 22 +++++++++---------- Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../running-process-probe-daemon/Cargo.toml | 6 ++--- crates/running-process-probe/Cargo.toml | 2 +- crates/running-process-py/Cargo.toml | 6 ++--- crates/running-process/Cargo.toml | 8 +++---- pyproject.toml | 2 +- src/running_process/__init__.py | 2 +- uv.lock | 2 +- 11 files changed, 32 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 961f879d..88f72674 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 4.10.18 — CI and service reliability + +- Fix service cleanup races and report backend startup refusals so failures can be diagnosed. +- Restore the full Windows, macOS, and Linux CI matrix, including the Windows x86 Dylint job and musl checks. + ## 4.10.17 — Supervised services with a non-blocking client - New light top-level Python package `running_process_service` diff --git a/Cargo.lock b/Cargo.lock index 295733c2..a61b1845 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2078,7 +2078,7 @@ dependencies = [ [[package]] name = "running-process" -version = "4.10.17" +version = "4.10.18" dependencies = [ "anyhow", "blake3", @@ -2116,7 +2116,7 @@ dependencies = [ [[package]] name = "running-process-platform-internal" -version = "4.10.17" +version = "4.10.18" dependencies = [ "blake3", "dirs", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "running-process-probe" -version = "4.10.17" +version = "4.10.18" dependencies = [ "blake3", "crash-handler", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "running-process-probe-daemon" -version = "4.10.17" +version = "4.10.18" dependencies = [ "axum", "blake3", @@ -2205,21 +2205,21 @@ dependencies = [ [[package]] name = "running-process-probe-interposer-linux" -version = "4.10.17" +version = "4.10.18" dependencies = [ "libc", ] [[package]] name = "running-process-probe-interposer-macos" -version = "4.10.17" +version = "4.10.18" dependencies = [ "libc", ] [[package]] name = "running-process-probe-interposer-windows" -version = "4.10.17" +version = "4.10.18" dependencies = [ "retour", "windows-sys 0.61.2", @@ -2227,7 +2227,7 @@ dependencies = [ [[package]] name = "running-process-probe-worker" -version = "4.10.17" +version = "4.10.18" dependencies = [ "addr2line", "lzma-rs", @@ -2246,7 +2246,7 @@ dependencies = [ [[package]] name = "running-process-protocol" -version = "4.10.17" +version = "4.10.18" dependencies = [ "prost", "prost-build", @@ -2256,7 +2256,7 @@ dependencies = [ [[package]] name = "running-process-py" -version = "4.10.17" +version = "4.10.18" dependencies = [ "libc", "prost", @@ -2272,7 +2272,7 @@ dependencies = [ [[package]] name = "running-process-win-gnu-bridge" -version = "4.10.17" +version = "4.10.18" dependencies = [ "windows-sys 0.61.2", ] diff --git a/Cargo.toml b/Cargo.toml index 8da07b3f..eac10c79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ members = [ exclude = ["testbins-tokio"] [workspace.package] -version = "4.10.17" +version = "4.10.18" edition = "2021" rust-version = "1.95" license = "MIT" diff --git a/crates/running-process-platform-internal/Cargo.toml b/crates/running-process-platform-internal/Cargo.toml index f0bb745c..cd7dcaef 100644 --- a/crates/running-process-platform-internal/Cargo.toml +++ b/crates/running-process-platform-internal/Cargo.toml @@ -51,7 +51,7 @@ conpty-sidecar = [ [dependencies] miniz_oxide = { version = "0.8", optional = true } prost = { version = "0.14", optional = true } -running-process-protocol = { version = "=4.10.17", path = "../running-process-protocol", optional = true } +running-process-protocol = { version = "=4.10.18", path = "../running-process-protocol", optional = true } tokio = { version = "1", default-features = false, features = ["io-util", "macros", "process", "rt"], optional = true } sysinfo = { version = "0.30", optional = true } interprocess = { version = "2", optional = true } diff --git a/crates/running-process-probe-daemon/Cargo.toml b/crates/running-process-probe-daemon/Cargo.toml index b20c4e10..536281ee 100644 --- a/crates/running-process-probe-daemon/Cargo.toml +++ b/crates/running-process-probe-daemon/Cargo.toml @@ -24,15 +24,15 @@ path = "src/bin/rpprobe.rs" # Broker primitives reused as libraries: framing codec, peer-cred/owner-only # ACL, privilege refusal, SID hashing, private-dir hardening. The probe daemon # is NOT a broker backend — it borrows the plumbing, not the wire. -running-process = { path = "../running-process", version = "4.10.17", default-features = false, features = [ +running-process = { path = "../running-process", version = "4.10.18", default-features = false, features = [ "client", ] } # probe_diag.v1 schema (S1 / #630). -running-process-probe = { path = "../running-process-probe", version = "4.10.17" } +running-process-probe = { path = "../running-process-probe", version = "4.10.18" } # Host endpoint naming, runtime directory, private/no-follow file opens and # fault-code names (#974). `running-process` already depends on this crate, so # this adds no new package to the graph; only `ipc` and `fs` are enabled. -running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.17", default-features = false, features = ["ipc", "fs"] } +running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.18", default-features = false, features = ["ipc", "fs"] } interprocess = "2" prost = "0.14" diff --git a/crates/running-process-probe/Cargo.toml b/crates/running-process-probe/Cargo.toml index 9f827e2e..548fbe25 100644 --- a/crates/running-process-probe/Cargo.toml +++ b/crates/running-process-probe/Cargo.toml @@ -74,7 +74,7 @@ object = { version = "0.36", default-features = false, features = ["read", "std" # #974: which images are loaded is host mechanics and comes from the platform # facade. Only the dependency-free core is enabled; the object parsers above # stay here, never in the facade. -running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.17", default-features = false } +running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.18", default-features = false } [target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies] # #635 cooperative capture uses realtime signals/ucontext on Linux and Mach diff --git a/crates/running-process-py/Cargo.toml b/crates/running-process-py/Cargo.toml index 544a7804..d96a9f18 100644 --- a/crates/running-process-py/Cargo.toml +++ b/crates/running-process-py/Cargo.toml @@ -20,7 +20,7 @@ crate-type = ["cdylib", "lib"] libc = "0.2" pyo3 = { workspace = true } regex = "1" -running-process = { path = "../running-process", version = "4.10.17", features = ["async-process", "client", "originator-scan", "probe", "pty"] } +running-process = { path = "../running-process", version = "4.10.18", features = ["async-process", "client", "originator-scan", "probe", "pty"] } pyo3-async-runtimes = { version = "0.29", features = ["tokio-runtime"] } tokio = { version = "1", default-features = false, features = ["sync"] } sysinfo = "0.30" @@ -28,7 +28,7 @@ prost = "0.14" # Supplies the probe_diag.v1 prost enums and the all-thread snapshot API. # default-features = false keeps the crate's injection vehicles (gated on its # embed-helper feature) out of the extension module entirely. -running-process-probe = { path = "../running-process-probe", version = "4.10.17", default-features = false } +running-process-probe = { path = "../running-process-probe", version = "4.10.18", default-features = false } # #975: the tracked-pid registry asks the platform facade for the state base # directory instead of selecting the host itself. -running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.17", features = ["fs"] } +running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.18", features = ["fs"] } diff --git a/crates/running-process/Cargo.toml b/crates/running-process/Cargo.toml index 66dd65cf..674d4a6b 100644 --- a/crates/running-process/Cargo.toml +++ b/crates/running-process/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "running-process" -version = "4.10.17" +version = "4.10.18" edition = "2021" rust-version = "1.95" license = "MIT" @@ -275,14 +275,14 @@ sha2 = { version = "0.10", optional = true } getrandom = { version = "0.4", optional = true } # #633: schema-only dependency for the probe client facade. default-features # off keeps the interposer/injection machinery out — see the `probe` feature. -running-process-probe = { path = "../running-process-probe", version = "4.10.17", default-features = false, optional = true } -running-process-protocol = { path = "../running-process-protocol", version = "4.10.17", optional = true } +running-process-probe = { path = "../running-process-probe", version = "4.10.18", default-features = false, optional = true } +running-process-protocol = { path = "../running-process-protocol", version = "4.10.18", optional = true } # Preserve the long-standing `process_tree::kill_tree` path for 4.x # `default-features = false` consumers. The current Phase 0.5 containment # primitive is sysinfo-backed, so the root selects this narrow private # platform capability unconditionally while keeping public inspection APIs # behind `process-inspection`. Other platform capabilities stay opt-in. -running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.17", default-features = false, features = ["process-inspection"] } +running-process-platform-internal = { path = "../running-process-platform-internal", version = "4.10.18", default-features = false, features = ["process-inspection"] } # Wave 5 of #165: daemon-feature deps. All optional except tokio. # tokio (#850): unconditional since NativeProcess's lifecycle observer runs # on the process-global actor runtime. The base set is deliberately minimal diff --git a/pyproject.toml b/pyproject.toml index efeb4e50..20e6891a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "soldr" [project] name = "running_process" -version = "4.10.17" +version = "4.10.18" description = "A Rust-backed subprocess wrapper with split stdout/stderr streaming" readme = "README.md" requires-python = ">=3.10" diff --git a/src/running_process/__init__.py b/src/running_process/__init__.py index d4581088..95f92a0f 100644 --- a/src/running_process/__init__.py +++ b/src/running_process/__init__.py @@ -1,6 +1,6 @@ from __future__ import annotations -__version__ = "4.10.17" +__version__ = "4.10.18" # Imported first: turns a free-threaded interpreter loading the GIL-runtime # extension into an ImportError instead of a segfault (#1142). diff --git a/uv.lock b/uv.lock index 9a99e2f9..f0125a38 100644 --- a/uv.lock +++ b/uv.lock @@ -272,7 +272,7 @@ wheels = [ [[package]] name = "running-process" -version = "4.10.17" +version = "4.10.18" source = { editable = "." } [package.dev-dependencies]