Комментарии 4
NetBSD перешла на 64-битный
time_tв версии 6.0 в 2012 году, OpenBSD в версии 5.5 в 2014-м. В Linux путь вышел длиннее. Ядро получило полный набор 64-битных системных вызовов для 32-битных архитектур (всякиеclock_gettime64и компания) к версии 5.6 в 2020 году.
Кхм... кхм.. (громко покашливая в дряхрый кулак). Во FreeBSD с версии 5.0 (январь 2003 года) перешли на Berkeley Fast File System версии UFS2 где временная отметка (тип time_t) имеет размерность 64 бита. С UFS2 появилась возможность задавать дробную часть секунды которая хранится в отдельной переменной, её гранулярность задается с точностью до наносекунд с помощью переменной ядра sysctl vfs.timestamp_precision. По умолчанию значение этой переменной равна 2, что задает точность в 1 микросекунду.
Но это еще не всё. Для совместимости с версией UFS1 новые версии ОС FreeBSD (с 13.x ?) рассматривают 32-х битную временную отметку как unsigned, что отодвигает проблему для legacy систем на 2106 год. Предполагается, что за следующие 80 лет ленивые кожанные мешки успеют переползти либо на UFS2, либо на ZFS.
Ну и на счет вот этого вот:
Первыми, это сделали BSD, которые могли позволить себе сломать ABI одним махом:
Тут надо понимать как это происходило в историческом контексте. На дворе 2001-2002 год. ОС FreeBSD установлена на каждом втором сервере (если не на каждом первом). Linux находится в инфантильном состоянии. И тут, откуда не возьмись, разработчики FreeBSD смогли себе позволить всё сломать и нагнуть весь Интернет! А почему разработчики Linux не смогли? На самом деле никто ничего не ломал, всё было сделано аккуратно и с умом. В отличии от нынешних разработчиков Linux которые ломают ABI каждый день и чхать они хотели на весь мир.
Добро пожаловать во FreeBSD.
машина с правым рулём
Спасибо, отличное исследование, написанное хорошим стилем! Всегда интересовало как появился 1970 год. В мире Windows тоже есть что-то подобное, но там до 14 сентября 30828 года.
если бы Bell Labs стояла где-нибудь в Европе, счетчик, насколько я понимаю, тикал бы 50 раз в секунду
Часы в микроволновках и подобной бытовой технике долгое время так же работали, тактуясь от розетки. Поэтому привезённые из США девайсы даже с адаптером напряжения время показывали как попало. Подозреваю, и с таймерами готовки похожая история была.

Часы Unix тикали от розетки: откуда взялся 1970 год и что сломается в 2038-м