Repository navigation
Fix Windows release builds on Rust 1.88 - #193
Merged
Shengyu Fu (shengyfu) merged 1 commit intoOct 11, 2026
Merged
Conversation
Advance the rusqlite Git pin to the compatible development-line revision while retaining native Windows WAL fixes and upgrading bundled SQLite to 3.53.4. Declare and exercise the workspace MSRV, use compatible atomic updates, and preserve OneBranch release hardening and publication behavior. Co-authored-by: Copilot App <[email protected]>
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The Windows-specific release path and development-line database pin warrant final human review with exact-head CI results.
0 open findings
What changed in this PR
Restores Rust 1.88 compatibility for Windows release builds while preserving release hardening and packaging behavior.
Changes:
- Replaces unavailable atomic
try_updatecalls with compatiblefetch_update. - Advances the pinned rusqlite revision and synchronizes lockfiles.
- Declares Rust 1.88 as the workspace minimum and adds Windows MSRV CI coverage.
| File | Description |
|---|---|
Cargo.toml |
Declares MSRV and updates rusqlite pin. |
Cargo.lock |
Records updated Git sources. |
fuzz/Cargo.lock |
Synchronizes fuzz dependencies. |
tgrep-core/Cargo.toml |
Inherits workspace MSRV. |
tgrep-cli/Cargo.toml |
Inherits workspace MSRV. |
tgrep-core/src/managed/work.rs |
Uses Rust 1.88-compatible atomic updates. |
tgrep-core/src/managed/views.rs |
Uses compatible epoch updates. |
.github/workflows/ci.yml |
Adds bounded Windows Rust 1.88 qualification. |
CONTRIBUTING.md |
Documents MSRV, CI, and dependency changes. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Shengyu Fu (shengyfu)
deleted the
shengyfu-windows-compiler-compatibility
branch
October 11, 2026 22:49
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
Restore Windows release-build compatibility with Rust 1.88 without changing the Microsoft
ms-stableinstaller/channel, OneBranch signing, hardening, packaging, checksums, publication, or release version1.2.0.The previous rusqlite Git pin used
cfg_select!, which requires Rust 1.95. This advances the pin to the upstream development-line Rust 1.88 compatibility fix and replaces four workspace atomictry_updatecalls with equivalent checkedfetch_updatecalls. Their orderings, overflow/budget checks and error handling are preserved. Call-local deprecation allowances let newer compilers accept the intentionally older API.Declare
rust-version = "1.88"in workspace metadata, inherit it in core/CLI, correct the contributor requirement, and add a bounded native Windows Rust 1.88 job. That job checks all targets, executes the existing native WAL and managed-lifecycle suites, builds the actual hardened x64 release executable, smoke-tests it and checks lockfile stability. Existing CI jobs/triggers and the Azure DevOps OneBranch YAML are unchanged.Dependency choice and SQLite change
2a71e35d94b2a02f7dd4a0c4cfd59c339370e747a1a23ea2a6a8a27bc07c8b10cbd363760287e1cc0.40.10.40.10.38.10.38.13.53.33.53.4The selected revision is a descendant of the previous development-line pin and retains its native Windows WAL-lock correction. The published rusqlite 0.40.2 maintenance release was evaluated but rejected: its bundled SQLite 3.53.2 failed the unchanged native Windows WAL-reclamation regression. This is therefore an intentional SQLite patch upgrade, not a maintenance-branch downgrade or an assertion that the bundled database source is unchanged. Both selected SQLite versions include the SQLite 3.53.0 WAL-reset fix.
Cargo updated only the rusqlite/libsqlite3-sys Git sources in root and fuzz lockfiles; package versions and other dependency edges are unchanged.
vendor/ignore/Cargo.lockis unchanged. Git-source retrieval remains required as before.Validation
All build, Rayon and test concurrency was bounded to two. The final source passed the following CI-equivalent commands on native Windows x64 with ordinary NTFS temporary storage:
Results: workspace check passed; native WAL 3/3 and managed lifecycle 37/37 passed; the optimized hardened release build succeeded using upstream
rustc 1.88.0 (6b00bc388 2025-06-23).Additional focused commands, in separate shells using the repository's normal Windows target flags:
Results: core managed unit tests 89/89; selected CLI shared-managed regressions 23/23; strict Clippy, formatting and both complete locked dependency graphs passed. All three lockfile SHA256 values remained unchanged through validation. Structural YAML comparison confirmed existing CI configuration and OneBranch hardening were preserved.
The exact release executable was copied into an immutable unsigned artifact.
--versionreturnedtgrep 1.2.0; JSON search returned exactly the expected workspace-package match, and the CI quiet-search smoke passed:Independent final-artifact checks also passed: read/write/restart of a catalog produced with SQLite 3.53.3, preservation of exact header/allocation state, and subsequent read-back by the old executable. A separate native NTFS fixture freshly published a managed generation and checkpoint, served a verified shared-v2 JSON query identical to a verified no-index scan, then detached/drained and shut down cleanly. These checks used the final hook-free artifact, with unchanged executable hashes and no cleanup errors.
Source commit:
c937c062a035a2145240e5abe41a279a05f8a363.Unsigned executable SHA256:
C55E4E9C48B7733833CAF457B4F4F4D0303C6D99C7E83F57C65DDCC072D2ADE1.Limits and observed intermittence
Initial Rust 1.88 NTFS lifecycle runs failed intermittently with
producer-member-modifiedand ChangeTime-only inventory drift. Subsequent uninstrumented runs of the unchanged lifecycle/authentication code passed all 37 cases, including the final exact-hardening run. No diagnostic, speculative handle-lifetime change, authentication relaxation, retry wrapper, TEMP redirection or weakened assertion is included. This PR does not claim to fix that intermittent issue. Unchanged main with its original dependency and Rust 1.99 passed 37/37, as did the new pin on Rust 1.99; no current-main failure was established by those controls. Exact-head CI remains important.Local upstream-Rust results do not qualify the Microsoft compiler/feed, official OneBranch execution, signing, BinSkim or release publication. No ARM64 build/native execution or full legacy-control/native OS matrix is claimed; existing CI provides broader qualification. No release was queued or published, and no existing tag was changed.
Exact-head CI follow-up
At unchanged head
c937c062a035a2145240e5abe41a279a05f8a363, CI run 38179834688, attempt 2 and the single Ubuntu rerun succeeded, includingindexed_hidden11/11. The original Ubuntu job failed its indexed-backend assertion when missingmeta.jsoncaused a filesystem scan; exactly one unchanged-head job rerun was requested, without source or assertion edits. Bounded native Linux/ext4 controls on Rust 1.98.1 also passed the full 11-test suite plus five focused repetitions for each of this head and unchanged main669e832bda5a87df05c330a3e32754f6201ac534. No failure was reproduced on either control, and these results do not establish a fix or baseline reproduction of the intermittent publication/discovery issue. Original and rerun evidence are retained; human approval remains required.