Deno 1.16 JavaScript-plattformen ble utgitt, designet for frittstående kjøring (uten å bruke en nettleser) av applikasjoner skrevet i JavaScript og TypeScript. Prosjektet er utviklet av Node.js-forfatteren Ryan Dahl. Plattformkoden er skrevet i Rust-programmeringsspråket og distribueres under MIT-lisensen. Ferdige bygg er forberedt for Linux, Windows og macOS.
Prosjektet ligner på Node.js-plattformen og bruker, i likhet med det, V8 JavaScript-motoren, men ifølge forfatteren av Node.js korrigerer den en rekke arkitektoniske feil til forgjengeren og skiller seg fra den i følgende nyanser :
- Å bruke Rust som hovedspråk, noe som ifølge utviklerne reduserer risikoen for sårbarheter knyttet til lavnivå-minneadministrasjon (bufferoverflyt, bruk-etter-fri, etc.);
- Deno bruker ikke npm-pakkebehandlingen og package.json, og ber brukeren om å installere moduler ved å spesifisere en URL eller bane til modulen som skal installeres. Imidlertid tilbyr prosjektet flere verktøy for å forenkle arbeid med tredjepartsmoduler;
- Applikasjoner kjøres separat i sandkasser og har ikke tilgang til nettverket, miljøvariabler og filsystemet, uten eksplisitt gitte tillatelser;
- Arkitekturen gir muligheten til å lage universelle webapplikasjoner som kan fungere både i Deno-systemet og i en vanlig nettleser;
- Bruker "ES-moduler" og mangler require()-støtte;
- Eventuelle feil i en nettapplikasjon som ikke håndteres av programmereren fører til tvungen avslutning;
- TypeScript-støtte i tillegg til JavaScript;
- Den fulle størrelsen på den ferdige plattformen er 84 MB (i et zip-arkiv - 31 MB) i form av en enkelt kjørbar fil;
- Settet tilbyr et system for å løse avhengigheter og formatere kode;
- Fokuser på applikasjoner med høy ytelse.
Dino behandler forespørsler på en ikke-blokkerende måte ved å bruke Tokio-plattformen, designet for å bygge høyytelsesapplikasjoner basert på hendelsesdrevet arkitektur. Det er også interessant at Denos innebygde HTTP-server er implementert i TypeScript på toppen av native TCP-sockets, noe som har en positiv effekt på ytelsen til nettverksoperasjoner.
Den nye versjonen bemerker:
- Ytelsesoptimalisering (4 patcher);
- Rettet mer enn 15 feil, spesielt, TLS-klienten støtter nå HTTP/2, undersystemet for koding støtter ytterligere kodingsmerker, etc.;
- Mer enn to dusin innovasjoner, hvorav vi kan merke stabiliseringen av de tidligere testsubsystemene Deno.startTls og Deno.TestDefinition.permissions, oppdatering av V8 JS-motoren til versjon 9.7 og støtte for React 17 JSX-transformasjoner.
Kilde: opennet.ru