Rust 2020 - On the Rust Development Experience
This is in response to the Call for blog posts for rust 2020.
I would like to propose that 2020 be a year where some significant focus is placed on the Rust Development Experience. I define Development experience as tooling and ergonomics that improve the quality of life of the developer while increasing productivity. In this post, I'd like to briefly explore the current state of the development experience using Rust.
Coming from a Java background, the IDE; Intellij, Eclipse, for example, form a core part of the development experience and emphasize user productivity. Fast tooling like smart auto-complete and IntelliSense aids API discoverability and helps lower the barrier to entry for new potential users of the language.
Some of this tooling is an expectation that some library and API designers assume when publishing libraries and tools.
IDE
While I do acknowledge that an incredible amount of effort has gone into the development of IDE infrastructure, I think it's helpful to assess and acknowledge the current state of the available tools. RLS
; by extension, the VSCode
and Atom
plugins, as well as IntelliJ-rust currently experience significant performance issues that make them almost unusable on larger projects.
https://github.com/rust-lang/atom-ide-rust/issues/104
https://github.com/rust-lang/rls/issues/1410
Some strides have been made in alternative tools like rust-analyzer
but in my experience, it can also be very slow to use on larger projects.
Debugging Support
The availability of existing tooling specifically lldb
or gdb
is helpful in this regard but there is still work that needs to be done to truly make rust support for this first class.
https://www.forrestthewoods.com/blog/how-to-debug-rust-with-visual-studio-code/
That being said, Google searching Rust debugger
returns the following Reddit thread for me as the second result
https://www.reddit.com/r/rust/comments/9hpk65/which_tools_are_you_using_to_debug_rust_projects/
I think that the highest upvoted comment in this thread being println!
is a clear symptom that there's work to be done in the space.
At the end of the day, having great tooling that supports you as a developer just leaves a very positive taste that creates a fun environment that a user wants to come back to. That is, in my opinion, at the core of building a great development experience. I think it's safe to say that great languages and ecosystems are supported by great tools; and I think that this holds for Rust as well, with great tools like Cargo
, Clippy
and rustc
. I hope that 2020 is the year when our IDE infrastructure can catch up.