This repository was archived by the owner on Jul 14, 2018. It is now read-only.
This repository was archived by the owner on Jul 14, 2018. It is now read-only.
Rust should provide a basic, but solid IDE experience #2
Open
Description
Overview
For many people—even whole organizations—IDEs are an essential part of the
programming workflow. In the survey, 1 in 4 respondents mentioned requiring IDE
support before using Rust seriously. Tools like Racer and the IntelliJ Rust
plugin have made great progress this year, but compiler integration in its
infancy, which limits the kinds of tools that general IDE plugins can provide.
The problem statement here says "solid, but basic" rather than "world-class" IDE
support to set realistic expectations for what we can get done this year. Of
course, the precise contours will need to be driven by implementation work, but
we can enumerate some basic constraints for such an IDE here:
- It should be reliable: it shouldn't crash, destroy work, or give inaccurate
results in situations that demand precision (like refactorings). - It should be responsive: the interface should never hang waiting on the
compiler or other computation. In places where waiting is required, the
interface should update as smoothly as possible, while providing
responsiveness throughout. - It should provide basic functionality. At a minimum, that's: syntax
highlighting, basic code navigation (e.g. go-to-definition), code completion,
build support (with Cargo integration), error integration, and code
formatting.
Note that while some of this functionality is available in existing IDE/plugin
efforts, a key part of this initiative is to (1) lay the foundation for plugins
based on compiler integration (2) pull together existing tools into a single
service that can integrate with multiple IDEs.
Projects
- Rust Language Service, which provides a server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs.