diff options
author | Aleksey Kladov <[email protected]> | 2019-02-12 14:55:02 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-02-12 14:55:02 +0000 |
commit | 03691c797a60cbd6e4c8bf09de1c48e62757f89f (patch) | |
tree | 65d90c519fe129ae2ed4456a37d82be8d2f817a3 | |
parent | 74ecfc2729d2d0771304a4fed3afdfa2c2d99b43 (diff) |
update readme to point to the WG
-rw-r--r-- | README.md | 49 |
1 files changed, 8 insertions, 41 deletions
@@ -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 | ||
5 | Rust Analyzer is an **experimental** modular compiler frontend for the Rust | 5 | Rust Analyzer is an **experimental** modular compiler frontend for the Rust |
6 | language, which aims to lay a foundation for excellent IDE support. | 6 | language. It is a part of a larger rls-2.0 effort to create excellent IDE |
7 | support for Rust. If you want to get involved, check rls-2.0 working group repository: | ||
7 | 8 | ||
8 | It doesn't implement much of compiler functionality yet, but the white-space | 9 | https://github.com/rust-analyzer/WG-rls2.0 |
9 | preserving Rust parser works, and there are significant chunks of overall | ||
10 | architecture (indexing, on-demand & lazy computation, snapshotable world view) | ||
11 | in place. Some basic IDE functionality is provided via a language server. | ||
12 | 10 | ||
13 | Work on the Rust Analyzer is sponsored by | 11 | Work on the Rust Analyzer is sponsored by |
14 | 12 | ||
@@ -41,37 +39,15 @@ features (some of which are VS Code specific). | |||
41 | 39 | ||
42 | See [these instructions](./DEBUGGING.md) on how to debug the vscode extension and the lsp server. | 40 | See [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 | |||
46 | Rust analyzer aims to fill the same niche as the official [Rust Language | ||
47 | Server](https://github.com/rust-lang-nursery/rls), but uses a significantly | ||
48 | different architecture. More details can be found [in this | ||
49 | thread](https://internals.rust-lang.org/t/2019-strategy-for-rustc-and-the-rls/8361), | ||
50 | but the core issue is that RLS works in the "wait until user stops typing, run | ||
51 | the build process, save the results of the analysis" mode, which arguably is the | ||
52 | wrong foundation for IDE. | ||
53 | |||
54 | Rust Analyzer is an experimental project at the moment, there's exactly zero | ||
55 | guarantees that it becomes production-ready one day. | ||
56 | 43 | ||
57 | The near/mid term plan is to work independently of the main rustc compiler and | 44 | We are on the rust-lang Zulip! |
58 | implement at least simplistic versions of name resolution, macro expansion and | ||
59 | type inference. The purpose is two fold: | ||
60 | 45 | ||
61 | - to quickly bootstrap usable and useful language server: solution that covers | 46 | https://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 | ||
71 | The long term plan is to merge with the mainline rustc compiler, probably around | 50 | See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md) |
72 | the HIR boundary? That is, use rust analyzer for parsing, macro expansion and | ||
73 | related bits of name resolution, but leave the rest (including type inference | ||
74 | and 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 | |||
151 | We have a Discord server dedicated to compilers and language servers | ||
152 | implemented in Rust: [https://discord.gg/sx3RQZB](https://discord.gg/sx3RQZB). | ||
153 | |||
154 | ## Contributing | ||
155 | |||
156 | See [CONTRIBUTING.md](./CONTRIBUTING.md) and [ARCHITECTURE.md](./ARCHITECTURE.md) | ||
157 | |||
158 | ## License | 125 | ## License |
159 | 126 | ||
160 | Rust analyzer is primarily distributed under the terms of both the MIT | 127 | Rust analyzer is primarily distributed under the terms of both the MIT |