News for hackers. Stuff that matters.
Re:Unsafe Zig Is Safer Than Unsafe Rust by bjourne on Wednesday January 24, 2018 @07:20PM (#16227637)
On 64bit Linux, stack frames are always aligned at 16 byte boundaries. The first 8 bytes of the frame contains the return address then there are 8 bytes of padding and then comes the stack allocations.

I think the example is poorly constructed, because it is inconceivable that the address to the start of an array would not be aligned sizeof(int*) bytes.

Re:Unsafe Zig Is Safer Than Unsafe Rust by dbaupp on Wednesday January 24, 2018 @07:31PM (#16227702)
The example is illustrative enough: all the array needs to be misaligned in practice is a small value on the stack near it, e.g. if the Rust code has `let x: u8 = 1;` inserted after the array (or, I imagine, `uint8_t x = 1;` in the C, etc.), then the array's address is odd.
Re:Unsafe Zig Is Safer Than Unsafe Rust by bjourne on Wednesday January 24, 2018 @07:55PM (#16227835)
Why would it be? I tried it with msvc and it always manages to put arrays in stack frames at 8 byte boundaries. I can't see why a compiler would not do that.