سرور سائیڈ JavaScript پلیٹ فارم Node.js 20.0 دستیاب ہے۔

Node.js 20.0 جاری کیا گیا، جاوا اسکرپٹ میں نیٹ ورک ایپلی کیشنز چلانے کا ایک پلیٹ فارم۔ Node.js 20.0 کو ایک طویل المدتی سپورٹ برانچ کے طور پر درجہ بندی کیا گیا ہے، لیکن یہ حیثیت صرف اکتوبر میں، استحکام کے بعد تفویض کی جائے گی۔ Node.js 20.x کو 30 اپریل 2026 تک سپورٹ کیا جائے گا۔ Node.js 18.x کی پچھلی LTS برانچ کی دیکھ بھال اپریل 2025 تک رہے گی، اور آخری LTS برانچ 16.x سے پہلے کی ستمبر 2023 تک۔ 14.x LTS برانچ 30 اپریل کو بند کر دی جائے گی، اور Node.js 19.x سٹیجنگ برانچ یکم جون کو بند کر دی جائے گی۔

اہم بہتری:

  • V8 انجن کو ورژن 11.3 میں اپ ڈیٹ کر دیا گیا ہے، جو Chromium 113 میں استعمال ہوتا ہے۔ Node.js 19 برانچ کے مقابلے میں تبدیلیاں، جس نے Chromium 107 انجن کا استعمال کیا، String.prototype.isWellFormed اور toWellFormed فنکشنز، Array.prototype اور TypedArray شامل ہیں۔ Array اور TypedArray اشیاء کو تبدیل کرتے وقت کاپی کے ساتھ کام کرنے کے پروٹوٹائپ طریقے، RegExp میں "v" جھنڈا، ArrayBuffer کا سائز تبدیل کرنے اور SharedArrayBuffer کا سائز بڑھانے کے لیے سپورٹ، WebAssembly میں ٹیل ریکریشن (ٹیل کال)۔
  • ایک تجرباتی اجازت ماڈل میکانزم تجویز کیا گیا ہے جو عمل درآمد کے دوران مخصوص وسائل تک رسائی کو محدود کرنے کی اجازت دیتا ہے۔ پرمشن ماڈل سپورٹ کو چلتے وقت "--تجرباتی-اجازت" جھنڈا بتا کر فعال کیا جاتا ہے۔ ابتدائی نفاذ فائل سسٹم کے کچھ حصوں تک لکھنے (--allow-fs-write) اور پڑھنے (--allow-fs-read) تک رسائی کو محدود کرنے کے اختیارات پیش کرتا ہے، چائلڈ پروسیس (--allow-child-process)، اور add-ons (-no-addons) ) اور تھریڈز (--allow-worker)۔ مثال کے طور پر، /tmp ڈائریکٹری میں لکھنے اور /home/index.js فائل کو پڑھنے کی اجازت دینے کے لیے، آپ وضاحت کر سکتے ہیں: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home /index.js index .js

    رسائی کی جانچ کرنے کے لیے، یہ تجویز کیا جاتا ہے کہ process.permission.has() طریقہ استعمال کریں، مثال کے طور پر، "process.permission.has('fs.write',"/tmp/test")۔

  • ECMAScript External Module (ESM) ہینڈلرز جو "--experimental-loader" آپشن کے ذریعے لوڈ کیے گئے ہیں، اب ایک الگ تھریڈ میں چلتے ہیں، جو کہ مرکزی تھریڈ سے الگ تھلگ ہوتے ہیں، ایپلیکیشن کوڈ اور لوڈ شدہ ESM ماڈیولز کو ختم کرتے ہوئے۔ براؤزرز کی طرح، import.meta.resolve() طریقہ اب کسی ایپلیکیشن سے کال کرنے پر ہم آہنگی سے عمل میں لایا جاتا ہے۔ Node.js کی اگلی شاخوں میں سے ایک میں، ESM لوڈ کرنے کے لیے سپورٹ کو مستحکم خصوصیات کے زمرے میں منتقل کرنے کا منصوبہ ہے۔
  • ماڈیول نوڈ:ٹیسٹ (ٹیسٹ_رنر)، جو جاوا اسکرپٹ میں ٹیسٹ بنانے اور چلانے کے لیے ڈیزائن کیا گیا ہے جو TAP (ٹیسٹ اینیتھنگ پروٹوکول) فارمیٹ میں نتائج دیتا ہے، کو مستحکم کر دیا گیا ہے۔
  • کارکردگی کو بہتر بنانے کے لیے ایک علیحدہ ترقیاتی ٹیم تشکیل دی گئی تھی، جس نے، نئی شاخ کی تیاری کے دوران مختلف رن ٹائم اجزاء کو تیز کرنے کے لیے کام کیا، بشمول یو آر ایل پارسنگ، fetch() اور EventTarget۔ مثال کے طور پر، EventTarget ابتداء کا اوور ہیڈ آدھا کر دیا گیا ہے، URL.canParse() طریقہ کار کی کارکردگی کو نمایاں طور پر بہتر کیا گیا ہے، اور ٹائمرز کی کارکردگی کو بہتر بنایا گیا ہے۔ اس میں C++ میں لکھا ہوا ایک اعلی کارکردگی والے URL پارسر، Ada 2.0 کا اجرا بھی شامل ہے۔
  • ایک واحد قابل عمل فائل (SEA، سنگل ایگزیکیوٹیبل ایپلی کیشنز) کی شکل میں ایپلی کیشنز کی فراہمی کے لیے تجرباتی صلاحیت کی ترقی جاری ہے۔ اب ایک قابل عمل فائل بنانے کے لیے JSON فارمیٹ میں کنفیگریشن فائل سے تیار کردہ بلاب کو تبدیل کرنے کی ضرورت ہے (جاوا اسکرپٹ فائل کو تبدیل کرنے کے بجائے)۔
  • ویب کریپٹو API کی دیگر پروجیکٹس کے نفاذ کے ساتھ بہتر مطابقت۔
  • ARM64 سسٹمز پر ونڈوز کے لیے آفیشل سپورٹ شامل کیا گیا۔
  • اسٹینڈ اکیلے WebAssembly ایپلی کیشنز بنانے کے لیے WASI (WebAssembly System Interface) ایکسٹینشن کے لیے سپورٹ کا نفاذ جاری ہے۔ WASI سپورٹ کو فعال کرنے کے لیے خصوصی کمانڈ لائن فلیگ کی وضاحت کرنے کی ضرورت کو دور کیا۔

