FWIW Nintendo's Horizon OS is also built from scratch (and isn't Unix at all), and has also shipped on a massive amount of units (over 110M as of 2022). (and it happens to have a libcurl port)
Tried -fno-builtin-malloc on a hunch and it does seem to prevent the zero-initialisation logic from getting optimised away: https://godbolt.org/z/xWbEqcenn musl probably uses -fno-builtin to disable any special handling…
Rosetta is faster than native in that case because the AArch64 JIT has to fall back to the interpreter for memchecks (unlike the x86-64 JIT).
FWIW Nintendo's Horizon OS is also built from scratch (and isn't Unix at all), and has also shipped on a massive amount of units (over 110M as of 2022). (and it happens to have a libcurl port)
Tried -fno-builtin-malloc on a hunch and it does seem to prevent the zero-initialisation logic from getting optimised away: https://godbolt.org/z/xWbEqcenn musl probably uses -fno-builtin to disable any special handling…
Rosetta is faster than native in that case because the AArch64 JIT has to fall back to the interpreter for memchecks (unlike the x86-64 JIT).