WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format.
It delivers deep and smart static analysis, precise type checking, and full-featured editor integration — plus a configurable formatter — making WebAssembly development fast, safe, and joyful.
## Why WebAssembly Language Tools?
Smart, zero-config tooling for confident WebAssembly development:
- 🌐 **WebAssembly 3.0 Ready** \
Full core spec support (GC, exceptions, etc.) and ongoing Phase 4 & 3 proposals — code with tomorrow's standards today. [See supported features.](https://wasm-language-tools.netlify.app/guide/introduction.html#supported-webassembly-features)
- 🔍 **Deep Semantic Checks** \
Powered by Control Flow Analysis (CFA) for precise unreachable code detection, along with checks for uninitialized locals, written-but-never-read locals, and undefined and unused items.
- ⚖️ **Precise Type Safety** \
Comprehensive type checking with friendly error messages and subtyping relationship validation.
- 🔒 **Mutability Guard** \
Catches accidental mutations of immutables and redundant mutable declarations.
- 🎨 **Highly Configurable Formatter** \
Works out of the box while offering more than 10 formatting options for flexible and personalized code style.
- 🔧 **Smart Code Actions** \
Provides around 20 practical code actions to assist with quick fixes, refactoring, and code improvements.
- ⚡ **Near-instant Feedback** \
Deeply tuned and heavily optimized — silky smooth even on huge modules. [See benchmark.](https://github.com/g-plane/wasm-language-tools/discussions/60)
- 💡 **Full Editor Experience** \
Code completion, hover, go-to-definition, find references, rename and more work out of the box in VS Code, Zed, Neovim, Emacs, and Helix.
*New to WebAssembly tooling? Start coding with confidence — errors become guidance, not frustration.*
## Editor Features
Code CompletionGo to DefinitionFind ReferencesHoverRenameDocument SymbolsDiagnosticsInlay HintCode ActionFormattingSemantic HighlightingCall HierarchySignature HelpType Hierarchy
## Usage
### Try it Online
Please visit the [playground](https://wasm-language-tools.netlify.app/play/).
To get the full experience, open [vscode.dev](https://vscode.dev/), then search and install the `gplane.wasm-language-tools` extension.
After installed, open or create a ".wat" file to try it out.
### Editor Support
- Visual Studio Code: Install the [WebAssembly Language Tools](https://marketplace.visualstudio.com/items?itemName=gplane.wasm-language-tools) extension.
- Zed: Install the [WebAssembly Text Format](https://zed.dev/extensions?query=WebAssembly+Text+Format) extension.
- Neovim: Built-in support in [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#wasm_language_tools) with name `wasm_language_tools`.
- Emacs: [lsp-mode](https://emacs-lsp.github.io/lsp-mode/page/lsp-wasm-language-tools/), [Eglot](https://elpa.gnu.org/packages/doc/eglot.html), and [lsp-bridge](https://github.com/manateelazycat/lsp-bridge) all have built-in support.
- Helix: Built-in support.
For other editors and advanced configurations, please refer to the [editor guide](https://wasm-language-tools.netlify.app/guide/getting-started/editors.html).
### Binaries
We've provided pre-built binaries on [GitHub Releases](https://github.com/g-plane/wasm-language-tools/releases).
You can download it according to your platform, then extract it from the compressed file.
Or, read the [documentation](https://wasm-language-tools.netlify.app/guide/getting-started/executable.html) for alternative installation methods.
## Documentation
Please visit the [documentation website](https://wasm-language-tools.netlify.app/) for configuration and diagnostics explanation.
## License
MIT License
Copyright (c) 2024-present Pig Fang