2 ポイント 投稿者 GN⁺ 2024-07-23 | 1件のコメント | WhatsAppで共有
  • JiffはRust向けの日時ライブラリで、ユーザーが簡単に正しい結果を得られるように設計されている
  • 高水準の日時プリミティブを提供し、誤用しにくく高性能
  • Time Zone Databaseとの自動統合、DST対応の演算と丸め、フォーマットおよびパース機能を提供
  • Serdeサポートなど多様な機能を含む
  • JavaScriptのTemporalから多くの着想を得ている
  • MITまたはUNLICENSEのデュアルライセンス

今後の計画

  • Jiff APIを改善し、約1年間にわたって定期的に変更をリリースする計画
  • 1年後にAPIが安定したら、Jiff 1.0をリリースし、長期的にAPIを維持する計画
  • 他の人々がJiffを信頼して利用できるようにするため

パフォーマンス

  • Jiffの最も重要な設計目標は、ユーザーが誤った操作をしにくくすること
  • 2つ目の目標はパフォーマンス
  • パフォーマンスは妥当だが、改善の余地がある
  • ベンチマークは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で良好に機能する

1件のコメント

 
GN⁺ 2024-07-23
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ライブラリが出たという冗談

    • rustaceanたちがcrateで tracing を使わない理由を知っているのか気になる
    • log は悪くないが、tzの処理呼び出しを追跡するのは一般的なユースケースではない
  • 新しいライブラリは素晴らしそう

    • burntsushiが新しいライブラリを作る理由が気になる
    • 既存ライブラリの性能問題やAPIの使いづらさが理由なのか、それとも単に楽しみでやっているのか気になる
  • Rustのカレンダーライブラリの状況は理想的ではない

    • Pandasではタイムゾーン変換が非常に簡単だが、Chronoでは複雑
    • Jiffは正しい方向に進んでいるが、構文が時々奇妙
  • 既存の時間ライブラリの主な問題はうるう秒のサポート不足

    • UNIXタイムスタンプの代わりにTAIを使っていないため
    • Jiffもこの問題は解決できていない
    • うるう秒は2月29日やタイムゾーンのように扱うべきだと思う
  • BurntSushiはRust正規表現エコシステムの作者

  • Jiffの発音をめぐる議論

    • "gif" のように柔らかい "g" で発音すべきだという意見
    • "Giff" のように強い "G" で発音すべきだという意見