{"id":13437612,"url":"https://github.com/rust-lang/rls","last_synced_at":"2025-10-05T17:31:54.919Z","repository":{"id":10972712,"uuid":"66979953","full_name":"rust-lang/rls","owner":"rust-lang","description":"Repository for the Rust Language Server (aka RLS)","archived":true,"fork":false,"pushed_at":"2022-08-29T21:32:29.000Z","size":9415,"stargazers_count":3510,"open_issues_count":293,"forks_count":254,"subscribers_count":80,"default_branch":"master","last_synced_at":"2025-10-02T10:06:09.410Z","etag":null,"topics":["ide","language-server-protocol","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rust-lang.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"contributing.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-30T21:42:03.000Z","updated_at":"2025-09-29T10:08:00.000Z","dependencies_parsed_at":"2022-06-26T06:42:52.356Z","dependency_job_id":null,"html_url":"https://github.com/rust-lang/rls","commit_stats":null,"previous_names":["rust-lang-nursery/rls"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/rust-lang/rls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Frls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Frls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Frls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Frls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rust-lang","download_url":"https://codeload.github.com/rust-lang/rls/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Frls/sbom","scorecard":{"id":790520,"data":{"date":"2025-08-11","repo":{"name":"github.com/rust-lang/rls","commit":"04afefab3f993d6c59ecaaf9f3fcf7a5b8f6d2bc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":4,"reason":"Found 10/21 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE-APACHE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/rust-lang/.github/SECURITY.md:1","Info: Found linked content: github.com/rust-lang/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/rust-lang/.github/SECURITY.md:1","Info: Found text in security policy: github.com/rust-lang/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/rust-lang/rls/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/rust-lang/rls/ci.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"28 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0145 / GHSA-g98v-hv3f-hcfr","Warn: Project is vulnerable to: RUSTSEC-2024-0375","Warn: Project is vulnerable to: GHSA-r5w3-xm58-jv6j","Warn: Project is vulnerable to: GHSA-j3xp-wfr4-hx87","Warn: Project is vulnerable to: RUSTSEC-2022-0041 / GHSA-qc84-gqf4-9926","Warn: Project is vulnerable to: RUSTSEC-2020-0095","Warn: Project is vulnerable to: RUSTSEC-2023-0003 / GHSA-m4ch-rfv5-x5g3","Warn: Project is vulnerable to: RUSTSEC-2024-0421 / GHSA-h97m-ww89-6jmq","Warn: Project is vulnerable to: RUSTSEC-2024-0384","Warn: Project is vulnerable to: RUSTSEC-2022-0081","Warn: Project is vulnerable to: RUSTSEC-2024-0013 / GHSA-22q8-ghmq-63vf","Warn: Project is vulnerable to: RUSTSEC-2024-0019 / GHSA-r8w9-5wcg-vfj7","Warn: Project is vulnerable to: RUSTSEC-2023-0022 / GHSA-3gxf-9r58-2ghg","Warn: Project is vulnerable to: RUSTSEC-2023-0024 / GHSA-6hcf-g6gr-hhcr","Warn: Project is vulnerable to: RUSTSEC-2023-0023 / GHSA-9qwg-crg9-m2vc","Warn: Project is vulnerable to: RUSTSEC-2023-0044 / GHSA-xcf7-rvmh-g6q4","Warn: Project is vulnerable to: RUSTSEC-2023-0072 / GHSA-xphf-cx8h-7q9g","Warn: Project is vulnerable to: GHSA-q445-7m23-qrmw","Warn: Project is vulnerable to: RUSTSEC-2024-0357","Warn: Project is vulnerable to: RUSTSEC-2025-0004 / GHSA-rpmj-rpgj-qmpm","Warn: Project is vulnerable to: RUSTSEC-2024-0370","Warn: Project is vulnerable to: RUSTSEC-2022-0013 / GHSA-m5pq-gvj9-9vr8","Warn: Project is vulnerable to: RUSTSEC-2023-0018 / GHSA-mc8h-8q98-g5hr","Warn: Project is vulnerable to: RUSTSEC-2022-0006 / GHSA-9hpw-r23r-xgm5","Warn: Project is vulnerable to: RUSTSEC-2023-0001 / GHSA-7rrj-xr53-82p7","Warn: Project is vulnerable to: RUSTSEC-2023-0005 / GHSA-4q83-7cq4-p6wg","Warn: Project is vulnerable to: GHSA-rr8g-9fpq-6wmg","Warn: Project is vulnerable to: RUSTSEC-2025-0023"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T07:24:15.897Z","repository_id":10972712,"created_at":"2025-08-23T07:24:15.897Z","updated_at":"2025-08-23T07:24:15.897Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278411258,"owners_count":25982368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ide","language-server-protocol","rust"],"created_at":"2024-07-31T03:00:58.707Z","updated_at":"2025-10-05T17:31:53.772Z","avatar_url":"https://github.com/rust-lang.png","language":"Rust","funding_links":[],"categories":["Development tools","Rust","Languages","开发工具","开发工具 Development tools"],"sub_categories":["Web Servers","Web 服务器","网络服务端 Web Servers"],"readme":"# ⚠️ RLS is no longer supported\n\nRLS has been deprecated and is no longer supported.\nIt has been replaced with [rust-analyzer](https://rust-analyzer.github.io/).\nUsers are encouraged to uninstall RLS and follow the instructions in the\nrust-analyzer manual to install it for your editor.\n\n----\n\n# Rust Language Server (RLS)\n\nThe RLS provides a server that runs in the background, providing IDEs,\neditors, and other tools with information about Rust programs. It supports\nfunctionality such as 'goto definition', symbol search, reformatting, and code\ncompletion, and enables renaming and refactorings.\n\nA high-level overview of the architecture can be found [here](architecture.md).\n\nThe RLS gets its source data from the compiler and from\n[Racer](https://github.com/racer-rust/racer). Where possible it uses data from\nthe compiler which is precise and complete. Where it is not possible, (for example\nfor code completion and where building is too slow), it uses Racer.\n\nSince the Rust compiler does not yet support end-to-end incremental compilation,\nwe can't offer a perfect experience. However, by optimising our use of the\ncompiler and falling back to Racer, we can offer a pretty good experience for\nsmall to medium sized crates. As the RLS and compiler evolve, we'll offer a\nbetter experience for larger and larger crates.\n\nThe RLS is designed to be frontend-independent. We hope it will be widely\nadopted by different editors and IDEs. To seed development, we provide a\n[reference implementation of an RLS frontend](https://github.com/rust-lang/rls-vscode)\nfor [Visual Studio Code](https://code.visualstudio.com/).\n\n\n## Setup\n\n### Step 1: Install rustup\n\nYou can install [rustup](http://rustup.rs/) on many platforms. This will help us quickly install the\nRLS and its dependencies.\n\nIf you already have rustup installed, update to ensure you have the latest\nrustup and compiler:\n\n```\nrustup update\n```\n\n\nIf you're going to use the VSCode extension, you can skip step 2.\n\n\n### Step 2: Install the RLS\n\nOnce you have rustup installed, run the following commands:\n\n```\nrustup component add rls rust-analysis rust-src\n```\n\n### error: component 'rls' is unavailable for download (nightly)\nThe development of rustc's internals is quite fast paced. Downstream projects that rely on nightly internals, particularly clippy, can break fairly often because of this.\n\nWhen such breakages occur the nightly release will be missing rls. This is a trade-off compared with the other option of just not publishing the night's release, but does avoid blocking the rust nightly releases for people that don't need clippy/rls.\n\nTo mitigate the issues we have:\n* rustup will warn if the update is missing any components you currently have. This means you can no longer accidentally update to a no-rls release. Once rls is available again it'll update.\n* rls, clippy are available on the stable channel. Meaning most developers installing for the first time should use stable.\n* However, if you need latest nightly rls you can use https://rust-lang.github.io/rustup-components-history/ to find and install a dated nightly release ie `rustup install nightly-2018-12-06`.\n\nAlso see [#641](https://github.com/rust-lang/rls/issues/641).\n\n## Running\n\nThe RLS is built to work with many IDEs and editors, we mostly use\nVSCode to test the RLS. The easiest way is to use the [published extension](https://github.com/rust-lang/rls-vscode).\n\nYou'll know it's working when you see this in the status bar at the bottom, with\na spinning indicator:\n\n`RLS: working ◐`\n\nOnce you see:\n\n`RLS`\n\nThen you have the full set of capabilities available to you.  You can goto def,\nfind all refs, rename, goto type, etc.  Completions are also available using the\nheuristics that Racer provides.  As you type, your code will be checked and\nerror squiggles will be reported when errors occur.  You can hover these\nsquiggles to see the text of the error.\n\n## Configuration\n\nThe RLS can be configured on a per-project basis; using the Visual\nStudio Code extension this will be done via the workspace settings file\n`settings.json`.\n\nOther editors will have their own way of sending the\n[workspace/DidChangeConfiguration](https://microsoft.github.io/language-server-protocol/specification#workspace_didChangeConfiguration)\nmethod. Options are nested in the `rust` object, so your LSP client might send\n`{\"settings\":{\"rust\":{\"unstable_features\":true}}}` as parameters.\n\nEntries in this file will affect how the RLS operates and how it builds your\nproject.\n\nCurrently we accept the following options:\n\n* `unstable_features` (`bool`, defaults to `false`) enables unstable features.\n  Currently no option requires this flag.\n* `sysroot` (`String`, defaults to `\"\"`) if the given string is not empty, use\n  the given path as the sysroot for all rustc invocations instead of trying to\n  detect the sysroot automatically\n* `target` (`String`, defaults to `\"\"`) if the given string is not empty, use\n  the given target triple for all rustc invocations\n* `wait_to_build` (`u64`) overrides build debounce duration (ms). This is otherwise automatically\n  inferred by the latest build duration.\n* `all_targets` (`bool`, defaults to `true`) checks the project as if you were\n  running `cargo check --all-targets`. I.e., check all targets and integration\n  tests too\n* `crate_blacklist` (`[String]`, defaults to [this list](https://github.com/rust-dev-tools/rls-blacklist/blob/master/src/lib.rs))\n  allows to specify which crates should be skipped by the RLS.\n  By default skips libraries that are of considerable size but which the user\n  often may not be directly interested in, thus reducing the build latency.\n* `build_on_save` (`bool`, defaults to `false`) toggles whether the RLS should\n  perform continuous analysis or only after a file is saved\n* `features` (`[String]`, defaults to empty) list of Cargo features to enable\n* `all_features` (`bool`, defaults to `false`) enables all Cargo features\n* `no_default_features` (`bool`, defaults to `false`) disables default Cargo\n  features\n* `racer_completion` (`bool`, defaults to `true`) enables code completion using\n  racer (which is, at the moment, our only code completion backend). Also enables\n  hover tooltips \u0026 go-to-definition to fall back to racer when save-analysis data is unavailable.\n* `clippy_preference` (`String`, defaults to `\"opt-in\"`) controls eagerness of clippy\n  diagnostics when available. Valid values are _(case-insensitive)_:\n  - `\"off\"` Disable clippy lints.\n  - `\"on\"` Display the same diagnostics as command-line clippy invoked with no arguments (`clippy::all` unless overridden).\n  - `\"opt-in\"` Only display the lints [explicitly enabled in the code](https://github.com/rust-lang/rust-clippy#allowingdenying-lints). Start by adding `#![warn(clippy::all)]` to the root of each crate you want linted.\n\nand the following unstable options:\n\n* `build_lib` (`bool`, defaults to `false`) checks the project as if you passed\n  the `--lib` argument to cargo. Mutually exclusive with, and preferred over,\n  `build_bin`.\n* `build_bin` (`String`, defaults to `\"\"`) checks the project as if you passed\n  `-- bin \u003cbuild_bin\u003e` argument to cargo. Mutually exclusive with `build_lib`.\n* `cfg_test` (`bool`, defaults to `false`) checks the project as if you were\n  running `cargo test` rather than `cargo build`. I.e., compiles (but does not\n  run) test code.\n* `full_docs` (`bool`, defaults to `false`) instructs rustc to populate the\n  save-analysis data with full source documentation. When set to `false`, only the\n  first paragraph is recorded. This option _currently_ has little to no effect on\n  hover tooltips. The save-analysis docs are only used if source extraction fails.\n  This option has no effect on the standard library.\n* `show_hover_context` (`bool`, defaults to `true`) show additional context in\n  hover tooltips when available. This is often the local variable declaration.\n  When set to false the content is only available when holding the `ctrl` key in\n  some editors.\n\n\n## Troubleshooting\n\nFor tips on debugging and troubleshooting, see [debugging.md](debugging.md).\n\n\n## Contributing\n\nYou can look in the [contributing.md](https://github.com/rust-lang/rls/blob/master/contributing.md)\nin this repo to learn more about contributing to this project.\n\nIf you want to implement RLS support in an editor, see [clients.md](clients.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-lang%2Frls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frust-lang%2Frls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-lang%2Frls/lists"}