On Wed, 27 Mar 2024 at 11:51, Kent Overstreet <kent.overstreet@xxxxxxxxx> wrote: > > On Wed, Mar 27, 2024 at 09:16:09AM -0700, comex wrote: > > Meanwhile, Rust intentionally lacks strict aliasing. > > I wasn't aware of this. Given that unrestricted pointers are a real > impediment to compiler optimization, I thought that with Rust we were > finally starting to nail down a concrete enough memory model to tackle > this safely. But I guess not? Strict aliasing is a *horrible* mistake. It's not even *remotely* "tackle this safely". It's the exact opposite. It's completely broken. Anybody who thinks strict aliasing is a good idea either (a) doesn't understand what it means (b) has been brainwashed by incompetent compiler people. it's a horrendous crock that was introduced by people who thought it was too complicated to write out "restrict" keywords, and that thought that "let's break old working programs and make it harder to write new programs" was a good idea. Nobody should ever do it. The fact that Rust doesn't do the C strict aliasing is a good thing. Really. I suspect you have been fooled by the name. Because "strict aliasing" sounds like a good thing. It sounds like "I know these strictly can't alias". But despite that name, it's the complete opposite of that, and means "I will ignore actual real aliasing even if it exists, because I will make aliasing decisions on entirely made-up grounds". Just say no to strict aliasing. Thankfully, there's an actual compiler flag for that: -fno-strict-aliasing. It should absolutely have been the default. Linus