glibc hâlâ varsayılan olarak Y2038 uyumlu değil
(ariadne.space)-
2038-01-19 03:14:07 UTC geçildiğinde 32-bit
time_ttaşacak -
Linux çekirdeği bunu birkaç yıl önce dahili olarak 64-bit ile değiştirdi; Alpine ise 3.13 sürümünden itibaren 64-bit
time_t'ye geçti -
GNU glibc, 2.34'ten itibaren 64-bit
time_tdesteği sunmaya başladı, ancak yaklaşımı teknik olarak tam değil -
musl ve diğer UNIX C kütüphanesi uygulamalarında yeni kodlarda
time_ther zaman 64-bit, eski 32-bit kodlar için ise uyumluluk stub'ları sağlanıyor
→ böylece zaman içinde otomatik olarak Y2038 uyumlu hale geliyor
-
Microsoft,
msvcrt'de bunun da ötesine geçerek varsayılan olarak 64-bittime_tkullanıyor;_USE_32BIT_TIME_Tmakrosu kullanılırsa eski 32-bit işlevlere erişilebiliyor -
GNU glibc ise tam olarak yukarıdaki iki yaklaşımın tersini benimsiyor
→ kullanılabilmesi için açıkça -D_TIME_BITS=64 istenmesi gerekiyor
→ bir gün bu varsayılan değişebilir, ancak bugüne kadar hiç yapılmadı
⇨ benzer şekilde, 2GiB'den büyük dosyaları işlemek için gereken -D_FILE_OFFSET_BITS=64 de hâlâ açıkça belirtilmek zorunda
→ ayrıca 32-bit sistemlerde -D_TIME_BITS=64 ile derleme yapılmamalı (yani Y2038 uyumluluğu mümkün değil)
1 yorum
Önümüzde hâlâ yaklaşık 16 yıl var, ancak Linux uzun süre değiştirilmeyen cihazlarda da çok kullanıldığı için..