Deno 2.9 با فرمان تازهٔ deno desktop
خلاصهٔ کاملتر
Deno 2.9 منتشر شد و تیتر اصلیش deno desktopـه: یک راه تازه برای ساختن اپ دسکتاپ نیتیو با همون استک وبی که بلدی، بدون بویلرپلیت Electron و با یک باینری در انتها. کنارش، این سادهترین نسخه برای آوردن یک پروژهٔ Node به Deno هم هست، و بهبود کارایی و سازگاری با Node.js 26 رو هم داره.
deno desktop رو به یک اسکریپت (یا پروژهٔ فریمورک وب) نشون میدی و یک اپ دسکتاپ خودبسنده تحویل میگیری: UI تو webview اجرا میشه، منطقت تو Deno، و همهچیز به یک باینری قابلتوزیع کامپایل میشه. اگه بدون entrypoint اجراش کنی، خودش فریمورک پروژه رو تشخیص میده — Next.js، Astro، Fresh، Remix، Nuxt، SvelteKit، SolidStart، TanStack Start و Vite SSR پشتیبانی میشن. فعلاً آزمایشی ـه.
APIهای نیتیو دسکتاپ هم مستقیم زیر Deno.* هستن و به وابستگی اضافهای نیاز ندارن: Deno.BrowserWindow کنترل اندازه و موقعیت و منو و DevTools پنجره رو میده و پل بین webview و Deno میسازه، Deno.Tray برای آیکون و پنل سینی سیستم و Deno.Dock روی مک. prompt() و alert() و confirm() هم دیالوگ نیتیو نشون میدن و Deno.autoUpdate() یک آپدیتر خودکار با پچ باینری راه میندازه.
const tray = new Deno.Tray();
tray.setIcon(iconBytes);
const panel = tray.attachPanel({ url: "https://localhost:8000/panel" });
panel.window.bind("doThing", async () => {/* ... */});موتور رندر رو با --backend انتخاب میکنی: webview (پیشفرض) از موتور خود سیستمعامل استفاده میکنه، پس باینری کوچیک میمونه و سریع بالا میآد؛ cef کرومیوم رو باندل میکنه که دهها مگابایت اضافه میکنه ولی رندر یکسان روی همهٔ پلتفرمها رو تضمین میکنه. خروجی هم بر اساس پسوندی که به --output میدی ساخته میشه (dmg، msi، deb، rpm و…) و با --target و --all-targets میشه از یک ماشین برای همهٔ پلتفرمها بیلد گرفت.
روی کارایی، عددها قابلتوجهن: کولداستارت یک برنامهٔ hello-world از ۳۴.۲ به ۱۷.۳ میلیثانیه رسیده (حدود ۲ برابر)، و throughput Deno.serve بین ۱.۱ تا ۱.۲۷ برابر بهتر شده. جالبتر از همه حافظهست: پیک RSS تو بار realworld از ۱۴۲ به ۶۴ مگابایت و تو بدنههای ۱ مگابایتی از ۱۹۷ به ۶۳ مگابایت اومده — یعنی مصرف حافظه دیگه با حجم کار بالا نمیره و تقریباً ثابت میمونه.
مهاجرت از Node هم حالا واقعاً چند فرمانه: deno install تو پروژهای که package-lock.json یا pnpm-lock.yaml یا yarn.lock یا bun.lock داره، deno.lock رو مستقیم از همونها میسازه — با همون نسخههای resolveشده و هشهای integrity، بدون resolve دوباره و بدون آپگرید غیرمنتظره. workspaceهای pnpm هم مهاجرت میشن و اگه ابزاری مستقیم node صدا بزنه، Deno یک stand-in سر راهش میذاره که به خودش فوروارد میکنه.
تو بخش امنیت زنجیرهٔ تأمین، min-release-age حالا پیشفرض روشنه با پنجرهٔ ۲۴ ساعته: نسخهای از پکیج npm که تازه منتشر شده (و ممکنه آلوده باشه) همون لحظه وارد درخت وابستگیهات نمیشه. سیاست اختیاری trust-policy=no-downgrade هم نسخهای رو که شواهد انتشارش ضعیفتر از نسخههای قبلیِ همون پکیجه رد میکنه — دفاعی مستقیم در برابر توکن لو رفتهٔ نگهدارنده. تسترانر هم t.assertSnapshot() داخلی و اجرای فقط تستهای متأثر از تغییرات (deno test --changed) گرفته.
نکات کلیدی:
- deno desktop اپ دسکتاپ نیتیو تکباینری میسازه؛ UI تو webview، منطق تو Deno، فعلاً آزمایشی
- APIهای نیتیو مثل Deno.BrowserWindow، Deno.Tray و Deno.autoUpdate() داخل رانتایم هستن
- کولداستارت ۳۴ → ۱۷ میلیثانیه و پیک حافظه تا ۳.۱ برابر کمتر؛ throughput هم تا ۱.۲۷ برابر بهتر
- deno install مستقیم lockfileهای npm، pnpm، yarn و Bun رو میخونه و deno.lock میسازه
- min-release-age با پنجرهٔ ۲۴ ساعته پیشفرض روشن شد تا نسخههای تازهمنتشرشدهٔ آلوده وارد پروژه نشن




