منصة جافا سكريبت Node.js 22.0.0 متاحة

تم إصدار Node.js 22.0، وهو عبارة عن منصة لتشغيل تطبيقات الشبكة في JavaScript. تم تصنيف Node.js 22.0 على أنه فرع دعم طويل المدى، ولكن سيتم تعيين هذه الحالة فقط في أكتوبر، بعد الاستقرار. سيتم دعم Node.js 22.x حتى 30 أبريل 2027. ستستمر صيانة فرع LTS السابق لـ Node.js 20.x حتى أبريل 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، وما إلى ذلك) إلى WebAssembly. يضيف WasmGC أنواعًا جديدة من الهياكل والمصفوفات التي يمكنها استخدام تخصيص الذاكرة غير الخطية.
    • دعم طريقة Array.fromAsync()، التي تُرجع بشكل غير متزامن مثيلًا جديدًا لكائن Array منسوخًا من كائن قابل للتكرار يشبه المصفوفة، أو قابل للتكرار أو غير متزامن.
    • دعم أساليب التكرار مثل .map و.filter و.find و.take و.drop و.forEach و.reduce.
    • دعم كائن Set الذي يحدد مجموعة من القيم ويقدم طرقًا تنفذ عمليات المجموعة الشائعة، مثل التقاطع والاتحاد والفرق والإضافة.
  • يتم تمكين برنامج التحويل البرمجي Maglev Optimization JIT بشكل افتراضي، بهدف إنشاء كود جهاز عالي الأداء بسرعة لرمز JavaScript المستخدم بكثافة. يمكن أن يؤدي تمكين Maglev إلى تسريع تطبيقات CLI قصيرة العمر التي لا تؤدي عمليات طويلة المدى، على سبيل المثال، يتم تقليل الوقت اللازم لإكمال اختبار Jetstrea بنسبة 7.5%، واختبار عداد السرعة بنسبة 5%.
  • تم تسريع العمل مع التدفقات من خلال زيادة قيمة خيار HighWaterMark من 16 كيلو بايت إلى 65 كيلو بايت (يحدد الحد الأقصى الذي يتم تخزين التسجيل مؤقتًا عنده). يؤدي التغيير إلى زيادة استهلاك الذاكرة، لذلك قد تحتاج التطبيقات المصممة للتشغيل على ذاكرة وصول عشوائي محدودة إلى العودة إلى القيمة القديمة عبر استدعاء setDefaultHighWaterMark().
  • تم تحسين أداء واجهات برمجة تطبيقات الجلب () واختبار التشغيل من خلال جعل إنشاء مثيل AbortSignal أكثر كفاءة. تم تحسين أداء واجهات برمجة التطبيقات المتعلقة بالعمل المتزامن مع أنظمة الملفات.
  • تم توفير ميزة تجريبية لاستخدام استدعاء "require()" لتحميل وحدات JavaScript ESM (وحدات ECMAScript) في الوضع المتزامن. تُستخدم وحدات ESM في المتصفحات وتحل محل وحدات CommonJS الخاصة بـ Node.js. للتحميل عبر "require()"، يجب تنفيذ وحدة ESM في الوضع المتزامن (دون الانتظار عند المستوى الأعلى). يتم تمكين الدعم عبر علامة "--experimental-require-module".
  • تمت إضافة القدرة التجريبية على تشغيل البرامج النصية المحددة في ملف package.json باستخدام الأمر "--run". "
  • تم نقل الأمر "node –watch" إلى الفئة الثابتة مع تنفيذ وضع المراقبة الذي يضمن إعادة تشغيل العملية عند تغيير الملف المستورد (على سبيل المثال، إذا تم تنفيذ "node –watch Index.js"، فسيتم سيتم إعادة تشغيل العملية تلقائيًا عند تغيير ملف Index.js).
  • تم تثبيت التنفيذ الأصلي لواجهة برمجة تطبيقات WebSocket، مما يسمح باستخدام WebSocket في وضع العميل دون تثبيت تبعيات إضافية.
  • تمت إضافة دعم جزئي لواجهة برمجة تطبيقات Navigator.
  • أضافت Webstreams API دعمًا لتنسيق الضغط الخام.
  • تمت إضافة وظائف glob وglobSync إلى العقدة: fsmodule لمطابقة الأنماط لمسارات الملفات.
  • تحسين التعامل مع مكدسات IPv6 التي تم تكوينها بشكل غير صحيح. تم تنفيذ خوارزمية Happy Eyeballs للتراجع السريع في حالة حدوث مشكلات في تشغيل IPv6.
  • لقد تم إهمال واجهة برمجة تطبيقات الاستخدام.
  • إصدارات التبعية المحدثة: 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 to 3.8.0، ada 2.7.7 وundici 6.6.0 .

يمكن استخدام منصة Node.js لدعم تطبيقات الويب من جانب الخادم، ولإنشاء برامج شبكية قياسية من جانب العميل والخادم. ولتوسيع وظائف تطبيقات Node.js، تم إعداد مجموعة كبيرة من الوحدات، بما في ذلك تلك التي تُنفذ الخوادم وعملاء HTTP وSMTP وXMPP وDNS وFTP وIMAP وPOP3، ووحدات للتكامل مع أطر عمل الويب المختلفة، ومعالجات WebSocket وAjax، وموصلات لأنظمة إدارة قواعد البيانات (MySQL وPostgreSQL وSQLite وMongoDB)، ومحركات القوالب، ومحركات CSS، وتطبيقات الخوارزميات المشفرة وأنظمة التفويض (OAuth)، ومحللات XML.

للتعامل مع أعداد كبيرة من الطلبات المتوازية، يستخدم Node.js نموذج تنفيذ تعليمات برمجية غير متزامن يعتمد على معالجة الأحداث غير المحظورة وتحديد معالجات رد الاتصال. تتضمن الطرق المدعومة لتعدد الاتصالات epoll وkqueue و/dev/poll وselect. لتعدد إرسال الاتصال، يتم استخدام مكتبة libuv، وهي إضافة إلى libev على أنظمة Unix وإلى IOCP على Windows. يتم استخدام مكتبة libeio لإنشاء تجمع مؤشرات الترابط، ويتم دمج c-ares لإجراء استعلامات DNS في وضع غير محظور. يتم تنفيذ كافة استدعاءات النظام التي تسبب الحظر داخل تجمع مؤشرات الترابط ثم، مثل معالجات الإشارة، تمرر نتيجة عملها مرة أخرى عبر أنبوب غير مسمى.

يتم ضمان تنفيذ تعليمات JavaScript البرمجية من خلال استخدام محرك V8 الذي طورته Google (بالإضافة إلى ذلك، تقوم Microsoft بتطوير إصدار Node.js باستخدام محرك Chakra-Core). يشبه Node.js في جوهره أطر عمل Perl AnyEvent وRuby Event Machine وPython Twisted وتنفيذ الأحداث في Tcl، لكن حلقة الأحداث في Node.js مخفية عن المطور وتشبه معالجة الأحداث في تطبيق الويب يعمل في المتصفح.

المصدر: opennet.ru

إضافة تعليق