feat(runtimeprovider): dispatch class projects through verified providers - #2847
Closed
joeykchen wants to merge 7 commits into
Closed
feat(runtimeprovider): dispatch class projects through verified providers#2847joeykchen wants to merge 7 commits into
joeykchen wants to merge 7 commits into
Conversation
This was referenced Aug 18, 2026
…ders Resolve runtime metadata from the effective module graph, build host providers with explicit environment and flag policies, and preserve process status across run, build, and install. Keep class modules ordered as resolved records and cover the CLI boundary end to end.
Group build-policy rendering and tests, place resolver entry points before internal provider helpers, and consolidate dispatch and captured Go command handling without changing behavior.
joeykchen
force-pushed
the
feat/xgo-runtime-provider-spx
branch
from
August 18, 2026 09:57
e09c190 to
112c6b0
Compare
Preserve authoritative module graph policy across discovery and provider execution. Harden versioned target resolution, cancellation handling, and transactional output publication.
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
This PR implements the generic XGo runtime-provider v1 dispatch described in goplus/spx#1741.
xgo run,xgo build, andxgo installcan discover a framework-declared provider from the application's effective Go graph and delegate through a provider-neutral protocol.XGo owns discovery, identity validation, process supervision, and output publication. It contains no SPX, Godot, Engine, PCK, or resource-format special cases.
What changed
GOWORK,-mod,-modfile, and-overlay.GOOS/GOARCH.ErrNotHandledas the only result that permits legacy fallback; every error after a runtime match is terminal.GOBIN, falling back tobinunder the firstGOPATHentry.Compatibility and boundaries
Ordinary projects continue through the existing GenGo implementation, and unsupported runtime flags are reported only after a runtime target is confirmed. The existing public
tool.RunDir,tool.BuildDir, andtool.InstallDirbehavior is unchanged; runtime dispatch is currently a CLI capability.Runtime v1 is host-desktop only. Multi-file targets,
...,pkg@version, vendor-backed runtime provenance, cross-compilation, and arbitrary Go build flags fail explicitly after a runtime match.Verification
Added unit and CLI end-to-end coverage for effective graphs, workspaces and replacements, target forms, protocol/flag validation, fail-closed dispatch, process and signal behavior, output transactions, and ordinary-project fallback.
The runtime-provider, run, build, and install suites pass in a temporary workspace containing this checkout and the companion
goplus/modcheckout.go vetalso passes for the changed packages.Dependency and release order
This PR consumes the new
goplus/mod/runtimeprotocoland resolved-provenance APIs. The companion goplus/mod#164 must merge and release first, then this branch must update itsgithub.com/goplus/modrequirement before XGo is released. The currentv0.21.2requirement does not contain these APIs, so a standaloneGOWORK=offbuild is not expected to pass yet.Part of goplus/spx#1741.
Companion SPX provider: goplus/spx#1742.