
On Thu, 2020-01-30 at 19:08 +0300, Matwey V. Kornilov wrote:
Just came across an interesting blog post[0] it contains:
""" The 32-bit x86 Rust compiler also targets the "i686" CPU architecture. Sortof. Rust doesn't actually work on these processors, despite claims, because it actually targets the Pentium 4 processor, by using SSE2 instructions that were first introduced on that chip. If you try to run it on a real i686 (a Pentium Pro, Pentium II, or Pentium III), it will try to execute SSE2 instructions which that chip knows nothing about, and crash. """
This post is five years old. I hope the things changed since then. Anyway, I think that if rust generates SSE for i586 target, this should be reported upstream. It is a bug. Or there should be an option to disable. Go compiler may be tuned not to use SSE for i386 go target.
yes, sure, the post is old, so things might have improved (or not: the systems he claimed as old 5 years ago are now - about five years older) But one thing we often fall into the trap is that, just like webkit2gtk3, things tend to check at build time what the processor is capable of and build the binaries accordingly. Do I need to say that OBS has quite new workers and not a single, real, i586 CPU? :) That's what Jan meant with his shout-out that such things should be checked at runtime, not at build time (one of the first replies in this thread) Cheers, Dominique