NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3764 most downloaded on crates.io
Language Server Protocol implementation based on Tower
Last release 3 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 9 months
Nearly every release is documented
notes for 29 of 29 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
30 releases · first in 2019
Add support for pull-based diagnostics from LSP 3.17.0 (PR #396 ).
textDocument/diagnostic server request.workspace/diagnostic server request.workspace/diagnostic/refresh client request.std::str::FromStr for jsonrpc::{Request,Response} (PR #379).From<jsonrpc::ErrorCode> for i64 (PR #379).1.52.0 to 1.64.0 (PR #377, PR #395).lsp-types from 0.94 to 0.94.1 (PR #396).syn from 1 to 2 (PR #390).async-tungstenite from 0.18 to 0.22 (PR #395).ws_stream_tungstenite from 0.9 to 0.10 (PR #395).LanguageServer::completion() (PR #396).One column per quarter.
Add LspService::inner() method (PR #344 ).
LspService::inner() method (PR #344).window/showDocument client request from LSP 3.16.0 (PR #375).textDocument/prepareTypeHierarchy server request.typeHierarchy/supertypes server request.typeHierarchy/subtypes server request.textDocument/inlineValue server request.textDocument/inlayHint server request.inlayHint/resolve server request.workspaceSymbol/resolve server request.workspace/inlineValue/refresh client request.workspace/inlayHint/refresh client request.edition from 2018 to 2021 (PR #370).lsp-types from 0.93 to 0.94 (PR #367).LanguageServer trait methods to match the LSP 3.17.0 spec document (PR #375).Client inherent methods to better match the LSP 3.17.0 spec document (PR #375).Switch from log facade to tracing (PR #332 ).
log facade to tracing (PR #332).$/cancelRequest log message from warn to debug (PR #353).auto_impl from 0.5 to 1.0 (PR #343).httparse from 1.3.5 to 1.8 (PR #363)memchr from 2.4.1 to 2.5 (PR #363).tower version requirement from 0.3.11 to 0.3 (PR #363).async-tungstenite from 0.16 to 0.18 (PR #363).ws_stream_tungstenite from 0.7 to 0.9 (PR #363).Support proposed LSP features with the proposed feature flag (PR #330 ).
Support defining custom JSON-RPC requests on LspService (PR #313 ).
LspService (PR #313).tokio when enabling the runtime-agnostic feature (PR #309).Service<Request, Response = Option<Response>> for Client (PR #313).concurrency_level setting on Server, allowing adjustment from the default value of 4.Request::build() interface for creating custom requests.From implementations for jsonrpc::Id..result()/.error() and .is_ok()/.is_error() methods to jsonrpc::Response.LspService now implements Service<Request, Response = Option<Response>> .LspService::new() now returns a ClientSocket instead of a MessageStream.Server::new() now requires a third ClientSocket argument instead of using .interleave().Client::send_custom_{request,notification} to Client::send_{request,notification}.jsonrpc::Response::{ok, error} to jsonrpc::Response::{from_ok, from_error}.Client channel properly on exit notification (PR #309).Server occasionally stalling by processing client responses separately from client-to-server requests (PR #313).-32600 (invalid request) if incoming data is valid JSON, but isn't a JSON-RPC request or response (PR #313).Fix semver incompatibility in release of tower-lsp-macros (PR #306 ).
tower-lsp-macros (PR #306).
tower-lsp-macros 0.4.2 -> 0.5.0.tower-lsp 0.15.0 -> 0.15.1.tokio-util from 0.6.5 to 0.7.0 (PR #303).Bump minimum supported Rust version from 1.45.0 to 1.52.0 (PR #300 ).
1.45.0 to 1.52.0 (PR #300).lsp-types from 0.89 to 0.92 (PR #300).auto_impl from 0.4 to 0.5 (PR #298).dashmap from 4.0.2 to 5.0.0 (PR #298).nom from 6.1.2 to 7.1.0 (PR #298).null and negative integer values as request IDs (PR #285).Fix regression in server-side $/cancelRequest support since 0.12.0 (PR #280 ).
$/cancelRequest support since 0.12.0 (PR #280).$/cancelRequest support (PR #280).Add support for Language Server Protocol 3.16.0 (PR #270 ):
workspace/willCreateFiles server request.workspace/willRenameFiles server request.workspace/willDeleteFiles server request.workspace/didCreateFiles server notification.workspace/didRenameFiles server notification.workspace/didDeleteFiles server notification.workspace/codeLens/refresh client request.workspace/semanticTokens/refresh client request.textDocument/linkedEditingRange server request.textDocument/moniker request.codeAction/resolve request.1.41.0 to 1.45.0 (PR #264).lsp-types from 0.82 to 0.89 (PR #264).tokio from 0.2 to 1.6 (PR #264, PR #268).tokio-util from 0.3 to 0.6.5 (PR #264).bytes from 0.5 to 1.0.1 (PR #264).dashmap from 3.5.1 to 4.0.2 (PR #264).nom from 5.1 to 6.1.2 (PR #264).take_until combinator (PR #274).window/showMessageRequest while server is uninitialized (PR #228).serde overlap (PR #269).Increase lsp-types semantic version range to >=0.79, <0.82 . This is safe because the upstream changes only concern proposed LSP features, which this
lsp-types semantic version range to >=0.79, <0.82. This is safe because the upstream changes only concern proposed LSP features, which this library does not currently support.lsp-types semantic version range to >=0.79, <0.82. This is safe
because the upstream changes only concern proposed LSP features, which this
library does not currently support.Increase lsp-types semantic version range to >=0.79, <0.81. This is safe because the upstream changes only concern proposed LSP features, which this l
lsp-types semantic version range to >=0.79, <0.81. This is safe
because the upstream changes only concern proposed LSP features, which this
library does not currently support.Improve std::Debug implementation for Client (PR #216).
std::fmt::Debug implementation for Client (PR #216).Improve log message quality and reduce noise.
Client notification methods to async fn (PR #213).Reject multiple initialize requests sent in quick succession (PR #208).
initialize requests sent in quick succession (PR #208).jsonrpc field from serde_json::Value (PR #209).Add private subcrate tower-lsp-macros for internal use only (PR #202).
tower-lsp-macros for internal use only (PR #202).$/cancelRequest (PR #202).lsp-types crate from 0.74 to 0.79.Client directly as struct field (PR #199).jsonrpc-core with minimal JSON-RPC implementation (PR #202).LspService as Service<Incoming, Response = Option<Outgoing>>.FusedStream for MessageStream.workspace/didChangeConfiguration to break (PR #195).shutdown has been called once.jsonrpc-core, as tower-lsp no longer relies on it.LspService::with_handler() constructor (PR #202).Update lsp-types crate from 0.73 to 0.74 (PR #178). This introduces breaking changes to the following LanguageServer trait method signatures:
lsp-types crate from 0.73 to 0.74 (PR #178). This introduces breaking
changes to the following LanguageServer trait method signatures:
hover()signatureHelp()goto_declaration()goto_definition()goto_type_definition()goto_implementation()document_highlight()LanguageServer::initialize() handler async fn (PR #182).stdin and stdout handles that are not Send + 'static. This
permits the use of std::io::Cursor or Vec<u8> as mock stdio sources for
tests, and passing in &mut handles is now supported as well (PR #184).Implement Clone for Client so it can be safely passed to functions expecting 'static values.
Clone for Client so it can be safely passed to functions
expecting 'static values.MessageStream as #[must_use].Implement support for the following client-to-server messages:
textDocument/willSaveWaitUntiltextDocument/selectionRangejsonrpc-core types in a new jsonrpc module (PR #169).lsp-types crate from 0.70 to 0.73 (PR #162).textDocument/foldingRange (PR #167).Implement support for the following client-to-server messages:
textDocument/documentColortextDocument/colorPresentationtextDocument/rangeFormattingtextDocument/onTypeFormattingtextDocument/foldingRangeinitialize request from the client only once and will
respond with JSON-RPC error code -32600 if sent again (PR #160).Add info!() message when server initializes to be consistent with the existing info!() message that is emitted when the server exits.
info!() message when server initializes to be consistent with the
existing info!() message that is emitted when the server exits.textDocument/referencestextDocument/documentLinkdocumentLink/resolvetextDocument/renametextDocument/prepareRenamewindow/showMessageRequestworkspace/workspaceFoldersworkspace/configurationtrace!() logs (PR #130).async fn (PR #131).Printer to Client.Client::apply_edit() to return Result<ApplyWorkspaceEditResponse>.Client::register_capability() to return Result<()>.Client::unregister_capability() to return Result<()>.Client (PR #129).Implement support for the following client-to-server messages:
textDocument/willSavecompletionItem/resolvetextDocument/documentSymboltextDocument/codeActiontextDocument/codeLenscodeLens/resolvetextDocument/formattingLspService::call() stops serving requests after exit notification,
meaning there is no longer a need for ExitReceiver::run_until_exit and the
Server::serve() async method can now be awaited directly (PR #117).Option<String> as service response type (PR #116).nom features for a hopefully lighter build (PR #112).Service::poll_ready() (PR #117).ExitReceiver type and LspService::close_handle() method (PR #117).Add default implementations to all non-required LanguageServer methods.
LanguageServer methods.textDocument/signatureHelptextDocument/implementationstd::future and async/await (PR #101).futures crate from 0.1.28 to 0.3.lsp-types crate from 0.68.0 to 0.70.tokio crate from 0.1.12 to 0.2.tower-service crate from 0.2.0 to 0.3.Implement support for the following client-to-server messages:
textDocument/declarationtextDocument/definitiontextDocument/typeDefinitionlsp-types crate from 0.63.1 to 0.68.0.Add support for Language Server Protocol 3.15.
lsp-types crate from 0.61.0 to 0.63.1.Update jsonrpc-core crate from 14.0 to 14.0.5.
jsonrpc-core crate from 14.0 to 14.0.5.jsonrpc-derive crate from 14.0 to 14.0.5.log crate from 0.4.7 to 0.4.8.serde crate from 1.0.99 to 1.0.103.tokio-executor crate from 0.1.8 to 0.1.9.env_logger crate from 0.7.0 to 0.7.1.Implement support for textDocument/completion request.
textDocument/completion request.Printer in LanguageServer::initialize().env_logger crate from 0.6.2 to 0.7.0.lsp-types crate from 0.60.0 to 0.61.0.window/logMessage, window/showMessage, and telemetry/event
server-to-client notifications in initialize request (PR #48).Use more descriptive message in not initialized JSON-RPC error.
telemetry/event notification to be null.Add support for decoding the optional Content-Type field in messages.
Content-Type field in messages.workspace/didChangeWorkspaceFoldersworkspace/didChangeConfigurationworkspace/didChangeWatchedFilesworkspace/symbolworkspace/executeCommandtelemetry/eventclient/registerCapabilityclient/unregisterCapabilityworkspace/applyEdithighlight() to document_highlight() to better match the
specification.LspService request type from String to Incoming (PR #28).Server to spawn services with Incoming request type.env_logger to print log messages in examples.textDocument/didChange in LanguageServer trait.Add ExitedError for when calling LspService after it has already exited.
ExitedError for when calling LspService after it has already exited.-32002 if any method is called
before initialize request is received, as per the spec.LspService sets Service::Error to ExitedError.Server can now accept any service where Service::Error is convertible to
Box<dyn Error + Send + Sync>. This enables compatibility with most Tower
middleware.ExitReceiver::run_until_exit().'static bounds on some Server and ExitReceiver methods.Implement support for the following message types:
initializeinitializedshutdownexitwindow/showMessagewindow/logMessagetextDocument/publishDiagnosticstextDocument/didOpentextDocument/didChangetextDocument/didSavetextDocument/didClosetextDocument/hovertextDocument/documentHighlightYour coding agent can read these notes before it upgrades. Set up the MCP server →