Re: x86 Train Wreck
174 feature flags is a bit misleading, though:
- a large fraction of them are only of concern to an operating system kernel, are already handled by existing kernels, and that handling is encapsulated so that end users will never know a thing (except possibly some resultant performance or capability difference)
- many are for extremely obscure or forgotten features which never caught on and simply won't be of interest
- most of the rest are captured as large groups under the headings of 'x86_64 v1' through 'v4', as overarching compile-to targets available to OS distributors, software designers and builders
Somewhat orthogonally, other groups of such flag-related decisions are encapsulated into various libraries. If you need to do some sort of SIMD math, you can write your own x86 assembly using SSE, AVX, AVX-512, etc. -- or you can use one of many many libraries which encapsulates the conceptual operations. The library 'knows' about the various CPU instruction families (and in some cases, also, how to outsource this to a GPU, NPU, or whatever newfangled whatsit is available); knows how to spot-test for presence and then spot-benchmark for performance, and therefore, how to use whatever's available, to best effect.
So yes, all that throbbing complexity exists in the background; and you *can* engage with it if you really insist on it; but there's also a huge existing software ecosystem which hides most of the complexity, should you choose to go that route.
And as mentioned elsewhere in this discussion, ARM is certainly not free of such things. There are lots of generations of the ARM Instruction Set Architecture, each of which has plenty of optional design-in extensions. If you told me that the overall level of complexity is lower -- using a headline figure like 'there are only 67 architectural flags to be aware of' (number pulled out of thin air) -- I would believe you. It's still a level of complexity which demands support in the OS kernel, compiler, libraries, etc. Overall it might be a little bit smoother, but this is really a minor quantitative difference, not qualitative.