Deno 2.8: بزرگترین نسخهی مینور تاریخ
خلاصهٔ کاملتر
Deno 2.8 با عنوان بزرگترین نسخهی مینور این رانتایم منتشر شده. این آپدیت پنج دستور CLI جدید، بهبود عملکرد گسترده، و یک جهش بزرگ در سازگاری با Node.js داره.
دستورات جدید CLI
deno audit fix آسیبپذیریهای پکیجهای npm رو بهصورت خودکار برطرف میکنه — پکیج رو به نزدیکترین نسخهی پَچشدهای که با محدودیتهای نسخهات سازگاره آپگرید میکنه. اگه نیاز به major upgrade باشه، جداگانه لیست میشه تا خودت تصمیم بگیری. deno bump-version هم فیلد version رو در deno.json یا package.json آپدیت میکنه و در workspace چندپکیجی، همهی اعضا رو با هم بهروز میکنه — حتی میتونه از Conventional Commits برای تشخیص خودکار نوع bump استفاده کنه.
deno ci یه دستور اختصاصی برای محیطهای CI/CDه که مطمئن میشه نصب دقیقاً با lockfile مطابقت داره — اگه deno.lock نباشه خطا میده و با فلگ --frozen اجرا میشه. deno pack پروژهی Deno یا JSR رو به یه tarball قابل انتشار در npm تبدیل میکنه: TypeScript رو کامپایل میکنه، فایلهای .d.ts میسازه، وابستگیها رو بازنویسی میکنه، و فقط ماژولهای قابل دسترس از exports رو شامل میشه. deno why هم مثل npm explain توضیح میده چرا یه پکیج نصب شده و مسیر وابستگی رو نشون میده.
سازگاری با Node.js
نرخ پاس شدن تستهای رسمی Node.js از حدود ۴۲٪ در نسخهی ۲.۷ به ۷۶.۴٪ در ۲.۸ رسیده (۳٬۴۰۵ از ۴٬۴۵۷ تست). برای مقایسه، Bun 1.3.14 روی همین مجموعه ۴۰.۶٪ داره. ماژولهای داخلی Node هم lazy-load شدن تا استارت برنامههایی که از اونها استفاده نمیکنن سریعتر باشه.
بهبود عملکرد
نصب سرد npm (با React، Vite، Babel و ESLint) از ۳۳۱۹ms به ۹۰۶ms رسیده — ۳.۶۶ برابر سریعتر. throughput سرور node:http بیش از دو برابر شده (۲.۲۱x)، base64 با سوئیچ به کتابخونهی simdutf حدود ۳ برابر سریعتره، و scryptSync از node:crypto حدود دو برابر سریعتر شده. این بهبودها حاصل بهینهسازیهای موازی مثل resolution موازی وابستگیها، decompression روی thread pool، و استخراج بهینهی tarbalله.
پشتیبانی از import defer
Deno 2.8 از پیشنهاد TC39 به اسم import defer پشتیبانی میکنه. با این قابلیت یه ماژول لود و parse میشه ولی کد سطح بالاش اجرا نمیشه تا وقتی واقعاً به یکی از exportهاش دسترسی پیدا کنی. این برای کاهش زمان استارت برنامه وقتی یه ماژول سنگینه ولی همیشه استفاده نمیشه خیلی مفیده:
import defer * as deferred from "./deferred.js";
console.log("before access");
console.log(`value: ${deferred.value}`);
console.log("after first access");خروجی نشون میده که ماژول فقط موقع دسترسی به deferred.value evaluate میشه، نه موقع import. همین رفتار با import.defer() برای dynamic import هم در دسترسه.
تغییر پیشفرض npm
از این نسخه، deno add express بدون پیشوند npm: هم کار میکنه و Deno خودش اسم رو به عنوان پکیج npm تفسیر میکنه. این تغییر deno install رو به یه جایگزین واقعی برای npm install تبدیل میکنه — package.json رو میخونه، node_modules سازگار میسازه، و سریعتر از npm عمل میکنه.
نکات کلیدی:
- deno audit fix آسیبپذیریهای npm رو خودکار پَچ میکنه
- deno bump-version ورژن رو بر اساس Conventional Commits آپدیت میکنه
- deno ci نصب reproducible برای CI/CD فراهم میکنه
- deno pack پروژهی Deno/JSR رو به tarball قابل انتشار npm تبدیل میکنه
- deno why مسیر وابستگی یه پکیج رو توضیح میده
- سازگاری Node.js از ۴۲٪ به ۷۶.۴٪ رسیده — بیش از Bun
- نصب سرد npm حالا ۳.۶۶ برابر سریعتره
- پشتیبانی از import defer برای کاهش زمان استارت
- deno add express بدون پیشوند npm: هم کار میکنه




