О «проблеме 2000» в своё время наслышаны были все. Тогда это виделось чуть ли не рукотворным Апокалипсисом, после которого компьютеры прекратят работать или выйдут из-под контроля людей. Однако ничего действительно серьёзного не случилось, в том числе, благодаря своевременным патчам.
Теперь же назначен следующий «цифровой конец света» — 2038 год. Если точнее, речь идёт о 03:14:07 во вторник, 19 января 2038 года по Всемирному времени (UTC).
Это самая поздняя дата, которая может быть представлена в классическом стандарте POSIX. После этого значение Unix-времени больше не сможет поместиться в 32-разрядное целое число со знаком, что сделает поле данных time_t отрицательным. А это может привести к сбоям в работе вычислительных систем.
Однако уже сейчас разработчики решили эту проблему для ядра Linux 5.6, а также собираются портировать патчи в ранние версии 5.4 и 5.5. Это позволит запускать 32-битные приложения на протяжении и после 2038 года. Идея состоит в том, чтобы пользовательское пространство и приложения, работающие в нём, были построены на базе 64-битного формата time_t, а не 32-битного. Его поддержка есть в библиотеках GNU C 2.32 и Musl libc 1.
Такой подход позволит приложениям использовать все современные системные вызовы ядра Linux. Впрочем, драйверы дорабатывать всё равно придётся.
Таким образом, за ближайшие 18 лет нужно сделать лишь одно — обновить все актуальные операционные системы и прошивки хотя бы до ядра Linux 5.6. Но будут ли ещё актуальными 32-бит Linux-системы в 2038 году?