O fim do mundo já tem dia e hora para acabar: às 03h:14min:08s no Horário de Greenwich (GMT, também conhecido como Horário Universal Coordenado) do dia 19 de janeiro de 2038 (uma terça-feira). Calma, não estamos nos referindo ao fim dos tempos no sentido bíblico. O que acontece é que o valor do tempo nos sistemas operacionais baseados em Unix de 32 bits, como Linux e versões mais antigas do macOS, ficarão sem números. A partir de então, começará a contar o tempo com números negativos. Isso não é bom. Podemos esperar que os computadores de 32 bits que executam esses sistemas operacionais tenham ajustes. Felizmente, os desenvolvedores do Linux já tinham uma correção pronta e sim, o sistema está preparado para o fim do mundo.
E antes que você pergunte, o artigo não tem ligação com o Coronavírus que estamos vivenciando atualmente. Assim, vamos explicar o motivo desse título tão chamativo.
O problema começa com a maneira como o Unix diz as horas. O Unix e derivados – Linux, macOS e outros sistemas operacionais compatíveis com POSIX – datam do início dos tempos da Epoch: 00:00:00 GMT em 1º de janeiro de 1970. A família Unix mede o tempo pelo número de segundos desde a época.
Por enquanto, tudo bem. Porém, desde que o Unix e a família começaram como sistemas operacionais de 32 bits, o valor do tempo é mantido como um único número inteiro de 32 bits assinado. São muitos segundos, mas, assim como o bug do ano passado do Y2K, não é suficiente.
Linux está preparado para o fim dos tempos
Os desenvolvedores de Linux previram o problema há algumas décadas. Portanto, o desenvolvedor do kernel Linux Arnd Bergmann e outros estão trabalhando em um reparo. Essas correções estão agora no próximo kernel Linux 5.6. Bergmann explicou:
O Linux-5.6, ou meu backport dos patches para a versão 5.4, deve ser o primeiro lançamento que pode servir de base para um sistema de 32 bits projetado para ser executado depois do ano 2038.
Existem algumas advertências:
- Todo o espaço do usuário deve ser compilado para o chamado 64-bit time_t, que será suportado nos próximos lançamentos musl-1.2 e glibc-2.32, junto com os cabeçalhos de kernel instalados do Linux-5.6 ou superior;
- Os aplicativos que usam as interfaces de chamada do sistema diretamente precisam ser portados para usar os syscalls time64 adicionados no Linux-5.1 no lugar das chamadas de sistema existentes.
- Os aplicativos que usam uma cópia privada dos arquivos de cabeçalho do kernel uapi ou seu conteúdo podem precisar atualizar para a versão Linux-5.6.
- Algumas interfaces restantes não podem ser alteradas para transmitir um time_t de 64 bits de maneira compatível, portanto, elas devem ser configuradas para usar os tempos CLOCK_MONOTONIC.
- Todos os problemas da Epoch presentes em máquinas de 64 bits também se aplicam a máquinas de 32 bits. Em particular, isso afeta os sistemas de arquivos com registro de data e hora no disco usando segundos assinados de 32 bits: ext4 com pequenos inodes no estilo ext3, ext2, xfs (a serem corrigidos em breve) e ufs.
Em suma, há muito trabalho de limpeza a ser feito, mesmo depois que o problema principal foi corrigido.
O MacOS deixou o software de 32 bits há mais de uma década. Mas, foi apenas no final de 2019 do macOS Catalina, que a Apple deu fim aos aplicativos de 32 bits.
Mesmo com tudo já feito pode haver problema?
Agora, você pode estar se perguntando – já que todos nós estamos executando computadores de 64 bits hoje em dia – por que isso é um problema. Bem, é assim. Primeiro, muitos sistemas embarcados e dispositivos de Internet das Coisas (IoT) ainda estão executando sistemas operacionais de 32 bits. De fato, até 2038, provavelmente ainda haverá novos dispositivos de 32 bits chegando ao mercado.
Porém, observe o seguinte: depois de consertar isso, não precisaremos nos preocupar com o Linux de 64 bits ficar sem segundos por um bom tempo. Mais precisamente até 15:30:08 GMT, um domingo, 4 de dezembro de 29.227.702.659. Portanto, ninguém deve estar vivo para se preocupar com isso.
Fonte: ZDNet