2 points par GN⁺ 2024-07-23 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2024-07-23
Avis sur Hacker News
  • La syntaxe de ToSpan semble un peu maladroite

    • La syntaxe 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 fonction
    • On peut aussi l’écrire avec let span = Span::new().days(5).hours(8).minutes(1);, mais cela demande quelques caractères de plus
  • Certaines personnes sous-estiment la complexité des bibliothèques de datetime

    • On voit des avis disant qu’il suffit d’utiliser UTC/le temps Unix comme représentation interne, de représenter les durées en nanosecondes ou d’utiliser des offsets au lieu des fuseaux horaires
    • Il est recommandé de lire le document de conception de Jiff
    • La comparaison avec chrono est également instructive
  • 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

    • chrono est une bibliothèque très complète et précise, mais difficile à utiliser et rigide
  • Une blague sur l’arrivée d’une nouvelle bibliothèque de burntsushi

    • Quelqu’un se demande pourquoi les rustaceans n’utilisent pas tracing dans leurs crates
    • log convient, mais tracer les appels liés au travail sur les fuseaux horaires n’est pas un cas d’usage courant
  • La nouvelle bibliothèque a l’air sympa

    • Certains se demandent pourquoi burntsushi crée une nouvelle bibliothèque
    • Ils se demandent si c’est à cause de problèmes de performance des bibliothèques existantes, d’une API peu pratique, ou simplement pour le plaisir
  • L’état des bibliothèques de calendrier dans Rust n’est pas idéal

    • Dans Pandas, la conversion de fuseaux horaires est très simple, alors que dans Chrono elle est complexe
    • Jiff va dans la bonne direction, mais sa syntaxe semble parfois étrange
  • Le principal problème des bibliothèques de temps existantes est l’absence de prise en charge des secondes intercalaires

    • Cela vient du fait qu’elles n’utilisent pas TAI au lieu des timestamps UNIX
    • Jiff non plus ne résout pas ce problème
    • Certains pensent qu’il faudrait traiter les secondes intercalaires comme le 29 février ou comme un fuseau horaire
  • BurntSushi est l’auteur de l’écosystème Rust des expressions régulières

  • Débat sur la prononciation de Jiff

    • Certains estiment qu’il faut le prononcer avec un "g" doux, comme dans "gif"
    • D’autres pensent qu’il faut le prononcer avec un "G" dur, comme dans "Giff"