6 poin oleh xguru 2021-12-30 | 1 komentar | Bagikan ke WhatsApp
  • Setelah 2038-01-09 3:14:07 UTC, time_t 32-bit akan mengalami overflow

  • Kernel Linux sudah menggantinya secara internal ke 64-bit beberapa tahun lalu, dan Alpine mengubah time_t menjadi 64-bit sejak 3.13

  • GNU glibc mulai mendukung time_t 64-bit sejak 2.34, tetapi pendekatannya secara teknis belum sepenuhnya matang

  • musl dan implementasi UNIX C library lain membuat time_t selalu 64-bit untuk kode baru, dan menyediakan stub kompatibilitas untuk kode 32-bit lama

→ sehingga seiring waktu akan otomatis menjadi kompatibel dengan Y2038

  • Microsoft melangkah lebih jauh di msvcrt dengan menggunakan time_t 64-bit secara default, dan macro _USE_32BIT_TIME_T dapat dipakai untuk mengakses fungsi 32-bit lama

  • GNU glibc mengambil pendekatan yang tepat kebalikan dari dua hal di atas

→ hanya bisa digunakan jika diminta secara eksplisit dengan -D_TIME_BITS=64

→ mungkin suatu saat default ini bisa berubah, tetapi sampai sekarang sama sekali belum dilakukan

⇨ mirip dengan -D_FILE_OFFSET_BITS=64 yang masih harus dinyatakan secara eksplisit untuk menangani file yang lebih besar dari 2GiB

→ selain itu, pada sistem 32-bit build dengan -D_TIME_BITS=64 tidak boleh dilakukan (artinya kompatibilitas Y2038 tidak dimungkinkan)

1 komentar

 
xguru 2021-12-30

Masih ada sekitar 16 tahun lagi, tetapi Linux juga banyak dipakai pada perangkat yang tidak diganti dalam waktu lama..