4 ms·
Rust in prod has been bittersweet for us. Our main goal was to 1) do our job and 2) leverage some of the great promises of Rust. Deterministic memory managemen
by throwaway78123 6y ago
Rust in prod has been bittersweet for us. Our main goal was to 1) do our job and 2) leverage some of the great promises of Rust.
Deterministic memory management and bare metal performance are great and have been realized benefits. The great promises were realized.
On the “do your job” front though, the lack of a good STABLE library ecosystem has been a real issue and big source of frustration. It seems that most library developers in the Rust community are hackers writing Rust for fun, and I do not say that in a negative way. But the consequence is that things are usually not super well maintained, but more critically are targeting Rust Nightly (which makes sense as Nightly has all the new cool compiler stuff).
Add the scarce professional talent pool, the unavoidable steep learning curve, low bus factor risk... It’s just hard to justify pushing (professionally) more Rust beyond its niche.
With Mozilla pulling out (to some extent), the big focus on Web-assembly... it just feels off if all you want to do is build boring backends.
The contrast with Golang’s “boring as a feature” is quite interesting in that regard.
Time will tell if Rust will make it to the major leagues, or will be another Haskell.
- tmandry 6y agoMost libraries don’t target nightly anymore. It certainly used to be the case that nightly had all the cool features everyone wanted, but almost all features that popular crates depended on have now been stabilized. Even Rocket (the most high-profile holdout I know of) now works on stable as of earlier this year. As for maintenance, as with all library ecosystems it’s a mix. The most popular crates tend to be the most well-maintained in my experience. This is definitely something to consider when taking on new dependencies.
- swsieber 6y agoMany things that used to nightly don't anymore. I think the only thing I'm using on nightly is Rocket, and that's set to change soon. May I ask what it was?
- throwaway78123 6y agoparquet-rs: to read or write parquet files, cf the Arrow project: https://news.ycombinator.com/item?id=23966150 https://news.ycombinator.com/item?id=23966150 where one person asking about triggered a ticket in Arrow's JIRA. I am not holding my breath (a 2.5 years old issue on Github about the exact same thing appears to be dead: https://github.com/sunchao/parquet-rs/issues/119 https://github.com/sunchao/parquet-rs/issues/119) The web framework situation has also been a problem for quite some time. No clear stable equivalent to jetty, flask, go's net/http. Great that Diesel (which looks great) is making it to stable. I really wished it was stable 3 years ago. On that note it would be great if crates.io would have stable/nightly compatibility as a primary concept/badge/filter. I can't think of any other mechanism to nudge library developers into supporting stable as a first class citizen.
- swsieber 6y agoI would love the stable/nightly badge on crates.io, that's a great idea. OTOH, it is nice that some libraries use nightly though because that provides some nice feedback. That said, some crates hide nightly only functionality behind a feature flag, and that'd be great to expose too. The web frameworks seem to be coming along nicely. I think the main reason for stagnation was the unstability and flux around async. Actix (stable), Warp (stable) and Rocket (stable in the next major release as all nightly features have stabilized) seem to be the strongest contenders at this point.
- steveklabnik 6y ago> (stable in the next major release as all nightly features have stabilized) I initially misread this comment; what you are saying (and what is true) is that all the features it was using are now stable, but the version that uses them hasn't been released yet. I initially thought you were saying "once all its features are stable."
- LoveHateRust 6y agoThat matchtes my observations. There's no doubt that Rust as a language checks all the marks (the complexity of Rust is IMO unavoidable providing such a feature set). What most discussions about the greatness of Rust miss: 1. Not language features, but teams and processes make successful projects. 2. Stability, matureness and a great standard lib like Go or ecosystem like Java beat language features. Rust is a great playground for enthusiasts. But for your production apps you're probably better advised to use the boring stack.