Skip to content

Instantly share code, notes, and snippets.

@Xanewok
Created July 27, 2017 01:16
Show Gist options
  • Save Xanewok/9db5e29133a74c31929f103c9084d841 to your computer and use it in GitHub Desktop.
Save Xanewok/9db5e29133a74c31929f103c9084d841 to your computer and use it in GitHub Desktop.
5 mins IDE/rls talk, 5 mins demo, 5 mins Cargo + workspaces, 10 mins on making workspaces work in the RLS (including another demo), 5 mins for questions
>>>>>>>>>>>>>>>>>>>>>>>
How Rust Language Server, the IDE tool, understands your project
>>>>>>>>>>>>>>>>>>>>>>>
Abstract
(A concise, engaging description for the public program. Limited to 600 characters.)
One of the key measures of the language usability is extensive tooling, particularly having a mature and accessible IDE.
By providing code navigation, generation and refactoring facilities, IDEs speed up considerably the core edit-compile-debug cycle.
Throw autocompletion in and not only do you get a practical tool that supports everyday development but you also get a learning tool, which
supports the learning by tinkering approach.
Historically, IDE support for Rust has always been quite lacking. As the language is focused on thorough static checking and enforcing
compile-time guarantees, it often feels unwelcoming to the beginners, since the compiler doesn't allow for too much leeway. Not without
a reason IDE support has been stated as very desired in State of Rust Survey in 2016 and is listed as one of the main goals for the 2017 Rust's roadmap.
This talk will explain the current state of core IDE tool, Rust Language Server (RLS), what it's capable of and how to use it. Additionally
it'll try to shed a bit more light on how it works behind the scenes, specifically how it understands the project structure and how it
leverages existing tools to provide its core functionality.
>>>>>>>>>>>>>>>>>>>>>>>>>
Details
(Include any pertinent details such as outlines, outcomes or intended audience.)
The talk will be split into 2 parts.
The first one will provide a brief demo and introduction to how the RLS as an IDE tool will replace current development cycle,
how to set it up and what it's capable of.
After that there will be a brief introduction on how Cargo projects work, specifically workspaces.
Following that there will be more technical details on how the RLS operates, how it leverages Cargo and what were the other
necessary changes required to implement a support for bigger projects such as Cargo workspace format to improve the general usability of RLS.
Target audience will mostly consist of people willing to try Rust but that didn't have a chance to do so and people less experienced with it in general.
However, since more technical details and specifically how Cargo works and how RLS uses that will be explained, it will also prove interesting
to slightly more experienced Rustaceans.
With this talk, I expect people to know how the current IDE support looks like and how to use it. Additionally it will shed some light on
how IDEs work in general and how current tooling is used by the RLS for it to provide its core functionality.
>>>>>>>>>>>>>>>>>>>>>>>>>
Pitch
(Explain why this talk should be considered and what makes you qualified to speak on the topic.)
IDE support is high on the list for the Rust's roadmap for 2017. According to the State of Rust Survey in 2016, a lot of potential
and current users would prefer an IDE, which would help them approach the language and ease the infamous initial steep learning curve
for the language.
Having a comfortable IDE to work with also leads to increased productivity for the users and ability to work on bigger projects.
In turn, this allows for faster and more comfortable development, which hopefully results in a more mature and diverse ecosystem.
Historically, IDE support for Rust has always been lacking and since the basic-but-solid IDE experience is finally here, it's time
to get more people involved and share the good news.
This year I had the pleasure to enroll as a Student for the Google Summer of Code 2017 where I worked on the RLS and specifically
focused on implementing support for Cargo workspaces and multiple active crates, as well as other smaller fixes and improvements.
This, along with the fact that I worked on a big game project codebase in C++, where IDE support was crucial to stay productive,
leads me to believe that I'll have something interesting to share with fellow Rustaceans regarding IDE support.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment