Versioning and releases¶
The slang-server binary and editor clients share compatible major and minor
versions. VS Code has an independent patch version; Neovim revisions are the
commits in its mirror repository.
Version sources¶
| Component | Version source | Release workflow |
|---|---|---|
| Server | VERSION |
release.yml |
| VS Code extension | clients/vscode/package.json |
vscode-publish.yml, directly or from release.yml |
| Neovim plugin | CLIENT_VERSION |
neovim-sync.yml, directly or from release.yml |
The Neovim plugin is mirrored to
slang-server.nvim rather
than published to a registry. Its rockspec is used for CI only and remains at
scm-1.
Coordinated releases¶
A major or minor release updates CLIENT_VERSION from VERSION. After
uploading the server assets, it applies the same bump to VS Code and syncs
Neovim. Server patch releases do not publish either client. Re-running an
existing tag only rebuilds and replaces its server assets.
Dry-run mode calculates the next version, builds the branch selected in the Run workflow dialog, and prepares archives without pushing or publishing anything. Select a pull request branch to exercise its release build.
Compatibility¶
Editor clients require a server with at least their major and minor version. The server also warns when a client has an older major or minor version. Patch differences do not generate compatibility warnings.
Each client advertises its name and version through the
experimental.slangClient initialization capability. The server uses this
information to detect an older client during initialization. Neovim 0.11 and
newer receive the capability through vim.lsp.config; configurations for older
Neovim versions can use make_client_capabilities() from
slang-server._lsp.capabilities.
Server release assets¶
The server release workflow publishes one archive per supported platform. The
VS Code installer uses the canonical names, such as
slang-server-linux-x64.tar.gz, slang-server-macos.tar.gz, and
slang-server-windows-x64.zip.
Releases also include slang-server-old-linux-x64-gcc.tar.gz and
slang-server-linux-arm64-clang.tar.gz compatibility aliases for clients that
predate the canonical Linux names. Keep these aliases until those client
versions no longer need to install current server releases.