سرور سائیڈ JavaScript پلیٹ فارم Node.js 17.0 کی ریلیز

Node.js 17.0، جاوا اسکرپٹ میں نیٹ ورک ایپلی کیشنز چلانے کا ایک پلیٹ فارم، جاری کیا گیا تھا۔ Node.js 17.0 ایک باقاعدہ سپورٹ برانچ ہے جو جون 2022 تک اپ ڈیٹس وصول کرتی رہے گی۔ آنے والے دنوں میں، Node.js 16 برانچ کا استحکام مکمل ہو جائے گا، جو LTS کا درجہ حاصل کرے گی اور اپریل 2024 تک اس کی حمایت کی جائے گی۔ Node.js 14.0 کی پچھلی LTS برانچ کی دیکھ بھال اپریل 2023 تک رہے گی، اور آخری LTS برانچ 12.0 سے ایک سال اپریل 2022 تک۔

اہم بہتری:

  • V8 انجن کو ورژن 9.5 میں اپ ڈیٹ کر دیا گیا ہے۔
  • Promise غیر مطابقت پذیر کمپیوٹنگ انٹرفیس کے استعمال پر مبنی بنیادی API کی مختلف حالتوں کا نفاذ جاری ہے۔ پہلے پیش کیے گئے ٹائمرز وعدوں اور اسٹریمز کے وعدوں کے APIs کے علاوہ، Node.js 17.0 ریڈ لائن ماڈیول کا استعمال کرتے ہوئے ڈیٹا لائن کو لائن پڑھنے کے لیے ریڈ لائن پرومیس API متعارف کراتا ہے۔ درآمد کریں * بطور ریڈ لائن 'node:readline/promises' سے؛ درآمد کریں { stdin بطور ان پٹ، stdout بطور آؤٹ پٹ } 'process' سے؛ const rl = readline.createInterface({ان پٹ، آؤٹ پٹ })؛ const جواب = await rl.question('آپ Node.js کے بارے میں کیا سوچتے ہیں؟'); console.log('آپ کی قیمتی آراء کے لیے آپ کا شکریہ: ${answer}'); rl.close();
  • فراہم کردہ OpenSSL لائبریری کو ورژن 3.0 میں اپ ڈیٹ کر دیا گیا ہے (QUIC پروٹوکول سپورٹ کے ساتھ ایک quictls/openssl فورک استعمال کیا جاتا ہے)۔
  • Node.js ورژن کو اسٹیک ٹریس میں ظاہر کرنے کے لیے فعال کیا جو مہلک غلطیوں کی صورت میں آؤٹ پٹ ہوتے ہیں جس کی وجہ سے ایپلیکیشن ختم ہو جاتی ہے۔

مزید برآں، ہم Node.js (CVE-2021-22959, CVE-2021-22960) کی موجودہ شاخوں میں دو کمزوریوں کے خاتمے کا ذکر کر سکتے ہیں، جو "HTTP Request Smuggling" (HRS) کے حملوں کو انجام دینے کو ممکن بناتے ہیں، جو ہمیں فرنٹ اینڈ اور بیک اینڈ کے درمیان ایک ہی دھاگے میں پروسیس ہونے والے دوسرے صارفین کی درخواستوں کے مواد میں پھیرنے کی اجازت دیں (مثال کے طور پر، نقصان دہ JavaScript کوڈ کو دوسرے صارف کے سیشن میں داخل کیا جا سکتا ہے)۔ تفصیلات بعد میں سامنے آئیں گی، لیکن ابھی کے لیے ہم صرف اتنا جانتے ہیں کہ مسائل HTTP ہیڈر کے نام اور بڑی آنت کے درمیان خالی جگہوں کی غلط ہینڈلنگ کے ساتھ ساتھ کیریج ریٹرن اور لائن فیڈ کریکٹرز کو ٹرانسمٹ کرتے وقت استعمال کیے جانے والے پیرامیٹر بلاک میں مختلف ہینڈلنگ کی وجہ سے ہوتے ہیں۔ "ٹکڑے ہوئے" موڈ میں حصوں میں درخواست کا جسم

ہمیں یاد کرنے دیں کہ 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

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