Re:Why Is SQLite Coded in C and not Rust
by nubbler on Tuesday October 14, 2025 @10:10PM
(#45587321)
In the first case, if it is actually unreachable, I would never want that code ending up in my binary at all. It must be optimised out.
Your second case implies that it is reachable.
Re:Why Is SQLite Coded in C and not Rust
by thayne on Wednesday October 15, 2025 @11:38AM
(#45594240)
In the first case, it often is optimized out. But the optimizer isn't perfect, and can't detect every case where it is unreachable.
If you have the second case, I would much rather have a panic than undefined behavior. As mentioned in another comment, in c indexing an array is semantically equivalent to:
if (i < len(arr)) arr[i] else UB()
In fact a c compiler could put in a check and abort if it is out of bounds, like rust does and still be in spec. But the undefined behavior could also cause memory corruption, or cause some other subtle bug.
If the check never fails, it is logically equivalent to not having the check. If the code isn't "correct" and the panic is reached, then the equivalent c code would have undefined behavior, which can be much worse than a panic.