Node.js 22.0 جاری کیا گیا، جاوا اسکرپٹ میں نیٹ ورک ایپلی کیشنز چلانے کا ایک پلیٹ فارم۔ Node.js 22.0 کو ایک طویل المدتی سپورٹ برانچ کے طور پر درجہ بندی کیا گیا ہے، لیکن یہ حیثیت صرف اکتوبر میں، استحکام کے بعد تفویض کی جائے گی۔ Node.js 22.x کو 30 اپریل 2027 تک سپورٹ کیا جائے گا۔ Node.js 20.x کی پچھلی LTS برانچ کی دیکھ بھال اپریل 2026 تک رہے گی، اور آخری LTS برانچ 18.x سے ایک سال اپریل 2025 تک۔ Node.js 21.x کی سٹیجنگ برانچ 1 جون 2024 کو بند کر دی جائے گی۔
اہم بہتری:
- V8 انجن کو ورژن 12.4 میں اپ ڈیٹ کر دیا گیا ہے، جو Chromium 124 میں استعمال ہوتا ہے۔ Node.js 21 برانچ کے مقابلے میں تبدیلیوں میں، جس نے V8 11.8 انجن استعمال کیا تھا)، یہ نوٹ کیا گیا ہے:
- WasmGC ایکسٹینشن کے لیے سپورٹ، جو پروگرامنگ زبانوں میں لکھے گئے پروگراموں کی پورٹنگ کو آسان بناتا ہے جو ویب اسمبلی میں کوڑا اٹھانے والے (Kotlin، PHP، Java، وغیرہ) کا استعمال کرتے ہیں۔ WasmGC نئی قسم کے ڈھانچے اور صفوں کو شامل کرتا ہے جو غیر لکیری میموری مختص استعمال کر سکتے ہیں۔
- Array.fromAsync() طریقہ کار کے لیے سپورٹ، جو کہ ایک سرنی کی طرح، تکرار پذیر یا async تکراری آبجیکٹ سے کاپی کی گئی ایک Array آبجیکٹ کی ایک نئی مثال کو متضاد طور پر واپس کرتا ہے۔
- تکرار کرنے والے طریقوں جیسے کہ .map، .filter، .find، .take، .drop، .forEach اور .reduce کے لیے سپورٹ۔
- ایک سیٹ آبجیکٹ کے لیے سپورٹ جو اقدار کے مجموعے کی وضاحت کرتا ہے اور ایسے طریقے پیش کرتا ہے جو مشترکہ سیٹ آپریشنز کو نافذ کرتے ہیں، جیسے انٹرسیکشن، یونین، فرق، اور اضافہ۔
- Maglev کو بہتر بنانے والا JIT کمپائلر بطور ڈیفالٹ فعال ہوتا ہے، جس کا مقصد بہت زیادہ استعمال شدہ JavaScript کوڈ کے لیے اعلی کارکردگی والے مشین کوڈ کو تیزی سے تیار کرنا ہے۔ Maglev کو فعال کرنے سے قلیل المدتی CLI ایپلی کیشنز کو نمایاں طور پر تیز کیا جا سکتا ہے جو طویل مدتی آپریشنز نہیں کرتی ہیں، مثال کے طور پر، Jetstrea ٹیسٹ کو مکمل کرنے کے وقت میں 7.5%، اور سپیڈومیٹر ٹیسٹ میں 5% کی کمی ہو جاتی ہے۔
- ہائی واٹر مارک آپشن کی قدر کو 16 KB سے بڑھا کر 65 KB کر کے اسٹریمز کے ساتھ کام کو تیز کیا گیا ہے (اس حد کی وضاحت کرتا ہے جس تک ریکارڈنگ بفر کی جاتی ہے)۔ تبدیلی کے نتیجے میں میموری کی کھپت میں اضافہ ہوتا ہے، لہذا محدود RAM پر چلنے کے لیے ڈیزائن کردہ ایپلیکیشنز کو سیٹ ڈیفالٹ ہائی واٹر مارک () پر کال کے ذریعے پرانی قدر پر واپس جانے کی ضرورت پڑ سکتی ہے۔
- AbortSignal instantiation کو زیادہ موثر بنا کر fetch() اور ٹیسٹ رنر APIs کی بہتر کارکردگی۔ فائل سسٹم کے ساتھ مطابقت پذیر کام سے متعلق APIs کی کارکردگی کو بہتر بنایا گیا ہے۔
- جاوا اسکرپٹ ESM ماڈیولز (ECMAScript Modules) کو سنکرونس موڈ میں لوڈ کرنے کے لیے "require()" کال کو استعمال کرنے کے لیے ایک تجرباتی خصوصیت فراہم کی گئی ہے۔ ESM ماڈیول براؤزرز میں استعمال ہوتے ہیں اور Node.js کے لیے مخصوص CommonJS ماڈیولز کو تبدیل کرتے ہیں۔ "require()" کے ذریعے لوڈ کرنے کے لیے، ESM ماڈیول کو سنکرونس موڈ میں انجام دیا جانا چاہیے (سب سے اوپر کی سطح پر انتظار کیے بغیر)۔ سپورٹ کو "--تجرباتی-ضرورت-ماڈیول" پرچم کے ذریعے فعال کیا گیا ہے۔
- "--رن" کمانڈ کا استعمال کرتے ہوئے package.json فائل میں بیان کردہ اسکرپٹ کو چلانے کی تجرباتی صلاحیت شامل کی گئی "
- "node -watch" کمانڈ کو واچ موڈ کے نفاذ کے ساتھ مستحکم زمرے میں منتقل کر دیا گیا ہے جو اس بات کو یقینی بناتا ہے کہ درآمد شدہ فائل کے تبدیل ہونے پر عمل کو دوبارہ شروع کیا جائے (مثال کے طور پر، اگر "node -watch index.js" پر عمل درآمد کیا جاتا ہے، index.js تبدیل ہونے پر عمل خود بخود دوبارہ شروع ہو جائے گا)۔
- WebSocket API کے مقامی نفاذ کو مستحکم کر دیا گیا ہے، جس سے WebSocket کو اضافی انحصار انسٹال کیے بغیر کلائنٹ موڈ میں استعمال کیا جا سکتا ہے۔
- نیویگیٹر API کے لیے جزوی تعاون شامل کر دیا گیا۔
- Webstreams API نے ڈیفلیٹ-را کمپریشن فارمیٹ کے لیے تعاون شامل کیا ہے۔
- فائل پاتھ کے پیٹرن میچنگ کے لیے نوڈ:fsmodule میں گلوب اور گلوب سنک فنکشنز شامل کیے گئے۔
- غلط طریقے سے کنفیگر کیے گئے IPv6 سٹیکس کی بہتر ہینڈلنگ۔ IPv6 آپریشن کے ساتھ مسائل کی صورت میں فوری رول بیک کے لیے ہیپی آئی بالز الگورتھم کو نافذ کیا گیا۔
- util API کو فرسودہ کر دیا گیا ہے۔
- اپ ڈیٹ کردہ انحصاری ورژن: npm 10.5.1، libuv 1.48.0، simdutf 5.2.3، c-ares 1.28.1، zlib 1.3.0.1-motley-24c07df، simdjson سے 3.8.0، ada.2.7.7 اور 6.6.0. undic. .
Node.js پلیٹ فارم کو ویب ایپلیکیشنز کی سرور سائیڈ سپورٹ اور معیاری کلائنٹ اور سرور سائیڈ نیٹ ورک پروگرام بنانے کے لیے استعمال کیا جا سکتا ہے۔ Node.js ایپلی کیشنز کی فعالیت کو بڑھانے کے لیے، ماڈیولز کا ایک بڑا مجموعہ تیار کیا گیا ہے، جس میں ان پر عمل درآمد سرورز اور HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3 کے کلائنٹس، مختلف ویب فریم ورک کے ساتھ انضمام کے لیے ماڈیولز، WebSocket اور Ajax ہینڈلرز، DBMS کے کنیکٹرز (MySQL، PostgreSQL، SQLite، MongoDB)، ٹیمپلیٹ انجنز، CSS انجنز، crAGO کے تصنیف اور نظام کے نفاذ کے لیے۔ XML تجزیہ کار۔
متوازی درخواستوں کی بڑی تعداد کو ہینڈل کرنے کے لیے، Node.js غیر مسدود ایونٹ پروسیسنگ اور کال بیک ہینڈلرز کی وضاحت پر مبنی ایک غیر مطابقت پذیر کوڈ کے عمل درآمد ماڈل کا استعمال کرتا ہے۔ ملٹی پلیکسنگ کنکشن کے لیے معاون طریقوں میں ایپل، کیو، /dev/poll، اور سلیکٹ شامل ہیں۔ کنکشن ملٹی پلیکسنگ کے لیے، libuv لائبریری کا استعمال کیا جاتا ہے، جو یونکس سسٹمز پر libev اور ونڈوز پر IOCP میں ایک اضافہ ہے۔ libeio لائبریری کا استعمال تھریڈ پول بنانے کے لیے کیا جاتا ہے، اور c-ares کو DNS سوالات کو نان بلاکنگ موڈ میں انجام دینے کے لیے مربوط کیا جاتا ہے۔ تمام سسٹم کالز جو بلاکنگ کا سبب بنتی ہیں تھریڈ پول کے اندر عمل میں لائی جاتی ہیں اور پھر، سگنل ہینڈلرز کی طرح، اپنے کام کا نتیجہ ایک بے نام پائپ کے ذریعے واپس بھیج دیتے ہیں۔
جاوا اسکرپٹ کوڈ کے نفاذ کو گوگل کے تیار کردہ V8 انجن کے استعمال سے یقینی بنایا جاتا ہے (اس کے علاوہ، مائیکروسافٹ Node.js کا ایک ورژن چکرا کور انجن کے ساتھ تیار کر رہا ہے)۔ اس کے بنیادی طور پر، Node.js Perl AnyEvent، Ruby Event Machine، Python Twisted فریم ورک اور Tcl میں ایونٹس کے نفاذ سے ملتا جلتا ہے، لیکن Node.js میں ایونٹ کا لوپ ڈویلپر سے پوشیدہ ہے اور ویب ایپلیکیشن میں ایونٹ پروسیسنگ سے ملتا جلتا ہے۔ براؤزر میں چل رہا ہے۔
ماخذ: opennet.ru
