2 poin oleh GN⁺ 2024-07-23 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2024-07-23
Komentar Hacker News
  • Sintaks ToSpan terasa agak canggung

    • Sintaks let span = 5.days().hours(8).minutes(1); terasa aneh karena angka pertama muncul di depan sementara sisanya masuk sebagai argumen fungsi
    • Bisa ditulis sebagai let span = Span::new().days(5).hours(8).minutes(1);, tetapi perlu beberapa karakter tambahan
  • Saya melihat orang-orang meremehkan kompleksitas library datetime

    • Ada pendapat bahwa cukup gunakan waktu UTC/Unix sebagai representasi internal, atau nyatakan durasi dalam nanodetik, atau gunakan offset alih-alih zona waktu
    • Disarankan untuk membaca dokumen desain Jiff
    • Perbandingan dengan chrono juga bermanfaat
  • Aritmetika DST, durasi yang bisa dibulatkan, aritmetika kalender yang sadar zona waktu, dan deteksi konflik zona waktu membuat library ini akurat dan mudah digunakan

    • chrono adalah library yang sangat komprehensif dan akurat, tetapi sulit digunakan dan kaku
  • Ada candaan bahwa ini adalah library burntsushi yang baru

    • Penasaran apakah rustacean tahu kenapa tracing tidak digunakan di crate
    • log tidak masalah, tetapi melacak pemanggilan operasi tz bukanlah use case umum
  • Library baru ini terlihat keren

    • Saya penasaran kenapa burntsushi membuat library baru
    • Apakah karena masalah performa atau API yang kurang nyaman di library yang ada, atau hanya sekadar untuk bersenang-senang
  • Kondisi library kalender di Rust tidak ideal

    • Di Pandas, konversi zona waktu sangat sederhana, tetapi di Chrono rumit
    • Jiff bergerak ke arah yang benar, tetapi sintaksnya kadang terasa aneh
  • Masalah utama library waktu yang ada adalah kurangnya dukungan leap second

    • Alasannya karena menggunakan TAI alih-alih UNIX timestamp
    • Jiff juga tidak menyelesaikan masalah ini
    • Saya pikir leap second harus diperlakukan seperti 29 Februari atau zona waktu
  • BurntSushi adalah penulis ekosistem regex Rust

  • Ada perdebatan tentang cara melafalkan Jiff

    • Ada pendapat bahwa harus diucapkan dengan "g" lembut seperti "gif"
    • Ada pendapat bahwa harus diucapkan dengan "G" keras seperti "Giff"