Xrom əsaslı brauzerlərdə istifadə edilən V8 mühərrikindən istifadə edərək JavaScript və TypeScript server tərəfindəki tətbiqlərin müstəqil şəkildə icrası üçün platforma olan Deno 2.0 buraxıldı. Deno layihəsi Node.js-in yaradıcısı Ryan Dahl tərəfindən daha təhlükəsiz mühit təmin etmək və Node.js arxitekturasındakı konseptual səhvləri aradan qaldırmaq məqsədi ilə hazırlanır. Təhlükəsizliyi artırmaq üçün V8 mühərrik örtüyü Rust dilində yazılıb və bloklanmayan sorğu emalı üçün Tokio çərçivəsi istifadə olunur. Layihə kodu MIT lisenziyası altında paylanır. Quruluşlar hazırlanır... Linux, Windows и macOS.
Yeni filial hazırlanarkən əsas diqqət köhnə JavaScript infrastrukturu ilə uyğunluğa və təhlükəsizliyə xələl gətirmədən dəstəklənən JavaScript layihələrinin çeşidinin genişləndirilməsinə yönəldilib. Dəyişikliklər arasında:
- Node.js və npm ilə geriyə uyğunluq həyata keçirilib və bu, Node.js üçün yaradılmış dəyişdirilməmiş proqramları işə salmağa imkan verir. Node.js dəstəyi həmçinin paketləri deno.json-a idxal edərkən “npm:” spesifikatorunu qeyd etməklə Deno-dan istifadə etmək üçün mövcud layihələri Node.js-dən tədricən köçürməyə və ya NPM-dən Deno layihələrinə asılılıqları qoşmağa imkan verir.
- Node.js-də istifadə olunan package.json faylı və node_modules kataloqu üçün yerli dəstək əlavə edildi.
- “.npmrc” faylları vasitəsilə müəyyən edilmiş şəxsi NPM depolarına dəstək verilir.
- Next.js, Astro, Remix, Angular, SvelteKit və QwikCity kimi populyar JavaScript çərçivələri üçün əlavə dəstək.
- Asılılıqların ayrıca işlənməsi ilə npm iş sahələri (iş sahəsi) və mono depolar (monorepo) üçün əlavə dəstək.
- Yeni paket idarəetmə əmrləri əlavə edildi: asılılıqları quraşdırmaq üçün “deno install”, package.json və ya deno.json-a paketlər əlavə etmək üçün “deno add”, paketləri silmək üçün “deno remove”. Qeyd olunur ki, “deno install” keşdə paket olmadıqda npm-dən təxminən 15%, paket keşdə olduqda isə 90% daha sürətli olur (həm node_modules, həm də öz qlobal keşi dəstəklənir).
- Standart kitabxana sabitləşdirilib.
- Uzunmüddətli dəstək dövrü (LTS) təmin edilir.
- JSR təqdim olunur - müxtəlif JavaScript Runtimes-da istifadə oluna bilən JavaScript və TypeScript kitabxanaları olan bir depo.
- “Deno fmt” əmri artıq HTML, CSS və YAML formatlarında məzmunu formatlaşdırmaq imkanına malikdir.
- Node.js-ə xüsusi qaydalar və "deno lint" əmrinə düzəlişlər üçün əlavə dəstək.
- "Deno test" əmri node:test istifadə edərək yaradılmış testləri yerinə yetirmək imkanı verir.
- “Deno task” əmri indi package.json vasitəsilə işləyən skriptləri dəstəkləyir.
- “Deno compile” əmri indi kodu rəqəmsal imzalamaq imkanına malikdir.
- “Deno service” əmri bir neçə CPU nüvəsindən istifadə edərək HTTP server əməliyyatlarının paralelləşdirilməsini həyata keçirir.
- “Deno əhatə dairəsi” əmri indi hesabatların HTML formatında saxlanmasını dəstəkləyir.
- Performansın optimallaşdırılması həyata keçirilib.

Deno-nun əsas xüsusiyyətləri:
- Təhlükəsizlik yönümlü standart konfiqurasiya. Fayl girişi, şəbəkə və mühit dəyişənlərinə giriş standart olaraq qeyri-aktivdir və açıq şəkildə aktivləşdirilməlidir. Tətbiqlər standart olaraq təcrid olunmuş sandbox mühitlərində işləyir və açıq icazələr vermədən sistem imkanlarına daxil ola bilməz;
- JavaScript-dən kənar TypeScript üçün daxili dəstək. Növün yoxlanılması və JavaScript generasiyası üçün standart TypeScript kompilyatorundan istifadə edilir ki, bu da V8-də JavaScript təhlili ilə müqayisədə performansın azalmasına gətirib çıxarır;
- İcra vaxtı tək müstəqil icra edilə bilən fayl (“deno”) şəklində gəlir. Deno istifadə edərək proqramları işə salmaq üçün sadəcə olaraq platformanız üçün xarici asılılığı olmayan və sistemdə heç bir xüsusi quraşdırma tələb etməyən təxminən 40 MB ölçüsündə bir icra edilə bilən fayl yükləmək lazımdır. Üstəlik, deno monolit proqram deyil, ayrıca istifadə edilə bilən Rust sandıq paketlərinin (deno_core, rusty_v8) toplusudur;
- Proqramı işə salarkən, həmçinin modulları yükləmək üçün URL ünvanından istifadə edə bilərsiniz. Məsələn, welcome.js proqramını işə salmaq üçün “deno https://deno.land/std/examples/welcome.js” əmrindən istifadə edə bilərsiniz. Xarici resurslardan kod yerli sistemdə endirilir və keşlənir, lakin heç vaxt avtomatik olaraq yenilənmir (yenilənmə üçün proqramın açıq şəkildə “--reload” bayrağı ilə işləməsi tələb olunur);
- Tətbiqlərdə HTTP vasitəsilə şəbəkə sorğularının səmərəli işlənməsi; platforma yüksək performanslı şəbəkə proqramlarının yaradılması üçün nəzərdə tutulub;
- Həm Deno-da, həm də adi veb-brauzerdə icra oluna bilən universal veb proqramlar yaratmaq imkanı;
- İstifadəsi xarici asılılıqlara bağlanmağı tələb etməyən standart modul dəstinin olması. Standart kolleksiyadan olan modullar əlavə audit və uyğunluq testindən keçmişdir;
- İcra müddətinə əlavə olaraq, Deno platforması paket meneceri kimi də fəaliyyət göstərir və kodunuzdakı URL vasitəsilə modullara daxil olmağa imkan verir. Məsələn, modulu yükləmək üçün kodunuzda "import * as log from "https://deno.land/std/log/mod.ts" qeyd edə bilərsiniz. Xarici fayllardan yüklənir serverlər URL ilə, keşlənmiş. Modul versiyalarına keçid URL daxilində versiya nömrələrini göstərməklə müəyyən edilir, məsələn, "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
- Veb standartlarının istifadəsinə, Promise dəstəyinə, gətirmə və ECMAScript modullarına diqqət yetirin.
- NPM anbarında yerləşdirilən və Node.js platforması üçün yaradılmış paketlərlə uyğun gəlir.
- Bu struktura inteqrasiya olunmuş asılılıq yoxlama sistemi (“deno info” əmri) və kodun formatlaşdırılması üçün yardım proqramı (deno fmt) daxildir;
- Bütün proqram skriptləri bir JavaScript faylında birləşdirilə bilər.
Mənbə: opennet.ru

