o glibc ainda não usa suporte ao Y2038 por padrão
(ariadne.space)-
Depois de 2038-01-09 3:14:07 UTC, o
time_tde 32 bits sofre overflow -
O kernel Linux trocou internamente para 64 bits há alguns anos, e o Alpine mudou para
time_tde 64 bits desde a versão 3.13 -
A GNU glibc começou a oferecer suporte a
time_tde 64 bits a partir da 2.34, mas a abordagem tecnicamente não é completa -
O musl e outras implementações de biblioteca C para UNIX fazem com que
time_tem código novo seja sempre de 64 bits, e fornecem stubs de compatibilidade para o código antigo de 32 bits
→ assim, com o tempo, a compatibilidade com Y2038 passa a vir automaticamente
-
A Microsoft foi além no msvcrt e usa
time_tde 64 bits por padrão, permitindo acesso às funções antigas de 32 bits com a macro_USE_32BIT_TIME_T -
A GNU glibc adota exatamente a abordagem oposta dessas duas opções
→ só é possível usar isso se for solicitado explicitamente com -D_TIME_BITS=64
⇨ de forma semelhante, ainda é preciso declarar explicitamente -D_FILE_OFFSET_BITS=64, necessário para lidar com arquivos maiores que 2GiB
→ além disso, em sistemas de 32 bits, não se deve compilar com -D_TIME_BITS=64 (ou seja, a compatibilidade com Y2038 é impossível)
1 comentários
Ainda faltam cerca de 16 anos, mas como o Linux também está presente em muitos equipamentos que não são substituídos por muito tempo..