2P by neo 2달전 | favorite | 댓글 1개
  • Jiff는 Rust용 날짜 및 시간 라이브러리로, 사용자가 쉽게 성공적인 결과를 얻을 수 있도록 설계됨
  • 고수준의 날짜 및 시간 프리미티브를 제공하여 오용이 어렵고 성능이 우수함
  • Time Zone Database와의 자동 통합, DST 인식 산술 및 반올림, 포맷팅 및 파싱 기능 제공
  • Serde 지원 등 다양한 기능 포함
  • JavaScript의 Temporal에서 많은 영감을 받음
  • MIT 또는 UNLICENSE 이중 라이선스

향후 계획

  • Jiff API를 개선하고 약 1년 동안 주기적으로 변경 사항을 릴리스할 계획
  • 1년 후 API가 안정되면 Jiff 1.0을 릴리스하고 장기간 API를 유지할 계획
  • 다른 사람들이 Jiff를 신뢰하고 사용할 수 있도록 하기 위함

성능

  • Jiff의 가장 중요한 설계 목표는 사용자가 잘못된 작업을 하기 어렵게 만드는 것
  • 두 번째 목표는 성능
  • 성능은 합리적이지만 개선할 여지가 있음
  • 벤치마크는 bench 디렉토리에서 확인 가능

플랫폼 지원

  • 시간대 지원과 관련된 플랫폼 지원 문제
  • IANA 시간대 식별자의 시간대 전환을 어떻게 결정할지
  • 현재 시스템의 기본 시간대를 어떻게 결정할지
  • Unix 시스템에서는 /usr/share/zoneinfo에서 시간대 전환 데이터 검색
  • Windows에서는 컴파일된 라이브러리에 시간대 데이터베이스 포함
  • 시스템 시간대 검색은 Unix에서는 /etc/localtime, Windows에서는 GetDynamicTimeZoneInformation 사용

의존성

  • Jiff는 Unix에서 의존성이 없음
  • 새로운 의존성을 추가하는 데 매우 보수적
  • 플랫폼과 상호작용하기 위해 필요한 경우나 상호 운용성을 위해 필요한 경우에만 의존성 추가

GN⁺의 정리

  • Jiff는 Rust용 고수준 날짜 및 시간 라이브러리로, 사용자가 쉽게 오용하지 않도록 설계됨
  • Time Zone Database와의 통합, DST 인식 산술 및 포맷팅 기능 등 다양한 기능 제공
  • JavaScript의 Temporal에서 영감을 받아 설계됨
  • 향후 1년 동안 API를 개선하고 안정된 1.0 버전을 릴리스할 계획
  • 성능은 합리적이지만 개선할 여지가 있으며, 플랫폼 지원은 Unix와 Windows에서 잘 작동함
Hacker News 의견
  • ToSpan 문법이 다소 어색하게 느껴짐

    • let span = 5.days().hours(8).minutes(1); 문법이 첫 번째 숫자가 앞에 나오고 나머지는 함수 인수로 나오는 것이 이상함
    • let span = Span::new().days(5).hours(8).minutes(1);로 작성할 수 있지만 몇 글자 더 필요함
  • datetime 라이브러리의 복잡성을 과소평가하는 사람들을 봄

    • UTC/Unix 시간을 내부 표현으로 사용하거나, 기간을 나노초로 표현하거나, 시간대 대신 오프셋을 사용하라는 의견이 있음
    • Jiff의 설계 문서를 읽어보기를 권장함
    • chrono와의 비교도 유익함
  • DST 산술, 라운드 가능한 기간, 시간대 인식 달력 산술, 시간대 충돌 감지 등이 라이브러리를 정확하고 사용하기 쉽게 만듦

    • chrono는 매우 포괄적이고 정확한 라이브러리지만 사용하기 어렵고 경직됨
  • 새로운 burntsushi 라이브러리가 나왔다는 농담

    • rustaceans가 crate에서 tracing을 사용하지 않는 이유를 아는지 궁금함
    • log는 괜찮지만 tz 작업 호출을 추적하는 것은 일반적인 사용 사례가 아님
  • 새로운 라이브러리가 멋져 보임

    • burntsushi가 새로운 라이브러리를 만드는 이유가 궁금함
    • 기존 라이브러리의 성능 문제나 API의 불편함 때문인지, 아니면 단순히 재미로 하는 것인지 궁금함
  • Rust의 캘린더 라이브러리 상태가 이상적이지 않음

    • Pandas에서는 시간대 변환이 매우 간단하지만 Chrono에서는 복잡함
    • Jiff가 올바른 방향으로 나아가고 있지만 문법이 때때로 이상함
  • 기존 시간 라이브러리의 주요 문제는 윤초 지원 부족임

    • UNIX 타임스탬프 대신 TAI를 사용하지 않기 때문임
    • Jiff도 이 문제를 해결하지 못함
    • 윤초를 2월 29일이나 시간대처럼 취급해야 한다고 생각함
  • BurntSushi가 Rust 정규 표현식 생태계의 저자임

  • Jiff의 발음에 대한 논쟁

    • "gif"처럼 부드러운 "g"로 발음해야 한다는 의견
    • "Giff"처럼 강한 "G"로 발음해야 한다는 의견