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.
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.
This means that while the overall project is used outside of Fuchsia, google is contributing upstream patches, to many of those projects specifically to support Fuchsia. At that point it’s not a clean separation of what’s “in house” vs. not.
Con: None of our current end-developers use Rust.
Being pretty conservative overall but betting the house on Dart for the UI seems like a strange combination of decisions to me.
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.
You don’t get Flutter without Dart. Anyone that’s ever looked at what is behind any Flutter component can see the Dart code building it.
You literally can not bet on Flutter and not Dart. Don’t confuse Flutter as some DeclarativeUI of its own.
EDIT: How we that’s not to say the cart can’t lead the horse (good analogy). Flutter requirements are definitely driving changes in Dart Lang.
Flutter demonstrates Dart is a good choice; it gives you a successful declarative UI framework that effectively builds on Dart as a fairly straightforward upgrade of the most tried and true UI scripting language ever made: Javascript.
To answer the GP comment, betting the house on Dart for the UI doesn't seem like a strange or risky decision in that light.
Yea. Before using Flutter, I probably wouldn’t have agreed. After using, I can’t disagree at all.
It still seems incongruous that widespread usage is portrayed as an important criterion for Fuschia PLs, but they bet big on Flutter which forces them to adopt Dart, a language which has very little uptake outside Flutter.
Rust, on the other hand, is treading new ground with the unusual core concept of a borrow checker.
And still the decision on Rust reads very much like a "we'd love to extend the scope of the time is right" whereas the dismissal of Go is surprisingly brutal, almost reads as if there was a cold civil war going on between the two garbage collected Google languages and Fuchsia people feel need to to demonstrate loyalty to their Darters. Might even just mirror an equal dismissal regarding server side Dart.
That'd be my guess. Given the nature of Flutter and its co-development with Dart it's not surprising that Fuchsia prioritizes it. After all, you need to implement the UI in something. Meanwhile I have literally never heard of a UI implemented in Go, and outside of the UI I can see why they don't want to use garbage collected languages in their OS.
I expect it has the same issue as UI in Rust: UI is one of the domain where OO inheritance is most convenient and most deeply embedded. So langages which don’t do inheritance are hard sells.
Newer “declarative” UI frameworks less so but they’re probably not mature enough conceptually that you’d want to bet your OS’s core UI system on them, right now they’d be used as an overlay on the core stateful UI system (see bodil’s vgtk for example).
This seems like an exaggeration. Maybe Fuchsia will turn out to be important, maybe it won't. As of right now, it's another Google vanity project that makes them no money.
It could turn out to be enormously strategically important by allowing Google to drive a stake through the heart of Linux on consumer devices...or just as easily get killed tomorrow.
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.
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.
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.
https://github.com/linkerd/linkerd2 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.
> Today, Lambda processes trillions of executions for hundreds of thousands of active customers every month. Last year we extended the benefits of serverless to containers with the launch of AWS Fargate, which now runs tens of millions of containers for AWS customers every week.
> Battle-Tested – Firecracker has been battled-tested and is already powering multiple high-volume AWS services including AWS Lambda and AWS Fargate.
That doesn't sound like a half-finished incubator project.
I'm not blind. I can see that Rust has its major downsides, and the zealotry you see is on HN and elsewhere is downright annoying. But dismissing it based on age is being disingenuous. There was another list of projects elsewhere in this comment thread which listed a number of things being used in production that can't be considered half-finished by any measure.
While I'm not convinced that implementing an identical API to coreutils is necessary to be "taken seriously" as a systems programming language, there's a fairly far along implemention that already exists:
You've got:
* Every page load of Firefox
* Every page served of Reddit
* Every byte stored in dropbox
* Every user of 1password's browser extension, and every user of their Windows client.
* Every HTTP/3 request served through Cloudflare (okay HTTP/3 is still a baby but, the future here)
* Every DNS request of every user of the 1.1.1.1 mobile app (hundreds of thousands of installs)
* Every invocation of AWS Lambda and Fargate
* 4% of Debian packages
* Every control-F in Visual Studio: Code
* Every time a user list changes in Discord, also other things.
... so, yeah. Take your pick.
Find in project is really awesome in VSCode.
“ 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.
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.
Calling it the "majority" or "doing the best" is probably coming off as disingenuously impling "most significant". Sloc dosn't meet anyone's idea of that.
Would have assumed the Kernel would be where Rust truly shines, but that's where it's blocked, which is... interesting!
For an os project fully in rust and targeting end users, check out: https://www.redox-os.org/
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.
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_Issu...
Most higher level languages (java, c#, python) handle most of those much better, albeit with a different set of trade offs. Things like adding a private field to a class won't break binary compatibility in a c# apllication. C++ is fairly unique in that it tries to be high level and tries to be low level but the cost is it pushes the complexity of this split personality onto the developers.
[1] I could see the committee standardizing some intermediate portable representation requiring installation time or even JITing in the future though.
You can say it's good enough (most of the time), but it isn't really a standard, unless I am mistaken.
> 9.1 C++
> For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
The Itanium ABI is the official C++ ABI on Unix systems. (Note that this same document officially documents the C ABI).
The standard library ABI it is not covered the the Itanum ABI (outside of some basic functionality), but it is defined necessarily by the platform. For linux that would be libstdc++.
The LSB references the Itanium ABI and defines libstdc++ as the ABI for the C++ standard library on linux platforms; it is again not an ISO standard, but it is as close as you can get on Linux.
And of course the C++ ABI being a very complex and both the ABI document itself and compilers have bugs from time to time, especially if you live close to the bleeding edge.
I don't think Rust, Dart, or Go are any better.
In practice it seems C++'s ABI is called "protocol buffers".
https://fuchsia.googlesource.com/fuchsia/+/master/docs/devel...
There is a stable ABI inside some OSes, moreso than any wannabe C++ replacements.
Speaking of which, Rust is a very nice language, but still lacks many productive tooling that systems developers came to expect.
If anything this rationale is great input for the Rust community, how to improve the ecosystem.
It was checked into git yesterday.
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.
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.
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.
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.