2 pontos por GN⁺ 2024-07-23 | 1 comentários | Compartilhar no WhatsApp
  • Jiff é uma biblioteca de data e hora para Rust, projetada para que os usuários consigam obter resultados corretos com facilidade
  • Fornece primitivas de data e hora de alto nível, difíceis de usar incorretamente e com ótimo desempenho
  • Oferece integração automática com o Time Zone Database, aritmética e arredondamento com reconhecimento de DST, além de formatação e parsing
  • Inclui vários recursos, como suporte a Serde
  • Recebeu muita inspiração do Temporal, do JavaScript
  • Licença dupla MIT ou UNLICENSE

Planos futuros

  • Há planos de melhorar a API do Jiff e lançar mudanças periodicamente ao longo de cerca de 1 ano
  • Após 1 ano, quando a API estiver estável, há planos de lançar o Jiff 1.0 e manter a API por um longo período
  • O objetivo é permitir que outras pessoas confiem no Jiff e o utilizem

Desempenho

  • O objetivo de design mais importante do Jiff é tornar difícil para os usuários fazerem algo errado
  • O segundo objetivo é desempenho
  • O desempenho é razoável, mas ainda há espaço para melhorias
  • Os benchmarks podem ser consultados no diretório bench

Suporte a plataformas

  • Existem questões de suporte de plataforma relacionadas ao suporte a fuso horário
  • Como determinar as transições de fuso horário para identificadores de fuso horário da IANA
  • Como determinar o fuso horário padrão do sistema atual
  • Em sistemas Unix, os dados de transição de fuso horário são buscados em /usr/share/zoneinfo
  • No Windows, o banco de dados de fuso horário é incluído na biblioteca compilada
  • A detecção do fuso horário do sistema usa /etc/localtime no Unix e GetDynamicTimeZoneInformation no Windows

Dependências

  • O Jiff não tem dependências no Unix
  • É extremamente conservador ao adicionar novas dependências
  • Dependências só são adicionadas quando necessário para interagir com a plataforma ou para interoperabilidade

Resumo do GN⁺

  • Jiff é uma biblioteca de data e hora de alto nível para Rust, projetada para dificultar o uso incorreto pelos usuários
  • Oferece vários recursos, como integração com o Time Zone Database, aritmética com reconhecimento de DST e formatação
  • Foi projetada com inspiração no Temporal, do JavaScript
  • Há planos de melhorar a API ao longo do próximo ano e lançar uma versão 1.0 estável
  • O desempenho é razoável, mas ainda há espaço para melhorias, e o suporte a plataformas funciona bem em Unix e Windows

1 comentários

 
GN⁺ 2024-07-23
Comentários do Hacker News
  • A sintaxe de ToSpan parece um pouco estranha

    • Na sintaxe let span = 5.days().hours(8).minutes(1);, é estranho que o primeiro número venha antes e os demais apareçam como argumentos de função
    • Dá para escrever como let span = Span::new().days(5).hours(8).minutes(1);, mas isso exige alguns caracteres a mais
  • Vejo pessoas subestimando a complexidade de bibliotecas de datetime

    • Há opiniões de que se deve usar UTC/tempo Unix como representação interna, representar períodos em nanossegundos ou usar offsets em vez de fusos horários
    • Recomendo ler o documento de design do Jiff
    • A comparação com o chrono também é útil
  • Aritmética com DST, períodos arredondáveis, aritmética de calendário com reconhecimento de fuso horário e detecção de conflitos de fuso tornam a biblioteca correta e fácil de usar

    • O chrono é uma biblioteca muito abrangente e precisa, mas difícil de usar e rígida
  • Piada dizendo que saiu mais uma nova biblioteca do burntsushi

    • Fico curioso para saber se os rustaceans sabem por que ele não usa tracing em crates
    • log é aceitável, mas rastrear chamadas de operações de tz não é um caso de uso comum
  • A nova biblioteca parece legal

    • Fico curioso sobre por que o burntsushi cria uma nova biblioteca
    • Se é por problemas de desempenho nas bibliotecas existentes, pela inconveniência da API, ou simplesmente por diversão
  • O estado das bibliotecas de calendário no Rust não é ideal

    • No Pandas, a conversão de fuso horário é muito simples, mas no Chrono é complicada
    • O Jiff está indo na direção certa, mas a sintaxe às vezes é estranha
  • O principal problema das bibliotecas de tempo existentes é a falta de suporte a segundos intercalares

    • Isso acontece porque usam timestamps UNIX em vez de TAI
    • O Jiff também não resolve esse problema
    • Acho que segundos intercalares deveriam ser tratados como 29 de fevereiro ou como fusos horários
  • BurntSushi é o autor do ecossistema de expressões regulares do Rust

  • Debate sobre a pronúncia de Jiff

    • Há quem diga que deve ser pronunciado com "g" suave, como em "gif"
    • Há quem diga que deve ser pronunciado com "G" forte, como em "Giff"