Linux has technical debt. The kernel only just stopped supporting the i386. I can’t imagine what patches upon patches were required to make the same code run on even 2 processors released 40 years apart, let alone every processor released in between.
It’s the same with Windows. I worked on minkernel and onekernel. There are a ton of pre-processor directives for different cpu’s and all kinds of hardware pre-processor directives. Even pre-processor directives for different companies. Unused code paths are eliminated during compile time. The pre-processor directives are more of an annoyance for the developers anyways. If you didn’t organize your code, then you get what you deserve.
Linux has technical debt. The kernel only just stopped supporting the i386. I can’t imagine what patches upon patches were required to make the same code run on even 2 processors released 40 years apart, let alone every processor released in between.
It’s the same with Windows. I worked on minkernel and onekernel. There are a ton of pre-processor directives for different cpu’s and all kinds of hardware pre-processor directives. Even pre-processor directives for different companies. Unused code paths are eliminated during compile time. The pre-processor directives are more of an annoyance for the developers anyways. If you didn’t organize your code, then you get what you deserve.