build!: bump MSRV to 1.98.0 and replace as_os_str().is_empty() with Path::is_empty() - #562
Merged
Merged
Conversation
…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
bug-ops
enabled auto-merge (squash)
September 1, 2026 21:51
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Path::is_empty()(stabilized in Rust 1.98).path.as_os_str().is_empty()call sites acrossexarch-cliandexarch-corewith the equivalent, behavior-identicalpath.is_empty().Cargo.toml,clippy.toml, CI workflow, README/CONTRIBUTING, both crate READMEs, the bug report issue template, theexarch-cliskill, and allspecs/**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:
Path::is_empty()is{ self.as_os_str().is_empty() }in the stdlib source, byte-identical to the replaced pattern.as_os_str().is_empty()/as_os_str().len()returns zero hits after the change).cargo +1.96 check -p exarch-core --all-features --ignore-rust-versionfails with exactly 11E0658 path_is_emptyerrors 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.mdstill 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.tomlandskills/exarch-cli/SKILL.mdversion metadata (both independent of the Cargo workspace version) are untouched.Closes #558
Test plan
cargo +nightly fmt --all -- --checkcargo clippy --workspace --all-targets --all-features -- -D warningscargo 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 tostd::io::Error::other(error/io_context.rs:7,error/redaction.rs:127), independently confirmed identical onmain