News for hackers. Stuff that matters.
Re:“Rewrite It in Rust” Considered Harmful? [pdf] by marcosdumay on Thursday May 25, 2023 @11:50AM (#36072309)
Yes. It allows for more control over memory than C, where a lot of things are undefined behavior.
Re:“Rewrite It in Rust” Considered Harmful? [pdf] by fasterik on Thursday May 25, 2023 @03:22PM (#36074928)
"More control over memory than C" is nonsense. C allows you to do anything the machine's instruction set is capable of, all the way down to inline assembly.

Undefined behavior is a completely separate conversation. UB is necessary to output performant code. If dereferencing a null pointer were defined behavior, then the compiler would need to insert a check for every dereference, which would slow down your code.

Re:“Rewrite It in Rust” Considered Harmful? [pdf] by marcosdumay on Thursday May 25, 2023 @10:41PM (#36079110)
> C allows you to do anything the machine's instruction set is capable of

Hum, no, unless you count inline asm, it simply doesn't.

And for more control over memory than C, Rust allows mapping high-level types into fixed memory, so the compiler can actually use the correct asm primitives and make your access fast. On C you either have to use a general purpose array abstraction or try to map your types over the memory and pray the compiler resolves all the UB the way you want. Most C developers do the later.

Re:“Rewrite It in Rust” Considered Harmful? [pdf] by fasterik on Friday May 26, 2023 @12:39PM (#36086472)
I have no idea what you're talking about with "general purpose array abstraction" and "map your types over the memory". A struct in C is just a fixed size chunk of memory where the fields have a fixed offset. Access is a simple memory read/write. An array in C is also just a chunk of memory, where subscripting is some simple pointer math. There is no UB involved. If you could give a concrete example of what you're talking about and why it's better in Rust than in C, that might be helpful.