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

Состоялся релиз Node.js 19.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 19 отнесён к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2023 года. В ближайшие дни будет завершена стабилизация ветки Node.js 18, которая получит статус LTS и будет поддерживаться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.0 продлится до сентября 2023 года, а позапрошлой LTS-ветки 14.0 до апреля 2023 года.

اہم بہتری:

  • Движок V8 обновлён до версии 10.7, применяемой в Chromium 107. Из изменений в движке по сравнению с веткой Node.js 18 отмечается реализация третьей версии API Intl.NumberFormat, в которой добавлены новые функции formatRange(), formatRangeToParts() и selectRange(), группировка множеств, новые опции округления и задания точности, возможность интерпретации строк как десятичных чисел. Также обновлены входящие в комплект зависимости llhttp 8.1.0 и npm 8.19.2.
  • Предложена экспериментальная команда «node —watch» с реализацией режима наблюдения, обеспечивающего перезапуск процесса при изменении импортированного файла (например, в случае выполнения «node —watch index.js» процесс будет автоматически перезапущен при изменении index.js).
  • Для всех исходящих HTTP/HTTPS-соединений включена поддержка механизма HTTP 1.1 Keep-Alive, оставляющего соединение определённое время открытым для обработки в рамках одного соединения нескольких HTTP-запросов. Предполагается, что применение Keep-Alive позволит повысить пропускную способность и производительность. По умолчанию таймаут удержания соединения открытым выставлен в 5 секунд. В реализацию HTTP-клиента добавлена поддержка разбора HTTP-заголовка Keep-Alive в ответах сервера, а в реализацию HTTP-сервера Node.js добавлено автоматическое отсоединение неактивных клиентов, использующих Keep-Alive.
  • В разряд стабильных переведён API WebCrypto, за исключением функций, использующих алгоритмы Ed25519, Ed448, X25519 и X448. Для доступа к модулю WebCrypto теперь можно использовать globalThis.crypto или require(‘node:crypto’).webcrypto.
  • Удалена поддержка инструментариев трассировки DTrace, SystemTap и ETW (Event Tracing for Windows), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

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

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