• JavaScript के Date object की सीमाओं को मूल रूप से बदलने वाला नया मानक Temporal API, 9 साल के विकास के बाद ECMAScript Stage 4 तक पहुंच गया
  • Temporal immutable types, स्पष्ट time zone और calendar support, और nanosecond-level precision देता है, जिससे मौजूदा Date की अस्पष्टता और त्रुटियां दूर होती हैं
  • Bloomberg, Igalia, Microsoft, Google, Mozilla सहित कई संगठनों ने specification design और implementation पर साथ काम किया, और Rust-आधारित साझा लाइब्रेरी temporal_rs के जरिए multi-engine collaboration संभव हुआ
  • Temporal, ZonedDateTime, Instant, PlainDate/Time, Duration जैसे अधिक सूक्ष्म types के जरिए time operations और internationalized calendar handling को सटीक रूप से support करता है
  • 30 साल पुरानी समस्याओं को हल करने वाला यह मानक, JavaScript ecosystem में collaboration और open innovation की एक सफल मिसाल माना जा रहा है

JavaScript में time handling की समस्या और Temporal का आगमन

  • मौजूदा Date object को 1995 में Java के Date से लगभग ज्यों-का-त्यों port किया गया था, और mutability, असंगत month calculation, अस्पष्ट parsing जैसी समस्याओं के कारण यह दशकों से bugs की वजह बना रहा
    • उदाहरण: setMonth इस्तेमाल करने पर महीने के अंत की गणना में त्रुटि, ISO-जैसी strings की parsing में browser के अनुसार अलग परिणाम
  • 2010 के दशक के बाद web applications जटिल होने लगीं, तो Date की सीमाएं और गंभीर हो गईं
  • डेवलपर्स ने Moment.js जैसी बाहरी libraries से इन समस्याओं की भरपाई की, लेकिन इससे bundle size बढ़ा और maintenance burden भी आया
  • 2017 में Maggie Johnson-Pint ने TC39 में Temporal proposal जमा किया, जिसके साथ standardization पर चर्चा शुरू हुई

TC39 और industry का collaboration

  • Temporal ने 2018 में Stage 1 से शुरुआत की और 9 साल में Stage 4 (standardization) तक पहुंचा
  • Bloomberg ने बड़े JavaScript environments में time zone और precision से जुड़ी समस्याओं को हल करने के लिए सक्रिय भूमिका निभाई
    • आवश्यकताएं: custom time zones, IANA-आधारित historical time zone accuracy, nanosecond-level precision
  • Igalia, Microsoft, Google, Mozilla आदि के साथ मिलकर specification design और implementation आगे बढ़ाया गया
  • Philipp Dunkel, Ujjwal Sharma, Philip Chimento, Shane Carr, Justin Grant सहित कई engineers ने champions के रूप में भाग लिया

Temporal के प्रमुख types और features

  • Temporal.ZonedDateTime: स्पष्ट time zone, calendar, और DST adjustment के साथ immutable समय-प्रस्तुति
    • उदाहरण: London में DST transition के दौरान अगर 01:30 मौजूद न हो, तो इसे अपने-आप 02:30 पर adjust किया जाता है
  • Temporal.Instant: time zone और calendar के बिना absolute time point, nanosecond-level precision के साथ
    • एक ही समय-बिंदु को कई time zones में बदला जा सकता है
  • PlainDate / PlainTime / PlainDateTime / PlainYearMonth / PlainMonthDay: time zone के बिना 'wall-clock' प्रकार
    • साधारण तारीख/समय दिखाने या गणना के लिए उपयुक्त
  • Temporal.Duration: समय-अंतराल की अभिव्यक्ति, अलग-अलग units में conversion संभव (total({ unit: "second" }))
  • Calendar support: Hebrew calendar जैसी non-Gregorian calendars पर भी सटीक operations

implementation और standardization की प्रक्रिया

  • Temporal, ECMAScript के इतिहास में specification का सबसे बड़ा addition है, जिसमें लगभग 4,500 test cases शामिल हैं
  • Rust-आधारित shared implementation temporal_rs विकसित की गई, जिसे V8, Boa सहित कई engines ने साझा रूप से इस्तेमाल किया
    • फायदे: entry barrier कम, long-term maintenance आसान, code quality बेहतर
  • 2024~2025 के दौरान temporal_rs ने 100% tests pass किए, और इसे multi-engine collaboration की एक सफल मिसाल माना गया

support की स्थिति और आगे की चुनौतियां

  • Temporal को पहले से Firefox 139, Chrome/Edge 144, TypeScript 6.0 Beta में support मिला हुआ है
    • Safari अभी technology preview चरण में है, Node.js 26 बाद में आने वाला है
  • आगे की मुख्य चुनौती web APIs के साथ integration है
    • उदाहरण: <input type="date"> जैसे form elements में Temporal type support
    • DOMHighResTimeStamp के विकल्प के रूप में इसकी संभावना पर विचार (Temporal.Now.instant() के उपयोग का उदाहरण)

collaboration और open innovation की उपलब्धि

  • Temporal, 9 साल के multi-organization collaboration से बना मानक है,
    • जिसमें Microsoft, Google, Mozilla, Bloomberg, Igalia, Boa जैसे कई पक्ष शामिल रहे
  • temporal_rs, shared infrastructure model की एक सफल मिसाल है,
    • जिसने दोहराए गए implementation cost को घटाने, consistency बढ़ाने और innovation तेज करने को साबित किया
  • Temporal को सिर्फ API improvement नहीं, बल्कि JavaScript community द्वारा लंबे समय से जमा technical debt को मिलकर हल करने के प्रमाण के रूप में देखा जा रहा है
  • 30 साल बाद JavaScript को आखिरकार एक आधुनिक date/time API मिल गया

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.