تم نشر منصة Node.js 23.0 مع دعم أولي للغة TypeScript

تم إصدار Node.js 23.0.0، وهو نظام أساسي لتشغيل تطبيقات الشبكة في JavaScript. تم تصنيف Node.js 23.0 على أنه فرع وسيط، وسيتم دعمه لمدة 7 أشهر (حتى يونيو 2025). في الأيام المقبلة، سيتم الانتهاء من تثبيت فرع Node.js 22، والذي سيحصل على حالة LTS في 29 أكتوبر وسيتم دعمه حتى أبريل 2027. سيستمر دعم فروع LTS السابقة لـ Node.js 20.x و18.x حتى أبريل 2026 و2025، على التوالي.

التحسينات الرئيسية:

  • تمت إضافة دعم تجريبي لـ TypeScript، والذي يسمح بتعريفات صريحة للنوع. يتم تمكين الدعم باستخدام خيارات "--أنواع الشريط التجريبي" و"-أنواع التحويل التجريبي". في حالة الخيار الأول، يقتصر العمل باستخدام TypeScript على مسح تعريفات الأنواع الخاصة باللغة (لا يتم إجراء فحص النوع، ويتم تحويل التعليمات البرمجية ببساطة إلى JavaScript بدون كتابة). يقوم الخيار الثاني بتحويل بعض عناصر بناء جملة TypeScript، مثل التعدادات ومساحات الأسماء، إلى كود JavaScript.
  • يتم تمكينها افتراضيًا وهي القدرة على استخدام استدعاء "require()" لتحميل وحدات JavaScript ESM (وحدات ECMAScript) في الوضع المتزامن. تُستخدم وحدات ESM في المتصفحات وتحل محل وحدات CommonJS الخاصة بـ Node.js. للتحميل عبر "require()" في Node.js، يجب تنفيذ وحدة ESM بشكل متزامن (دون الانتظار عند المستوى الأعلى).
  • يتم توفير الكشف التلقائي عن وحدات ESM في الملفات التي لا تحتوي على ملحق ".js" أو به. في السابق، كانت تتم معاملة هذه الملفات على أنها وحدات CommonJS ما لم يتم تحديد نوعها بشكل صريح في ملف package.json الموجود في نفس الدليل ("النوع": "الوحدة النمطية"). في الإصدار الجديد، بالنسبة للملفات التي لم يتم تحديد نوعها في package.json، فإنه يحاول أولاً التحميل كوحدة CommonJS، وإذا فشل ذلك، فسيتم تحميله كوحدة ESM.
  • تمت إضافة التنفيذ التجريبي متوافق مع المتصفحات صُممت واجهة برمجة تطبيقات التخزين على الويب لتخزين البيانات بشكل دائم (فئة localStorage) أو مؤقت (فئة sessionStorage) بتنسيق مفتاح/قيمة. يتطلب تفعيل دعم التخزين على الويب تشغيل واجهة برمجة التطبيقات مع الخيار "--experimental-webstorage" وتحديد مسار ملف التخزين باستخدام الخيار "--localstorage-file".
  • تمت إضافة واجهة برمجة تطبيقات SQLite التجريبية للعمل مع قواعد البيانات باستخدام لغة استعلام SQL والتخزين استنادًا إلى مكتبة SQLite. بالإضافة إلى تخزين قاعدة البيانات في ملف على القرص، يمكن أيضًا وضعها في الذاكرة عن طريق تحديد ":memory:" بدلاً من اسم الملف. يتم أيضًا تنفيذ واجهة برمجة تطبيقات تخزين الويب المذكورة أعلاه أعلى SQLite، مما يؤدي إلى إضافة SQLite كاعتمادية لـ Node.js.
  • تم إعلان أن الأمر "node —run" مستقر، ومصمم لتشغيل البرامج النصية المحددة في ملف package.json.
  • تم تنفيذ دعم اختياري للتخزين المؤقت للتعليمات البرمجية المجمعة على القرص لتسريع عملية إطلاق الوحدات بشكل ملحوظ. يتم تمكين التخزين المؤقت عبر متغير البيئة NODE_COMPILE_CACHE. من حيث الغرض منها، تشبه الميزة حزمة v8-compile-cache، ولكنها تختلف في الأداء العالي والدعم لوحدات ESM.
  • تم تحسين الكائن Buffer لزيادة أداء التابعين Buffer.copy() وBuffer.write() بشكل ملحوظ.
  • تم تحسين أداء الوحدة النمطية Node:fs، مما يقلل أيضًا من عدد الاستدعاءات إلى كود C++ أثناء التشغيل.
  • تم تحديث محرك V8 إلى الإصدار 12.9، المستخدم في Chromium 129.
  • تمت إزالة دعم أنظمة Windows 32 بت.
  • نظرًا لتقديم الميزات المحددة في معيار C++8 في Node.js والمحرك V20، فقد تمت زيادة متطلبات إصدار المترجم لدول مجلس التعاون الخليجي. يتطلب بناء Node.js الآن على الأقل إصدار مجلس التعاون الخليجي 12.

يمكن استخدام منصة 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

إضافة تعليق