9 ms·
Interesting that the only con listed for Rust is Not enough people are using it, compared to the serious criticisms of the others.
by aphextron 7y ago
Interesting that the only con listed for Rust is Not enough people are using it, compared to the serious criticisms of the others.
- sk0g 7y agoPretty much every con in Rust is some variation of (we | others) don't use Rust enough. Interesting to see! Would have assumed the Kernel would be where Rust truly shines, but that's where it's blocked, which is... interesting!
- kvark 7y agoGood to know! I'll look for an OS written in Rust elsewhere then. Fuchsia is interesting, but could be much more so.
- bluejekyll 7y agoIf you want to learn to write an OS in Rust, checkout this series: https://os.phil-opp.com/ https://os.phil-opp.com/ For an os project fully in rust and targeting end users, check out: https://www.redox-os.org/ https://www.redox-os.org/
- monocasa 7y agoGiven that they already have a microkernel written in C++ (zircon is derived from littlekernel), and they're trying to move as much as possible outside the kernel, it makes sense that (for the time being) adding a new kernel language isn't on the table.
- bsder 7y agoI'm not very happy to see C++ infecting more and more system software when it STILL IN 2020 doesn't have a stable FFI/ABI. This is going to bite us ALL in the future because it will saddle other languages with a useless set of constraints long after C++ gets removed from a project.
- monocasa 7y agoThey don't want to add loadable kernel modules (but instead go pretty strict microkernel), so what would an unstable FFI/ABI really matter?
- jcranmer 7y agoWith the exception of the change to std::string in C++11, which was very, very carefully worked around so that C++11 code can handle C++03-ABI std::string, there have been no changes to the ABI implementation since the Itanium ABI was adopted by gcc almost two decades ago. How is that not a stable ABI?
- flukus 7y ago> How is that not a stable ABI? Because it's an ABI with several severe constraints, especially around the more OO features and templates, plus the solutions introduce even more abstractions: https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B https://community.kde.org/Policies/Binary_Compatibility_Issu...
- pjmlp 7y agoAll ABIs define similar set constraints, specially when the programming languages are a bit more expressive that pseudo-assembly.
- 7y ago
- anp 7y agoRust binary size can be pretty painful, depending on what you're doing. Also, it doesn't look like that document is receiving regular updates, so grain of salt and all.
- est31 7y ago> it doesn't look like that document is receiving regular updates It was checked into git yesterday.
- hu3 7y agoIt's worth noting that Go and Dart were characterized as "highly productive" whilst Rust wasn't.
- ShinTakuya 7y agoAbsolutely, I don't think any sane Rust zealot would argue that Rust can compete with Go/Dart productivity. The argument can be made that Rust code has a lower maintenance cost over time, though, and that productivity may not drop as much as the system becomes more complex. Even with this relative improvement, though, I question if it's enough to overcome the shorter compile and test loop the other languages have, or the mental overhead of managing lifetimes and ownership.
- melling 7y agoRust sounded like it was close: “ Rust is not supported for end-developers. Rust is approved for use throughout the Fuchsia Platform Source Tree, with the following exceptions: kernel. The Zircon kernel is built using a restricted set of technologies that have established industry track records of being used in production operating systems.” That’s better than Go, which is not supported.
- foota 7y agoThat's probably in part demand driven? I.e., there's little need for rust to be supported officially for end users.
- dodobirdlord 7y agoMoreover, C is supported for end users, and if C is supported then Rust is de facto supported though C bindings, which Rust understands natively.
- pjmlp 7y agoSomeone will have the fun of writing those wrappers, because Google won't do it. Likewise a future Fuchsia Studio won't support templates, debugging, or OS libraries written in Rust. And the Fuchsia team most likely won't prioritize toolchain bugs related to Rust. This is the biggest difference between using an official SDK language and guest languages.
- zozbot234 7y agoRust doesn't have a stable ABI, so it's sensible to always go through C bindings anyway. The other things you mention are just a matter of what their future Fuchsia Studio chooses to support.
- ztjio 7y agoThe majority of the code in the project is already written in Rust. If we're judging Rust based on its acceptance in Fuchsia for some weird reason, it's doing very well. Doing the best, in fact.
- brianpgordon 7y agoThat doesn't seem like a non-serious criticism to me. They're trying to build something huge that's of immense strategic importance looking forward potentially decades. It seems appropriate to adopt the utmost caution about incorporating a language that's promising but for which widespread traction might not materialize as expected. Though to be fair, the same (and more) might be said of Dart...
- ollien 7y agoYeah, but when something is built in-house like Dart is, I imagine there's some level of support the Fuchsia team will get.
- roca 7y agoThe world of paid Rust language contributors is so small that Google could easily get all the advantages of "built in-house" for Rust if they spent a relatively tiny amount of money. Being pretty conservative overall but betting the house on Dart for the UI seems like a strange combination of decisions to me.
- toastal 7y agoIs there a conspiratorial side of Mozilla vs Google in this Rust vs Dart story?
- usrusr 7y agoThe languages are as different as Python and C++, I honestly don't really see a Rust vs Dart story. Note that Rust is approved for use within much of the source tree, but outside it is only not supported. Johnny end-developer, whoever that is, could still use Rust if he insisted, coding against C bindings.
- pjmlp 7y agoJust like it happens in Android. If Johnny doesn't like JVM languages, or C++, all they get is a bare bones C API, which requires JNI even for opening files, asking for permissions and so forth.
- bassman9000 7y agocompared to the serious criticisms of the others Adoption and community are one of our top factors. It's a pretty serious one, IMHO. EDIT: our as in our company. Not in any way affiliated to Fuchsia.
- badsectoracula 7y agoThe reasoning does sound serious: "The properties of the language are not yet well-understood, having selected an unusual language design point (e.g., borrow checker) and having existed only for a relatively short period of time". It isn't just "it isn't popular thus it is not good" but "it does something weird that no other language does and because few people use it, we haven't yet figured out what potential issues that weird part may have".
- bluejekyll 7y ago> does sound serious Do you mean legitimate, instead of serious? The issue you point out sounds more like technical debt and verification/specification rather than something that can’t or won’t be overcome.
- badsectoracula 7y agoYes i meant legitimate, though i'm not sure why you say that it sounds like technical debt. I'd say it is the opposite - trying to avoid technical debt that could happen by betting on something unknown and instead staying on the safe side.
- bluejekyll 7y agoI meant technical debt for the Rust project, not for fuchsia. I don’t disagree, Fuchsia would end up incurring this debt in the kernel too. I would say, that as debt goes, this seems like something not egregious, but I can understand not wanting to take it on. But, with every passing year and no significant flaws having been discovered (I mean language destroying not some of the unsoundness bugs that exist), empirical evidence is getting stronger and stronger that Rust has an excellent model.
- mirekrusin 7y agoAfter having 2.2 million lines of code in rust in their project they should know a bit better imho; that's more than any other language they use; with go they knew quite quickly it's not good for them.
- ReptileMan 7y agoSorry, but that was not the only con. The other were that the design was unusual and it is not yet understood. And not enough people are using it is devastating critique of a language - every piece of code written will be read by someone eventually. And you want that pool to be as big as possible. To me it seems Google are cautiously bullish on Rust.
- zbraniecki 7y agoI agree with your summary. My worry comes from the fact that a computer system of the scale of Fuchsia comes up every couple decades. I'd like not waste another one on C++ shortcomings and Fuchsia going with Rust was a great chance for a better dominant language in 20ties.
- _-___________-_ 7y agoThe microkernel is a pretty small component. It's like if 80% of the Linux kernel was Rust and 20% was C++.
- EamonnMR 7y agoNotice that they omitted the "highly productive" claim thy applied to Dart and Go.
- zelly 7y agoThere isn't a lot of good software written in Rust, open source or not. It's a lot of small and half-finished stuff here and there. The actual software out there is the ultimate, unforgiving, unfraudable review of a language, not what people say. Developers seem to like Rust (or at least pay lip service). It's understandable. We are all suckers for a golden hammer. Rust promises no data races, no dangling pointers, high performance, and best of all it can run on numerous targets, making it a contender for The Last Language you have to know. But you don't judge a restaurant's performance by the holiness of the chef's choice of tools in the eyes of other chefs. What is the most profitable piece of Rust software or the piece of Rust software that the most people depend on? If it wants to be taken seriously at the systems programming table, then we should see the Unix coreutils written in Rust (with all the command line flags working exactly the same way). Come on, replace GNU. You say you can do it faster and safer than everyone else. Let's see it.
- dodobirdlord 7y ago> There isn't a lot of good software written in Rust, open source or not. It's a lot of small and half-finished stuff here and there. Perhaps you and I have very different definitions of "a lot" or of "good", because I don't agree with this at all. There are plenty of high profile Rust projects with excellent production track records. Linkerd, TiKV, and Firecracker (originally crosvm) come to mind immediately, and of course Servo. Facebook also selected it for Libra, Google for Fuchsia.
- zelly 7y ago> half-finished Literally all of the things you mentioned (except linkerd which is mostly Go) are half-finished incubator projects. Rust has been around for over 10 years. Come on.
- kick 7y agoThere is literally no Rust in the main repo: https://github.com/linkerd/linkerd2 https://github.com/linkerd/linkerd2 https://github.com/linkerd/linkerd https://github.com/linkerd/linkerd It's confounding how a project that doesn't include Rust is included in Rust's "Greatest Hits." Citing a cryptocurrency that...for all intents and purposes, doesn't really exist right now, is also a strange choice.