Skip to content

build!: bump MSRV to 1.98.0 and replace as_os_str().is_empty() with Path::is_empty() - #562

Merged
bug-ops merged 1 commit into
mainfrom
feat/issue-558/core-msrv-1-98-path-is-empty
Sep 1, 2026
Merged

build!: bump MSRV to 1.98.0 and replace as_os_str().is_empty() with Path::is_empty()#562
bug-ops merged 1 commit into
mainfrom
feat/issue-558/core-msrv-1-98-path-is-empty

Conversation

@bug-ops

@bug-ops bug-ops commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bumps the workspace MSRV from 1.96.0 to 1.98.0 to unlock Path::is_empty() (stabilized in Rust 1.98).
  • Replaces all 13 path.as_os_str().is_empty() call sites across exarch-cli and exarch-core with the equivalent, behavior-identical path.is_empty().
  • Updates every MSRV reference: Cargo.toml, clippy.toml, CI workflow, README/CONTRIBUTING, both crate READMEs, the bug report issue template, the exarch-cli skill, and all specs/** files that declared 1.96.0.

This implements #558. Note: the issue itself recommended keeping this open as a backlog item until another motivated need for 1.97/1.98 arrived (a single 13-site cosmetic cleanup does not clear the bar on its own, per the issue's "Why not act now" reasoning) — this was implemented now on explicit user request, overriding that recommendation.

An adversarial review pass confirmed:

  • Zero semantic drift: Path::is_empty() is { self.as_os_str().is_empty() } in the stdlib source, byte-identical to the replaced pattern.
  • No missed call sites (repo-wide grep for as_os_str().is_empty() / as_os_str().len() returns zero hits after the change).
  • The bump is exactly load-bearing: cargo +1.96 check -p exarch-core --all-features --ignore-rust-version fails with exactly 11 E0658 path_is_empty errors and nothing else.

A workspace version bump (0.6.0 -> 0.7.0) was initially bundled in but reverted after review: git history shows version bumps in this repo happen only in a dedicated release: commit, not alongside MSRV/build changes (the prior MSRV bump, #418, left the version field untouched too).

Out of scope

  • CLAUDE.md (project root) and .claude/rules/continuous-improvement.md still reference MSRV 1.96 — both are globally gitignored on the author's machine and outside this PR's git history; they'll need a manual update outside of git.
  • crates/exarch-python/pyproject.toml and skills/exarch-cli/SKILL.md version metadata (both independent of the Cargo workspace version) are untouched.

Closes #558

Test plan

  • cargo +nightly fmt --all -- --check
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo nextest run --workspace --all-features --exclude exarch-python --exclude exarch-node (1234/1234 passed)
  • cargo test --doc --workspace --all-features --exclude exarch-python --exclude exarch-node (119/119 passed)
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --workspace — fails only on a pre-existing, unrelated broken intra-doc link to std::io::Error::other (error/io_context.rs:7, error/redaction.rs:127), independently confirmed identical on main
  • Verified existing test coverage for the empty-path branch at all 12 production call sites (no new tests needed)

…ath::is_empty() (#558)

Raise rust-version to unlock Path::is_empty() (stable since 1.98).
Replace all 13 path.as_os_str().is_empty() call sites across
exarch-cli and exarch-core with the equivalent, behavior-identical
Path::is_empty(). Update all MSRV references across Cargo.toml,
clippy.toml, CI, README/CONTRIBUTING, the issue template, the
exarch-cli skill, and specs.

BREAKING CHANGE: minimum supported Rust version is now 1.98.0.
Downstream consumers pinned to an older toolchain must upgrade
before taking this release.

Claude-Session: https://claude.ai/code/session_01XM1jbB39r5sivazZLM314x
@github-actions github-actions Bot added core Changes to exarch-core ci CI/CD changes docs Documentation dependencies Dependency updates labels Sep 1, 2026
@bug-ops
bug-ops enabled auto-merge (squash) September 1, 2026 21:51
@bug-ops
bug-ops merged commit a8e0647 into main Sep 1, 2026
26 checks passed
@bug-ops
bug-ops deleted the feat/issue-558/core-msrv-1-98-path-is-empty branch September 1, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD changes core Changes to exarch-core dependencies Dependency updates docs Documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

core: track stable Rust APIs above MSRV 1.96 for a future bundled bump

1 participant