When I wrote last year’s post, Rust 2018: The year we learn Rust 1.0, I tried to make an argument to focus on ecosystem improvements over language improvements. I specifically called out 2 spaces: a stable http client and documented async ecosystem.
1 year in, the situation is the same: we still don’t have a 1.0 HTTP client in our ecosystem. While
reqwest are still the go-to libraries and good, they are still not committed to stability. Also, no other library has emerged to fill that hole. The more our ecosystem grows, the larger the community-wide cost of following breaking changes in these libraries will get.
Proper, high-level documentation of async/futures was pushed tied to the arrival of
async/await, which was targeted for the edition release and later shifted back. I like
async/await, I still think the decision to tie documentation to it was a mistake.
This has a ripple effect: everything based on these libraries and features will hold back committing to stability: web and API frameworks, other network protocol implementations or even just plain tutorials.
But it’s no only HTTP and networking:
rand is still sub-zero and many other libs aling with it.
I don’t want to shift blame on anyone and not speculate on reasons. There’s tons of people working hard on all these features, doing a lot of great work. But as much as I internally have a lot of empathy for this situation, externally, it becomes a problem.
While this was a (large) wart a year ago, three years in, it now quickly becomes unacceptable - especially for a language that boasts safe asyncronicity and network programming close to the metal. It points to an immaturity and undecisiveness of the ecosystem. It adds to a feeling of ongoing insecurity about the path of out fundamental ecosystem. Rust is going to become a tough sell through that. Last year, “Rust is young” was an argument that was acceptable. It slowly begins to wear off. We chose to use “Rust 2018” as a “Rust has grown up” marketing moment, and our ecosystem should reflect that.
I think projects like tide point into the right direction: a concerted effort by a team of people to build a reliable, stable offering that is a stable workhorse.
We had our year of language fixup. We need a year of finishing the parts of the ecosystem that are generally considered expected for the course for any major programming language.
1.0 is a beautiful version, and we need to commit to it. (don’t forget to tag!)top