| > when I point to the fact that the Rust codebase itself has a lot of "unsafe" places One of the criteria for being in the standard library is "is this something which needs a lot of unsafe." This is so it can receive extra auditing, etc. > yes, but it's an old code This may have been true a while ago, but in my understanding (I'm not on the library team) it isn't really any more. > why should any other project have more time than that Because they do not need to write their own unsafe code, since it's already done in the standard library. Generally speaking, applications in Rust should almost never need unsafe. Libraries may. > a fast Rust code example also typically has an "unsafe" code. This is not really true anymore; in fact, recently some programs were contributed that are 100% safe yet are faster than their previous, unsafe-using versions. > believe that the language should simply implement a language-level no-cost check for integer overflow This is not viable. Not enough machines have this. > Writing unsafe Rust instead of unsafe C is not giving you any real advantage for the existing projects, as long as the state is as it is. Unsafe Rust still has many, many more safety checks than C. > Also, look how Rust uses TLS. Is safely rewriting a crypto library which is useful in real project still a too big task to be taken? https://crates.io/crates/ring ? |
Of course they have. It's a basic set of machine code instructions. Can you specify which doesn't please?
> One of the criteria for being in the standard library is "is this something which needs a lot of unsafe."
Do you honestly think a project like curl has everything it needs "which needs a lot of unsafe" already implemented in the current standard libraries?
Why don't you rewrite the curl in Rust then, it's just using what's already written? Let me know how far you come.
> https://crates.io/crates/ring ?
Does it have all the features that curl needs, or does curl still have to use a Rust wrapper around openssl, inheriting all the potential unsafety problems of openssl anyway? What is worth then, in percentage, having anyway less exposed part of the code in Rust? How many other wrappers curl has to use? Have you tried to check and estimate if it's still worth?
Once again, Rust people should first demonstrate that they can manage to make any relevant library "cleanly" safe, then complete the feature set, and only then expect big non-trivial programs consider using some Rust.
First make the basics safe, then let us use that basics. Once you have save openssl equivalent, even C programs can link to it and be much less exposed to the potential problems than they are now. It's that direction that only has sense.