I think the most astonishing thing to me about the Rust language project is not the language it self (sure it's innovative but there's also still a lot of work to be done to make it get out of your way). It's the speed and tenacity with which the project has managed to push development of the supporting tooling. The development tools surrounding a language can often be more important for productivity than the language itself, and it feels like the Rust team and community really get that.
I think that's a side effect of making a welcoming community a priority. The Rust Language Server grew out of feedback from the Rust Language Survey, in which many people responded that they wanted good IDE support.
That isn't a glamorous task to work on, especially if you're already comfortable with the level of editor support you have, but it helps bring more people into the community, which has a multiplicative effect.
I might be wrong but one possible explanation is that the language is so hard to learn that people would need tools to help in the beginning.
Within Mozilla, they can use servo as a selling point or turn to creators for help, but from the outside world, we've got so many languages available, while some might not be good when the software grow big, they are more beginner-friendly than Rust. Hence Rust needs all those tooling from the very start.
>It's the speed and tenacity with which the project has managed to push development of the supporting tooling.
Compared to what ? Community designed languages like D, Nim, w/e - no dispute here. But corporately backed languages such as C#, F#, Swift, TypeScript, Kotlin - not really. I guess it's fair since Rust is middle ground - sponsored by Mozilla but not getting the level of investment as the others mentioned.
For anyone interested in similar tools, Microsoft recently published a protocol[1] for this type of service, and an implementation[2] of it for VSCode+NodeJS.
Swift also has a library[3] called SourceKit which does the same thing for Swift – it can run as an out-of-process daemon, and people have written integrations for Atom, Emacs, etc. to get autocomplete, syntax highlighting, def links, etc.
Compilers that have a language service api are awesome. The Typescript compiler does and it makes for high quality low latency refactoring, code completion, show expression type etc across ediors and IDEs.
Since my other day to day language is Scala I was glad to find out that the upcoming Dotty Scala compiler will also feature a language service api. Yay.
I've wanted this for a long time. But I don't see why it has to be language-specific. Maybe some of the fancy parts do, but why can't make/cmake/ninja/etc. support this in a language independent way? Just basic queries/commands like:
1. run any build steps that directly depend on file X
2. run any build steps that directly or indirectly depend on file X
3. get whether the build of X succeeded or failed, and console output
These alone would go so far towards making Vim/Emacs/etc more user-friendly.
We've been planning this for a while, and it's largely been a joint effort between Jonathan and Nick; Jonathan _did_ work on TypeScript before coming to work on Rust, though.
[+] [-] hetman|9 years ago|reply
[+] [-] JoshTriplett|9 years ago|reply
That isn't a glamorous task to work on, especially if you're already comfortable with the level of editor support you have, but it helps bring more people into the community, which has a multiplicative effect.
[+] [-] xuejie|9 years ago|reply
Within Mozilla, they can use servo as a selling point or turn to creators for help, but from the outside world, we've got so many languages available, while some might not be good when the software grow big, they are more beginner-friendly than Rust. Hence Rust needs all those tooling from the very start.
[+] [-] seangrogg|9 years ago|reply
[+] [-] rubber_duck|9 years ago|reply
Compared to what ? Community designed languages like D, Nim, w/e - no dispute here. But corporately backed languages such as C#, F#, Swift, TypeScript, Kotlin - not really. I guess it's fair since Rust is middle ground - sponsored by Mozilla but not getting the level of investment as the others mentioned.
[+] [-] favorited|9 years ago|reply
Swift also has a library[3] called SourceKit which does the same thing for Swift – it can run as an out-of-process daemon, and people have written integrations for Atom, Emacs, etc. to get autocomplete, syntax highlighting, def links, etc.
[1]https://github.com/Microsoft/language-server-protocol [2]https://github.com/Microsoft/vscode-languageserver-node [3]https://github.com/apple/swift/tree/master/tools/SourceKit
[+] [-] nrc|9 years ago|reply
[+] [-] wbond|9 years ago|reply
[+] [-] akio|9 years ago|reply
[+] [-] wging|9 years ago|reply
[+] [-] markdog12|9 years ago|reply
[+] [-] beliu|9 years ago|reply
Side note: really looking forward to rolling this into Rust support for Sourcegraph (Sourcegraph team member here) to make any Rust library as easy to explore as https://sourcegraph.com/github.com/gorilla/websocket/-/blob/... and https://sourcegraph.com/github.com/staltz/xstream@master/-/b... are for Go and TypeScript. Thanks for making and open-sourcing this!
[+] [-] JoshTriplett|9 years ago|reply
I look forward to seeing support for this integrated with vim.
[+] [-] joostdevries|9 years ago|reply
[+] [-] k4rtik|9 years ago|reply
[+] [-] haberman|9 years ago|reply
[+] [-] steveklabnik|9 years ago|reply
[+] [-] avodonosov|9 years ago|reply
[+] [-] jayflux|9 years ago|reply
[+] [-] denfromufa|9 years ago|reply
[+] [-] steveklabnik|9 years ago|reply