3 ms·
Not possible for the same reasons why just adding a borrow checker to C++ isn't possible. Mostly this comes down to incompatibility with existing code. Zig is j
by pcwalton 5y ago
Not possible for the same reasons why just adding a borrow checker to C++ isn't possible. Mostly this comes down to incompatibility with existing code. Zig is just not memory safe, and the only solution would be to add a GC.
- surajrmal 5y agoIf you don't consider Swift style Automatic Reference Counting a GC, then there is another option.
- dnautics 5y agoThis is a very bad take. By your argument there's no reason why sel3 should exist, which is written in C and safer than rust.
- pcwalton 5y agoAssuming you mean seL4, that was formally verified by taking a manual specification of the L4 kernel and laboriously proving that the C code implements that specification. That is not at all what the compiler's lifetime/borrow check subsystems do for Rust. They know nothing about what the program is supposed to do; they only check that some relatively-simple rules are followed. That's why Rust requires so much less effort on the part of the programmer than formalisms that aim to prove programs correct.
- dnautics 5y agoNobody is arguing anything on the level of doing a full on Sel4 -- but Sel4 does have generalized no memory leak, no uaf guarantees as a subset of all specification proofs, so my point "memory safely is possible to bolt onto even C" is still valid.
- kobebrookskC3 5y agofeel free to keep writing c, as long as you prove all your code memory safe. i'm gonna take a stab and say writing rust is easier.