Održan je izlazak JavaScript platforme Deno 1.16, namijenjene za izolirano izvršavanje (bez korištenja preglednika) aplikacija napisanih na jezicima JavaScript i TypeScript. Projekt razvija autor Node.js Ryan Dahl. Kod platforme napisan je u programskom jeziku Rust i distribuira se pod MIT licencom. Gotove verzije su pripremljene za Linux, Windows i macOS.
Projekt je sličan platformi Node.js i, poput nje, koristi JavaScript motor V8, no, prema riječima autora Node.js, ispravlja niz arhitektonskih grešaka svog prethodnika i razlikuje se od njega sljedećim osobinama:
- Korištenje Rusta kao glavnog jezika, što, prema mišljenju developera, smanjuje rizik od pojave ranjivosti povezanih s niskonivelskim radom s memorijom (prelivanje bafera, use-after-free itd.);
- Deno ne koristi paketni menadžer npm i package.json, nudeći korisnicima instalaciju modula putem navođenja URL-a ili putanje do modula za instalaciju. Ipak, projekt nudi nekoliko alata za olakšavanje rada sa vanjskim modulima;
- Aplikacije se izvode izolirano u sandboxovima i nemaju pristup mreži, varijablama okruženja i datotečnom sustavu, osim ako nisu izričito dodijeljene dozvole;
- U arhitekturi je ugrađena mogućnost stvaranja univerzalnih web aplikacija koje mogu raditi i u Deno sustavu, kao i u običnom pregledniku;
- Korištenje 'ES Modules' i nedostatak podrške za require();
- Sve neobrađene greške programera u web aplikaciji dovode do njihovog prisilnog završavanja;
- Podrška za TypeScript uz JavaScript;
- Ukupna veličina platforme spremne za korištenje iznosi 84 MB (u zip arhivi — 31 MB) u obliku jedne izvršne datoteke;
- U paketu dolazi sustav za rješavanje ovisnosti i formatiranje koda;
- Fokusirati se na visoko performansne aplikacije.
Dino obrađuje zahtjeve u neblokirajućem načinu rada s upotrebom platforme Tokio, namijenjene za stvaranje visoko performansnih aplikacija temeljenih na događajno orijentiranoj (event-driven) arhitekturi. Također je zanimljivo da je ugrađeni HTTP poslužitelj Deno implementiran na TypeScriptu na vrhu nativnih TCP soketa, što pozitivno utječe na performanse mrežnih operacija.
U novoj verziji zabilježeno je:
- Optimizacija performansi (4 zakrpe);
- Ispravljanje više od 15 grešaka, između ostalog, sada TLS-klijent podržava HTTP/2, podsustav kodiranja podržava dodatne oznake kodiranja itd.;
- Više od dva desetaka noviteta, među kojima se ističe stabilizacija ranije testnih podsustava Deno.startTls i Deno.TestDefinition.permissions, ažuriranje JS-motora V8 na verziju 9.7 i podrška za React 17 JSX transformacije.
Izvor: opennet.ru
