Skip to content
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
@aturon

Description

@aturon

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions