Expand description
gdscript-ide — the public, engine-/protocol-neutral analysis API.
Modeled on rust-analyzer’s ide::AnalysisHost / ide::Analysis
(plans/01-ARCHITECTURE.md §2). AnalysisHost is the single mutable owner of the
input world; Analysis is a cheap, cloneable, Send snapshot whose queries take
byte offsets and return plain serde result structs from gdscript-base — never
lsp-types. Each client (LSP server, the guitkx adapter, the CLI, the WASM
playground) maps these POD results to its own protocol.
Phase 3 (M0) swaps the engine behind these types from a plain VFS map to a salsa
query graph in gdscript_db: the input world is now FileText salsa inputs, mutated
through apply_change; Analysis is a cloned database handle (salsa handles are
Clone + Send, replacing the old Arc<map> snapshot). Cancellation is now real —
a concurrent apply_change cancels in-flight reads on outstanding handles, which unwind
into Err(Cancelled) at the query boundary (see [catch]). The public API shape is
unchanged. The crate stays wasm32-safe (CI guards this).
Structs§
- Analysis
- An immutable snapshot of the world — a cloned salsa handle. Every query is
Cancellable: a concurrentapply_changecancels in-flight reads, which the client re-issues against the fresh snapshot. - Analysis
Host - The single mutable owner of analysis state — one per project/workspace.
- Change
- A batch of input changes.
Nonetext removes the file.