- Jiff là thư viện ngày và giờ cho Rust, được thiết kế để giúp người dùng dễ dàng đạt được kết quả đúng như mong muốn
- Cung cấp các primitive ngày và giờ ở mức cao, khó bị dùng sai và có hiệu năng tốt
- Cung cấp khả năng tích hợp tự động với Time Zone Database, phép toán và làm tròn có nhận biết DST, cùng các tính năng định dạng và phân tích cú pháp
- Bao gồm nhiều tính năng như hỗ trợ Serde
- Lấy nhiều cảm hứng từ Temporal của JavaScript
- Cấp phép kép theo MIT hoặc UNLICENSE
Kế hoạch sắp tới
- Có kế hoạch cải thiện API của Jiff và phát hành các thay đổi định kỳ trong khoảng 1 năm
- Sau 1 năm, khi API ổn định, sẽ phát hành Jiff 1.0 và duy trì API trong thời gian dài
- Mục tiêu là để những người khác có thể tin tưởng và sử dụng Jiff
Hiệu năng
- Mục tiêu thiết kế quan trọng nhất của Jiff là khiến người dùng khó thực hiện thao tác sai
- Mục tiêu thứ hai là hiệu năng
- Hiệu năng ở mức hợp lý nhưng vẫn còn chỗ để cải thiện
- Có thể xem benchmark trong thư mục
bench
Hỗ trợ nền tảng
- Có các vấn đề về hỗ trợ nền tảng liên quan đến hỗ trợ múi giờ
- Cách xác định chuyển đổi múi giờ cho các định danh múi giờ IANA
- Cách xác định múi giờ mặc định của hệ thống hiện tại
- Trên hệ thống Unix, tra cứu dữ liệu chuyển đổi múi giờ từ
/usr/share/zoneinfo
- Trên Windows, bao gồm cơ sở dữ liệu múi giờ trong thư viện đã biên dịch
- Việc tra cứu múi giờ hệ thống sử dụng
/etc/localtime trên Unix và GetDynamicTimeZoneInformation trên Windows
Phụ thuộc
- Jiff không có phụ thuộc trên Unix
- Rất thận trọng trong việc thêm phụ thuộc mới
- Chỉ thêm phụ thuộc khi cần để tương tác với nền tảng hoặc để phục vụ khả năng tương tác
Tóm tắt của GN⁺
- Jiff là thư viện ngày và giờ mức cao cho Rust, được thiết kế để người dùng không dễ dùng sai
- Cung cấp nhiều tính năng như tích hợp với Time Zone Database, phép toán có nhận biết DST và tính năng định dạng
- Được thiết kế với nhiều cảm hứng từ Temporal của JavaScript
- Có kế hoạch cải thiện API trong 1 năm tới và phát hành phiên bản 1.0 ổn định
- Hiệu năng ở mức hợp lý nhưng còn có thể cải thiện, và hỗ trợ nền tảng hoạt động tốt trên Unix và Windows
1 bình luận
Ý kiến trên Hacker News
Cú pháp ToSpan tạo cảm giác hơi gượng gạo
let span = 5.days().hours(8).minutes(1);có vẻ lạ khi số đầu tiên đứng ở phía trước còn các phần còn lại lại nằm trong đối số hàmlet span = Span::new().days(5).hours(8).minutes(1);nhưng sẽ phải gõ thêm vài ký tựCó vẻ nhiều người đang đánh giá thấp độ phức tạp của thư viện datetime
Các yếu tố như số học DST, khoảng thời gian có thể làm tròn, số học lịch có nhận biết múi giờ và phát hiện xung đột múi giờ khiến thư viện vừa chính xác vừa dễ dùng
Có câu đùa rằng lại xuất hiện thêm một thư viện burntsushi mới
tracingtrong crate của mình khônglogthì ổn, nhưng việc theo dõi các lời gọi xử lý tz không phải là trường hợp sử dụng phổ biếnThư viện mới trông khá tuyệt
Tình trạng các thư viện lịch trên Rust chưa thực sự lý tưởng
Vấn đề lớn nhất của các thư viện thời gian hiện có là thiếu hỗ trợ leap second
BurntSushi là tác giả của hệ sinh thái biểu thức chính quy Rust
Có tranh luận về cách phát âm của Jiff