- Jiff adalah pustaka tanggal dan waktu untuk Rust yang dirancang agar pengguna dapat dengan mudah memperoleh hasil yang benar
- Menyediakan primitif tanggal dan waktu tingkat tinggi sehingga sulit disalahgunakan dan memiliki performa yang baik
- Menyediakan integrasi otomatis dengan Time Zone Database, aritmetika dan pembulatan yang sadar DST, serta fitur formatting dan parsing
- Mencakup berbagai fitur seperti dukungan Serde
- Banyak terinspirasi dari Temporal di JavaScript
- Lisensi ganda MIT atau UNLICENSE
Rencana ke depan
- Berencana meningkatkan API Jiff dan merilis perubahan secara berkala selama sekitar 1 tahun
- Setelah 1 tahun, ketika API sudah stabil, akan merilis Jiff 1.0 dan mempertahankan API tersebut untuk jangka panjang
- Hal ini ditujukan agar orang lain dapat memercayai dan menggunakan Jiff
Performa
- Tujuan desain terpenting Jiff adalah membuat pengguna sulit melakukan hal yang salah
- Tujuan kedua adalah performa
- Performanya masuk akal, tetapi masih ada ruang untuk perbaikan
- Benchmark dapat dilihat di direktori
bench
Dukungan platform
- Ada isu dukungan platform terkait dukungan zona waktu
- Cara menentukan transisi zona waktu untuk pengenal zona waktu IANA
- Cara menentukan zona waktu default sistem saat ini
- Pada sistem Unix, data transisi zona waktu diambil dari
/usr/share/zoneinfo
- Pada Windows, basis data zona waktu disertakan dalam library yang telah dikompilasi
- Pencarian zona waktu sistem menggunakan
/etc/localtime di Unix, dan GetDynamicTimeZoneInformation di Windows
Dependensi
- Jiff tidak memiliki dependensi di Unix
- Sangat konservatif dalam menambahkan dependensi baru
- Dependensi hanya ditambahkan bila diperlukan untuk berinteraksi dengan platform atau untuk interoperabilitas
Ringkasan GN⁺
- Jiff adalah pustaka tanggal dan waktu tingkat tinggi untuk Rust, dirancang agar tidak mudah disalahgunakan oleh pengguna
- Menyediakan berbagai fitur seperti integrasi dengan Time Zone Database, aritmetika sadar DST, dan fitur formatting
- Dirancang dengan banyak inspirasi dari Temporal di JavaScript
- Berencana meningkatkan API selama 1 tahun ke depan dan merilis versi 1.0 yang stabil
- Performanya cukup baik tetapi masih bisa ditingkatkan, dan dukungan platform bekerja dengan baik di Unix maupun Windows
1 komentar
Komentar Hacker News
Sintaks ToSpan terasa agak canggung
let span = 5.days().hours(8).minutes(1);terasa aneh karena angka pertama muncul di depan sementara sisanya masuk sebagai argumen fungsilet span = Span::new().days(5).hours(8).minutes(1);, tetapi perlu beberapa karakter tambahanSaya melihat orang-orang meremehkan kompleksitas library datetime
Aritmetika DST, durasi yang bisa dibulatkan, aritmetika kalender yang sadar zona waktu, dan deteksi konflik zona waktu membuat library ini akurat dan mudah digunakan
Ada candaan bahwa ini adalah library burntsushi yang baru
tracingtidak digunakan di cratelogtidak masalah, tetapi melacak pemanggilan operasi tz bukanlah use case umumLibrary baru ini terlihat keren
Kondisi library kalender di Rust tidak ideal
Masalah utama library waktu yang ada adalah kurangnya dukungan leap second
BurntSushi adalah penulis ekosistem regex Rust
Ada perdebatan tentang cara melafalkan Jiff