No description
  • Rust 94.8%
  • TypeScript 5.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-14 10:49:37 +02:00
.cargo Sync main thread code from upstream (#1556) 2026-09-29 21:55:45 +00:00
.github use bump range versioning strategy (#1557) 2026-09-29 22:01:01 +00:00
.vscode Web worker support for the WGSL language server (#1499) 2026-09-23 18:05:00 +00:00
crates fix: formatting ... nix doesnt use TOML 2.0 which allows newlines in { ... } 2026-10-14 10:42:24 +02:00
docs/book Add lazynvim instructions (#1532) 2026-09-27 15:31:29 +00:00
editors/code Don't fail extension activation when the server fails to start (#1555) 2026-09-29 18:47:41 +00:00
js Update not-breaking (#1530) 2026-09-27 17:20:09 +00:00
xtask fix: formatting ... nix doesnt use TOML 2.0 which allows newlines in { ... } 2026-10-14 10:42:24 +02:00
.editorconfig Switch to renovate (#1436) 2026-08-20 17:26:03 +00:00
.gitattributes Update workflows and xtask (#360) 2025-07-06 06:07:56 +00:00
.gitignore Web worker support for the WGSL language server (#1499) 2026-09-23 18:05:00 +00:00
.markdownlint-cli2.jsonc fix: Add support for client config (settings.json) and config documentation generation (#549) 2025-11-04 08:23:46 +00:00
.markdownlint.jsonc Port test fixture and simplify file handling (#890) 2026-03-08 00:38:26 +00:00
biome.jsonc Web worker support for the WGSL language server (#1499) 2026-09-23 18:05:00 +00:00
Cargo.lock Sync main thread code from upstream (#1556) 2026-09-29 21:55:45 +00:00
Cargo.toml Sync main thread code from upstream (#1556) 2026-09-29 21:55:45 +00:00
clippy.toml Salsa upgrade (#1377) 2026-08-10 11:39:30 +00:00
CODE_OF_CONDUCT.md Add Code of conduct (#392) 2025-07-09 16:21:19 +00:00
CONTRIBUTING.md Add Contributing.md (#391) 2025-07-08 20:50:29 +00:00
deny.toml Wgsl std (#1496) 2026-09-26 17:27:39 +00:00
flake.lock chore: update flake lock ... old rust 2026-10-14 10:49:37 +02:00
flake.nix Fix Nix Build (#939) 2026-03-21 19:33:58 +00:00
LICENSE-APACHE Code dump 2021-11-20 17:45:26 +01:00
LICENSE-MIT Switch to DavidAnson/markdownlint-cli2-action (#327) 2025-06-25 21:42:11 +00:00
LICENSE.md Switch to DavidAnson/markdownlint-cli2-action (#327) 2025-06-25 21:42:11 +00:00
logo.svg New logo (#393) 2025-07-09 00:47:07 +02:00
README.md Update README.md (#962) 2026-04-16 20:50:38 +00:00
RELEASES.md Fix CI (#158) 2025-02-07 02:31:27 +01:00
rustfmt.toml typos and formatting fixups (#1506) 2026-09-09 19:34:28 +00:00
SECURITY.md Create SECURITY.md 2025-03-29 18:15:14 +01:00
tombi.toml Support cargo metadata as project manifest (#1476) 2026-08-29 09:56:14 +00:00
typos.toml Web worker support for the WGSL language server (#1499) 2026-09-23 18:05:00 +00:00
zizmor.yaml Changelog xtask command (#1036) 2026-04-18 22:43:51 +00:00

wgsl-analyzer

wgsl-analyzer logo

Discord

codecov

wgsl-analyzer is a language server plugin for the WebGPU Shading language (WGSL). It also supports WGSL Extended Shader Language (WESL). Note: (support for WESL is experimental and in-progress)

You can use it with any editor that supports the Language Server Protocol (for example, VS Code, Vim, Emacs, Zed).

wgsl-analyzer's features include go-to-definition, type checking, code completion, and much more is planned. wgsl-analyzer also supports integrated diagnostics (with naga).

Internally, wgsl-analyzer is structured as a set of libraries for analyzing Rust code. See Architecture in the manual.

It comes with a VS Code extension located in ./editors/code. Due to the nature of the language server protocol, it should be possible to create plugins for other editors as well.

Quick Start

See the installation guide in the manual.

Building from source

The easiest way to build the language server and extension and install it all in one command:

cargo xtask install

The following instructions describe the manual steps:

The LSP server can be built using cargo build --release -p wgsl-analyzer.

The VS Code extension can either be built as a platform-specific extension which bundles the language server binary, or as a platform-independent one.

1. Install node modules:

pnpm --dir editors/code install

2. Package extension: (choose one)

Platform independent extension:

pnpm --dir editors/code run package

Platform-specific extension:

Copy the server binary (either wgsl-analyzer or wgsl-analyzer.exe) into ./editors/code/server/:

mkdir editors/code/server
cp target/release/wgsl-analyzer editors/code/server/wgsl-analyzer

Next, run:

pnpm --dir editors/code run package --target <target> -o wgsl-analyzer-<target>.vsix

Example: pnpm --dir editors/code run package --target linux-x64 -o wgsl-analyzer-linux-x64.vsix

where the target is one of the targets listed as platform-specific extension targets.

The output is a file such as editors/code/wgsl-analyzer-linux-x64.vsix

3. Install the extension:

Open the VSIX with VS Code, for example, by running the VS Code command (F1):

> Extensions: Install from VSIX...