You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/moon_wgsl-issue-tracker.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ Last updated: 2026-05-08
13
13
14
14
| ID | Source | Problem | Status | Notes |
15
15
| --- | --- | --- | --- | --- |
16
+
|`WGSL-261`| Strict statement terminators | The statement collector treated a closing `}` as a valid terminator for simple statements, so invalid WGSL like `z = 1.0 }` could be accepted by moon_wgsl even though Naga rejects it with `expected ;`. |`DONE`| Statement collection now records whether a statement ended with a top-level semicolon, and strict AST validation marks semicolon-required statements invalid when the semicolon is missing. Template interpolation braces from naga_oil-style `#{...}` are tracked separately from WGSL block braces, so recursive block validation does not descend into source templates. Added parser regressions for assignment, return, and function-call statements without semicolons, and verified the real wgpu `issue_4485.wgsl` invalid source is now rejected before IR lowering. |
16
17
|`WGSL-260`| Composer semantic phase architecture | Even after composer rewrites became symbol-binding-first, several phase boundaries still compressed semantic objects into strings: semantic reference facts were `HashSet[String]`, compose bindings carried `from_name/to_name/identity?`, live binding resolution stored `resolved_to_name`, and transform rewrite bindings accepted string reference names. |`DONE`| Added structured semantic reference path sets, changed compose bindings to carry `WgslSemanticReferencePath` plus a non-optional `WgslComposeSymbolTarget`, changed live binding resolution to pass target symbol objects instead of resolved-name strings, and changed transform rewrite plans to accept `WgslReferencePath` rather than string bindings. Added architecture guardrails banning `add_symbol_binding`, optional identity compose bindings, string-only semantic reference sets, and resolved-name phase state. Verification is tracked with this audit pass on 2026-05-08. |
17
18
|`WGSL-259`| Composer symbol-binding architecture |`WgslReferenceRewritePlan` carried stable symbol identities but still exposed binding rewrites by downgrading them into `WgslRenamePlan`; the final AST rewrite therefore remained name-first at the execution boundary, and unqualified duplicate import bindings could remain ambiguous until transform declined a rewrite. |`DONE`| Removed the binding-plan-to-rename-plan adapters, removed optional identity from plain rename rules, and made reference/declaration binding rewrites consume `WgslReferenceRewriteBinding` directly when collecting AST identifier nodes. Composer binding sets now reject same-scope/same-reference bindings that point at different identities, including unqualified imports. Added guardrails preventing `reference_rename_plan` / `global_declaration_rename_plan` from returning and documenting that composer rewrites must remain symbol-binding-first. Verification is tracked with this audit pass on 2026-05-08. |
18
19
| `WGSL-258` | 100% WGSL/naga-oil quality gate | External real-project WGSL scanning still allowed skipped files to remain implicit, so coverage regressions could hide behind a stable aggregate skipped count. | `IN_PROGRESS` | Replaced the skipped-file path with `testdata/external_wgsl_corpus_expected_failures.tsv`; the external corpus gate now reports `skipped=0` and every non-materialized file is an expected-failure contract keyed by `(repo, rel_path, reason)`. Added real Bevy sprite/UI render source roots plus concrete Bevy tonemapping, deferred, environment-map, SSR, UI, and meshlet profiles; added texture-atomic/cooperative-matrix/64-bit-image-atomic/f64/mesh-shader/ray-hit-vertex-position/per-vertex/binding-array IR/oracle validation plus duplicate import-path candidate selection for Bevy dummy/real modules. Added manifest-owned source materialization for real projects that concatenate, generate, or specialize WGSL before shader module creation, covering wgpu timestamp normalization, wgpu mesh shaders, wgpu ray-query vertex-return shaders, wgpu binding-array and per-vertex shaders, webgpu-samples Cornell shader suffixes/template replacement, webgpu-samples skinned-mesh generated vertex input, and primitive-index/barycentric/multiview validation capabilities. This raises Bevy to 158 source-valid / 149 composed-valid, wgpu to 77 source-valid, Naga to 122 source-valid, webgpu-samples to 68 source-valid, and total external corpus coverage to 475 source-valid files. Remaining work is to burn down the 25 expected failures by fixing the listed compose/IR/profile gaps or proving the external source is intentionally invalid under standalone validation. |
0 commit comments