- हाल की TC39 की 108वीं बैठक में JavaScript के भविष्य को आगे बढ़ाने वाले 9 प्रस्ताव मानकीकरण के अलग-अलग चरणों में आगे बढ़े
- Stage 4 (अंतिम स्वीकृति) में
using, Array.fromAsync, Error.isError जैसे ऐसे फीचर शामिल हैं जो डेवलपर प्रोडक्टिविटी और सुरक्षा बढ़ाते हैं
- Stage 3~1 में immutable ArrayBuffer, seeded random, clamp, NumberFormat सुधार, Random functions जैसे कई उपयोगी फीचर प्रस्तावों पर चर्चा चल रही है
- Deno नवीनतम standards को अपनाने और उन पर प्रयोग करने में सक्रिय है, और कुछ फीचर पहले से ही Deno और आधुनिक browsers में उपलब्ध हैं
- आगे भी मानकीकरण पर चर्चा जारी रहेगी, और उम्मीद है कि JavaScript ecosystem और अधिक सुरक्षित तथा संक्षिप्त रूप में विकसित होगा
TC39 के नवीनतम मानकीकरण रुझान और JavaScript के प्रमुख नए फीचर
Stage 4: औपचारिक रूप से अपनाए जाने वाले फीचर
स्पष्ट resource management (using)
using declaration के जरिए file, network socket जैसे resource objects की lifecycle समाप्त होने पर automatic cleanup सुनिश्चित किया जाता है
- C# और Python से प्रेरित इस संरचना में object पर
[Symbol.dispose]() या [Symbol.asyncDispose]() method लागू किया जाता है, जिसे block समाप्त होने पर कॉल किया जाता है
- exception होने पर भी automatic cleanup होने से file handle जैसे resources के leak का जोखिम कम होता है
- Chrome 134, Firefox 134, Deno v2.3 आदि में यह पहले से समर्थित है, और Deno में file व socket जैसे व्यावहारिक कार्यों में तुरंत इस्तेमाल किया जा सकता है
Array.fromAsync
- यह asynchronous iterable को array में बदलने वाला standard method है, जो Promise लौटाता है
- async generator आदि से क्रमवार values एकत्र कर अंत में array result को Promise के रूप में प्राप्त किया जाता है
- इसका उपयोग मौजूदा synchronous
Array.from जैसा है, और यह mapping function व thisArg को support करता है
- सभी प्रमुख browsers, Node v22, और Deno v1.38 या उससे ऊपर में समर्थित
Error.isError
- यह एक built-in function है जो आसानी से पहचान सकता है कि कोई value वास्तविक Error object है या नहीं
- cross-realm, subclass errors जैसे जटिल मामलों में भी यह भरोसेमंद तरीके से काम करता है
- polyfill और library development में विश्वसनीयता बढ़ती है
Stage 3: immutable ArrayBuffer
Immutable ArrayBuffer
ArrayBuffer को immutable बनाने के लिए transferToImmutable(), sliceToImmutable() methods जोड़े जाने की योजना है
- immutable buffer बनने के बाद उसमें बदलाव या detachment संभव नहीं होगा, जिससे threads और workers के बीच सुरक्षित sharing और बेहतर performance मिलती है
- Deno आदि में binary data processing के दौरान अनावश्यक copying के बिना इसका अधिक दक्ष उपयोग किया जा सकता है
Stage 2: नए प्रस्तावित फीचर
Random.Seeded
- seed-आधारित PRNG (
Random.Seeded(seed)) के जरिए बार-बार चलाने पर भी वही random sequence बनाई जा सकती है
- game और simulation जैसे ऐसे क्षेत्रों में उपयोगी, जहाँ reproducibility महत्वपूर्ण होती है
- मौजूदा
Math.random() के विपरीत यह seed निर्दिष्ट करने, state cloning जैसे advanced features देता है
Number.prototype.clamp
- यह numeric range limiting method है, जो value को दिए गए minimum और maximum range के भीतर अपने-आप समायोजित करता है
- यह मौजूदा
Math.min(Math.max(x, min), max) pattern का छोटा और स्पष्ट विकल्प है
Stage 1: प्रारंभिक चर्चा के प्रस्ताव
Keep Trailing Zeros
Intl.NumberFormat के नए option के रूप में decimal point के बाद आने वाले 0 को बनाए रखने या हटाने को अधिक सूक्ष्म रूप से नियंत्रित किया जा सकेगा
- amount, fixed-point जैसी UI स्थितियों में वांछित प्रस्तुति क्षमता बेहतर होगी
Comparisons
- Node.js के
util.inspect की तरह values की मानव-अनुकूल प्रस्तुति और diff output को standardize करना इसका लक्ष्य है
- test frameworks, console output आदि में एकरूपता मिलेगी
Random Functions
- नया
Random namespace लाकर random, sampling, shuffle जैसी सुरक्षित और संक्षिप्त random-related functions का सेट उपलब्ध कराने का प्रस्ताव है
- off-by-one errors को रोकने और विभिन्न collection व sampling patterns को सहज रूप से support करने का लक्ष्य है
Deno और JavaScript ecosystem का भविष्य
- Deno मानकीकरण चर्चाओं में सक्रिय रूप से भाग ले रहा है और नए फीचर्स को व्यावहारिक कामकाज में तेज़ी से शामिल कर रहा है
- उदाहरण: async context propagation, built-in OpenTelemetry, और नए resource management patterns
- सितंबर के बाद होने वाली अतिरिक्त TC39 बैठकों में भी मानकीकरण पर चर्चा जारी रहने की संभावना है
- JavaScript developers आगे चलकर और अधिक शक्तिशाली, सुरक्षित और सुविधाजनक language environment का अनुभव कर सकेंगे
3 टिप्पणियां
await operations proposal
यह कब...
पैटर्न मैचिंग कब जोड़ी जाएगी?
stage 1 में signals है, लेकिन आधिकारिक रिलीज़ होने में अभी काफ़ी समय लगने वाला लगता है।