- 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
Comentários do Hacker News
A sintaxe de
ToSpanparece um pouco estranhalet span = 5.days().hours(8).minutes(1);, é estranho que o primeiro número venha antes e os demais apareçam como argumentos de funçãolet span = Span::new().days(5).hours(8).minutes(1);, mas isso exige alguns caracteres a maisVejo pessoas subestimando a complexidade de bibliotecas de datetime
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
Piada dizendo que saiu mais uma nova biblioteca do burntsushi
tracingem crateslogé aceitável, mas rastrear chamadas de operações de tz não é um caso de uso comumA nova biblioteca parece legal
O estado das bibliotecas de calendário no Rust não é ideal
O principal problema das bibliotecas de tempo existentes é a falta de suporte a segundos intercalares
BurntSushi é o autor do ecossistema de expressões regulares do Rust
Debate sobre a pronúncia de Jiff