zlacker

[parent] [thread] 10 comments
1. layer8+(OP)[view] [source] 2022-10-02 16:41:42
That’s exactly my point. Rust’s definition of safety is a very specific one, and one has to be careful about what it actually implies in the context where Rust is employed. “Safety” isn’t a well-defined term for PL in general. “Soundness” is.
replies(2): >>avgcor+W7 >>UncleM+Ml
2. avgcor+W7[view] [source] 2022-10-02 17:26:18
>>layer8+(OP)
Memory safety is a well-defined term.
replies(1): >>layer8+19
◧◩
3. layer8+19[view] [source] [discussion] 2022-10-02 17:30:54
>>avgcor+W7
I agree, but that isn’t the term that was used here, and Rust proponents usually mean more than memory safety by “safe” (like e.g. absence of UB).
replies(2): >>avgcor+Mc >>veber-+SS1
◧◩◪
4. avgcor+Mc[view] [source] [discussion] 2022-10-02 17:50:53
>>layer8+19
Going through that thread (a few posts back) it seems that “Rust is safe” (as seen in this submission title) was stated first by Torvalds. It wasn’t mentioned first by a “Rust aficianado”. So you would really have to ask Torvalds what he meant. But his mentioning of it (and this submission) obviously alludes to “safe” claims by the Rust project. Which has always been memory safety.
replies(1): >>layer8+sf
◧◩◪◨
5. layer8+sf[view] [source] [discussion] 2022-10-02 18:05:58
>>avgcor+Mc
I disagree that “safe” as used by the Rust community is always restricted to memory safety, see my parent comment.
6. UncleM+Ml[view] [source] 2022-10-02 18:46:00
>>layer8+(OP)
> “Safety” isn’t a well-defined term for PL in general. “Soundness” is.

This is false. "Safety" and "Liveness" are terms used by the PL field to describe precise properties of programs and they have been used this way for like 50 years (https://en.wikipedia.org/wiki/Safety_and_liveness_properties). A "safety" property describes a guarantee that a program will never reach some form of unwanted state. A "liveness" property describes a guarantee that a program will eventually reach some form of wanted state. These terms would be described very early in a PL course.

replies(1): >>layer8+GK
◧◩
7. layer8+GK[view] [source] [discussion] 2022-10-02 21:31:48
>>UncleM+Ml
What I mean is that there is no universal definition of which properties are safety properties. In principle, you can define any property you can formally reason about as a safety property. Therefore, whenever you talk about safety, you first have to define which properties you mean by that.

In the context of Rust, there are a number of safety properties that Rust guarantees (modulo unsafe, FFI UB, etc.), but that set of safety properties is specific to Rust and not universal. For example, Java has a different set of safety properties, e.g. its memory model gives stronger guarantees than Rust’s.

Therefore, the meaning of “language X is safe” is entirely dependent on the specific language, and can only be understood by explicitly specifying its safety properties.

replies(2): >>avgcor+uM >>UncleM+oT
◧◩◪
8. avgcor+uM[view] [source] [discussion] 2022-10-02 21:43:56
>>layer8+GK
> Therefore, whenever you talk about safety, you first have to define which properties you mean by that.

Like “memory safety”?

replies(1): >>layer8+RQ
◧◩◪◨
9. layer8+RQ[view] [source] [discussion] 2022-10-02 22:14:36
>>avgcor+uM
For example. Rust has other safety properties beyond memory safety.
◧◩◪
10. UncleM+oT[view] [source] [discussion] 2022-10-02 22:32:22
>>layer8+GK
That's true for "soundness" too. Things aren't just "sound". They are sound with respect to something. So when you use "soundness" as a comparison against "safety", you'll have to understand how somebody could interpret your post in the way that I did.

Almost all discussion about Rust is in comparison to C and C++, by far the dominant languages for developing native applications. C and C++ are famously neither type-safe nor memory-safe and it becomes a pretty easy shorthand in discussions of Rust for "safety" to refer to these properties.

◧◩◪
11. veber-+SS1[view] [source] [discussion] 2022-10-03 08:24:16
>>layer8+19
absence of UB is literally memory safety.

Rust proponents mean exactly "memory safety" when they say rust is safe because that is the only safety rust guarantees.

[go to top]