- 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
Hacker-News-Kommentare
Die ToSpan-Syntax wirkt etwas seltsam
let span = 5.days().hours(8).minutes(1);ist es merkwürdig, dass die erste Zahl vorne steht und der Rest als Funktionsargumente kommtlet span = Span::new().days(5).hours(8).minutes(1);schreiben, aber das braucht ein paar Zeichen mehrIch sehe Leute, die die Komplexität von Datetime-Bibliotheken unterschätzen
DST-Arithmetik, rundbare Zeitspannen, zeitzonenbewusste Kalenderarithmetik und Erkennung von Zeitzonenkonflikten machen die Bibliothek präzise und leicht benutzbar
Ein Scherz darüber, dass wieder eine neue burntsushi-Bibliothek erschienen ist
tracingverwendetlogist okay, aber Aufrufe bei Zeitzonen-Arbeit nachzuverfolgen ist kein üblicher AnwendungsfallDie neue Bibliothek sieht cool aus
Der Zustand der Kalenderbibliotheken in Rust ist nicht ideal
Das Hauptproblem bestehender Zeitbibliotheken ist die fehlende Unterstützung für Schaltsekunden
BurntSushi ist der Autor des Rust-Ökosystems für reguläre Ausdrücke
Diskussion über die Aussprache von Jiff