- Jiff est une bibliothèque de date et d’heure pour Rust, conçue pour aider les utilisateurs à obtenir facilement des résultats corrects
- Elle fournit des primitives de haut niveau pour la date et l’heure, difficiles à mal utiliser et performantes
- Elle propose une intégration automatique avec la Time Zone Database, des opérations arithmétiques et d’arrondi tenant compte du DST, ainsi que des fonctions de formatage et d’analyse
- Elle inclut diverses fonctionnalités, notamment la prise en charge de Serde
- Elle s’inspire largement de Temporal en JavaScript
- Double licence MIT ou UNLICENSE
Feuille de route
- Le plan est d’améliorer l’API de Jiff et de publier régulièrement des changements pendant environ un an
- Une fois l’API stabilisée après un an, Jiff 1.0 sera publié et l’API sera maintenue sur le long terme
- L’objectif est de permettre à d’autres de faire confiance à Jiff et de l’utiliser
Performances
- L’objectif de conception le plus important de Jiff est de rendre difficile pour l’utilisateur d’effectuer une mauvaise opération
- Le deuxième objectif est la performance
- Les performances sont raisonnables, mais il reste une marge d’amélioration
- Les benchmarks sont disponibles dans le répertoire
bench
Prise en charge des plateformes
- Il existe des questions de compatibilité liées à la prise en charge des fuseaux horaires
- Comment déterminer les transitions de fuseau horaire pour les identifiants de fuseau IANA
- Comment déterminer le fuseau horaire par défaut du système actuel
- Sur les systèmes Unix, les données de transition des fuseaux horaires sont récupérées depuis
/usr/share/zoneinfo
- Sous Windows, la base de données des fuseaux horaires est incluse dans la bibliothèque compilée
- Pour la détection du fuseau horaire système, Unix utilise
/etc/localtime et Windows utilise GetDynamicTimeZoneInformation
Dépendances
- Jiff n’a aucune dépendance sur Unix
- Le projet est très conservateur quant à l’ajout de nouvelles dépendances
- Des dépendances ne sont ajoutées que lorsqu’elles sont nécessaires pour interagir avec la plateforme ou pour l’interopérabilité
Résumé de GN⁺
- Jiff est une bibliothèque de date et d’heure de haut niveau pour Rust, conçue pour être difficile à mal utiliser
- Elle offre diverses fonctionnalités, notamment l’intégration avec la Time Zone Database, des opérations tenant compte du DST et des fonctions de formatage
- Sa conception s’inspire de Temporal en JavaScript
- Le projet prévoit d’améliorer l’API au cours de l’année à venir puis de publier une version 1.0 stable
- Les performances sont raisonnables mais peuvent encore être améliorées, et la prise en charge des plateformes fonctionne bien sur Unix et Windows
1 commentaires
Avis sur Hacker News
La syntaxe de ToSpan semble un peu maladroite
let span = 5.days().hours(8).minutes(1);paraît étrange, car le premier nombre est placé au début alors que les autres passent en arguments de fonctionlet span = Span::new().days(5).hours(8).minutes(1);, mais cela demande quelques caractères de plusCertaines personnes sous-estiment la complexité des bibliothèques de datetime
L’arithmétique DST, les durées arrondissables, l’arithmétique calendaire sensible aux fuseaux horaires et la détection des conflits de fuseaux rendent la bibliothèque précise et facile à utiliser
Une blague sur l’arrivée d’une nouvelle bibliothèque de burntsushi
tracingdans leurs crateslogconvient, mais tracer les appels liés au travail sur les fuseaux horaires n’est pas un cas d’usage courantLa nouvelle bibliothèque a l’air sympa
L’état des bibliothèques de calendrier dans Rust n’est pas idéal
Le principal problème des bibliothèques de temps existantes est l’absence de prise en charge des secondes intercalaires
BurntSushi est l’auteur de l’écosystème Rust des expressions régulières
Débat sur la prononciation de Jiff