Deno 2.9، پلتفرمی که برای اجرای مستقل برنامههای سمت سرور و دسکتاپ نوشته شده با جاوا اسکریپت و TypeScript با استفاده از موتور V8 که در مرورگرهای مبتنی بر Chromium استفاده میشود، طراحی شده است، منتشر شد. این پروژه توسط رایان دال، خالق Node.js، با هدف ارائه محیطی امنتر و حذف خطاهای مفهومی در معماری Node.js در حال توسعه است. برای بهبود امنیت، چارچوب V8 با زبان Rust نوشته شده است و از پلتفرم Tokio برای پردازش درخواستهای غیر مسدودکننده استفاده میشود. کد پروژه تحت مجوز MIT توزیع شده است. نسخههای ساخته شده برای Linux, Windows и macOS.
نسخه جدید به دلیل پیادهسازی جعبه ابزار آزمایشی Deno Desktop قابل توجه است، که امکان ایجاد برنامههای رابط کاربری گرافیکی سفارشی ساخته شده با استفاده از فناوریهای وب، مشابه پلتفرم Electron را فراهم میکند. منطق و رابط برنامه در جاوا اسکریپت یا TypeScript با استفاده از چارچوبهای وب استاندارد تعریف شدهاند و برنامه با استفاده از یک موتور مبتنی بر مرورگر اجرا میشود. برنامه به صورت یک فایل اجرایی مستقل ارائه میشود و رابط کاربری مشابه برنامههای رابط کاربری گرافیکی کلاسیک ارائه میدهد.
Deno Desktop بکاندهایی برای اجرا روی دو موتور مرورگر ارائه میدهد: WebView سیستم عامل و CEF (چارچوب جاسازیشده کرومیوم) که در برنامه ادغام شدهاند. بکاند مبتنی بر WebView با اجرا روی موتور مرورگر WebView2 سیستم، امکان کاهش حجم فایلهای اجرایی را فراهم میکند. Windows و وبکیت در macOS и Linuxو بکاند CEF امکان دستیابی به رندرینگ رابط کاربری یکسان در پلتفرمهای مختلف را فراهم میکند. Linux, macOS и Windows، اما به قیمت افزایش قابل توجه حجم فایلهای اجرایی.
اندازه فایل اجرایی برنامه آزمایشی با استفاده از WebView حدود ۴۰ مگابایت و با استفاده از CEF حدود ۱۵۰ مگابایت تخمین زده شده است. برای مقایسه، این رقم برای Electron حدود ۱۰۰ مگابایت، برای Electrobun حدود ۶۱ مگابایت و برای Tauri حدود ۲ تا ۱۰ مگابایت است (Electron از CEF تعبیهشده استفاده میکند، در حالی که Electrobun و Tauri از سیستم WebView استفاده میکنند). مکانیزمی برای به اشتراک گذاشتن یک موتور CEF مشترک بین برنامهها در حال توسعه است که اندازه فایلهای اجرایی را کاهش میدهد.
دسکتاپ Deno کاملاً با Node.js، اکوسیستم NPM و چارچوبهای وب مانند Next.js، Astro، Fresh، Remix، Nuxt، SvelteKit، SolidStart، TanStack Start و Vite SSR سازگار است. یک API برای دسترسی به APIهای دسکتاپ بومی ارائه شده است. به عنوان مثال، میتوانید اندازه، موقعیت و قابلیت مشاهده پنجرهها را کنترل کنید، منوها را ایجاد کنید، هندلرهای سفارشی را پیوست کنید، آیکونهایی را برای سینی سیستم و پنلها تنظیم کنید و دیالوگهای سیستمعامل بومی را نمایش دهید. برنامههای وب را میتوان بدون تغییر کد آنها به عنوان برنامههای دسکتاپ ساخت و چارچوبهای وب مورد استفاده را میتوان به طور خودکار در یک سیستم واحد شناسایی و کامپایل کرد. Linux x64/arm64، Windows x64 و macOS x64/arm64. برای Linux بستهها میتوانند در قالبهای AppImage، deb و rpm تولید شوند.
برخلاف Electron، Electrobun و Tauri، Deno Desktop از مدل اجرای چند فرآیندی با IPC مبتنی بر سوکت استفاده نمیکند. در عوض، از یک مدل چند رشتهای برای CEF یا یک مدل مبتنی بر گروه فرآیند برای WebView استفاده میکند، و ارتباط بین کد backend و GUI از طریق کانالهای درون فرآیندی برقرار است. این سیستم عامل دارای یک مکانیزم بررسی بهروزرسانی و نصب خودکار داخلی است که برای صرفهجویی در پهنای باند، فقط دادههایی را که از نسخه قبلی تغییر کردهاند (با استفاده از وصلههای دودویی مبتنی بر bsdiff) دانلود میکند و در صورت بروز خطا هنگام راهاندازی نسخه جدید، از بازگشت به نسخه قبلی پشتیبانی میکند.
سایر ویژگیهای جدید در Deno 2.9 عبارتند از:
- پشتیبانی از خواندن مستقیم فایلهای قفل در دستور "deno install" برای سادهسازی مهاجرت به Deno از npm، pnpm، yarn و Bun.
- پشتیبانی از وارد کردن ماژولهای CSS.
- پیادهسازی سازگاری با پلتفرم Node.js 26.
- دستورات جدید "لینک deno"، "لغو لینک deno" و "لیست deno"
- پشتیبانی از API قفلهای وب برای تنظیم قفل روی منابع.
- قبل از نصب نسخههای جدید وابستگیها، برای محافظت در برابر حملات نفوذ به وابستگیها، تأخیر پیشفرض ۲۴ ساعته (min-release-age=24h) را فعال کنید.
- کاهش زمان راهاندازی (~۲ برابر)، کاهش مصرف حافظه (~۲.۲ برابر) و افزایش توان عملیاتی هنگام کار با HTTP (~۱.۲ برابر).

منبع: opennet.ru

