По сути, вы включаете какой-то механизм версий (как правило, с большей степенью детализации, чем просто ограничения для низких / высоких версий), и вы пытаетесь сохранить интерфейсы отдельными и "ортогональными".Но многое зависит от того, на какой стороне интерфейса вы находитесь.Со стороны «потребителя» вы можете сделать только очень многое.
IBM System / 38 и его потомкам удалось сохранить совместимость таким образом, чтобы программы, скомпилированные в первом выпуске, можно было запускать без перекомпиляции 30 лет спустя (и через две ревизии из набора машинных инструкций вторая довольно радикальная).Но это необычный случай довольно хорошего (хотя и не идеального) оригинального дизайна в сочетании с довольно сильной мотивацией (крупные банки, которые тратят много денег на системы) для поддержания совместимости.
На уровне персональных компьютеров многих разработчиков систем это не волнует, поскольку несовместимость продает больше обновлений программного обеспечения, что, в свою очередь, продает больше оборудования.