- Jiff, Rust için bir tarih ve saat kütüphanesidir; kullanıcıların kolayca başarılı sonuçlar elde edebilmesi için tasarlanmıştır
- Yanlış kullanımın zor olduğu ve yüksek performans sunan üst düzey tarih ve saat primitifleri sağlar
- Time Zone Database ile otomatik entegrasyon, DST farkındalıklı aritmetik ve yuvarlama, biçimlendirme ve ayrıştırma özellikleri sunar
- Serde desteği gibi çeşitli özellikler içerir
- Büyük ölçüde JavaScript'in Temporal API'sinden ilham almıştır
- MIT veya UNLICENSE çift lisansı ile sunulur
Gelecek planları
- Jiff API'sini iyileştirmeyi ve yaklaşık 1 yıl boyunca değişiklikleri düzenli olarak yayımlamayı planlıyor
- 1 yıl sonra API istikrara kavuştuğunda Jiff 1.0'ı yayımlayıp API'yi uzun vadede korumayı planlıyor
- Amaç, başkalarının Jiff'e güvenip kullanabilmesini sağlamak
Performans
- Jiff'in en önemli tasarım hedefi, kullanıcıların yanlış işlemler yapmasını zorlaştırmak
- İkinci hedef ise performans
- Performans makul düzeyde, ancak geliştirme alanı var
- Benchmark'lar
bench dizininde görülebilir
Platform desteği
- Platform desteğiyle ilgili sorunlar, zaman dilimi desteği etrafında toplanıyor
- IANA zaman dilimi tanımlayıcıları için zaman dilimi geçişlerinin nasıl belirleneceği
- Geçerli sistemin varsayılan zaman diliminin nasıl belirleneceği
- Unix sistemlerinde zaman dilimi geçiş verileri
/usr/share/zoneinfo içinden alınır
- Windows'ta zaman dilimi veritabanı derlenmiş kütüphaneye dahil edilir
- Sistem zaman dilimi tespiti için Unix'te
/etc/localtime, Windows'ta GetDynamicTimeZoneInformation kullanılır
Bağımlılıklar
- Jiff'in Unix üzerinde bağımlılığı yoktur
- Yeni bağımlılık ekleme konusunda son derece tutucudur
- Yalnızca platformla etkileşim için gerekli olduğunda veya birlikte çalışabilirlik için gerektiğinde bağımlılık eklenir
GN⁺ özeti
- Jiff, Rust için üst düzey bir tarih ve saat kütüphanesidir ve kullanıcıların kolayca yanlış kullanım yapmaması için tasarlanmıştır
- Time Zone Database entegrasyonu, DST farkındalıklı aritmetik ve biçimlendirme gibi çeşitli özellikler sunar
- Tasarımında JavaScript'in Temporal API'sinden ilham alınmıştır
- Önümüzdeki 1 yıl içinde API'yi iyileştirip ardından kararlı 1.0 sürümünü yayımlamayı planlamaktadır
- Performans makul düzeydedir ancak geliştirilebilir; platform desteği Unix ve Windows'ta iyi çalışır
1 yorum
Hacker News görüşleri
ToSpan sözdizimi biraz garip hissettiriyor
let span = 5.days().hours(8).minutes(1);sözdiziminde ilk sayının önde olması, geri kalanların ise fonksiyon argümanı olarak gelmesi tuhaflet span = Span::new().days(5).hours(8).minutes(1);şeklinde yazılabilir ama birkaç karakter daha uzundatetime kütüphanelerinin karmaşıklığını hafife alan insanlar görüyorum
DST aritmetiği, yuvarlanabilir süreler, zaman dilimi farkındalıklı takvim aritmetiği ve zaman dilimi çakışma tespiti gibi özellikler kütüphaneyi hem doğru hem de kullanımı kolay hâle getiriyor
Yeni bir burntsushi kütüphanesi çıktığına dair şaka
tracingkullanmadığını bilen var mı diye merak ediliyorlogyeterli ama tz iş çağrılarını izlemek yaygın bir kullanım senaryosu değilYeni kütüphane hoş görünüyor
Rust'ın takvim kütüphanesi durumu ideal değil
Mevcut zaman kütüphanelerindeki ana sorun, artık saniye desteğinin olmaması
BurntSushi, Rust düzenli ifade ekosisteminin yazarı
Jiff'in nasıl telaffuz edildiğine dair tartışma