Содержание
В Linux готовят отказ от x32 ABI — гибридного режима, который совмещал 64-битные регистры и 32-битные указатели. Разработчики обсуждают полное удаление поддержки из ядра, и при отсутствии возражений x32 ABI может исчезнуть к 2027 году.
О планах по вычищению x32 ABI рассказал Phoronix, ссылаясь на предложение инженера Sebastian Andrezj Siewior из Linutronix. По его оценке, режим устарел и так и не получил заметного применения с момента появления.
x32 ABI придумали в 2012 году ради экономии памяти
x32 ABI добавили в ядро Linux в 2012 году как попытку снизить расход памяти у 64-битных приложений. Идея выглядела рационально: оставить 64-битную вычислительную часть, но уменьшить размер указателей.
В x32 программа получает доступ к полному набору 64-битных регистров и трактов данных, но использует 32-битные pointers. Указатель — это число, которое хранит адрес данных в памяти. В 64-битном ABI он обычно занимает 8 байт, а в x32 — 4 байта.
Смысл был в том, что меньшие указатели уплотняют структуры данных. Это повышает шанс, что рабочий набор лучше уместится в кэшах CPU. На части задач это могло давать прирост скорости.
Почему x32 так и не взлетел
У x32 ABI с самого начала был набор компромиссов. Разработчикам приходилось держать в голове дополнительный вариант ABI, а компиляторам — поддерживать отдельный режим сборки.
Главная техническая граница тоже жёсткая: процесс в x32 не может адресовать больше 4 ГБ памяти, потому что указатели остаются 32-битными. Операционная система при этом может работать с объёмом памяти больше 4 ГБ, но конкретное приложение в x32 упирается в потолок.
И ещё один фактор оказался решающим. x32 внедрили только в Linux, без портов на Windows или macOS. В итоге у софта почти не появилось стимула поддерживать редкий режим ради ограниченного набора сценариев.
Siewior в своём предложении отдельно отмечает, что выигрыш в производительности не оказался достаточным. Для многих нагрузок он не перекрывал цену сложности и ограничений, поэтому разработчики не переходили на x32 массово.
Когда поддержку могут убрать из ядра Linux
Если в сообществе не будет серьёзных возражений, x32 ABI планируют удалить из ядра Linux к 2027 году. Речь именно о поддержке в ядре, то есть о фундаментальной возможности запускать такой ABI на уровне ОС.
Публичная отправная точка обсуждения — заметка Phoronix, где упоминается предложение Sebastian Andrezj Siewior и ориентир по срокам: 2027 год.