2 puan yazan GN⁺ 2024-07-23 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-07-23
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 tuhaf
    • let span = Span::new().days(5).hours(8).minutes(1); şeklinde yazılabilir ama birkaç karakter daha uzun
  • datetime kütüphanelerinin karmaşıklığını hafife alan insanlar görüyorum

    • Dahili gösterim olarak UTC/Unix zamanı kullanılması, sürelerin nanosaniye olarak ifade edilmesi ya da zaman dilimleri yerine ofsetlerin kullanılması gerektiğini söyleyenler var
    • Jiff'in tasarım belgelerini okumayı tavsiye ederim
    • chrono ile karşılaştırma da faydalı
  • 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

    • chrono çok kapsamlı ve doğru bir kütüphane ama kullanımı zor ve katı
  • Yeni bir burntsushi kütüphanesi çıktığına dair şaka

    • Rustacean'ların crate'lerde neden tracing kullanmadığını bilen var mı diye merak ediliyor
    • log yeterli ama tz iş çağrılarını izlemek yaygın bir kullanım senaryosu değil
  • Yeni kütüphane hoş görünüyor

    • burntsushi'nin neden yeni bir kütüphane yazdığı merak ediliyor
    • Sebep mevcut kütüphanelerdeki performans sorunları mı, API'nin kullanışsızlığı mı, yoksa sadece eğlence olsun diye mi, diye soruluyor
  • Rust'ın takvim kütüphanesi durumu ideal değil

    • Pandas'ta zaman dilimi dönüşümü çok basitken Chrono'da karmaşık
    • Jiff doğru yönde ilerliyor ama sözdizimi bazen garip
  • Mevcut zaman kütüphanelerindeki ana sorun, artık saniye desteğinin olmaması

    • Bunun nedeni UNIX timestamp yerine TAI kullanılmaması
    • Jiff de bu sorunu çözmüyor
    • Artık saniyelerin 29 Şubat ya da zaman dilimleri gibi ele alınması gerektiği düşünülüyor
  • BurntSushi, Rust düzenli ifade ekosisteminin yazarı

  • Jiff'in nasıl telaffuz edildiğine dair tartışma

    • "gif" gibi yumuşak bir "g" ile telaffuz edilmesi gerektiğini savunanlar var
    • "Giff" gibi sert bir "G" ile telaffuz edilmesi gerektiğini savunanlar var