A Node.js szerzője bemutatta a Deno 1.0 védett JavaScript platformot

Két év fejlesztés után bemutatva első jelentős kiadás Deno 1.0, egy platform az alkalmazások elkülönített végrehajtásához JavaScript és TypeScript nyelveken, amely használható szerveroldali feldolgozók létrehozására. A platform fejlesztője Ryan Dahl (Ryan Dahl), a Node.js létrehozója. A Node.js-hez hasonlóan a Deno is JavaScript motorral működik, V8, amelyet szintén használnak a Chromium-alapú böngészőkben. A Deno azonban nem a Node.js ágazata, hanem egy teljesen új projekt, amelyet a semmiből hoztak létre. A projekt kódja terjesztésre kerül MIT licenc alatt áll. A kiadások kiadások Linux, Windows és macOS számára.

A jelentős verziószám az API stabilizálásával kapcsolatos a Deno névtérben, amely az alkalmazások és az operációs rendszer közötti interakcióért felelős. Az API-k, amelyek még nem stabilizáltak, alapértelmezés szerint rejtve vannak, és csak "—unstable" módban érhetők el. Az új verziók fokozatosan stabil állapotba kerülnek. A globális névtérben elérhető API, amely olyan általános funkciókat tartalmaz, mint a setTimeout() és fetch(), lehetőségei szerint közel áll a szokásos webböngészők API-jához, és a böngészők Web-szabványai szerint fejlődik. A Rust API-k, amelyeket közvetlenül a platform kódjában alkalmaznak, valamint a Deno runtime-hoz fejlesztett plugin interfész, jelenleg nem stabilizáltak és folyamatosan fejlődnek.

A új JavaScript platform létrehozásának kulcsfontosságú indokai közé tartozik a Node.js architektúrájában elkövetett koncepcionális hibák kiküszöbölése, amelyek előfordultak, és biztonságosabb környezet biztosítása a felhasználók számára. A biztonság növelése érdekében a V8 motor körüli kötés Rust nyelven készült, amely elkerüli a memória alacsony szintű kezelése miatt fellépő számos sebezhetőséget, mint például a memória felszabadítása utáni hivatkozás, a null pointer dereferálása és a pufferszámlálások túllépése. A nem blokkoló kérésfeldolgozásra a Rust nyelven írt Tokio, amely lehetővé teszi az eseményalapú architektúrára épülő, magas teljesítményű alkalmazások létrehozását, amelyek támogatják a több szálas feldolgozást és az aszinkron hálózati kéréskezelést.

Fő jellemzői Deno:

  • Az alapértelmezett konfiguráció biztonságorientált. A fájlokkal való kapcsolatok, a hálózati lehetőségek és az alapértelmezett környezeti változókhoz való hozzáférés blokkolva van, és kifejezett engedélyezést igényel. Az alapértelmezett alkalmazások izolált sandbox környezetben futnak, és nem férhetnek hozzá a rendszer funkcióihoz kifejezett jogosultságok biztosítása nélkül;
  • A JavaScript mellett beépített TypeScript támogatás. A típusok ellenőrzésére és JavaScript generálására a TypeScript beépített fordítóját használja, ami teljesítménycsökkenést eredményez a JavaScript V8-as elemzésével szemben. A jövőben egy saját TypeScript típusellenőrző rendszer tervezése van, amely jelentősen javítja a TypeScript feldolgozási teljesítményét;
  • A runtime egy önálló végrehajtható fájl formájában érkezik („deno”). Az alkalmazások Deno segítségével történő indításához elegendő letölthető. a platformján egy végrehajtható fájlt, körülbelül 20 MB méretben, külső függőségek nélkül, és nem igényel különösebb telepítést a rendszerbe. Megjegyzendő, hogy a deno nem egy monolitikus alkalmazás, hanem Rust on crate-csomagok gyűjteménye (deno_core, rusty_v8), amelyeket külön-külön is használhatunk;
  • A program indításához, valamint a modulok betöltéséhez URL-alapú címzést lehet használni. Például a welcome.js program elindításához a következő parancsot használhatja: „deno https://deno.land/std/examples/welcome.js”. A külső forrásokból származó kódot letöltik és a helyi rendszeren gyorsítótárazva tárolják, de soha nem frissül automatikusan (frissítéshez kifejezetten el kell indítani az alkalmazást a „—reload” kapcsolóval);
  • Hatékony HTTP hálózati kérések kezelése az alkalmazásokban, a platform a nagy teljesítményű hálózati alkalmazások készítésére lett tervezve;
  • Lehetőség univerzális webalkalmazások létrehozására, amelyek Deno-ban és a hagyományos webböngészőben is futtathatók;
  • A alapértelmezett modulgyűjtemény, amelyek felhasználása nem igényel kapcsolódást külső függőségekhez. A standard gyűjtemény moduljai további ellenőrzésen és kompatibilitásellenőrzésen estek át;
  • A Deno runtime platform also acts as a package manager and allows referencing modules by URL within the code. For example, to load a module you can specify in the code 'import * as log from "https://deno.land/std/log/mod.ts"'. Files downloaded from external servers via URL are cached. Version binding of modules is determined by specifying version numbers within the URL, for instance, "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
  • The integrated system includes a dependency inspection tool (the 'deno info' command) and a code formatting utility (deno fmt);
  • All application scripts can be combined into a single JavaScript file.

Differences from Node.js:

  • Deno does not use the npm package manager
    and does not rely on repositories; module addressing is done via URL or file paths, and modules can be hosted on any site;
  • Deno does not use 'package.json' to define modules;
  • Different API: all asynchronous actions in Deno return a promise;
  • Deno requires explicit definition of all necessary permissions for files, network, and environment variables;
  • All unhandled errors lead to the termination of the application;
  • Deno implements the ECMAScript module system and does not support require();
  • The built-in HTTP server in Deno is written in TypeScript and operates over native TCP sockets, while the Node.js HTTP server is written in C and provides bindings for JavaScript. Deno developers focused on optimizing the entire layer of TCP sockets and providing a more general interface. The Deno HTTP server ensures lower throughput but guarantees predictable low latency. For example, in a test, a simple application based on the Deno HTTP server was able to handle 25,000 requests per second with a maximum latency of 1.3 milliseconds. In Node.js, a similar application handled 34,000 requests per second, but latencies ranged from 2 to 300 milliseconds.
  • Deno is not compatible with packages for Node.js (NPM), but is developing separately a layer for compatibility with the Node.js standard library, allowing more applications written for Node.js to run on Deno as it evolves.
  • Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster