Ferrocene – Rust for Critical Systems
ferrous-systems.com
ferrous-systems.com
I have minimal Rust experience, but I really enjoy nearly everything about it. Except for the large dependency trees I am likely to pull in when building something more complicated than Hello World. Impossible to feel safe that all of that code has not been compromised.
[0] https://github.com/mozilla/cargo-vet
[1] https://opensource.googleblog.com/2023/05/open-sourcing-our-...
Second, the situation isn't appreciably better if you count by authors for c/c++. Running nm or whatever on a decent sized modern c++ thing is enlightening. Much of that is plastered over by the lack of a coherent package manager for those languages, so you end up using thebpackage manager for whatever distro your container is and you think "well thats all just RHEL stuff, I'm sure they vetted it"... but grpc by itself has a dozen or so dependencies not counting the ones it expects from the os. And that is a long list too. So we are in this situation with any language. Rust just makes it easy to see, which is good.
Cargo deny can block your pipeline on cves (or a license you don't want) popping up in your dependency tree. If you pin to a hash, and stick with it until you need a new feature or a cve appears, then that is about as safe as you can be right now. Austral has granular permissions for packages which would be even better, but it isn't here yet.
Lastly, the list of crates that get used to build rust itself is quite long, and I would presume some paths through those libraries got very closely inspected for the certification. Crates like tokio and clap and yesh num-cpus.
It's really quite amazing what the team there has done and I'm looking forward to this perhaps bringing some new eyes to where and how Rust might be used.
I actually hope there's inspiration for the other side of the fence. ISO 26262 ASIL D ought to be a higher bar than it is, it's not at all clear to me that "Oh yeah, off the shelf general purpose languages can do ASIL D" is the right setting of expectations, but that's where we are today. I'd be more comfortable if for these roles (this is software which if it malfunctions might literally just kill a whole bunch of people) we were demanding a bit more, maybe a lot more, than is currently in that ISO document.
Are there specific things you think should be in these standards? For a compiler I mean, there are things you'd require of deployed asil d code you don't really care about for a compiler. Like, if the compuler panics, that is probably fine. If my ABS controller panics, it isn't.
Special Purpose languages are very narrow, they solve one problem and they solve it really well, but if you have a different problem then too bad. I think we should use these much, much more often, and we should have many more of them, but we don't and for the foreseeable future we won't.
Because a Special Purpose language only solves a narrow problem it often gets to sidestep lots of horrible Computer Science problems which arise for general purpose languages. To revisit our chainsaw analogy, while using a chainsaw to cut the tags out of your new shirt has lots of opportunities for truly life altering (or ending) accidents, if we use instead a tool that's purpose made the potential accidents are trivial. Oh no, I slipped while using the tag removal tool and... didn't remove the tag. Better try again.
That's very low pricing. They won't be able to afford to support development if they price that low. It actually decreases confidence that their company is legit to see prices that are that low.
Yes, there is nominally an enterprise sales pathway, but ferrocene wouldn't succeed there. That has a lot of difficult prerequisites and specific timelines that involve convincing manager's manager's (managers) that X is worth the cost and isn't going to have weird licensing terms e.g. preventing us from compiling open source code (a real limitation I've seen). The quickest way through that pipeline is if we already have a bunch of internal usage on prior projects to point to, or well-known public usage.
Let's say they were to sell just that one compiler version for 5-10 years. Then they need 800 licenses (which for developers of certified products, is actually quite a few) to make back the 2 million over 10 years.
Suggestion: maybe a better possibility would be: find one customer who will pay at least a few million dollars. Then list the pricing as 'contact us' while they find a couple other large customers. Don't publish the low price/seat or the bigger customers may ask for lower prices.
Open Sourcing Ferrocene - https://news.ycombinator.com/item?id=37767525 - Oct 2023 (19 comments)
Ferrocene update - https://news.ycombinator.com/item?id=37711274 - Sept 2023 (14 comments)
How Ferrocene Improves Rust - https://news.ycombinator.com/item?id=37465484 - Sept 2023 (1 comment)
A Decade of Rust, and Announcing Ferrocene - https://news.ycombinator.com/item?id=36785318 - July 2023 (47 comments)
Ferrocene: Rust toolchain to safety-critical environments - https://news.ycombinator.com/item?id=32237780 - July 2022 (32 comments)
The Ferrocene Language Specification - https://news.ycombinator.com/item?id=31582469 - June 2022 (5 comments)
Ferrocene: Road to Rust in mission and safety-critical software development - https://news.ycombinator.com/item?id=27641160 - June 2021 (2 comments)
Ferrocene Part 3: The Road - https://news.ycombinator.com/item?id=26260519 - Feb 2021 (1 comment)
Software developer Graydon Hoare created Rust as a personal project while working at Mozilla Research in 2006. Mozilla officially sponsored the project in 2009.