fond pour les articles

Bogue de l’an 2038

Y2038 ou Epochalypse en anglais, est un bug informatique similaire au bug de l’an 2000, et dont les principales conséquences sont attendues le 19 janvier 2038 à 3 h 14 min 8 s, temps universel. Les systèmes affectés par le bug considéreront alors être le 13 décembre 1901 à 20 h 45 min 52 s.

Ce bug concerne potentiellement tous les systèmes d’exploitation et les programmes qui mesurent le temps avec un nombre entier codé sur 32 bits. Il concerne les formats de fichier (tels que ZIP), les systèmes de fichiers (comme le système de fichier FAT32 utilisé sur la plupart des clés USB et cartes flash) et les systèmes d’exploitation à tous les niveaux (du noyau de système d’exploitation aux langages de programmation), voire l’horloge temps réel elle-même.

Il n’existe pas de solution universelle pour les problèmes qui se manifesteront en raison du bug de l’an 2038. N’importe quelle altération de la définition du type de variable utilisé pour dénoter le temps time_t enchaînerait des problèmes de compatibilité de code dans toutes les applications où la représentation de la date et du temps dépendent d’un système conçu de base pour fonctionner avec un nombre entier signé de 32 bits. Par exemple, le changement de time_t à un nombre entier non signé de 32 bits, ce qui permettrait l’utilisation des systèmes jusqu’à l’an 2106, causerait des complications pour les programmes qui manipulent des données qui ont des dates qui précèdent l’an 1970 car de telles dates seraient représentées par des nombres entiers négatifs. De plus, agrandir la variable time_t à un nombre entier de 64 bits dans les systèmes en utilisation courante produirait des changements incompatibles dans l’organisation des structures et de l’interface binaire de certaines fonctions.

La solution la plus simple proposée est de changer de système, en passant de 32 bits à 64 bits. En effet, actuellement, la plupart des systèmes informatiques qui ont été conçus pour utiliser du matériel à 64 bits fonctionnent déjà avec des variables time_t de 64 bits.