Node.js 24.0.0، پلتفرمی برای اجرای برنامههای شبکه در جاوا اسکریپت، منتشر شد. Node.js 24.0 به شاخههای پشتیبانی بلندمدت اختصاص داده شده است، اما این وضعیت تنها در ماه اکتبر، پس از تثبیت، اختصاص داده خواهد شد. Node.js 24.x تا 30 آوریل 2028 پشتیبانی خواهد شد. شاخه LTS قبلی Node.js 22.x تا آوریل 2027 و شاخه LTS قبلی 20.x تا آوریل 2026 پشتیبانی خواهند شد. پشتیبانی از شاخه LTS 18.x در 30 آوریل 2025 و شاخه میانی Node.js 23.x در 1 ژوئن 2025 به پایان خواهد رسید.
پیشرفتهای اصلی:
- API مربوط به AsyncLocalStorage به طور پیشفرض از کلاس AsyncContextFrame استفاده میکند که به عنوان stable علامتگذاری شده است. AsyncContextFrame مکانیزم کارآمدتری را برای ردیابی زمینه ناهمزمان پیادهسازی میکند که میتواند عملکرد را به میزان قابل توجهی بهبود بخشد.
- API مربوط به URLPattern اکنون به عنوان یک شیء سراسری در دسترس است که میتواند بدون وارد کردن صریح مورد استفاده قرار گیرد. URLPattern امکان بررسی تطابق یک URL با یک الگوی خاص را فراهم میکند که میتواند برای مثال برای تجزیه لینکها مورد استفاده قرار گیرد.
- مکانیزم مدل مجوز بهبود یافته و تثبیت شده است و به شما امکان میدهد دسترسی به منابع خاص را در حین اجرا محدود کنید (برای مثال، میتوانید ایجاد فرآیندهای فرزند را ممنوع کنید، دسترسی به نوشتن یا خواندن قسمتهای خاصی از FS را محدود کنید، افزونهها را غیرفعال کنید). به جای پرچم آزمایشی "--experimental-permission"، اکنون میتوان از پرچم "--permission" برای فعال کردن مدل مجوز استفاده کرد.
- قابلیتهای ماژول node:test (test_runner) که برای ایجاد و اجرای تستها در جاوااسکریپت طراحی شده و نتایج را در قالب TAP (پروتکل تست هر چیزی) برمیگرداند، گسترش یافته است. این ماژول اکنون به طور خودکار منتظر میماند تا تستهای تو در تو تکمیل شوند، بدون اینکه نیازی به استفاده از await باشد.
- کلاینت HTTP undici به شاخه 7.x بهروزرسانی شده است که عملکرد را بهبود میبخشد و پشتیبانی از ویژگیهای جدید HTTP را اضافه میکند.
- موتور V8 به نسخه ۱۳.۶ که در Chromium 13.6 استفاده میشود، بهروزرسانی شده است. ویژگیهای جدید در مقایسه با نسخه قبلی Node.js شامل پشتیبانی از آرایههای Float136Array تایپشده، مدیریت دستی منابع، متد RegExp.escape (رشتههای گریز برای RegExp)، اشارهگرهای ۶۴ بیتی (Memory16) در WebAssembly و متد Error.isError میشود.
- مدیر بسته NPM به نسخه ۱۱ بهروزرسانی شده است.
- پشتیبانی از کامپایلر MSVC متوقف شده است. برای کامپایل روی پلتفرم Windows شما باید از ClangCL استفاده کنید.
پلتفرم Node.js میتواند هم برای پشتیبانی سمت سرور از برنامههای وب و هم برای ایجاد برنامههای شبکه استاندارد سمت کلاینت و سرور مورد استفاده قرار گیرد. برای گسترش عملکرد برنامههای Node.js، مجموعه بزرگی از ماژولها، از جمله ماژولهایی که پیادهسازی میکنند، تهیه شده است. سرورها و کلاینتهای HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3، ماژولهایی برای ادغام با چارچوبهای مختلف وب، کنترلکنندههای WebSocket و Ajax، رابطها به DBMS (MySQL، PostgreSQL، SQLite، MongoDB)، موتورهای قالب، موتورهای CSS، پیادهسازی الگوریتمهای رمزنگاری و سیستمهای مجوزدهی (OAuth)، تجزیهکنندههای XML.
برای مدیریت تعداد زیادی درخواست همزمان، Node.js از یک مدل اجرای کد ناهمزمان مبتنی بر پردازش رویداد غیر مسدودکننده و کنترلکنندههای فراخوانی استفاده میکند. روشهای مالتیپلکس اتصال پشتیبانیشده شامل epoll، kqueue، /dev/poll و select هستند. مالتیپلکس اتصال از کتابخانه libuv استفاده میکند که یک کتابخانه توسعهیافته بر روی libev در سیستمهای یونیکس و IOCP در ... است. Windowsکتابخانه libeio برای ایجاد یک مخزن نخ (thread pool) استفاده میشود و c-ares برای انجام کوئریهای DNS در حالت غیر مسدودکننده (non-blocking) یکپارچه شده است. تمام فراخوانیهای سیستم مسدودکننده درون مخزن نخ اجرا میشوند و سپس، مانند کنترلکنندههای سیگنال، نتایج خود را از طریق یک لوله بدون نام برمیگردانند.
اجرای کد جاوا اسکریپت با استفاده از موتور V8 توسعه یافته توسط گوگل تضمین می شود (علاوه بر این، مایکروسافت در حال توسعه نسخه Node.js با موتور Chakra-Core است). Node.js در هسته خود شبیه به Perl AnyEvent، Ruby Event Machine، Python Twisted و اجرای رویدادها در Tcl است، اما حلقه رویداد در Node.js از توسعه دهنده پنهان است و شبیه پردازش رویداد در یک برنامه وب است. در حال اجرا در مرورگر
منبع: opennet.ru
