feat(windows): add Windows (x86_64-pc-windows-msvc) support#1
Merged
Conversation
Compile, test, and ship UMB on Windows. The orphan/reap surface in src/server/router.rs was already fully #[cfg(unix)]/#[cfg(target_os="linux")] gated, so the Linux subreaper + process-group reap semantics are UNCHANGED (router.rs is not touched). Only platform shims in local_tools.rs were needed: - run_command: `sh -c` on Unix, `cmd.exe /C` on Windows (cfg-gated; Unix arm byte-identical to before). - grep_files: Unix keeps real `grep -rn` verbatim; Windows gets an in-process recursive substring search producing the same `path:lineno:line` output, same 200-line truncation, same `--include` glob filter (Windows has no grep). - tests: temp paths via std::env::temp_dir() instead of hardcoded /tmp so the Windows test run is honestly green. Unix-only integration/reaper tests stay #[cfg(unix)]-gated (skipped on Windows, not deleted). Windows child-cleanup v1 is honest: backend children are killed on every teardown path via tokio kill_on_drop + explicit kill on shutdown. Windows lacks prctl/setpgid/setsid, so it does NOT have the Linux subreaper-grade orphan adoption — documented as a known limitation (Job Objects noted as future hardening, not committed). CI: ci.yml adds windows-latest (default features; embed-onnx excluded on Windows). release.yml adds the x86_64-pc-windows-msvc build → asset umb-windows-x86_64.exe, included in SHA256SUMS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Adds Windows support: compile, test, and release
umbonx86_64-pc-windows-msvc.Draft for CI validation only — not for merge yet (pending lead review).
What changed
#[cfg(unix)]/#[cfg(target_os="linux")]gated, so its semantics are unchanged.local_tools.rs:run_command(sh -c→cmd /Con Windows),grep_files(Unix keeps realgrep; Windows gets an in-process recursive search with identical output shape), portable test temp paths.KNOWN_ISSUES.md: honest Windows limitation — best-effort child cleanup (kill_on_drop+ explicit kill), no subreaper-grade orphan adoption (Job Objects = future hardening, not committed).ci.yml:windows-latestjob (default features;embed-onnxexcluded on Windows).release.yml: Windows build →umb-windows-x86_64.exeasset + SHA256SUMS.Honest scoping
Windows lacks
prctl/setpgid/setsid. The dominant case (normal backend + its children) is cleaned up; a deliberately-detached grandchild is not guaranteed-reaped on Windows v1. Documented, not faked.🤖 Generated with Claude Code