WebAssembly Language Tools

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 Completion
Go to Definition
Find References
Hover
Rename
Document Symbols
Diagnostics
Inlay Hint
Code Action
Formatting
Semantic Highlighting
Call Hierarchy
Signature Help
Type 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