Node.js پلیٹ فارم ویب ایپلیکیشنز کے سرور سائیڈ سپورٹ، اور عام کلائنٹ اور سرور نیٹ ورک پروگرام بنانے کے لیے دونوں استعمال کیا جا سکتا ہے۔ Node.js کے لیے ایپلی کیشنز کی فعالیت کو بڑھانے کے لیے، ماڈیولز کا ایک بڑا مجموعہ تیار کیا گیا ہے، جس میں آپ HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3 سرورز اور کلائنٹس، انضمام کے لیے ماڈیولز کے نفاذ کے ساتھ ماڈیولز تلاش کر سکتے ہیں۔ مختلف ویب فریم ورک، WebSocket اور Ajax ہینڈلرز، DBMS (MySQL، PostgreSQL، SQLite، MongoDB) کے کنیکٹرز، ٹیمپلیٹ انجن، CSS انجن، کرپٹوگرافک الگورتھم کے نفاذ اور اتھارٹی سسٹمز (OAuth)، 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 میں ایونٹ کا لوپ ڈویلپر سے پوشیدہ ہے اور ویب ایپلیکیشن میں ایونٹ پروسیسنگ سے ملتا جلتا ہے۔ براؤزر میں چل رہا ہے۔ node.js کے لیے ایپلی کیشنز لکھتے وقت، ایونٹ سے چلنے والے پروگرامنگ کی تفصیلات کو مدنظر رکھنا ضروری ہے، مثال کے طور پر، "var result = db.query("select..");" کرنے کے بجائے۔ کام کی تکمیل کے انتظار اور نتائج کے بعد کی کارروائی کے ساتھ، Node.js غیر مطابقت پذیر عمل کے اصول کا استعمال کرتا ہے، یعنی کوڈ کو "db.query("select.."، فنکشن (نتیجہ) {رزلٹ پروسیسنگ}) میں تبدیل کر دیا جاتا ہے، جس میں کنٹرول فوری طور پر مزید کوڈ کو منتقل کر دیا جائے گا، اور ڈیٹا آتے ہی استفسار کے نتیجے پر کارروائی ہو جائے گی۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں