aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md49
1 files changed, 8 insertions, 41 deletions
diff --git a/README.md b/README.md
index cffc00953..15da30f2d 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,10 @@
3[![Build Status](https://travis-ci.org/rust-analyzer/rust-analyzer.svg?branch=master)](https://travis-ci.org/rust-analyzer/rust-analyzer) 3[![Build Status](https://travis-ci.org/rust-analyzer/rust-analyzer.svg?branch=master)](https://travis-ci.org/rust-analyzer/rust-analyzer)
4 4
5Rust Analyzer is an **experimental** modular compiler frontend for the Rust 5Rust Analyzer is an **experimental** modular compiler frontend for the Rust
6language, which aims to lay a foundation for excellent IDE support. 6language. It is a part of a larger rls-2.0 effort to create excellent IDE
7support for Rust. If you want to get involved, check rls-2.0 working group repository:
7 8
8It doesn't implement much of compiler functionality yet, but the white-space 9https://github.com/rust-analyzer/WG-rls2.0
9preserving Rust parser works, and there are significant chunks of overall
10architecture (indexing, on-demand & lazy computation, snapshotable world view)
11in place. Some basic IDE functionality is provided via a language server.
12 10
13Work on the Rust Analyzer is sponsored by 11Work on the Rust Analyzer is sponsored by
14 12
@@ -41,37 +39,15 @@ features (some of which are VS Code specific).
41 39
42See [these instructions](./DEBUGGING.md) on how to debug the vscode extension and the lsp server. 40See [these instructions](./DEBUGGING.md) on how to debug the vscode extension and the lsp server.
43 41
44## Current Status and Plans 42## Getting in touch
45
46Rust analyzer aims to fill the same niche as the official [Rust Language
47Server](https://github.com/rust-lang-nursery/rls), but uses a significantly
48different architecture. More details can be found [in this
49thread](https://internals.rust-lang.org/t/2019-strategy-for-rustc-and-the-rls/8361),
50but the core issue is that RLS works in the "wait until user stops typing, run
51the build process, save the results of the analysis" mode, which arguably is the
52wrong foundation for IDE.
53
54Rust Analyzer is an experimental project at the moment, there's exactly zero
55guarantees that it becomes production-ready one day.
56 43
57The near/mid term plan is to work independently of the main rustc compiler and 44We are on the rust-lang Zulip!
58implement at least simplistic versions of name resolution, macro expansion and
59type inference. The purpose is two fold:
60 45
61- to quickly bootstrap usable and useful language server: solution that covers 46https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frls-2.2E0
62 80% of Rust code will be useful for IDEs, and will be vastly simpler than 100%
63 solution.
64 47
65- to understand how the consumer-side of compiler API should look like 48## Contributing
66 (especially it's on-demand aspects). If you have `get_expression_type`
67 function, you can write a ton of purely-IDE features on top of it, even if the
68 function is only partially correct. Pluging in the precise function afterwards
69 should just make IDE features more reliable.
70 49
71The long term plan is to merge with the mainline rustc compiler, probably around 50See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md)
72the HIR boundary? That is, use rust analyzer for parsing, macro expansion and
73related bits of name resolution, but leave the rest (including type inference
74and trait selection) to the existing rustc.
75 51
76## Supported LSP features 52## Supported LSP features
77 53
@@ -146,15 +122,6 @@ and trait selection) to the existing rustc.
146- [x] [textDocument/prepareRename](https://microsoft.github.io/language-server-protocol/specification#textDocument_prepareRename) 122- [x] [textDocument/prepareRename](https://microsoft.github.io/language-server-protocol/specification#textDocument_prepareRename)
147- [x] [textDocument/foldingRange](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange) 123- [x] [textDocument/foldingRange](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange)
148 124
149## Getting in touch
150
151We have a Discord server dedicated to compilers and language servers
152implemented in Rust: [https://discord.gg/sx3RQZB](https://discord.gg/sx3RQZB).
153
154## Contributing
155
156See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md)
157
158## License 125## License
159 126
160Rust analyzer is primarily distributed under the terms of both the MIT 127Rust analyzer is primarily distributed under the terms of both the MIT