4 ms·
> So Unsafe Rust from a UB perspective is no different than C/C++. If preconditions are violated, UB can occur Only if you actively disable panics being trigge
by selfmodruntime 2y ago
> So Unsafe Rust from a UB perspective is no different than C/C++. If preconditions are violated, UB can occur
Only if you actively disable panics being triggered if unsafe preconditions are triggered. In most code, the program will crash instead. Enabling default panic on up violation in production code was done last year, IIRC.
> Its unclear how the compiler could check anything about preconditions
It can't. This is done at runtime, by default and without manually needed programmer interaction.
You can see an example of this in the `ptr`module, here: https://doc.rust-lang.org/beta/src/core/ptr/mod.rs.html#1071 https://doc.rust-lang.org/beta/src/core/ptr/mod.rs.html#1071
Some are only enabled for `debug_assert` (which is enabled by default), see `ptr::read`, here: https://doc.rust-lang.org/beta/src/core/ptr/mod.rs.html#1370 https://doc.rust-lang.org/beta/src/core/ptr/mod.rs.html#1370
- bangaladore 2y agoThese seem to be beta features. But in any case it seems like its just doing some number of asserts to validate some preconditions. However, even at runtime it can't do anything to say if (excuse the C pseudocode) *(uint32_t*)0x1C00 = 0xFE is a valid memory operations. On some systems, in some cases it might be.
- selfmodruntime 2y ago> These seem to be beta features What? Where did you get that impression? > But in any case it seems like its just doing some number of asserts to validate some preconditions Yeah, like C code normally would, just in the STD in this case.
- bangaladore 2y ago> What? Where did you get that impression? https://doc.rust-lang.org/beta/ https://doc.rust-lang.org/beta/ > Yeah, like C code normally would, just in the STD in this case. Yes, in that manual checks are still needed. My point is unsafe code in rust is nowhere near safe and cannot be considered as safe without extensive analysis, no matter the language features used.