Releases: microsoft/multilspy
Release list
v0.1.0-auto: Merge pull request #142 from LakshyAAAgrawal/feat/elixir-support
Add Elixir support via ElixirLS
v0.1.0
This is a major release with new language support, improved configurability, and significant reliability fixes across the board.
✏ New Languages
⦁ PHP via Intelephense (#140) — go-to-definition, document symbols, completions, hover. Requires Node.js. Based on work by Juan Vargas (@v4rgas) (#107).
⦁ Elixir via ElixirLS (#142) — full LSP support including definitions, references, hover, workspace symbols. Requires Elixir + Erlang/OTP. Based on work by Serg Chernata (@sergchernata) (#118). Note: ElixirLS builds from source on first launch, which takes several minutes. Tests are skipped in CI pending resolution of #145.
⦁ C/C++ via clangd (#84, #102, #123) — contributed by Kaushik (@tomorrowCoder), with Windows/macOS support by SunBK201 (@SunBK201) and a Windows fix by Duncan Ogilvie (@mrexodia).
✏ Configurability
⦁ config.server_binary: Point multilspy at a pre-installed language server binary, skipping the automatic download entirely. Useful when you already have the server installed or need a specific version. (#137, based on the idea from J. Simon Richard (@jsimonrichard) in #125)
⦁ config.server_install_dir: Override where multilspy downloads and installs language server artifacts. Defaults to ~/.multilspy/lsp/<server_name>/ instead of writing into the Python package's site-packages directory. (#137, fixes #136, #109)
config = MultilspyConfig.from_dict({
"code_language": "rust",
"server_binary": "/usr/local/bin/rust-analyzer", # skip download
})
✏ Reliability & Infrastructure
⦁ Fixed language server hangs: Switched from create_subprocess_shell to create_subprocess_exec — the language server is now the direct child process, eliminating orphaned processes when the shell wrapper exits. Added 30s timeout to LSP shutdown() request. (#143)
⦁ Fixed JDTLS initialization failures: Removed fragile assertions in request handlers that caused silent errors and aborted initialization on newer JDTLS versions. IntelliCode enabling and ServiceReady wait are now best-effort with timeouts. (#143)
⦁ Fixed resource leaks on exceptions: All language server start_server() context managers now use try/finally to ensure proper shutdown even when user code raises. (#116, by irreg)
⦁ Fixed interrupted download recovery: Language servers now check for the executable instead of the directory, so a crashed download doesn't leave a broken state. (#135)
⦁ Fixed OmniSharp path escaping: Dynamic paths are now properly escaped with shlex.quote(). (#111, by Martin Mirchev (@Marti2203))
⦁ CI/CD overhaul: Python version matrix (3.10, 3.12, 3.14), per-language runtime setup, concurrency groups, 45-minute timeout. (#133, #143)
✏ Upgrades
⦁ Eclipse JDTLS: vscode-java v1.23.0 -> v1.46.0, bundled JRE 17 -> 21, Gradle 7.3.3 -> 7.6.6, Lombok 1.18.30 -> 1.18.39. Fixes macOS ARM64 completions. (#139, based on work by Tim Vergenz (@vergenzt) #126 and Stephen Rayner (@gruckion) #128)
⦁ OmniSharp: Updated to v1.39.13. (#117, by Tom Longhurst (@thomhurst))
⦁ Dart: Added Windows and macOS platform support. (#105, by Marcelo Mendonça Soares (@marcelomendoncasoares))
⦁ TypeScript/JavaScript: Enabled cross-file go-to-definition and references via useSyntaxServer: "never". (#81, by agoel111)
⦁ Ruby: Fixed Solargraph installation bug. (#83, by Michael Usachenko (@themichaelusa))
✏ Breaking Changes
⦁ Install directory moved: Language server artifacts are now downloaded to ~/.multilspy/lsp/<server_name>/ instead of /static/. Existing downloads in the old location will be re-downloaded on first use.
⦁ ProcessLaunchInfo.cmd is now List[str] instead of str. This only affects users who directly instantiate ProcessLaunchInfo (not the public API).
What's Changed
- CPP Languager Server support (clang) by Kaushik (@tomorrowCoder) in #84
- feat: Add support for additional platforms (Windows&macOS) for CPP LSP by SunBK201 (@SunBK201) in #102
- [Ruby] Fixed Solargraph install bug by Michael Usachenko (@themichaelusa) in #83
- Update Omnisharp to 1.39.13 by Tom Longhurst (@thomhurst) in #117
- Support for clojure via clojure-lsp by Miguel de Benito Delgado (@mdbenito) in #113
- Revert "Support for clojure via clojure-lsp" by Lakshya A Agrawal (@LakshyAAAgrawal) in #122
- Fix platformId for clangd on Windows by Duncan Ogilvie (@mrexodia) in #123
- Fix CI/CD pipeline: Enable comprehensive test execution for all language servers by sushmanth reddy (@sushmanthreddy) in #130
- Revert #130 and fix CI/CD pipeline by Lakshya A Agrawal (@LakshyAAAgrawal) in #133
- fix: finalize even when exiting contextmanager by exception by irreg in #116
- fix: Omnisharp dynamic arguments are not escaped by Martin Mirchev (@Marti2203) in #111
- feat: Add missing dependencies to run Dart LSP in Windows and MacOS by Marcelo Mendonça Soares (@marcelomendoncasoares) in #105
- Fix interrupted download recovery: check executable, not directory by Lakshya A Agrawal (@LakshyAAAgrawal) in #135
- Move LSP installs to ~/.multilspy/lsp/, add server_binary and server_install_dir config by Lakshya A Agrawal (@LakshyAAAgrawal) in #137
- Upgrade JDTLS to vscode-java v1.46.0 with Java 21, Gradle 7.6.6 by Lakshya A Agrawal (@LakshyAAAgrawal) in #139
- Add PHP support via Intelephense by Lakshya A Agrawal (@LakshyAAAgrawal) in #140
- Add 20-minute timeout to CI test jobs by Lakshya A Agrawal (@LakshyAAAgrawal) in #143
- Added Failing Test For TS Language Server with Cross File Definitions… by agoel111 in #81
- Add Elixir support via ElixirLS by Lakshya A Agrawal (@LakshyAAAgrawal) in #142
New Contributors
- Kaushik (@tomorrowCoder) made their first contribution in #84
- SunBK201 (@SunBK201) made their first contribution in #102
- Tom Longhurst (@thomhurst) made their first contribution in #117
- Miguel de Benito Delgado (@mdbenito) made their first contribution in #113
- Duncan Ogilvie (@mrexodia) made their first contribution in #123
- sushmanth reddy (@sushmanthreddy) made their first contribution in #130
- irreg made their first contribution in #116
- Martin Mirchev (@Marti2203) made their first contribution in #111
- Marcelo Mendonça Soares (@marcelomendoncasoares) made their first contribution in #105
- agoel111 made their first contribution in #81
Full Changelog: v0.0.15...v0.1.0
v0.0.15-auto: Merge pull request #99 from microsoft/LakshyAAAgrawal-patch-18
Update pyproject.toml
v0.0.15
What's Changed
- Update pyproject.toml by Lakshya A Agrawal (@LakshyAAAgrawal) in #74
- fix: resolve 'No module named pwd' error on Windows by NamJun Jo (@IDontHaveBrain) in #70
- Add messages to assertion failures in
request_referencesandrequest_document_symbolsby Jet Zhou (@jetzhou) in #75 - Let language server subprocess be its own process group by Jet Zhou (@jetzhou) in #77
- Update test_multilspy_csharp.py by Lakshya A Agrawal (@LakshyAAAgrawal) in #90
- SyncLanguageServer.create - small documentation note by Andrej730 (@Andrej730) in #87
- Bump jedi-language-server to 0.41.3 to support textDocument/declaration by Andrej730 (@Andrej730) in #88
- Fix configuration issue for mac x64 by Huang YunKun (@htynkn) in #93
- Location.relativePath to use
Nonevalue if rel path is not available #85 by Andrej730 (@Andrej730) in #86 - feat: add support for workspace/symbol request by Maurice Dauer (@moz-mdauer) in #98
- feat: add kotlin language support by NamJun Jo (@IDontHaveBrain) in #80
- Update pyproject.toml by Lakshya A Agrawal (@LakshyAAAgrawal) in #99
New Contributors
- NamJun Jo (@IDontHaveBrain) made their first contribution in #70
- Andrej730 (@Andrej730) made their first contribution in #87
- Huang YunKun (@htynkn) made their first contribution in #93
- Maurice Dauer (@moz-mdauer) made their first contribution in #98
Full Changelog: v0.0.14...v0.0.15
v0.0.14-corrected-auto: Merge pull request #74 from microsoft/LakshyAAAgrawal-patch-16
Update pyproject.toml
v0.0.14-corrected
What's Changed
- Update pyproject.toml by Lakshya A Agrawal (@LakshyAAAgrawal) in #74
Full Changelog: v0.0.14...v0.0.14-corrected
v0.0.14
What's Changed
- Add psutil dependency and enhance process termination handling by Juan Vargas (@v4rgas) in #67
- feat: Add optional timeout parameter to SyncLanguageServer by Juan Vargas (@v4rgas) in #66
- fix race condition in process termination by Juan Vargas (@v4rgas) in #69
- Feat/dart by Juan Vargas (@v4rgas) in #68
- Update pyproject.toml by Lakshya A Agrawal (@LakshyAAAgrawal) in #73
New Contributors
- Juan Vargas (@v4rgas) made their first contribution in #67
Full Changelog: v0.0.13...v0.0.14
v0.0.13-auto: Merge pull request #65 from microsoft/LakshyAAAgrawal-patch-14
Update pyproject.toml to v0.0.13
v0.0.13
What's Changed
- Specify
--prefixfornpm installcommand fortypescriptandtypescript-language-serverby Jet Zhou (@jetzhou) in #62 - remove pydantic by Avi Avni (@AviAvni) in #58
- Update pyproject.toml to v0.0.13 by Lakshya A Agrawal (@LakshyAAAgrawal) in #65
New Contributors
- Jet Zhou (@jetzhou) made their first contribution in #62
- Avi Avni (@AviAvni) made their first contribution in #58
Full Changelog: v0.0.12...v0.0.13
v0.0.12-auto: Merge pull request #57 from microsoft/LakshyAAAgrawal-patch-13
Update pyproject.toml to add ruby and set v to 0.0.12