معرفی و بررسی Node.js 26

معرفی و بررسی Node.js 26

انتشار:

مشاهده Changelog کامل ورژن 26.0.0

نسخه 26 از Node.js منتشر شد و مثل همیشه، تمرکز اصلیش روی مدرن‌تر کردن پلتفرم و نزدیک‌تر شدن به استانداردهای جدید جاوااسکریپته. این نسخه فعلا در حالت “Current” قرار داره و قراره از اکتبر (مهر ماه) به LTS تبدیل بشه، پس الان بهترین زمان برای تست کردنش روی پروژه‌ها است.

 

تغییرات مهم در نسخه 26

 

تغییرات v26.0.0

 

فعال شدن Temporal API

یکی از مهم‌ترین تغییرات، فعال شدن پیش‌فرض Temporal API هست؛ یه جایگزین مدرن برای Date که سال‌ها دردسر مدیریت زمان و timezone رو کمتر می‌کنه. اگر قبلا با Date کلنجار رفتی، احتمالا Temporal برات حس “بالاخره درستش کردن” می‌ده. این تغییر به تنهایی می‌تونه روی خیلی از اپلیکیشن‌ها (خصوصا backendهای حساس به زمان) تأثیر مثبت بذاره.

 

V8 نسخه 14.6

از طرف دیگه، موتور جاوااسکریپت V8 به نسخه 14.6 آپدیت شده که بخشی از Chromium 146 محسوب میشه. در این آپدیت علاوه بر بهبود performance، چند قابلیت جدید هم اضافه شده، مثل متدهای getOrInsert برای Map/WeakMap و همین‌طور Iterator.concat() که کار با iteratorها رو تمیزتر و می‌کنه. اینا شاید تغییرات کوچیکی به نظر بیان، ولی توی کدهای functional یا data-heavy خیلی به چشم میان.

 

Undici نسخه 8

در بخش شبکه هم Undici به نسخه 8 رسیده که عملا ستون اصلی HTTP client در Node شده. بهبودهای این بخش بیشتر روی performance و استاندارد بودن APIهاست، مخصوصا اگر از fetch یا درخواست‌های high-throughput استفاده می‌کنید.

 

حذف APIهای منسوخ شده

اما بخش مهمی از این ریلیز، مثل همیشه، مربوط به حذف‌ها و deprecationهاست. چند API قدیمی مثل http.Server.prototype.writeHeader() کاملا حذف شدن و باید به writeHead() مهاجرت کرد. ماژول‌های قدیمی _stream_* هم بالاخره کنار گذاشته شدن. علاوه بر این، بعضی APIها مثل module.register() وارد فاز deprecation در runtime شدن. خلاصه اگر پروژه legacy و قدیمی دارید، این نسخه ممکنه یه مقدار دردسر migration داشته باشه.

 

تغییرات در نیازمندی‌های build و توسعه

در سطح build و ecosystem هم تغییرات مهمی دیده میشه؛ مثلا نیاز به GCC 13.2، حذف پشتیبانی از Python 3.9 و یه‌سری به‌روزرسانی‌های زیرساختی که بیشتر به درد maintainerها و کسایی می‌خوره که native addon می‌نویسند.

 

در کل، Node.js 26 یه قدم جدی به سمت تمیزتر کردن اکوسیستم و هم‌راستا شدن با آینده جاوااسکریپته. اگر پروژه شما به stability خیلی حساسه شاید بهتر باشه تا LTS صبر کنید، ولی اگر دوست دارید جلوتر از بقیه حرکت کنید، این نسخه چیزهای جالبی برای امتحان کردن داره.

 

تغییرات v26.1.0

در ادامه، با فاصله زمانی 2 روز نسخه‌ی 26.1 از Node.js منتشر شد.

مهم‌ترین بخش این آپدیت، معرفی ماژول آزمایشی جدید node:ffi هست؛ قابلیتی که به شما اجازه می‌ده مستقیم از جاوااسکریپت، کتابخونه‌های native (مثل C/C++) رو لود کنی و صدا بزنی. این API فعلا با فلگ --experimental-ffi فعال میشه و حتی با Permission Model هم نیاز به مجوز جدا (--allow-ffi) داره. دلیلش هم واضحه: کار با pointer و حافظه مستقیم شوخی بردار نیست و یه اشتباه کوچیک می‌تونه کل process رو کرش بده یا memory رو خراب کنه. ولی اگر درست استفاده بشه، برای کارهای low-level یا performance-critical واقعا قدرتمنده.

علاوه بر این، چند بهبود کاربردی هم اضافه شده که شاید headline نباشن ولی توی کار روزمره خیلی به چشم میان. مثلا در بخش crypto متد randomUUIDv7() اضافه شده که نسخه‌ی جدیدتری از UUIDها با ترتیب زمانی بهتره، یا در fs و http پشتیبانی از AbortSignal گسترده‌تر شده که کنترل cancel کردن عملیات async رو راحت‌تر می‌کنه. حتی توی test runner هم قابلیت‌هایی مثل randomization ترتیب تست‌ها اضافه شده که برای پیدا کردن باگ‌های flaky خیلی کاربردیه.

در لایه‌های پایین‌تر، وابستگی‌ها هم آپدیت شدن؛ از جمله ارتقای مجدد V8 و Undici، و همین‌طور بهبودهای امنیتی و پایداری در بخش‌های مختلف مثل crypto و http. در مجموع، اگر نسخه 26.0 بیشتر درباره “تمیزکاری و مدرن‌سازی” بود، 26.1 حس یه قدم عملی‌تر به سمت قابلیت‌های low-level و ابزارهای حرفه‌ای‌تر رو می‌ده—خصوصا با ورود FFI که می‌تونه مرز بین Node و native code رو خیلی کم‌رنگ‌تر کنه.

 

منابع:

https://nodejs.org/en/blog/release/v26.0.0

https://nodejs.org/en/blog/release/v26.1.0