Repository navigation
spike(w012): harden in-process WASM analyzer M1 - #556
Open
1932819331hy-debug wants to merge 40 commits into
Open
1932819331hy-debug wants to merge 40 commits into
1932819331hy-debug wants to merge 40 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.
Represent EOF after trailing newlines in the Go token table without changing checker input or accepting positions beyond the real source. Add regression coverage for LF, CRLF, empty files and Unicode controls. Preserve the original pre-fix 25-file benchmark and cross-process cache samples with verified provenance, extend future timing retention to 30 days, and align the M1 review notes with the measured results. Validation: targeted regressions reproduce four baseline failures; the fixed same-checkout build passes go test -race, go vet, and 60/60 full native/WASM diagnostic-envelope parity.
Merge upstream f6e4d92 while preserving the analyzer fix and original measurement evidence. Resolve only PLAN.md and STATUS.md by retaining upstream progress plus scoped W-012 validation notes. All other path, mode and blob identities match a parent. Fresh native and WASM builds and hosted integration checks remain to be run for this merged source tree; historical 60/60 and timing labels are unchanged.
Record the rebuilt 61/61 native/WASM corpus and complete-envelope results, race/vet, compiler and Go-only consumer checks for integration commit 61d5bd9. Preserve the separate 60/113-fixture historical labels. Document the still-unconfirmed upstream mergeability and PR-description permission limit. Only PLAN.md, STATUS.md and W012_M1_REVIEW.md change; all tested code, regression tests and workflows remain byte-identical.
Integrate aa4a9d9, the live upstream main ref, with 0d1dbf7. Preserve every upstream file and the existing WASM registration, analyzer EOF fix, regression tests, validation workflow, and raw measurement archive. Resolve STATUS.md by retaining upstream status and appending scoped W012 progress. Correct the report's previous assumption that PR base metadata identified live main. The new 113-fixture checkout requires fresh same-checkout native/WASM and hosted CI validation.
Record fresh upstream and fork native/WASM 113/113 verdict and full-envelope parity, Go race/vet, Go-only consumer, and compiler CI for 4149882. Both executed merge trees match 9a27169 exactly. Record the restored clean/mergeable upstream PR status, correct the earlier PR-base assumption, and preserve historical count and benchmark provenance. Only PLAN.md, STATUS.md, and W012_M1_REVIEW.md change.
Open
1 task done
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.