update readme to point to the WG

This commit is contained in:
Aleksey Kladov 2019-02-12 17:55:02 +03:00
parent 74ecfc2729
commit 03691c797a

View file

@ -3,12 +3,10 @@
[![Build Status](https://travis-ci.org/rust-analyzer/rust-analyzer.svg?branch=master)](https://travis-ci.org/rust-analyzer/rust-analyzer) [![Build Status](https://travis-ci.org/rust-analyzer/rust-analyzer.svg?branch=master)](https://travis-ci.org/rust-analyzer/rust-analyzer)
Rust Analyzer is an **experimental** modular compiler frontend for the Rust Rust Analyzer is an **experimental** modular compiler frontend for the Rust
language, which aims to lay a foundation for excellent IDE support. language. It is a part of a larger rls-2.0 effort to create excellent IDE
support for Rust. If you want to get involved, check rls-2.0 working group repository:
It doesn't implement much of compiler functionality yet, but the white-space https://github.com/rust-analyzer/WG-rls2.0
preserving Rust parser works, and there are significant chunks of overall
architecture (indexing, on-demand & lazy computation, snapshotable world view)
in place. Some basic IDE functionality is provided via a language server.
Work on the Rust Analyzer is sponsored by Work on the Rust Analyzer is sponsored by
@ -41,37 +39,15 @@ features (some of which are VS Code specific).
See [these instructions](./DEBUGGING.md) on how to debug the vscode extension and the lsp server. See [these instructions](./DEBUGGING.md) on how to debug the vscode extension and the lsp server.
## Current Status and Plans ## Getting in touch
Rust analyzer aims to fill the same niche as the official [Rust Language We are on the rust-lang Zulip!
Server](https://github.com/rust-lang-nursery/rls), but uses a significantly
different architecture. More details can be found [in this
thread](https://internals.rust-lang.org/t/2019-strategy-for-rustc-and-the-rls/8361),
but the core issue is that RLS works in the "wait until user stops typing, run
the build process, save the results of the analysis" mode, which arguably is the
wrong foundation for IDE.
Rust Analyzer is an experimental project at the moment, there's exactly zero https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frls-2.2E0
guarantees that it becomes production-ready one day.
The near/mid term plan is to work independently of the main rustc compiler and ## Contributing
implement at least simplistic versions of name resolution, macro expansion and
type inference. The purpose is two fold:
- to quickly bootstrap usable and useful language server: solution that covers See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md)
80% of Rust code will be useful for IDEs, and will be vastly simpler than 100%
solution.
- to understand how the consumer-side of compiler API should look like
(especially it's on-demand aspects). If you have `get_expression_type`
function, you can write a ton of purely-IDE features on top of it, even if the
function is only partially correct. Pluging in the precise function afterwards
should just make IDE features more reliable.
The long term plan is to merge with the mainline rustc compiler, probably around
the HIR boundary? That is, use rust analyzer for parsing, macro expansion and
related bits of name resolution, but leave the rest (including type inference
and trait selection) to the existing rustc.
## Supported LSP features ## Supported LSP features
@ -146,15 +122,6 @@ and trait selection) to the existing rustc.
- [x] [textDocument/prepareRename](https://microsoft.github.io/language-server-protocol/specification#textDocument_prepareRename) - [x] [textDocument/prepareRename](https://microsoft.github.io/language-server-protocol/specification#textDocument_prepareRename)
- [x] [textDocument/foldingRange](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange) - [x] [textDocument/foldingRange](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange)
## Getting in touch
We have a Discord server dedicated to compilers and language servers
implemented in Rust: [https://discord.gg/sx3RQZB](https://discord.gg/sx3RQZB).
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md)
## License ## License
Rust analyzer is primarily distributed under the terms of both the MIT Rust analyzer is primarily distributed under the terms of both the MIT