Chromium дээр суурилсан хөтөч дээр ашиглагддаг V8 хөдөлгүүр ашиглан JavaScript болон TypeScript дээр бичигдсэн сервер талын болон ширээний програмуудыг дангаар нь гүйцэтгэх зориулалттай Deno 2.9 платформ худалдаанд гарлаа. Төслийг Node.js-ийн бүтээгч Райан Дал илүү аюулгүй орчин бүрдүүлэх, Node.js архитектур дахь ойлголтын алдааг арилгах зорилгоор боловсруулж байна. Аюулгүй байдлыг сайжруулахын тулд V8 фрэймворкийг Rust хэл дээр бичсэн бөгөөд Tokio платформыг хаалтгүй хүсэлт боловсруулахад ашигладаг. Төслийн кодыг MIT лицензийн дагуу түгээдэг. Бүтээлүүдийг дараах зорилгоор бэлтгэсэн болно. Linux, Windows и macOS.
Шинэ хувилбар нь Electron платформтой төстэй вэб технологи ашиглан бүтээгдсэн GUI програмуудыг үүсгэх боломжийг олгодог туршилтын Deno Desktop хэрэгслийн хэрэгжилтээрээ онцлог юм. Програмын логик болон интерфэйсийг стандарт вэб хүрээг ашиглан JavaScript эсвэл TypeScript дээр тодорхойлсон бөгөөд програмыг хөтөч дээр суурилсан хөдөлгүүр ашиглан гүйцэтгэдэг. Програмыг бие даасан гүйцэтгэгдэх файл хэлбэрээр хүргэдэг бөгөөд сонгодог GUI програмуудтай төстэй хэрэглэгчийн интерфэйсийг санал болгодог.
Deno Desktop нь үйлдлийн системийн WebView болон програмд нэгтгэгдсэн CEF (Chromium Embedded Framework) гэсэн хоёр хөтчийн хөдөлгүүр дээр ажиллах зориулалттай backend-үүдийг санал болгодог. WebView дээр суурилсан backend нь системийн WebView2 хөтчийн хөдөлгүүр дээр ажиллуулснаар гүйцэтгэгдэж болох файлын хэмжээг багасгах боломжийг олгодог. Windows болон WebKit дотор macOS и Linux, мөн CEF backend нь платформууд дээр ижил интерфэйсийг үзүүлэх боломжийг олгодог. Linux, macOS и Windows, гэхдээ гүйцэтгэгдэж болох файлуудын хэмжээг мэдэгдэхүйц нэмэгдүүлэх зардлаар.
Туршилтын програмын гүйцэтгэгдэж болох файлын хэмжээг WebView ашиглан 40 MB, CEF ашиглан 150 MB гэж тооцоолсон. Харьцуулбал, энэ үзүүлэлт Electron-д 100 MB, Electrobun-д 61 MB, Tauri-д 2-10 MB байна (Electron нь суулгагдсан CEF ашигладаг бол Electrobun болон Tauri нь WebView системийг ашигладаг). Програмуудын хооронд нийтлэг CEF хөдөлгүүрийг хуваалцах механизм боловсруулагдаж байгаа бөгөөд энэ нь гүйцэтгэгдэж болох файлуудын хэмжээг багасгах болно.
Deno Desktop нь Node.js, NPM экосистем болон Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start, болон Vite SSR зэрэг вэб хүрээнүүдтэй бүрэн нийцдэг. Уугуул ширээний API-д хандахын тулд API-г хангадаг. Жишээлбэл, та цонхны хэмжээ, байрлал, харагдах байдлыг хянах, цэс үүсгэх, өөрчлөн тохируулагч хавсаргах, системийн тавиур болон самбаруудад дүрс тохируулах, уугуул үйлдлийн системийн харилцах цонхыг харуулах боломжтой. Вэб програмуудыг кодыг нь өөрчлөхгүйгээр ширээний програм болгон бүтээж болох бөгөөд ашигласан вэб хүрээг автоматаар илрүүлж, нэг систем дээр хөрвүүлж болно. Linux x64/гар64, Windows x64 болон macOS x64/arm64. Зориулагдсан Linux Багцуудыг AppImage, deb болон rpm форматаар үүсгэж болно.
Electron, Electrobun, Tauri-ээс ялгаатай нь Deno Desktop нь сокет дээр суурилсан IPC бүхий олон процессын гүйцэтгэлийн загварыг ашигладаггүй. Үүний оронд CEF-д зориулсан олон урсгалтай загвар эсвэл WebView-д зориулсан процессын бүлэгт суурилсан загварыг ашигладаг бөгөөд backend болон GUI кодын хооронд процессын доторх сувгуудаар дамжуулан харилцаа холбоо байдаг. Энэ нь зурвасын өргөнийг хэмнэхийн тулд зөвхөн өмнөх хувилбараас хойш өөрчлөгдсөн өгөгдлийг (bsdiff дээр суурилсан хоёртын засваруудыг ашиглан) татаж авдаг бөгөөд шинэ хувилбарыг эхлүүлэхэд алдаа гарсан тохиолдолд өмнөх хувилбар руу буцаахыг дэмждэг суурилуулсан шинэчлэлтийн шалгалт болон автомат суулгах механизмтай.
Deno 2.9-ийн бусад шинэ боломжуудад дараахь зүйлс орно.
- npm, pnpm, yarn, болон Bun-аас Deno руу шилжих ажлыг хялбарчлахын тулд "deno install" командын түгжээний файлуудыг шууд уншихыг дэмждэг.
- CSS модулиудыг импортлох дэмжлэг.
- Node.js 26 платформтой нийцтэй байдлыг хэрэгжүүлэх.
- "deno link", "deno unlink" болон "deno list" гэсэн шинэ командууд.
- Нөөц дээр түгжээ тохируулахад зориулсан Web Locks API-г дэмжих.
- Хамаарлын халдлагаас хамгаалахын тулд хамаарлуудын шинэ хувилбаруудыг суулгахаасаа өмнө анхдагч 24 цагийн саатлыг (min-release-age=24h) идэвхжүүлнэ үү.
- HTTP-тэй ажиллах үед эхлүүлэх хугацаа багассан (~2x), санах ойн хэрэглээ багассан (~2.2x), мөн нэвтрүүлэх чадвар нэмэгдсэн (~1.2x).

Эх сурвалж: opennet.ru

