- Debian secara resmi menerapkan
time_t 64-bit hingga pada arsitektur 32-bit mulai Debian 13 versi berikutnya untuk memblokir lebih awal masalah Y2K38 (Unix Epochalypse)
- Karena keterbatasan
time_t 32-bit yang ada saat ini, setelah 19 Januari 2038 waktu bisa berbalik ke tahun 1900, sehingga masalah ini diputuskan untuk tidak lagi dibiarkan
- Perangkat keras 64-bit sudah aman, tetapi kebutuhan terhadap Debian masih ada pada perangkat 32-bit yang sensitif terhadap biaya seperti embedded dan IoT, sehingga penting untuk menangani ini lebih awal
- Pekerjaan berskala besar sedang dilakukan dengan mengalihkan secara serentak tipe
time_t yang tersebar di total 6.429 paket, sambil menerima bahwa kompatibilitas ABI akan terputus sekali ini
- Beberapa arsitektur dukungan lawas seperti i386 dan hurd-i386 tetap menjadi pengecualian, namun kemungkinan pengenalan arsitektur x86 (i686) baru berbasis
time_t 64-bit juga disebutkan
Penanganan bug Y2K38 oleh Debian: beralih ke waktu 64-bit
- Debian beralih ke waktu 64-bit di semua lingkungan, kecuali pada sebagian perangkat keras tertua yang masih didukung, untuk menghindari masalah Y2K38 atau Unix Epochalypse yang akan datang
- Dengan ini, Debian mencegah kesalahan nilai waktu akibat melampaui rentang
signed int 32-bit yang diperkirakan terjadi pada 19 Januari 2038
Latar belakang masalah Y2K38 dan Unix Epochalypse
- Masalah Y2K38 adalah fenomena pada sistem Unix yang merepresentasikan detik yang berlalu sejak 1 Januari 1970 dengan
signed int 32-bit; setelah melewati tahun 2038, overflow dapat terjadi sehingga waktu salah kembali ke masa lalu seperti tahun 1900
- Ini berasal dari keputusan arsitektural yang memilih format data pendek, mirip dengan masalah Y2K (masalah tahun 2000) di masa lalu
- Pada saat Y2K, kekacauan besar dapat dicegah berkat penanganan lebih awal oleh para pengembang
- Perangkat lunak untuk perangkat keras 64-bit sudah aman, tetapi Debian masih banyak digunakan di lingkungan embedded, spesifikasi rendah, dan sistem lawas
Respons utama Debian
- Mulai rilis Debian 13 "Trixie",
time_t 64-bit diterapkan sebagai nilai default di semua arsitektur utama
- Perangkat keras 64-bit memang sudah aman, namun masalah ini sering muncul pada perangkat embedded berbasis prosesor 32-bit dan perangkat keras lawas
- Perangkat seperti ini masih digunakan di bidang yang sensitif terhadap biaya dan dikirim dalam jumlah besar, seperti kontrol otomotif, IoT, TV, dan router
- Banyak perangkat baru memakai Linux build mandiri seperti OpenEmbedded, Alpine, Android, dan Gentoo, namun penggunaan perangkat embedded berbasis Debian diperkirakan tetap berlanjut dalam beberapa tahun ke depan
Penerapan dan perubahan
- Variabel
time_t tersebar di 6.429 paket, sehingga dibutuhkan pekerjaan berskala besar
- Karena perubahan ini dapat merusak kompatibilitas ABI (application binary interface), penyesuaian dilakukan secara serentak pada semua pustaka dan paket terkait
- Menurut tim pemeliharaan, pekerjaan tersebut telah selesai dan diuji dengan cukup baik
Pengecualian dan rencana ke depan
- Port i386 (x86 lama) tetap mempertahankan
time_t 32-bit demi kompatibilitas menjalankan biner lama
- Penerapan waktu 64-bit dan ISA (instruction set architecture) modern pada arsitektur i686 dapat dibahas secara terpisah
- Port hurd-i386 tidak dialihkan karena dukungan kernel belum memadai; sebagai gantinya, upaya pemindahan ke hurd-amd64 sedang berlangsung
Catatan untuk pengembang
- Pengembang dapat menguji apakah perangkat lunak mereka akan rusak akibat penerapan variabel waktu 64-bit melalui panduan yang disediakan di wiki Debian
- Detail lebih lanjut dan dokumen teknis tersedia di Debian wiki
1 komentar
Komentar Hacker News
time_t64-bit nanti, saya akan teringat padanyamm/yy) lebih praktis jika ditulis singkat, jadi representasi tahun 2 digit dipakai; itu cukup untuk umur kartu, tetapi pada 2100 bisa memunculkan masalah konversi; sebagian besar Y2K berasal dari masalah UI (text field dua karakter, hardcode+1900, dll.), dan bug Y2K yang pernah saya alami langsung adalah forum internet yang berpindah dari 1999 ke 19100 (sekadar kesalahan tampilan); Y2K bukan hanya masalah COBOLintsederhana dengan 0 di tahun 1900, byte yang dihemat malah bisa lebih banyak; dengan 3 byte bisa mencakup dari 1900 sampai sekitar tahun 44.000, dan dengan 2 byte pun masih bisa menjangkau sampai sekitar 2070time_t64-bit akan menyelesaikan Epochalypse, tetapi tidak semua sistem sekadar berpindah ke detik 64-bit; ext4 sudah berubah ke resolusi pecahan 30-bit (setingkat nanodetik) dan resolusi detik 34-bit, tetapi beberapa ratus tahun lagi masalah serupa tetap akan muncul lagi; saya memperkirakan suatu saat kita akan menetap pada timestamp 128-bit berupa 64-bit detik + 64-bit pecahan, dan itu akan mencakup seluruh masa depan yang dapat diperkirakan dalam sejarah manusiatime64_tsudah selesai; hanya i386 yang menjadi pengecualian demi kompatibilitas biner lama, dan sisanya termasuk m68k semuanya sudah diubah; saya sendiri yang memindahkan m68k, powerpc, sh4, dan hppatime_tbukan variabel, melainkan tipe datatime_tbenar-benar muncul di mana-mana. Dari 35.960 paket, ia muncul di source code 6.429 paket. Paket yang mengekspos struct yang berisitime_tsebagai ABI harus memigrasikan seluruh ABI secara serempak”; wiki menjelaskannya lebih jelas daripada artikelnyaRLIMIT_STACK, misalnyaulimit -s 4000berarti stack 4MB; kalau ingin lebih besar, ubah/etc/security/limits.conflalu login ulangMAX_ARG_STRLENlalu mengompilasi ulang kernel; memakai mesin dengan page size lebih besar (misalnya kernel RHEL Arm dengan page size 64k) juga bisa jadi cara; tetapi jauh lebih mudah memakai pipe alih-alih command buffer untuk mengirim data antarprosestime_t64-bit dan memakainya