2 Punkte von GN⁺ 2024-07-23 | 1 Kommentare | Auf WhatsApp teilen
  • Jiff ist eine Datums- und Uhrzeitbibliothek für Rust, die so entwickelt wurde, dass Nutzer leicht zu erfolgreichen Ergebnissen gelangen
  • Sie bietet High-Level-Primitiven für Datum und Uhrzeit, ist schwer fehlzuverwenden und liefert eine gute Performance
  • Bietet automatische Integration mit der Time Zone Database, DST-bewusste Arithmetik und Rundung sowie Formatierungs- und Parsing-Funktionen
  • Enthält verschiedene Features wie Serde-Unterstützung
  • Ist stark von JavaScripts Temporal inspiriert
  • Dual lizenziert unter MIT oder UNLICENSE

Zukünftige Pläne

  • Geplant ist, die Jiff-API zu verbessern und etwa ein Jahr lang regelmäßig Änderungen zu veröffentlichen
  • Nach einem Jahr soll, sobald die API stabil ist, Jiff 1.0 veröffentlicht und die API langfristig gepflegt werden
  • Damit andere Jiff vertrauen und es einsetzen können

Performance

  • Das wichtigste Designziel von Jiff ist es, es Nutzern schwer zu machen, etwas Falsches zu tun
  • Das zweite Ziel ist Performance
  • Die Performance ist vernünftig, bietet aber noch Raum für Verbesserungen
  • Benchmarks sind im Verzeichnis bench einsehbar

Plattformunterstützung

  • Es gibt Fragen zur Plattformunterstützung im Zusammenhang mit Zeitzonen-Unterstützung
  • Wie Zeitzonenübergänge für IANA-Zeitzonenkennungen bestimmt werden sollen
  • Wie die Standardzeitzone des aktuellen Systems bestimmt werden soll
  • Auf Unix-Systemen werden Zeitzonenübergangsdaten aus /usr/share/zoneinfo geladen
  • Unter Windows ist die Zeitzonendatenbank in die kompilierte Bibliothek eingebettet
  • Für die Ermittlung der Systemzeitzone werden unter Unix /etc/localtime und unter Windows GetDynamicTimeZoneInformation verwendet

Abhängigkeiten

  • Jiff hat unter Unix keine Abhängigkeiten
  • Beim Hinzufügen neuer Abhängigkeiten ist man sehr zurückhaltend
  • Abhängigkeiten werden nur hinzugefügt, wenn sie für die Interaktion mit der Plattform oder für Interoperabilität erforderlich sind

Zusammenfassung von GN⁺

  • Jiff ist eine High-Level-Datums- und Uhrzeitbibliothek für Rust, die so entworfen wurde, dass Nutzer sie nicht leicht fehlverwenden
  • Sie bietet verschiedene Funktionen wie Integration mit der Time Zone Database, DST-bewusste Arithmetik und Formatierungsfunktionen
  • Das Design ist von JavaScripts Temporal inspiriert
  • In den kommenden 12 Monaten soll die API verbessert und anschließend eine stabile Version 1.0 veröffentlicht werden
  • Die Performance ist vernünftig, hat aber noch Verbesserungspotenzial, und die Plattformunterstützung funktioniert gut unter Unix und Windows

1 Kommentare

 
GN⁺ 2024-07-23
Hacker-News-Kommentare
  • Die ToSpan-Syntax wirkt etwas seltsam

    • Bei let span = 5.days().hours(8).minutes(1); ist es merkwürdig, dass die erste Zahl vorne steht und der Rest als Funktionsargumente kommt
    • Man kann es auch als let span = Span::new().days(5).hours(8).minutes(1); schreiben, aber das braucht ein paar Zeichen mehr
  • Ich sehe Leute, die die Komplexität von Datetime-Bibliotheken unterschätzen

    • Es gibt Meinungen, man solle UTC-/Unix-Zeit als interne Darstellung verwenden, Zeitspannen in Nanosekunden ausdrücken oder Offsets statt Zeitzonen nutzen
    • Ich empfehle, das Design-Dokument von Jiff zu lesen
    • Auch der Vergleich mit chrono ist aufschlussreich
  • DST-Arithmetik, rundbare Zeitspannen, zeitzonenbewusste Kalenderarithmetik und Erkennung von Zeitzonenkonflikten machen die Bibliothek präzise und leicht benutzbar

    • chrono ist eine sehr umfassende und präzise Bibliothek, aber schwer zu benutzen und unflexibel
  • Ein Scherz darüber, dass wieder eine neue burntsushi-Bibliothek erschienen ist

    • Ich frage mich, ob rustaceans wissen, warum man in Crates nicht tracing verwendet
    • log ist okay, aber Aufrufe bei Zeitzonen-Arbeit nachzuverfolgen ist kein üblicher Anwendungsfall
  • Die neue Bibliothek sieht cool aus

    • Ich frage mich, warum burntsushi eine neue Bibliothek macht
    • Ob es an Performance-Problemen bestehender Bibliotheken oder unbequemen APIs liegt, oder ob es einfach nur aus Spaß ist
  • Der Zustand der Kalenderbibliotheken in Rust ist nicht ideal

    • In Pandas sind Zeitzonenumwandlungen sehr einfach, in Chrono dagegen kompliziert
    • Jiff geht in die richtige Richtung, aber die Syntax ist manchmal seltsam
  • Das Hauptproblem bestehender Zeitbibliotheken ist die fehlende Unterstützung für Schaltsekunden

    • Der Grund ist, dass statt TAI Unix-Timestamps verwendet werden
    • Auch Jiff löst dieses Problem nicht
    • Ich finde, man sollte Schaltsekunden wie den 29. Februar oder eine Zeitzone behandeln
  • BurntSushi ist der Autor des Rust-Ökosystems für reguläre Ausdrücke

  • Diskussion über die Aussprache von Jiff

    • Eine Meinung ist, dass es mit weichem "g" wie in "gif" ausgesprochen werden sollte
    • Eine andere Meinung ist, dass es mit hartem "G" wie in "Giff" ausgesprochen werden sollte