Deno 2.8 منتشر شد: بزرگترین نسخه فرعی تاکنون
خلاصهٔ کاملتر
Deno 2.8 بهعنوان بزرگترین نسخه فرعی این رانتایم تا به امروز معرفی شده. این نسخه پنج دستور CLI کاملاً جدید، یک جهش بزرگ در سازگاری با Node.js، بهبودهای قابلتوجه در عملکرد، و پشتیبانی از import defer رو با خودش آورده.
دستورهای جدید CLI:
- deno audit fix آسیبپذیریهای بستههای npm رو شناسایی میکنه و بهصورت خودکار به نزدیکترین نسخه پَچشدهای که هنوز با محدودیتهای نسخه شما سازگاره آپگرید میکنه. آپگریدهایی که نیاز به تغییر major version دارن جداگانه فهرست میشن تا خودتون تصمیم بگیرید.
- deno bump-version فیلد نسخه رو در deno.json یا package.json آپدیت میکنه و از patch/minor/major/prerelease پشتیبانی میکنه. در workspace، همه پکیجهای عضو رو با هم آپدیت میکنه و حتی میتونه از Conventional Commits برای تشخیص خودکار نوع bump استفاده کنه.
- deno ci برای محیطهای CI طراحی شده: اگه deno.lock نباشه خطا میده، پوشه node_modules قبلی رو حذف میکنه، و نصب رو با فلگ --frozen اجرا میکنه تا lockfile باید دقیقاً با config match کنه.
- deno pack یه پروژه Deno/JSR رو به یه tarball آماده برای انتشار در npm تبدیل میکنه؛ TypeScript رو ترنسپایل میکنه، فایلهای .d.ts تولید میکنه، و specifierها رو برای اکوسیستم npm بازنویسی میکنه.
- deno why توضیح میده چرا یه پکیج نصب شده با نمایش کامل زنجیره وابستگی — مثل npm explain — و هم برای پکیجهای npm و هم JSR کار میکنه.
- deno transpile فقط typeها رو از TypeScript/JSX/TSX حذف میکنه و JavaScript خالص مینویسه، بدون bundling یا تغییر ماژولها.
سازگاری با Node.js یه جهش بزرگ داشته: نرخ قبولی در تستسوئیت خود Node از ۴۲٪ در نسخه ۲.۷ به ۷۶.۴٪ در نسخه ۲.۸ رسیده (۳,۴۰۵ از ۴,۴۵۷ تست). برای مقایسه، Bun 1.3.14 روی همین مجموعه ۴۰.۶٪ رو داره. علاوه بر این، ماژولهای built-in حالا بهصورت lazy-load شدن تا برنامههایی که به اونا نیاز ندارن سریعتر استارت بزنن.
عملکرد در چند زمینه بهطور چشمگیری بهتر شده: نصب سرد npm حدود ۳.۶۶ برابر سریعتر (از ۳۳۱۹ms به ۹۰۶ms)، توان عملیاتی node:http بیش از دو برابر (۲.۲۱x)، عملیات base64 در node:buffer با کمک کتابخونه simdutf ۳.۰۷ برابر سریعتر، و scryptSync در node:crypto ۲.۱۲ برابر بهبود یافته.
import defer یه قابلیت جدید جالبه که بر اساس پروپوزال TC39 پیاده شده. با این ویژگی، یه ماژول لود و پارس میشه ولی کد سطح بالاش اجرا نمیشه تا زمانی که واقعاً به یکی از exportهاش دسترسی پیدا بشه. این برای کم کردن زمان استارتآپ وقتی یه ماژول سنگینه ولی همیشه استفاده نمیشه خیلی مفیده:
import defer * as deferred from "./deferred.js";
console.log("before access");
console.log(`value: ${deferred.value}`);
console.log("after first access");خروجی نشون میده که deferred module evaluated بین before access و دسترسی به property چاپ میشه — یعنی اجرا دقیقاً موقع نیاز اتفاق میافته، نه زودتر.
همچنین deno add دیگه نیازی به پیشوند npm: نداره و نام بسته رو مستقیم قبول میکنه، که تجربهای کاملاً آشنا برای توسعهدهندگان Node ایجاد میکنه.
نکات کلیدی:
- پنج دستور CLI جدید: deno audit fix، deno bump-version، deno ci، deno pack، deno transpile، deno why
- سازگاری با Node.js از ۴۲٪ به ۷۶.۴٪ رسید (Bun روی همین تستها ۴۰.۶٪ داره)
- نصب سرد npm بدون cache حدود ۳.۶۶ برابر سریعتر شد
- پشتیبانی از import defer برای تأخیر در اجرای ماژولها
- deno add express بدون پیشوند npm: کار میکنه
- بهبود عملکرد node:http، base64، crypto و fs




