Tya v0.52 Release Notes
Status: shipped.
tya versionreports0.52.0andROADMAP.mdcarries the matchingReleasedentry.
TL;DR
v0.52 adds the fifth toolchain subcommand: tya lsp, an LSP
(Language Server Protocol) server. The same tya binary now
implements the language server, so the compiler and the editor
never drift out of sync.
A VS Code extension scaffold ships in editors/vscode/ for the
manual install path; Marketplace publication is queued for v0.53+.
The language surface is unchanged from v0.49 / v0.50 / v0.51.
What’s new
tya lsp
$ tya lsp [--log /tmp/tya-lsp.log]
LSP JSON-RPC 2.0 over stdio. v0.52 advertises:
textDocumentSync= FullhoverProviderdefinitionProvidercompletionProviderdocumentFormattingProvider
Diagnostics fire on didOpen / didChange / didSave and cover
the same surface as the tya check and tya lint CLIs.
VS Code extension (editors/vscode/)
Minimal TypeScript wrapper around vscode-languageclient. Ships
with:
- Static TextMate grammar for syntax highlighting
- Settings
tya.executable+tya.trace.server package.jsonmanifest atversion: 0.52.0
Install manually:
cd editors/vscode
npm install
npm run compile
npx vsce package
code --install-extension tya-0.52.0.vsix
Compatibility
- Language: unchanged from v0.49 / v0.50 / v0.51.
tya.tomlschema: unchanged.- CLI: every existing subcommand keeps its v0.51 behaviour. The
tya lspsubcommand is purely additive.
Migration
Nothing required. To opt in:
brew install komagata/tap/tya(or upgrade) to a v0.52 binary.- Build the VS Code extension once:
cd editors/vscode && npm install && npm run compile && npx vsce package && code --install-extension tya-0.52.0.vsix. - Open any
.tyafile. Diagnostics, hover, goto-definition, and format-on-save should work out of the box.
Implementation notes
- New package
internal/lsp/with 14 source files plus a unit-test file. - JSON-RPC framing (
rpc.go) is hand-rolled on top ofencoding/json. No new external dependencies.go.modis unchanged. - LSP protocol types (
protocol.go) are hand-written, minimal, and live in one file so future fields are one-line additions. - Diagnostics pipeline reuses
checker.CheckAll,parser.OrphanComments,checker.CollectUnused, andchecker.CollectLintFindingsso the LSP server stays semantically identical totya check+tya lint. - Formatting routes directly through
formatter.Unparse. - Hover/definition/completion build a fresh
SymbolIndexper request — programs are small enough that the rebuild cost beats incremental bookkeeping. internal/checker.BuiltinNames()is now a public accessor (used by completion).internal/doc.FuncSignaturewas renamed fromfuncSignatureso hover can render canonical signatures.
Tests
tests/lsp_test.go exercises seven subprocess scenarios (build a
binary once with os.MkdirTemp, then run all cases against it).
Looking ahead (v0.53+ candidates)
From ROADMAP.md § Future Work § Toolchain:
- Cross-file definition resolution (follow
import) - Rename / references
- Range formatting (AST slice unparser)
- Code actions (TYAL quick fixes)
- Semantic tokens
- VS Code Marketplace publication (publisher ID, signed VSIX)
- Helix / Neovim / Zed setup recipes
- Incremental document sync
Self-host work (ROADMAP.md § Scheduled M8/M9/M10) remains
deferred until the v1.0.0 prep window.