Details
Extension package: 0.2.4. Upstream program: 0.24.0. Requires Loog 0.1.10 or newer.
The private Rust WebAssembly component owns the Go language client, protocol, document synchronization and server lifecycle. It uses Loog's general process/provider/UI interfaces; server execution follows project trust. Its passive status block appears before the cursor-position component.
The manifest's 21 provider declarations are retained, including completion and resolve, diagnostics, navigation, symbols, formatting, rename, hierarchies, semantic tokens, actions and lenses. The server's negotiated capabilities determine which are available. Configuration and initialization settings accept JSON text. Initialization changes restart sessions; configuration changes notify running servers. The performance setting records bounded timing summaries.
Build requirements: Rust 1.98.0 with the wasm32-unknown-unknown target, Go and Node. Set LOOG_SOURCE to a matching Loog checkout, run npm ci, then:
node build.mjs [platform…]
LOOG_SOURCE=/path/to/loog cargo test --manifest-path rust/Cargo.toml --locked --lib
The Rust manifest and locked dependencies are under rust/. The private shared source and builder are under ../../language-clients/rust/. The Rust component encoder produces extension.wasm independently for each plugin. No JavaScript engine is included in the component. Unsigned development builds still use Wasmtime's local compilation/cache path.
PROVENANCE.md records server sources; licenses/ includes the Rust dependency licenses. See rust/BENCHMARKS.md for the TS/Rust comparison and reproduction.
Official publication adds authenticated, platform-specific AOT compiled with Wasmtime 50.0.1. An AOT-capable Loog host loads matching signed code without local compilation. Older hosts and incompatible/missing AOT use the retained WASM. The regular build archive is unsigned input to the trusted publication stage.
Contributions
| Server | Languages |
|---|---|
| gopls | go |
Changelog
0.1.2
- Tell Loog what the server found in files that are not open, so those findings show in the problems panel and status bar.
0.1.1
- Report how the service is doing to Loog (
loog:service/status) instead of drawing a status item; Loog shows it and lists the service in its language services panel. - Name the service in
contributes.language_service.name.
0.2.4
- Add release-side authenticated AOT for supported platforms, eliminating local compilation on matching AOT-capable Loog hosts.
- Retain portable WASM for older hosts and incompatible runtime profiles.
0.2.3
- Replace the TypeScript/JavaScript-engine client with a Rust WebAssembly component.
- Preserve typed language providers, document synchronization, settings, file watches, server recovery and status UI.
- Reduce component size and runtime memory; keep the pinned gopls server unchanged.
0.2.2
- Show a passive, content-sized status block using the plugin name and ready, busy, stopped or error states.
- Place the server status before the cursor-position component using the general UI tree API.
- Upgrade: Use Loog 0.1.10 or newer for relative UI placement.
0.2.1
- Fix workspace loading, diagnostics, completion and hover for Windows extended-length and UNC paths.
- Keep server-reported workspace errors visible in the status bar after initialization and progress updates.
0.2.0
- Bundle an extension-owned language client with typed providers and status bar UI.
- Use general Loog process, document and workspace APIs instead of a host server declaration.
0.1.3
- Changed the extension category from Languages to Language Services.
0.1.2
- The manifest names what the extension is for:
contributes.language_service.serversreplacescontributes.language_servers. The server is unchanged; this needs a Loog that reads the new name.
0.1.1
- The extension builds itself; nothing in what it contains changed.
0.1.0
- Repackaged from the pinned upstream release listed in PROVENANCE.md.