惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
G
Google Developers Blog
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
J
Java Code Geeks
U
Unit 42
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Docker
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
V
V2EX
T
Tailwind CSS Blog

Rust Blog

Security Advisory for Cargo (CVE-2026-5223) | Rust Blog Security Advisory for Cargo (CVE-2026-5222) | Rust Blog Project goals update — April 2026 (end of 2025H2) | Rust Blog Rust is participating in Outreachy | Rust Blog Raising the baseline for the `nvptx64-nvidia-cuda` target | Rust Blog Announcing Google Summer of Code 2026 selected projects | Rust Blog Announcing Rust 1.95.0 | Rust Blog docs.rs: building fewer targets by default | Rust Blog Changes to WebAssembly targets and handling undefined symbols | Rust Blog Announcing Rust 1.94.1 | Rust Blog Security advisory for Cargo | Rust Blog What we heard about Rust's challenges | Rust Blog Call for Testing: Build Dir Layout v2 | Rust Blog Announcing rustup 1.29.0 | Rust Blog Announcing Rust 1.94.0 | Rust Blog 2025 State of Rust Survey Results | Rust Blog Rust debugging survey 2026 | Rust Blog Update on the October 15, 2018 incident on crates.io Announcing Rust 1.29.2 Announcing Rust 1.29 Announcing Rust 1.28 What is Rust 2018? Announcing Rust 1.27.2 Announcing Rust 1.27.1 Security Advisory for rustdoc Announcing Rust 1.27 Announcing Rust 1.26.2 Announcing Rust 1.26.1 Rust turns three Announcing Rust 1.26
2019-11-18 IDE team meeting | Inside Rust Blog
Aleksey Kladov, Igor Matuszewski on behalf of the IDE team · 2019-12-04 · via Rust Blog

Meeting run by nikomatsakis. Minutes written by nikomatsakis. Attending: nikomatsakis, pnkfelix, Xanewok, matklad Notes

The Rust IDE

In the last compiler/IDE team meeting we've discussed the overall direction for IDE support in Rust.

At the moment, the two IDEs developed as part of the Rust project are Rust Language Server (RLS) and rust-analyzer. The former is currently being shipped with the Rust distribution while the latter serves as a foundation for the "RLS 2.0" working group.

Unfortunately, these are actively developed in separation without much code-sharing between the two. We'd like to change that and to find out how we can unify these efforts. Therefore, we've been having a series of talks with the aim of elaborating the design space and creating a proposal for how to improve the situation going forward.

This blog post gives a short summary from our most recent meeting.

Why 2 IDEs?

The main benefits of rust-analyzer is greater performance (because of fully-lazy compilation model) and somewhat richer feature-set (due to more flexible analysis API). The main benefits of RLS is precision (it uses rustc under the hood). Additionally, RLS is the main consumer of save-analysis infrastructure, which is a good fit for tools which need a static view of the codebase, such as cargo-src or lsif.

Save-analysis

What is "save-analysis"? It is an unstable format which rustc uses to record information about the compiled code. It contains a pretty high-level information. For example, for each identifier in the source-crate, save-analyzer will map this identifier to a definition and list of usages. env RUSTFLAGS="-Zunstable-options -Zsave-analysis" cargo check can be used to instruct rustc to produce save-analysis files (in JSON format). Because save-analysis is produced directly from rustc internal data structures, it is guaranteed to be correct (modulo bugs in rustc itself).

Query model

The fundamental problem with save-analysis is that it is computed for the whole crate at once. This is pretty slow for non-trivial crates, and is also wasteful. At any given moment in time, only a small fraction of analysis information is really required. rust-analyzer solves this by using salsa queries for code analysis. The result is a compilation model which is fully lazy across the whole crate graph. This model is similar to what rustc is using internally, but is more lazy both "vertically" and "horizontally". Vertically, rustc starts to be incremental only after parsing and macro expansion; rust-analyzer is incremental on per-file basis. Horizontally, rustc compiles one crate at a time; rust-analyzer uses queries for the whole crate graph.

Way forward

Our current hypothesis is that it is possible to integrate both approaches without doubling the engineering effort. Specifically, we will add an option to rust-analyzer to use save-analysis for find-usages and rename functionality. That way, we'll get precise results for most important queries, without slowing down completion. Unlike RLS, however, rust-analyzer will not link to rustc and instead will rely on cargo for running the compiler and producing save-analysis data. If this approach works, we will consider freezing RLS and focusing fully on rust-analyzer. Long term, the plan is to unify the save-analysis fallback path and the lazy analysis.

In parallel to this RLS/rust-analyzer unification effort, we continue to pursue rustc library-ification, with a specific focus on traits solving (via chalk) and type inference. "Library-ification" is a term we've been using for the process of extracting code out of rustc into re-usable libraries which can be shared by both rustc and rust-analyzer. The goal is to use library-ification to gradually reduce the amount of duplicated code between rustc and rust-analyzer, with the goal of eventually either having a single code-base, or having the vast majority of the logic be shared.