انتشار اولین آلفای Node.js 27 و پایان نسخههای فرد و زوج
حدود ۴ دقیقه مطالعه
پروژهی Node.js روز ۲۹ اکتبر ۲۰۲۶ اولین نسخهی آلفای خط ۲۷ را منتشر کرد و همزمان مدل انتشار خود را عوض کرد. طبق اطلاعیهی رسمی، از Node.js 27 به بعد هر سال فقط یک نسخهی major میآید، همهی نسخهها LTS میشوند و یک کانال Alpha جای نسخههای فرد را برای آزمایش اولیه میگیرد. نسخهی آلفا برای محیط production نیست.
مدل جدید انتشار
تا امروز دو نسخهی major در سال منتشر میشد و نسخههای فرد LTS نمیشدند. طبق اطلاعیه، این الگو ۱۰ سال قدمت دارد و دلیل تغییر این است که نسخههای فرد استقبال کمی دارند، تفاوت فرد و زوج تازهکارها را گیج میکند و نگهداری چهار یا پنج خط فعال برای داوطلبهای پروژه سنگین شده است. فازهای جدید اینها هستند:
Alpha ۶ ماه (اکتبر تا مارس) تغییر semver-major مجاز است
Current ۶ ماه (آوریل تا اکتبر) تثبیت
LTS ۳۰ ماه رفعهای امنیتی
کل دورهی پشتیبانی از اولین نسخهی Current تا End-of-Life ۳۶ ماه است. برای خط ۲۷ زمانبندی این است:
Alpha اکتبر ۲۰۲۶
27.0.0 آوریل ۲۰۲۷
LTS اکتبر ۲۰۲۷
EOL آوریل ۲۰۳۰
شمارهی نسخه با سال اولین انتشار Current هماهنگ میشود: ۲۷٫۰٫۰ در ۲۰۲۷ و ۲۸٫۰٫۰ در ۲۰۲۸. نسخههای آلفا از قالب prerelease استفاده میکنند. اطلاعیه میگوید خط ۲۶ آخرین خط مدل قدیمی است (LTS از اکتبر ۲۰۲۶، maintenance از اکتبر ۲۰۲۷ و EOL در آوریل ۲۰۲۹) و دربارهی خط ۲۵ حرفی نمیزند. زمانبندی نهایی نیست و ممکن است تغییر کند؛ مرجع رسمی فایل schedule.json در مخزن Release است. Alpha با Nightly فرق دارد: نسخهی آلفا امضا و تگ میشود و از CITGM میگذرد، ولی ممکن است بعضی تغییرهای main را نداشته باشد. اطلاعیه از نویسندههای کتابخانه میخواهد آلفا را هرچه زودتر به CI اضافه کنند.
چه چیزی در آلفای اول است؟
طبق نوت انتشار رسمی، شمارهی نسخه 27.0.0-alpha.0.0.0 است و Rafael Gonzaga آن را منتشر کرده. تغییرهای اصلی:
- موتور V8 به 15.6.75.13 رسیده (در 26 نسخهی 14.6 بود) و npm به 12.1.0 رفته.
- سورس OpenSSL به 4.1.0 ارتقا یافته و build حالا OpenSSL 3 یا بالاتر میخواهد. FIPS provider توکار، کدهای legacy و پشتیبانی از engine های OpenSSL حذف شده یا به پایان رسیده است.
- پشتیبانی از macOS روی Intel به «آزمایشی» تنزل کرده.
- پیادهسازی قدیمی AsyncLocalStorage حذف شده و ماژول domain در زمان اجرا deprecated شده است.
- در http مقدار پیشفرض keepAliveTimeout به ۶۵ ثانیه رسیده و req.headers حالا prototype تهی دارد. در fs هم glob بهصورت native پیاده شده.
- رفع CVE-2026-58042 در dns برای پاسخهای بزرگ resolveAny. نوت انتشار فقط عنوان این مورد را داده و جزئیات فنی نداده.
تغییرهای شکنندهی مهم
اگر گزینهی max-old-space-size تنظیم نشده باشد، سقف heap حالا نصف حافظهی فیزیکی است (حداقل ۲۵۶ مگابایت و حداکثر ۴ گیگابایت) و حافظهی Buffer و ArrayBuffer هم در آن حساب میشود. برنامهای که به مقدار قبلی وابسته بود باید صریح تنظیمش کند:
node --max-old-space-size=2048 app.js
فرمت جدیدی برای v8.serialize، structuredClone و postMessage استفاده میشود که نسخههای قدیمی Node.js نمیتوانند بخوانند، و کش کامپایل و cachedDataVersionTag با هر patch از V8 عوض میشود. نتیجهی بعضی متدهای Math ممکن است در آخرین بیت فرق کند، توالی Math.random برای seed ثابت عوض میشود، و heap snapshot حدود دو برابر بزرگتر و کندتر است. طبق گزارش LinuxCompatible مقدار NODE_MODULE_VERSION حالا ۱۵۳ است و addon های native باید دوباره build شوند؛ نوت رسمی فقط سه گام ۱۵۱، ۱۵۲ و ۱۵۳ را فهرست میکند و مقدار نهایی را صریح نمینویسد. کسی که فقط LTS استفاده میکند، طبق اطلاعیه جز شمارهی نسخه تغییر زیادی نمیبیند.
منابع:
