Rust 製 Language Server 実装におけるライブラリ選定
(2025年10月時点の情報を記載)
ライブラリ
lsp-types
gluon-lang/lsp-types: Types for communicating with a language server
lsp-server
rust-analyzer/lib/lsp-server at master · rust-lang/rust-analyzer
rust-analyzer のコードベースの中にある
deps: lsp-types
tower-lsp
ebkalderon/tower-lsp: Language Server Protocol implementation written in Rust
tower ベースの LSP 実装
deps: lsp-types
tower-lsp-server
tower-lsp-community/tower-lsp-server: Language Server Protocol implementation for Rust based on Tower
tower-lsp の community fork
tower-lsp と tower-lsp-server の関係
async-lsp
oxalica/async-lsp: Asynchronous Language Server Protocol framework
tower ベースで tower-lsp inspired だけど設計上の違いがあるらしい
deps: lsp-types
観測範囲のツールにおける利用例
tower-lsp または tower-lsp-server の利用例が多い。それ以外では lsp-types のみ利用してサーバは自分で書く例がちらほらある
Oxc
tower-lsp-server
oxc-project/oxc
Biome
tower-lsp-server
biomejs/biome
Deno
tower-lsp の Deno によるフォーク版(deno_tower_lsp)
deno_tower_lsp - crates.io: Rust Package Registry
denoland/deno
lsp-types もある
Turborepo
tower-lsp (オリジナル版を利用)
vercel/turborepo
Veryl
tower-lsp-server
veryl-lang/veryl
Rust Analyzer
lsp-server
rust-lang/rust-analyzer
Brack
lsp-types
brack-lang/brack
Erg
lsp-types
erg-lang/erg
ここに挙げた中で唯一同期的な実装をしている
結論
以上の内容から、選定するなら以下の感じになりそう
1. tower-lsp-community/tower-lsp-server
十分な使用実績がある(Biome, Oxc)
メンテナンスの不安が(現時点では)ない
フレームワーク的に乗っかって実装したい時はこれ
参考になりそうな実装
Veryl Language Server (Veryl)
biome-lsp (Biome)
oxc-language-server(Oxc)
2. gluon-lang/lsp-types
十分な使用実績がある(さまざまなライブラリや LS 実装に使われている)
サーバ部分を自分で実装する場合でも、In/Out 部分だけはこのライブラリを使うケースが多い
参考になりそうな実装
els (Erg)
brack-language-server (Brack)
lsp-server は (rust-analyzer 以外の)有名どころではあまり使われていなさそうだったので一旦見送った
あまり調べていないというのが正直なところ
async-lsp は現時点だと利用例が少なそうということでこちらも今回は見送った
参考
RustでLSPサーバを実装するなら - yharaの頭の中 ほか