| > This is not viable. Not enough machines have this. 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. |
That they exist is not the problem. That they exist _and_ don't provide enough performance is the issue. That is, your "no cost" is what I'm asserting here, not that it doesn't exist at all.
(This is not my area of specialty but was brought up when discussing this behavior; it's measured as a 20%-100% hit to speed, which is unacceptable.)
> 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?
I don't think a project like curl needs much (if any) unsafe.
> 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.
I did not suggest that curl should be re-written in Rust. I do think a functional equivalent in Rust would be good to have. I do not have the time to write such a thing myself. Luckily, many others have been working on this kind of thing.
> does curl still have to use a Rust wrapper around openssl,
ring is a port of BoringSSL to Rust, piecemeal. It still has some C code today, but at the end, will be all Rust/asm. Given that BoringSSL is a fork of OpenSSL, I would imagine that it would have enough functionality.