I’ve got an ARM Mac. I’ve got ARM VPSes from Hetzner, and I’m compiling native code for the server.
It’s definitely easier to develop, build, and test on the same architecture, than to deal with cross-compilation and emulation.
So I think Linus is right.
Only signed overflow. size_t is unsigned.
I don’t know about C++, but in Rust the push is inline, and still doesn’t always optimize checks away due to an annoying edge case: integer overflow. Reserving (old_len + new_len) could give you a smaller buffer than new_len. The optimizer sees it and is pedantic about it.
I like to say I don’t have a pile of unfinished projects and half-abandoned hobbies. I’m just working in the style of the great Leonardo.