v0.0.5 LSP Support
Language Server Protocol support
- New
inference-lspserver (apps/lsp), backed by a newide/crate stack (VFS, source database, semantic database, IDE API). Diagnostics on open/change, hover, goto-definition, completions, document symbols, and inlay hints. - Ships with the managed toolchain. VS Code extension 0.0.5 brings the server up out of the box, restarts it on toolchain switch/install, probes the correct managed location on Windows (
%APPDATA%\inference), and contributes the standardinference-lsp.trace.serversetting.infs doctorverifies the server binary at thebin/symlink editors actually resolve. - Built for responsiveness: salsa-memoized incremental analysis, per-keystroke coalescing, request cancellation (
$/cancelRequest, plus adidChangesuperseding older in-flight work), a snapshot read pool so a slow analysis never blocks hover or completion, bounded caches whose eviction actually frees memory, and analysis-panic containment so a compiler bug degrades one request instead of killing the session. - Correct across the seams: file identity is normalized through the URI/VFS/loader path (UTF-8 BOM stripping, case-insensitive-filesystem handling, non-file URIs ignored), goto/hover follow the type checker's resolution rather than a name scan, completions only offer names that compile when accepted, and the initialize/shutdown lifecycle is LSP 3.17-conformant.
What's Changed
- LSP server by @0xGeorgii in #239
- lsp: contain analysis panics in the message loop by @0xGeorgii in #258
- vscode: restart running LSP server on toolchain switch/install by @0xGeorgii in #259
- infs: doctor verifies inference-lsp at the bin/ symlink the editor uses by @0xGeorgii in #260
- lsp: invalidate IDE analysis when an unreadable import becomes readable by @0xGeorgii in #261
- lsp: stop offering completions that don't resolve or shouldn't show by @0xGeorgii in #262
- analysis: restore duplicate-FnKey tripwire tolerant of parse-recovered keys by @0xGeorgii in #263
- docs: fix LSP-stack documentation inaccuracies by @0xGeorgii in #264
- lsp: resolve the analysis source root via manifest walk-up with closure fallback by @0xGeorgii in #265
- lsp: close hit-test coverage gaps (word-end caret, directives, type params, enum variants, local consts) by @0xGeorgii in #267
- lsp: fix file-identity and path edge cases across the URI/vfs/loader seam by @0xGeorgii in #266
- tests: collision-proof temp-dir suffixes in project test helper by @0xGeorgii in #274
- codegen: single shared statement-descent for the function-body discovery passes by @0xGeorgii in #278
- lsp: make goto/hover follow the checker resolution instead of name-scans by @0xGeorgii in #271
- codegen: thread the function name explicitly instead of ambient current_fn_name by @0xGeorgii in #279
- lsp panic boundary by @0xGeorgii in #282
- 250 vscode restart lsp on toolchain switch by @0xGeorgii in #283
- tests: coqc round-trip gate for proof-mode wasm-to-v output by @0xGeorgii in #276
- refactoring: extract project front end into leaf inference-project-model crate by @0xGeorgii in #285
- lsp: coalesce per-keystroke work and bound the analysis caches by @0xGeorgii in #286
- lsp: drop didChange for a document that was never opened by @0xGeorgii in #290
- compiler: bound the unreachable-file scan and fail open at the cap by @0xGeorgii in #289
- Adopt salsa in the IDE stack: index-arena scope tree, memoized analyses, shared queries, cancellation, edge-driven invalidation by @0xGeorgii in #291
- ide-db: eviction actually frees analyses — durability/LRU audit and the memory bound by @0xGeorgii in #293
- lsp: concurrent snapshot reads — a worker-forwarded read pool over cloned salsa handles by @0xGeorgii in #295
- lsp: no idle work after shutdown — abandon queued republishes instead of flushing them by @0xGeorgii in #297
- ci: quote the rocq gate's test filter so the workflow YAML parses by @0xGeorgii in #298
- Update book + small vscode ext edits by @0xGeorgii in #300
- Fix codegen else if branch lowering by @0xGeorgii in #301
- Fix loop-scoped compound literals not re-zeroing each iteration by @0xGeorgii in #302
- Fix self-referential compound-literal reassignment (struct + array) by @0xGeorgii in #303
- analysis: reject reserved wasm export names (A043) by @0xGeorgii in #304
- A042: NonDetOutsideSpec by @0xGeorgii in #305
- wasm-codegen: constrain narrow-typed uzumaki draws to the declared value domain by @0xGeorgii in #306
- Power operator rejection by @0xGeorgii in #307
- Unique is not supported yet error by @0xGeorgii in #308
- Short-circuit logical operators by @0xGeorgii in #309
- Shift Count Out of Range (errors) by @0xGeorgii in #310
- wasm-codegen: trap narrow division overflow and invalid enum tags at the export ABI by @0xGeorgii in #311
- lsp: fix test-harness wait livelock — waits drain the wire past interleaved traffic by @0xGeorgii in #312
Full Changelog: v0.0.4...v0.0.5