Skip to content

Commit d541ef3

Browse files
James Goberclaude
andcommitted
Release v1.0.1 — Maintenance & Audit Patch
Closes the gap between what the 1.0.0 release notes claimed and what actually shipped, restores Windows builds under --all-features, clears the post-release security advisory backlog, and tunes crate metadata for crates.io discoverability. No public API changes. MSRV unchanged at 1.82.0. Fixed: - Windows --all-features build: pprof moved under [target.'cfg(unix)'.dependencies] (relies on POSIX libc types). - src/profiling.rs split: pprof-backed CpuProfiler is Unix-only; dhat-backed heap profiling stays cross-platform. - RUSTSEC-2024-0408: pprof actually bumped 0.13 -> 0.14 (the 1.0.0 changelog claimed this but it never landed in Cargo.toml). - Rust 1.95 clippy: cleared 8 stable lints (map_unwrap_or, duration_suboptimal_units) and 21 latent Windows-feature lints (raw-pointer borrows -> addr_of_mut!, as-casts -> From/TryFrom, inlined format!, missing # Errors docs, attribute ordering on windows IPC module). - README: removed broken links (dev/release-notes/v1.0.0.md, CONTRIBUTING.md), replaced fake `cargo unsafe-all-targets` with `cargo geiger`, corrected test count, bumped install snippets to 1.0.1. - CI: MSRV check pins indexmap 2.10.0 after generate-lockfile (indexmap 2.14.0 requires edition2024 Cargo feature; Cargo 1.82 cannot parse it). Security Audit job: fixed malformed step that ran actions/checkout@v4 instead of installing the toolchain. Changed: - Crate metadata for crates.io visibility: - Description rewritten to lead with 'async daemon framework' and mention Tokio. - Keywords: `systemd` (misleading; no systemd integration) -> `async`. - Categories: `network-programming` (incorrect; no networking) and `development-tools` (generic) -> `asynchronous` and `command-line-utilities`. - Semver-compatible dep bumps: tokio 1.37->1.52, arc-swap 1.7->1.9, parking_lot 0.12->0.12.5, dashmap 6.0->6.2, once_cell 1.19->1.21, fastrand 2.0->2.4, pprof 0.13->0.14, proptest (dev) 1.6->1.11. - .cargo/audit.toml: documented allow-list rationale; added RUSTSEC-2026-0097 (dev-only rand soundness via proptest). Verified on Windows 11 / Rust 1.95.0: - `cargo build --all-features` clean (was broken on 1.0.0) - `cargo test --all-features`: 39 unit + 5 integration + 3 doc - `cargo clippy --all-targets -- -D warnings` clean across all non-Unix feature combinations including windows-monitoring - `cargo fmt --check` clean - `cargo audit` exit 0 (3 documented allow-listed advisories) Release notes: docs/release-notes/v1.0.1.md Full changelog: CHANGELOG.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b5a0b3d commit d541ef3

14 files changed

Lines changed: 595 additions & 189 deletions

File tree

.cargo/audit.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
[advisories]
2+
# Allowed advisories with rationale:
3+
#
4+
# - RUSTSEC-2025-0052: async-std is discontinued upstream. Kept as an optional
5+
# feature for existing users; will be removed in v2.0.0. Not in the default
6+
# build path.
7+
# - RUSTSEC-2024-0384: `instant` is unmaintained. Reaches us only via
8+
# signal-hook-async-std → futures-lite → async-io → instant. Removed once
9+
# the async-std feature is dropped in v2.0.0.
10+
# - RUSTSEC-2026-0097: rand 0.9 is unsound with a custom logger using
11+
# rand::rng(). Pulled in via proptest (dev-only). Not used in production
12+
# code; runtime daemons do not exercise rand::rng().
213
ignore = [
314
"RUSTSEC-2025-0052",
415
"RUSTSEC-2024-0384",
16+
"RUSTSEC-2026-0097",
517
]

.github/workflows/ci.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,14 @@ jobs:
130130
- name: Checkout code
131131
uses: actions/checkout@v4
132132

133-
- name: Security audit
134-
uses: actions/checkout@v4
135-
- uses: dtolnay/rust-toolchain@stable
133+
- name: Install Rust toolchain
134+
uses: dtolnay/rust-toolchain@stable
136135
with:
137136
components: rustfmt, clippy
137+
138138
- name: Install cargo-audit
139139
run: cargo install cargo-audit
140+
140141
- name: Run security audit
141142
run: cargo audit
142143

@@ -216,10 +217,18 @@ jobs:
216217
# Regenerate Cargo.lock to ensure compatibility
217218
- name: Delete existing Cargo.lock
218219
run: rm -f Cargo.lock
219-
220+
220221
- name: Regenerate Cargo.lock with MSRV
221222
run: cargo generate-lockfile
222-
223+
224+
# Pin transitive deps that have raised their MSRV beyond ours.
225+
# Cargo 1.82 lacks MSRV-aware resolver (stabilized in 1.84), so newly
226+
# published versions can break the regenerated lockfile. Drop these
227+
# pins when MSRV is raised.
228+
- name: Pin MSRV-incompatible transitive deps
229+
run: |
230+
cargo update -p indexmap --precise 2.10.0 || true
231+
223232
- name: Check MSRV compatibility (lib only, no default features)
224233
run: cargo check --lib --no-default-features
225234

CHANGELOG.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,42 @@
1212

1313
- _No changes yet._
1414

15+
## [1.0.1] - 2026-05-18
16+
17+
### Fixed
18+
19+
- **Windows build**: `cargo build --all-features` now compiles on Windows. `pprof` is moved under `[target.'cfg(unix)'.dependencies]` because it relies on POSIX libc types (`pthread_t`, `siginfo_t`, `ucontext_t`). The `profiling` feature still exposes the CPU profiler on Unix; `heap-profiling` remains cross-platform via `dhat`.
20+
- **Security**: `pprof` upgraded from `0.13` to `0.14`, resolving RUSTSEC-2024-0408 (unsound `std::slice::from_raw_parts` usage). The 1.0.0 CHANGELOG claimed this was done in 1.0.0-RC2; it was not — fixed here.
21+
- **Clippy on Rust 1.95**: cleared all 8 stable-toolchain warnings:
22+
- `map_unwrap_or` in `src/config.rs` and `src/daemon.rs`
23+
- `duration_suboptimal_units` (e.g. `Duration::from_millis(5000)``Duration::from_secs(5)`) in `src/config.rs` and `src/subsystem.rs`
24+
- **Windows monitoring lints** (`windows-monitoring` feature): replaced `&mut local` with `addr_of_mut!`, switched `as` casts to `From`/`TryFrom`, inlined `format!` args, added missing `# Errors` docs in `src/ipc.rs`, and corrected the inner/outer attribute ordering on the Windows IPC module.
25+
- **README accuracy**: removed broken links to `./dev/release-notes/v1.0.0.md` and `CONTRIBUTING.md` (neither exists in-tree), replaced the non-existent `cargo unsafe-all-targets` invocation with `cargo geiger`, and corrected the test-count claim.
26+
- **CI workflow**:
27+
- `MSRV Check`: pin `indexmap` to `2.10.0` after `cargo generate-lockfile` because `indexmap 2.14.0+` requires the `edition2024` Cargo feature (stabilized in Rust 1.85), which Cargo 1.82 cannot parse. The MSRV-aware resolver landed in Cargo 1.84; this pin is a temporary backstop until MSRV is raised.
28+
- `Security Audit`: fixed a malformed step — the `Security audit` step was incorrectly using `actions/checkout@v4` instead of installing the toolchain; corrected to install Rust before invoking `cargo audit`.
29+
30+
### Changed
31+
32+
- **Crate metadata** (crates.io visibility):
33+
- Description rewritten to lead with "async daemon framework" and mention Tokio explicitly.
34+
- Keywords: `systemd` (misleading — no systemd integration) replaced with `async`.
35+
- Categories: `network-programming` (incorrect — no networking in this crate) and `development-tools` (too generic) replaced with `asynchronous` and `command-line-utilities`.
36+
- **Dependency bumps** (semver-compatible):
37+
- `tokio` 1.37 → 1.52
38+
- `parking_lot` 0.12 → 0.12.5
39+
- `arc-swap` 1.7 → 1.9
40+
- `dashmap` 6.0 → 6.2
41+
- `once_cell` 1.19 → 1.21
42+
- `fastrand` 2.0 → 2.4
43+
- `pprof` 0.13 → 0.14
44+
- `proptest` (dev) 1.6 → 1.11 (also resolves rand-tree warnings)
45+
- **`.cargo/audit.toml`**: added rationale comments for each allowlist entry. `RUSTSEC-2025-0052` (async-std discontinued) and `RUSTSEC-2024-0384` (instant unmaintained) remain allow-listed for the optional `async-std` feature path (to be removed in v2.0.0). Added `RUSTSEC-2026-0097` (dev-only rand soundness via proptest 1.11).
46+
47+
### Removed
48+
49+
- `dhat` dep declaration no longer hidden behind a quoted bare key (`"dhat"``dhat`).
50+
1551
## [1.0.0] - 2026-02-23
1652

1753
### Added
@@ -238,7 +274,8 @@ Initial pre-dev release.
238274
- Project scaffolding, documentation structure, and license
239275

240276

241-
[Unreleased]: https://github.com/jamesgober/proc-daemon/compare/v1.0.0...HEAD
277+
[Unreleased]: https://github.com/jamesgober/proc-daemon/compare/v1.0.1...HEAD
278+
[1.0.1]: https://github.com/jamesgober/proc-daemon/compare/v1.0.0...v1.0.1
242279
[1.0.0]: https://github.com/jamesgober/proc-daemon/compare/v1.0.0-rc2...v1.0.0
243280
[1.0.0-RC2]: https://github.com/jamesgober/proc-daemon/compare/v1.0.0-rc.1...v1.0.0-rc2
244281
[1.0.0-RC.1]: https://github.com/jamesgober/proc-daemon/compare/v0.9.0...v1.0.0-rc.1

0 commit comments

Comments
 (0)