Ruby Fast LSP
A Ruby language server written in Rust, with type-aware navigation, diagnostics,
and editor features for Ruby and ERB projects.
Navigate your project, complete method calls, rename symbols, and get feedback
as you edit. Explore type inference and Hash shapes for more detail about
the values in your code.

Explore the feature guide ·
View this demo and its example
The demo uses generic Ruby code with AI suggestions disabled. Playback pauses
are edited for readability; they are not latency measurements.
Get started
VS Code: install Ruby Fast LSP
and open your project. An Open VSX package
is also available for compatible editors.
Other LSP clients: install the server and configure your client to launch it
with --stdio and language ID ruby:
npm install -g @ruby-fast/lsp
ruby-fast-lsp --stdio
Build from source: use the repository's pinned Rust toolchain:
cargo build --locked --release --bin ruby-fast-lsp
./target/release/ruby-fast-lsp --stdio
See usage and support boundaries for runtime selection,
formatting, templates, framework integrations, and troubleshooting. Package
availability does not certify every runtime or platform combination; release
acceptance is tracked for each candidate through the release checklist.
What it does
- Go to definition, references, implementation, rename, and call/type hierarchies.
- Completion, signature help, hover, compact type hints, and symbol search.
- Syntax and semantic diagnostics that follow edits and cross-file definitions.
- Type inference from Ruby bodies, YARD, and RBS, including structural Hash
shapes, collection blocks, and supported lambda/proc calls.
- Isolated indexing for multiple Ruby projects, exact runtime/dependency
selection, and JRuby Java navigation.
- Ruby analysis in ERB, optional RuboCop/Standard linting and formatting, and
bundled Rails, RSpec, Minitest, Sinatra, and Cucumber integrations.
Inference is conservative: unsupported dynamic behavior or incomplete evidence
remains Unknown. The feature contracts
describe supported forms and limits.
Explore the code
| Path |
Purpose |
| src/ |
Server, workspace lifecycle, and LSP adapters; start at src/main.rs, src/lsp/service.rs, and src/server/mod.rs |
| crates/ruby-analysis/ |
Shared facts, indexing, inference, and semantic queries |
| crates/ |
RBS/JVM support, extension APIs and hosts, and the external LSP test harness |
| extensions/ |
Framework integrations and extension examples |
| editors/ |
Editor adapters and npm/VSIX packaging |
| src/test/ |
Feature, lifecycle, robustness, and CLI tests, and shared fixtures |
| docs/ / support/ |
Maintained guides / validation tools, assets, and evidence |
Next priorities
- Collect dependency sources in one traversal: the declaration seed and the
collector still walk each project file separately, and dependencies take the
collector's declarations. A seed beside the collector cost about 20% of
dependency collection, so the merge waits for a design where the seed's
declarations come from inside the collector walk.
- Revisit a dedicated per-project writer task only if
writer_wait p95
approaches its 50 ms budget; named handle operations are the writer today.
- Improve proof coverage for user-defined yielding methods and additional RBS
forms, guided by reduced real-world regressions.
- Consolidate repeated argument/type binding logic and make unexplained
Unknown outcomes easier to investigate.
- Refine dependency-driven invalidation so cross-file refresh stays correct
without unnecessary work during editing.
- Expand robustness coverage and native/editor acceptance before
broader public promotion.
These are directions, not delivery promises. Completed implementation plans
and old progress logs live in Git history; this README is the current roadmap.
Contribute
Start with the contributor guide and test guide.
Use small, generic reproductions when reporting or fixing a bug.
cargo test --locked --workspace
python3 -B support/structure/check.py
The performance guide explains when and how
to measure a change. Issues and contributions are welcome on
GitHub.
MIT licensed. See license.