Разработчик дистрибутива линукса Debian опубликовали план перевода всех пакетов на 64-разрядный тип time_t для 32-разрядных архитектур. Изменения будут в составе Debian 13 Trixie, в котором будет полностью решена проблема 2038. Для справки, time_t отсчитывает UNIX время, количество секунд c 00:00:00 1 января 1970 года.
Порты x32, riscv32, arc и loong32 уже используют 64-разрядный тип, остальные нет. 32 разрядный тип не сможет использоваться для обработки времени позднее 19 января 2038 года, из-за переполнения.
Это затронет более 1200 библиотек, вызвав крупнейшее обновление ABI в истории проекта. ABI (Application Binary Interface) - правила обмена данными и вызова функций между программами на уровне машинного кода. Ограничение 32-битного integer - 2147483647, что соответствует 2038-01-19T03:14:07Z. У 64-битного integer - 9223372036854775807, что примерно 292 млрд лет.
В истории уже была похожая ситуация - проблема 2000. Тогда программы год записывали последними 2 цифрами для экономия места. То есть вместо 1951 хранится в памяти 51. Из-за этого в двоичном представление при переходе из 1999 в 2000 в памяти записывается только 00, а старые программы интерпретировали это как 1900, что могло привести к ошибкам.
Решением было хранить год полностью. После обновления старых программ, серьезных сбоев не было, и проблему удалось решить.
#без_пяти_минут_как_актуально
@rusec_life