Repository navigation
spike(w012): harden in-process WASM analyzer M1 - #556
Open
1932819331hy-debug wants to merge 32 commits into
Open
1932819331hy-debug wants to merge 32 commits into
1932819331hy-debug wants to merge 32 commits into
Conversation
…inistic reporting
… latency experiment
…ostics semantics Use anonymous disposable module instances, preserve nonfatal managed warnings outside go vet, map Unicode positions to byte offsets, and avoid initializing WASM on Go-only packages. Add regressions for concurrency, source positions, warnings and Go-only packages.
Strict go/analysis drivers only permit declared Go/Other/Ignored files through Pass.ReadFile. Avoid calling it for .hy siblings discovered by disk scan; preserve on-disk reading with snapshot verification and add a strict-driver regression.
…idence Give maintainers a decision matrix for Rust-to-WASM parity, fail-closed semantics, realistic gopls/TypesInfo boundaries and observed public-wrapper performance, with pinned 113/113 CI links.
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.
W-012 Milestone 1 — In-process WASM checker feasibility
This PR contributes a testable, AI-assisted feasibility spike for Issue #268 / wildcard W-012, accepted into the 2026-11-01 M1 review window. It embeds the existing Rust checker as
wasm32-unknown-unknownin Go with Wazero, provides a realgolang.org/x/tools/go/analysis.Analyzer, and publishes correctness, failure-boundary, and performance evidence. It does not claim a production replacement forhyb, stockgoplsintegration, or M2 completion.Implemented and reviewed
.hydiagnostics to Go source positions forgo vet -vettool.Engine.Checkcall, add cancellableCheckContext, and isolate concurrent analyzer context snapshots..hyinput is unreadable; canonicalize file paths to avoid duplicated diagnostics, and report source files in deterministic order.Latest hosted verification
1e6f2e22dcae2e7c90f6f3721ed7f0b58b7c3d17(with its then-current PR merge base).go test -race -count=1 ./...andgo vet ./...succeeded.Negative results and open limitations
Engine.Checkpath was 2.143 ms p50 versus 1.204 ms p50 for native subprocess + JSON validation on the measured cloud host (one representative fixture, 100 samples). A reusable-instance experimental boundary measured 1.097 ms p50, but it is not the implemented public path. This does not validate the original 18.7× speedup or sub-millisecond IDE-latency claim. The later cancellation/path-hardening changes have not been rebenchmarked.goplscannot dynamically load arbitrary external analyzers or treat unsaved.hybuffers as first-class Go documents. The demonstratedgo/analysisdriver works with on-disk.hyfiles; a separate LSP/editor integration remains unimplemented.analysis.Diagnostichas no warning severity level, sogo vet -vettoolmay exit nonzero for managed-warning-only files even though the native Hybrid checker accepts them.Reproduction
From the same checkout with Rust 1.99.0, Go 1.26.9, Node 24.19.0, and the
wasm32-unknown-unknowntarget:Scope and disclosure: The proposal, implementation, and tests were developed with AI assistance. Hosted CI results above reflect actual completed runs; no unperformed personal manual verification is claimed. M1/M2 acceptance and compensation remain entirely at the maintainer's discretion.