Node.js 26 چی آورد؟ مروری بر مهمترین تغییرات
خلاصهٔ کاملتر
Node.js 26 پنجم می ۲۰۲۶ منتشر شد. شاید اول نگاه خیلی پرسروصدا نباشه، ولی وقتی دقیقتر نگاه میکنی، یه سری تغییر واقعاً مفید میبینی که تجربه روزمره توسعه رو بهتر میکنن. این نسخه روی خط Current قراره و اکتبر ۲۰۲۶ وارد LTS میشه.
Temporal API بالاخره پایدار شد. کار با Date در جاوااسکریپت همیشه دردسرساز بود: ماهها از صفر شمارهگذاری میشن، رفتار timezone به ماشین میزبان بستگی داره، و parse کردن تاریخ قابل اعتماد نیست. حالا Temporal بهصورت پیشفرض فعاله و یه API مدرن، تغییرناپذیر (immutable)، و timezone-aware ارائه میده. مثلاً add({ months: 1 }) روی ۳۱ ژانویه، درست فوریه ۲۸ یا ۲۹ برمیگردونه، نه ۳ مارس! یا Temporal.ZonedDateTime که DST (تغییر ساعت تابستانی) رو بهدرستی مدیریت میکنه. این یعنی دیگه نیازی به Moment.js یا Luxon نیست.
متدهای جدید روی Map و WeakMap. V8 14.6 دو متد getOrInsert() و getOrInsertComputed() رو به Map و WeakMap اضافه کرده. اینها یه الگوی خیلی رایج رو حل میکنن: «اگه کلید وجود داشت برگردونش، اگه نداشت بساز و ذخیره کن.» قبلاً مجبور بودید دو بار map رو جستجو کنید (یکبار با has و یکبار با get)، ولی حالا با یه فراخوانی اتمیک تموم میشه:
const score = profileCache.getOrInsertComputed(userId, computeProfileScore);callback فقط وقتی کلید وجود نداشته باشه اجرا میشه و نتیجهاش ذخیره میشه.
Iterator.concat() برای ترکیب lazy pipelineها. این متد استاتیک هر تعداد iterable رو میگیره و یه iterator واحد برمیگردونه که بدون ساختن آرایه میانی، مقادیر رو بهترتیب yield میکنه. نکته مهم اینه که نتیجه یه Iterator واقعیه، پس میشه مستقیم متدهایی مثل .map، .filter، و .take رو روش زنجیر کرد. البته Iterator.concat() فقط synchronous کار میکنه و برای async iterableها (مثل stream یا HTTP صفحهبندیشده) هنوز باید یه helper جداگانه بنویسید.
پشتیبانی از raw Ed25519 key در ماژول crypto. قبلاً برای import یه کلید خام ۳۲ بایتی Ed25519 باید خودتون wrapper PKCS#8 DER مینوشتید. حالا Node.js 26 این رو مستقیم پشتیبانی میکنه و کل اون ceremony حذف میشه. همچنین sign() و verify() یه گزینه context اختیاری دارن که بدون طراحی دستی domain-separation، امضاهای مختلف رو از هم جدا میکنه.
تغییرات breaking. چند API قدیمی حذف شدن که قبل از آپدیت باید چک کنید: ماژولهای خصوصی _stream_readable، _stream_writable و بقیه خانواده _stream_* حذف شدن؛ بهجاشون از API عمومی stream استفاده کنید. متد writeHeader() روی http.Server هم رفت و باید از writeHead() استفاده کنید. فلگ --experimental-transform-types هم دیگه وجود نداره و module.register() runtime-deprecated شده.
نکات کلیدی:
- Temporal API پایدار و پیشفرض فعاله؛ جایگزین مدرن
Dateبرای تاریخ، زمان، و timezone Map.getOrInsertوgetOrInsertComputedالگوی مموایزیشن رو با یه lookup واحد حل میکننIterator.concat()ترکیب lazy و بدون آرایه میانی از iterableها رو ممکن میکنه (فقط synchronous)- V8 به نسخه 14.6 و Undici به نسخه 8 آپگرید شدن
- برای پروداکشن منتظر LTS در اکتبر ۲۰۲۶ بمونید؛ برای پروژههای جدید همین الان میتونید استفاده کنید




