Conformité an 2000 inhérente

Le passage de l'an 2000 est une nécessité de premier ordre, beaucoup d'organismes refusant fermement l'installation de logiciels qui ne sont pas certifiés An-2000. Le fait que des systèmes ne franchissent pas sans heurts l'an 2000 est fréquemment lié à l'enregistrement de dates dans un format limité aux deux derniers chiffres de l'année. Conséquence directe : l'année 2000 est confondue avec 1900, d'où toutes sortes d'erreurs dans les applications.

Linux comme d'autres Unix sont de façon inhérente compatibles An-2000 car les dates sont stockées de façon très différente. Les dates sous Unix sont enregistrées par le système comme le nombre de secondes écoulé depuis le 1er janvier 1970. Les variantes 32 bits d'Unix enregistrent donc de telles dates sur 32 bits, et cette technique de stockage se révélera insuffisante en 2038, pas en 2000. Avec les versions d'Unix 64 bits (donc un stockage des dates sur 64 bits), le blocage interviendra dans quelques milliards d'années! La plupart des versions actuelles des Unix 32 bits auront certainement évolué sur 64 bits bien avant 2038, et feront disparaître du même coup tout souci de gestion des dates.

Grâce à la disponibilité de son code source, la conformité An-2000 du système d'exploitation Linux a été vérifiée par bon nombre de personnes indépendantes. N'importe quelle organisation peut faire auditer ce système d'exploitation avant de faire son choix. Cependant, il faut garder à l'esprit que cette conformité ne s'étend pas automatiquement aux applications exécutées, ou au BIOS du matériel utilisé. Ceux-ci doivent être séparément certifiés. Les applications Open Source qui fonctionnent sur Linux (par exemple les logiciels GNU) peuvent évidemment être indépendamment auditées. Pour d'autres applications (commerciales), les utilisateurs sont obligés de s'en remettre aux garanties de leurs fournisseurs.

(Pour montrer à quel point il facile est de faire évoluer le format de date Unix de 32 bits à 64 bits, nous devons plonger dans quelques considérations techniques. La taille de la zone de stockage d'une date est définie dans un seul emplacement quel que soit le système Unix. C'est une variable appelée time_t. Le passage d'une puce de 32 bits à une puce 64 bits implique, entre autres, de changer simplement la définition de time_t, passant de sa zone de stockage 32 bits à 64 bits. Lorsque le système d'exploitation sera recompilé, il utilisera la nouvelle définition et enregistra toutes les dates sur 64 bits. Naturellement, la mutation d'une puce de 32 bits à une puce de 64 bits ne se résume pas à simple jeu d'enfant, car le positionnement de tout le jeu d'instruction change ; mais en ce qui concerne la date, nous avons tout dit).

Références :

Linux et l'An-2000

Logiciels GNU conformes à la norme An-2000