v0.8.0 — LSP Server and FFI System
Language Server
LOGOS ships an LSP server with 14 features across four categories. The server runs as largo lsp over stdio, maintaining per-document state with full re-analysis on every keystroke.
Code intelligence: diagnostics (real-time parse and analysis errors), hover (type info, verb class, tense, aspect), and semantic tokens (keyword, variable, function, struct, string, number classifications with delta encoding).
Navigation: go to definition, find references, document symbols (outline view), and code lens (inline reference counts above definitions).
Refactoring: rename (with prepare-rename validation) and code actions (extract to function, dead code elimination).
Editing: completions (triggered on ., :, '), signature help (triggered on with, ,), inlay hints (inferred types, parameter names), folding ranges, and formatting.
Token resolution handles the full range of name-bearing token types: Identifier, ProperName, Noun, Adjective, and Verb. A variable named x might be lexed as Adjective(Symbol) rather than Identifier — the server resolves this uniformly through a centralized resolve_token_name() function.
VSCode Extension
The extension bundles pre-compiled LSP binaries for 5 platform targets: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-apple-darwin, aarch64-apple-darwin, and x86_64-pc-windows-msvc. Installation is zero-configuration. TextMate grammars handle syntax highlighting; semantic token overrides from the LSP provide meaning-aware coloring.
FFI / C Export System
Functions marked is exported get C-linkage wrappers for consumption by C, C++, Python (via ctypes/cffi), and any language with a C FFI:
## To add (a: Int) and (b: Int) -> Int is exported:
Return a + b.
The codegen emits #[export_name = "logos_add"] pub extern "C" fn with std::panic::catch_unwind boundaries. Integer and float parameters pass directly; text parameters marshal through *const c_char input / *mut *mut c_char output with null-pointer validation. A LogosStatus enum (Ok, NullPointer, ThreadPanic, etc.) communicates errors. Collections and structs cross the boundary as opaque LogosHandle pointers with typed accessor functions (logos_seq_i64_push, logos_person_age, etc.).
CI/CD
Three GitHub Actions workflows ship with v0.8.0:
- Release: builds platform binaries and the VSCode extension
.vsixon tag push - Publish: publishes all workspace crates to crates.io in dependency order
- Deploy: builds the WASM frontend and deploys to production
The publish workflow handles the lockstep versioning scheme — all 11 crates share a single version number and publish atomically.