2 puntos por GN⁺ 2024-07-23 | 1 comentarios | Compartir por WhatsApp
  • Jiff es una biblioteca de fecha y hora para Rust, diseñada para que los usuarios puedan obtener resultados correctos con facilidad
  • Proporciona primitivas de fecha y hora de alto nivel, por lo que es difícil usarla incorrectamente y ofrece un buen rendimiento
  • Ofrece integración automática con la Time Zone Database, aritmética y redondeo con reconocimiento de DST, además de funciones de formateo y parseo
  • Incluye varias funciones, como soporte para Serde
  • Toma mucha inspiración de Temporal de JavaScript
  • Licencia dual MIT o UNLICENSE

Planes a futuro

  • Planea mejorar la API de Jiff y publicar cambios de forma periódica durante aproximadamente un año
  • Después de un año, cuando la API esté estable, planea lanzar Jiff 1.0 y mantener la API a largo plazo
  • El objetivo es que otras personas puedan confiar en Jiff y usarlo

Rendimiento

  • El objetivo de diseño más importante de Jiff es hacer que sea difícil para los usuarios hacer cosas incorrectas
  • El segundo objetivo es el rendimiento
  • El rendimiento es razonable, pero hay margen de mejora
  • Los benchmarks pueden revisarse en el directorio bench

Soporte de plataformas

  • Hay cuestiones de soporte de plataforma relacionadas con el soporte de zonas horarias
  • Cómo determinar las transiciones de zona horaria para los identificadores de zona horaria de IANA
  • Cómo determinar la zona horaria predeterminada del sistema actual
  • En sistemas Unix, los datos de transición de zona horaria se buscan en /usr/share/zoneinfo
  • En Windows, la base de datos de zonas horarias se incluye en la biblioteca compilada
  • Para detectar la zona horaria del sistema, en Unix se usa /etc/localtime y en Windows GetDynamicTimeZoneInformation

Dependencias

  • Jiff no tiene dependencias en Unix
  • Es muy conservador al agregar nuevas dependencias
  • Solo agrega dependencias cuando son necesarias para interactuar con la plataforma o para interoperabilidad

Resumen de GN⁺

  • Jiff es una biblioteca de fecha y hora de alto nivel para Rust, diseñada para evitar que los usuarios la usen incorrectamente con facilidad
  • Ofrece varias funciones, como integración con la Time Zone Database, aritmética con reconocimiento de DST y funciones de formateo
  • Fue diseñada con inspiración en Temporal de JavaScript
  • Durante el próximo año planea mejorar la API y luego lanzar una versión 1.0 estable
  • El rendimiento es razonable, aunque todavía puede mejorar, y el soporte de plataforma funciona bien en Unix y Windows

1 comentarios

 
GN⁺ 2024-07-23
Comentarios de Hacker News
  • La sintaxis de ToSpan se siente algo incómoda

    • En la sintaxis let span = 5.days().hours(8).minutes(1);, resulta raro que el primer número vaya al frente y el resto aparezca como argumentos de función
    • Se puede escribir como let span = Span::new().days(5).hours(8).minutes(1);, pero requiere algunos caracteres más
  • Hay gente que subestima la complejidad de las bibliotecas de datetime

    • Hay opiniones que dicen que se debería usar UTC/tiempo Unix como representación interna, expresar los períodos en nanosegundos o usar offsets en lugar de zonas horarias
    • Recomiendan leer el documento de diseño de Jiff
    • También es útil compararlo con chrono
  • La aritmética de DST, los períodos redondeables, la aritmética de calendario con reconocimiento de zona horaria y la detección de conflictos de zona horaria hacen que la biblioteca sea precisa y fácil de usar

    • chrono es una biblioteca muy completa y precisa, pero es difícil de usar y rígida
  • Un chiste sobre que salió una nueva biblioteca de burntsushi

    • Se preguntan si los rustaceans saben por qué no usan tracing en sus crate
    • log está bien, pero rastrear llamadas de trabajo de tz no es un caso de uso común
  • La nueva biblioteca se ve genial

    • Se preguntan por qué burntsushi crea una biblioteca nueva
    • Tienen curiosidad por saber si es por problemas de rendimiento en bibliotecas existentes, por lo incómodo de la API o simplemente por diversión
  • El estado de las bibliotecas de calendario en Rust no es ideal

    • En Pandas, la conversión de zona horaria es muy sencilla, pero en Chrono es complicada
    • Jiff va en la dirección correcta, pero su sintaxis a veces se siente rara
  • El principal problema de las bibliotecas de tiempo existentes es la falta de soporte para segundos intercalares

    • Esto se debe a que no usan TAI en lugar de marcas de tiempo UNIX
    • Jiff tampoco resuelve este problema
    • Creen que los segundos intercalares deberían tratarse como el 29 de febrero o como una zona horaria
  • BurntSushi es el autor del ecosistema de expresiones regulares de Rust

  • Debate sobre la pronunciación de Jiff

    • Una opinión dice que debería pronunciarse con una "g" suave, como "gif"
    • Otra opinión dice que debería pronunciarse con una "G" fuerte, como "Giff"