Rust does a pretty damn good job of preventing memory and threading errors for example. If it compiles and there is no unsafe it will run. It may not do precisely what you want but it will run and not crash.
Rust does a pretty damn good job of preventing memory and threading errors for example. If it compiles and there is no unsafe it will run. It may not do precisely what you want but it will run and not crash.
Logic bugs are another class of bugs. Formal methods can help you with those though.
> It may not do precisely what you want but it will run and not crash.
To me, that's a bad thing. I'd rather my software fail entirely than give incorrect results.
So what did I read wrong?
It's not saying that it will provide wrong results in cases where it would crash otherwise due to memory errors.
Crashing is a useful tool when using the right language.
Unless you use a plethora of tooling that patches over these shortcomings, wrong C code doesn't crash reliably (and even then it's not finding everything, only most bugs).
Memory errors and threading bugs are never ever something you want.
Erlang is my go-to language when I have the freedom to choose, and it is explicitly designed to crash when there's a mismatch between the expected and current state.
So, I was indeed missing the point of the statement.