Node.js Müəllifi Təhlükəsiz JavaScript Platforması Deno 1.0-ı Təqdim edir

İki illik inkişafdan sonra təqdim etdi ilk böyük buraxılış Mənə 1.0 verin, serverdə işləyən işləyicilər yaratmaq üçün istifadə edilə bilən JavaScript və TypeScript-də proqramların müstəqil icrası üçün platformadır. Platforma Ryan Dahl tərəfindən hazırlanmışdır (Rayan Dahl), Node.js-in yaradıcısı. Node.js kimi, Deno da JavaScript mühərrikindən istifadə edir V8, bu da Chromium əsaslı brauzerlərdə istifadə olunur. Eyni zamanda, Deno Node.js fork deyil, sıfırdan yaradılmış yeni layihədir. Layihə kodu yayılır MIT lisenziyası altında. Məclislər hazırladılar Linux, Windows və macOS üçün.

Əhəmiyyətli versiya nömrəsi, tətbiqlərin ƏS ilə qarşılıqlı əlaqəsinə cavabdeh olan Deno ad məkanında API-lərin sabitləşməsi ilə əlaqələndirilir. İndiyə qədər olan proqram interfeysləri sabitləşməyib, default olaraq gizlədilir və yalnız “--qeyri-sabit” rejimində işləyərkən mövcuddur. Yeni versiyalar formalaşdıqca, belə API-lər tədricən sabit olacaq. Qlobal ad məkanında setTimeout() və fetch() kimi ümumi funksiyaları özündə cəmləşdirən API adi veb-brauzerlərin API-sinə mümkün qədər yaxındır və brauzerlər üçün Veb standartlarına uyğun olaraq hazırlanmışdır. Birbaşa platforma kodunda istifadə olunan Rust tərəfindən təqdim olunan API-lər, həmçinin Deno işləmə vaxtı üçün plaginlərin işlənib hazırlanması interfeysi hələ stabilləşdirilməyib və inkişaf etməyə davam edir.

Yeni JavaScript platformasının yaradılmasının əsas motivləri konseptual səhvləri aradan qaldırmaq istəyi idi. qəbul etdi Node.js arxitekturasında istifadə edin və istifadəçiləri daha təhlükəsiz mühitlə təmin edin. Təhlükəsizliyi yaxşılaşdırmaq üçün V8 mühərriki Rust dilində yazılmışdır ki, bu da aşağı səviyyəli yaddaş manipulyasiyası nəticəsində yaranan bir çox boşluqların qarşısını alır, məsələn, pulsuz sonra giriş, sıfır göstərici referensiyaları və bufer aşması. Platforma bloklanmayan rejimdə sorğuları emal etmək üçün istifadə olunur Tokio, həm də Rustda yazılmışdır. Tokio sizə hadisələrə əsaslanan arxitekturaya əsaslanan yüksək performanslı proqramlar yaratmağa imkan verir, çox iş parçacığını dəstəkləyir və asinxron rejimdə şəbəkə sorğularını emal edir.

Əsas xüsusiyyətləri Deno:

  • 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. Standart TypeScript kompilyatoru növləri yoxlamaq və JavaScript yaratmaq üçün istifadə olunur ki, bu da V8-də JavaScript təhlili ilə müqayisədə performans hitinə səbəb olur. Gələcəkdə biz TypeScript növünün yoxlanılması sisteminin öz tətbiqini hazırlamağı planlaşdırırıq ki, bu da TypeScript emal performansını böyük ölçüdə təkmilləşdirəcək;
  • İcra vaxtı tək müstəqil icra edilə bilən fayl (“deno”) şəklində gəlir. Deno istifadə edərək proqramları işə salmaq kifayətdir yükləyin onun platforması üçün xarici asılılığı olmayan və sistemdə heç bir xüsusi quraşdırma tələb etməyən, təxminən 20 MB ölçüsündə bir icra edilə bilən fayl var. Üstəlik, deno monolit tətbiq deyil, Rust-da qutu paketlərinin toplusudur (deno_core, rusty_v8), ayrıca istifadə edilə bilən;
  • 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ı;
  • mövcudluğu standart modul dəsti, istifadəsi xarici asılılıqlara bağlanmağı tələb etmir. Standart kolleksiyadan olan modullar əlavə audit və uyğunluq testindən keçmişdir;
  • Deno platforması icra müddətindən əlavə paket meneceri kimi də fəaliyyət göstərir və kodun içərisində URL vasitəsilə modullara daxil olmağa imkan verir. Məsələn, modulu yükləmək üçün "https://deno.land/std/log/mod.ts" saytından "import *" kodunu qeyd edə bilərsiniz. URL vasitəsilə xarici serverlərdən endirilən fayllar keşlənir. Modul versiyalarına bağlanma URL daxilində versiya nömrələri göstərilməklə müəyyən edilir, məsələn, “https://unpkg.com/[e-poçt qorunur]/dist/liltest.js";
  • 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.

Node.js-dən fərqlər:

  • Deno npm paket menecerindən istifadə etmir
    və depolara bağlı deyil, modullar URL vasitəsilə və ya fayl yolu ilə ünvanlanır və modulların özləri istənilən vebsaytda yerləşdirilə bilər;
  • Deno modulları müəyyən etmək üçün "package.json" istifadə etmir;
  • API fərqi, Denodakı bütün asinxron hərəkətlər bir söz qaytarır;
  • Deno, fayllar, şəbəkə və mühit dəyişənləri üçün bütün zəruri icazələrin açıq şəkildə müəyyən edilməsini tələb edir;
  • İşləyicilərlə təmin olunmayan bütün səhvlər tətbiqin dayandırılmasına səbəb olur;
  • Deno ECMAScript modul sistemindən istifadə edir və require();
  • Deno-nun daxili HTTP serveri TypeScript-də yazılmışdır və yerli TCP yuvalarının üstündə işləyir, Node.js HTTP serveri isə C dilində yazılmışdır və JavaScript üçün bağlamalar təmin edir. Deno-nun tərtibatçıları bütün TCP yuva qatını optimallaşdırmağa və daha ümumi interfeys təmin etməyə diqqət yetirdilər. Deno HTTP Server daha aşağı ötürmə qabiliyyətini təmin edir, lakin proqnozlaşdırıla bilən aşağı gecikməyə zəmanət verir. Məsələn, sınaqda Deno HTTP serverinə əsaslanan sadə proqram maksimum 25 millisaniyə gecikmə ilə saniyədə 1.3 min sorğunu emal edə bilib. Node.js-də oxşar proqram saniyədə 34 min sorğunu emal etdi, lakin gecikmələr 2 və 300 millisaniyə arasında dəyişdi.
  • Deno Node.js (NPM) paketləri ilə uyğun gəlmir, lakin ayrıca hazırlanır interlayer standart Node.js kitabxanası ilə uyğunluq üçün, inkişaf etdikcə, Node.js üçün yazılmış daha çox proqram Denoda işləyə biləcək.
  • Mənbə: opennet.ru

Добавить комментарий