glibc vẫn chưa mặc định hỗ trợ Y2038
(ariadne.space)-
Sau 2038-01-09 3:14:07 UTC,
time_t32-bit sẽ bị tràn -
Nhân Linux đã chuyển nội bộ sang 64-bit từ vài năm trước, còn Alpine đã đổi sang
time_t64-bit từ bản 3.13 -
GNU glibc bắt đầu hỗ trợ
time_t64-bit từ 2.34, nhưng cách tiếp cận về mặt kỹ thuật vẫn chưa hoàn chỉnh -
muslvà các triển khai thư viện C UNIX khác luôn dùngtime_t64-bit cho mã mới, đồng thời cung cấp các stub tương thích cho mã 32-bit cũ
→ nhờ đó theo thời gian sẽ tự động trở nên tương thích Y2038
-
Microsoft còn tiến thêm một bước trong
msvcrtkhi mặc định dùngtime_t64-bit, và nếu dùng macro_USE_32BIT_TIME_Tthì vẫn có thể truy cập các hàm 32-bit cũ -
GNU glibc lại chọn đúng hướng ngược lại với hai cách trên
→ phải yêu cầu tường minh bằng -D_TIME_BITS=64 thì mới dùng được
→ có thể một ngày nào đó mặc định này sẽ thay đổi, nhưng đến nay vẫn hoàn toàn chưa làm vậy
⇨ tương tự, -D_FILE_OFFSET_BITS=64 cần để xử lý các tệp lớn hơn 2GiB đến giờ vẫn phải khai báo tường minh
→ ngoài ra trên hệ thống 32-bit thì không được build với -D_TIME_BITS=64 (tức là không thể tương thích Y2038)
1 bình luận
Vẫn còn khoảng 16 năm nữa, nhưng Linux được dùng rất nhiều cả trên những thiết bị không được thay thế trong thời gian dài, nên..