Remix.run Logo
▲ _flux 2 hours ago

I think the difference is here:

- If a compiled C++ program has unsound behavior, the program needs to be fixed

- If a compiled safe Rust program has unsound behavior, the compiler needs to be fixed

▲bonzini 25 minutes ago | parent | next [-]

> - If a compiled safe Rust program has unsound behavior, the compiler needs to be fixed

Not really: the program still needs to be fixed, but fixing the compiler ensures that this unsound behavior never happens again for everyone.

▲jooops1 an hour ago | parent | prev | next [-]

That's not completely correct. If the Rust or C++ compiler has a bug in both cases either the compiler has to be fixed or the program can be adjusted to work around said compiler bug If possible. However, It's fair to argue that the Rust compiler makes more assertions and is more complex, which results in a larger error surface.

▲afavour an hour ago | parent | prev | next [-]

Which is better, surely? One fix for every program written in Rust vs everyone having to fix it themselves…

▲devmor 2 hours ago | parent | prev [-]

> If a compiled safe Rust program has unsound behavior, the compiler needs to be fixed

Can you provide an example of such a program that can’t be fixed at the program level like a C++ example?

▲_flux 2 hours ago | parent [-]

Sure, usually the program can be changed to avoid the issue, but the key here is that the Rust compiler is wrong and needs to be fixed. Once fixed, the actual program fix also falls in place, as it cannot be compiled anymore.