- Jiff, Rust के लिए एक date और time लाइब्रेरी है, जिसे इस तरह डिज़ाइन किया गया है कि उपयोगकर्ता आसानी से सही परिणाम प्राप्त कर सकें
- यह high-level date और time primitives प्रदान करती है, जिससे इसका गलत उपयोग करना कठिन होता है और performance अच्छी रहती है
- Time Zone Database के साथ automatic integration, DST-aware arithmetic और rounding, formatting और parsing सुविधाएँ प्रदान करती है
- Serde support सहित कई फीचर शामिल हैं
- JavaScript के Temporal से काफी प्रेरित है
- MIT या UNLICENSE dual license
आगे की योजना
- Jiff API को बेहतर बनाने और लगभग 1 साल तक नियमित रूप से बदलाव रिलीज़ करने की योजना है
- 1 साल बाद जब API स्थिर हो जाएगा, तब Jiff 1.0 रिलीज़ किया जाएगा और लंबे समय तक API को बनाए रखने की योजना है
- इसका उद्देश्य है कि दूसरे लोग Jiff पर भरोसा कर सकें और उसका उपयोग कर सकें
प्रदर्शन
- Jiff का सबसे महत्वपूर्ण design goal यह है कि उपयोगकर्ताओं के लिए गलत काम करना कठिन बनाया जाए
- दूसरा लक्ष्य performance है
- performance उचित है, लेकिन सुधार की गुंजाइश है
- benchmark
bench directory में देखा जा सकता है
प्लेटफ़ॉर्म समर्थन
- time zone support से जुड़े platform support मुद्दे हैं
- IANA time zone identifiers के लिए time zone transitions को कैसे तय किया जाए
- मौजूदा system का default time zone कैसे निर्धारित किया जाए
- Unix systems में
/usr/share/zoneinfo से time zone transition data प्राप्त किया जाता है
- Windows में compiled library में time zone database शामिल है
- system time zone lookup के लिए Unix में
/etc/localtime, और Windows में GetDynamicTimeZoneInformation का उपयोग होता है
dependencies
- Jiff की Unix पर कोई dependency नहीं है
- नई dependencies जोड़ने को लेकर यह बहुत conservative है
- dependency केवल तभी जोड़ी जाती है जब platform के साथ interaction या interoperability के लिए उसकी आवश्यकता हो
GN⁺ का सार
- Jiff, Rust के लिए एक high-level date और time लाइब्रेरी है, जिसे इस तरह डिज़ाइन किया गया है कि उपयोगकर्ता इसका गलत उपयोग आसानी से न कर सकें
- यह Time Zone Database integration, DST-aware arithmetic और formatting जैसी कई सुविधाएँ प्रदान करती है
- यह JavaScript के Temporal से प्रेरित होकर डिज़ाइन की गई है
- आने वाले 1 साल में API को बेहतर बनाकर स्थिर 1.0 version रिलीज़ करने की योजना है
- performance उचित है, लेकिन सुधार की गुंजाइश है, और platform support Unix तथा Windows पर अच्छी तरह काम करता है
1 टिप्पणियां
Hacker News राय
ToSpan syntax कुछ अटपटा लगती है
let span = 5.days().hours(8).minutes(1);syntax में पहला नंबर आगे आता है और बाकी function arguments के रूप में आते हैं, जो अजीब लगता हैlet span = Span::new().days(5).hours(8).minutes(1);की तरह लिखा जा सकता है, लेकिन इसमें कुछ extra characters लगते हैंकुछ लोग datetime library की complexity को कम करके आंकते दिखते हैं
DST arithmetic, round की जा सकने वाली durations, timezone-aware calendar arithmetic, और timezone conflict detection जैसी चीजें library को सही और इस्तेमाल में आसान बनाती हैं
मजाक में कहा गया कि एक नई burntsushi library आ गई है
tracingका इस्तेमाल क्यों नहीं करतेlogठीक है, लेकिन tz job calls को trace करना कोई सामान्य use case नहीं हैनई library बढ़िया लग रही है
Rust में calendar libraries की स्थिति आदर्श नहीं है
मौजूदा time libraries की मुख्य समस्या leap second support की कमी है
BurntSushi Rust regular expression ecosystem के लेखक हैं
Jiff के उच्चारण पर बहस