Repository navigation
Conversation
build.vsh now has a 'vinix' key in ignore_dirs. It lists only uptime, rather than sharing the macOS list: stat and sync are excluded on macOS because the BSD syscall surface differs from Linux, and Vinix follows POSIX closely enough that both do build there. Without the key the dictionary lookup fell through to an empty list, so Vinix would have built the Windows-excluded Unix set as well as everything else at once. A CI job cross-compiles all 87 tools for the target, since GitHub has no Vinix runner. That job is not decoration: it is what found that timeout did not compile on any Unix. timeout.v passed 'mut &p' to terminate_process, which only the Windows variant declares as mut, so the nix and default variants rejected it. Linux, macOS and Vinix were all broken while Windows CI was green. All three variants now take 'mut p &os.Process' so the call site is uniform, and the Windows comment explaining why the pointer is mutable is kept. Verified: 87 of 87 tools cross-compile for vinix, timeout builds for all four targets, and the Windows build is unchanged.
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.
build.vshnow has a'vinix'key inignore_dirs. It lists onlyuptime, rather than sharing the macOS list:statandsyncare excluded on macOS because the BSD syscall surface differs from Linux, and Vinix follows POSIX closely enough that both build there. Without the key, the dictionary lookup fell through to an empty list — which read as "build everything" and would have attempted the Windows-excluded Unix set alongside it.A CI job cross-compiles all 87 tools for the target, since GitHub has no Vinix runner.
That job is not decoration. It is what found that
timeoutdid not compile on any Unix.timeout.vpassedmut &ptoterminate_process, which only the Windows variant declares asmut; the_nixand_defaultvariants rejected it. Linux, macOS and Vinix were all broken while Windows CI was green, and the-Wimpure-vgate never saw it because only Windows builds the directory. All three variants now takemut p &os.Processso the call site is uniform, and the Windows comment explaining why the pointer is mutable is kept rather than deleted as redundant.V's side needed nothing:
$if vinix,_vinix.c.vfile suffixes and-os vinixall already work, and_nix.c.vfiles are selected on Vinix because the suffix allowlist only excludes them on Windows. I verified that with a probe rather than assuming it.Verified: 87 of 87 tools cross-compile for Vinix,
timeoutbuilds for all four targets (windows, linux, macos, vinix), and the Windows build is unchanged.Two things I want to flag, not bury
The CI job parses
build.vshwith shell text tools to read the ignore list, so the two cannot drift. That parsing is now verified: it extracts exactlyuptime, skips exactly 1 of 87, and drops the key word itself. But it is still a shellgrepreading a V source file, which is a real fragility — a restructured map literal would break it. A stronger design would havebuild.vshemit the list on request (v run build.vsh --print-ignored), which is a bigger change than this PR should carry. Worth a follow-up.It cross-compiles; it does not run. There is no Vinix runner, so nothing in CI executes the resulting binaries, and a tool that compiles but misbehaves on Vinix will still pass. That is a meaningful gap, and the job says so in a comment rather than implying coverage it does not have.