L'autor de Node.js va presentar la plataforma segura de JavaScript Deno 1.0

Després de dos anys de desenvolupament presentat primer llançament important deno 1.0, una plataforma per a l'execució autònoma d'aplicacions en JavaScript i TypeScript, que es pot utilitzar per crear controladors que s'executen al servidor. La plataforma està desenvolupada per Ryan Dahl (Ryan Dahl), creador de Node.js. Igual que Node.js, Deno utilitza un motor JavaScript V8, que també s'utilitza als navegadors basats en Chromium. Al mateix temps, Deno no és una bifurcació de Node.js, sinó que és un nou projecte creat des de zero. Codi del projecte Distribuït per sota llicència MIT. Assemblees preparat per a Linux, Windows i macOS.

El nombre de versió significatiu està associat a l'estabilització de les API a l'espai de noms Deno, que són responsables de la interacció de les aplicacions amb el sistema operatiu. Interfícies de programari que tenen fins ara no estabilitzat, estan ocults per defecte i només estan disponibles quan s'executen en mode "--unstable". A mesura que es formen noves versions, aquestes API es tornaran estables gradualment. L'API de l'espai de noms global, que inclou funcions comunes com setTimeout() i fetch(), és el més propera possible a l'API dels navegadors web convencionals i es desenvolupa d'acord amb els estàndards web per als navegadors. Les API proporcionades per Rust, que s'utilitzen directament al codi de la plataforma, així com la interfície per desenvolupar connectors per al temps d'execució de Deno, encara no s'han estabilitzat i continuen desenvolupant-se.

Els motius clau per crear una nova plataforma JavaScript van ser el desig d'eliminar els errors conceptuals, admès a l'arquitectura Node.js i ofereix als usuaris un entorn més segur. Per millorar la seguretat, el motor V8 està escrit en Rust, la qual cosa evita moltes de les vulnerabilitats que sorgeixen de la manipulació de la memòria de baix nivell, com ara l'accés lliure posterior, les referències de punter nul·les i les excés de memòria intermèdia. La plataforma s'utilitza per processar sol·licituds en mode sense bloqueig Tòquio, escrit també en Rust. Tokio us permet crear aplicacions d'alt rendiment basades en l'arquitectura basada en esdeveniments, que admet múltiples fils i processa les sol·licituds de xarxa en mode asíncron.

El principal Característiques Deno:

  • Configuració predeterminada orientada a la seguretat. L'accés als fitxers, les xarxes i l'accés a les variables d'entorn estan desactivats per defecte i s'han d'habilitar explícitament. Les aplicacions s'executen de manera predeterminada en entorns sandbox aïllats i no poden accedir a les capacitats del sistema sense concedir permisos explícits;
  • Suport integrat per a TypeScript més enllà de JavaScript. El compilador TypeScript estàndard s'utilitza per comprovar els tipus i generar JavaScript, la qual cosa comporta un èxit de rendiment en comparació amb l'anàlisi de JavaScript a V8. En el futur, tenim previst preparar la nostra pròpia implementació del sistema de verificació de tipus TypeScript, que millorarà el rendiment del processament de TypeScript en un ordre de magnitud;
  • El temps d'execució es presenta en forma d'un únic fitxer executable autònom ("deno"). Per executar aplicacions amb Deno n'hi ha prou penjar per a la seva plataforma hi ha un fitxer executable, d'uns 20 MB de mida, que no té dependències externes i no requereix cap instal·lació especial al sistema. A més, deno no és una aplicació monolítica, sinó que és una col·lecció de paquets de caixes a Rust (deno_core, rusty_v8), que es pot utilitzar per separat;
  • En iniciar el programa, així com per carregar mòduls, podeu utilitzar l'adreça URL. Per exemple, per executar el programa welcome.js, podeu utilitzar l'ordre "deno https://deno.land/std/examples/welcome.js". El codi de recursos externs es descarrega i s'emmagatzema a la memòria cau al sistema local, però mai s'actualitza automàticament (l'actualització requereix l'execució explícita de l'aplicació amb el senyalador "--reload");
  • Processament eficient de sol·licituds de xarxa mitjançant HTTP a les aplicacions; la plataforma està dissenyada per crear aplicacions de xarxa d'alt rendiment;
  • La capacitat de crear aplicacions web universals que es poden executar tant a Deno com en un navegador web normal;
  • disponibilitat conjunt estàndard de mòduls, l'ús del qual no requereix vinculació a dependències externes. Els mòduls de la col·lecció estàndard s'han sotmès a una auditoria addicional i proves de compatibilitat;
  • A més del temps d'execució, la plataforma Deno també actua com a gestor de paquets i us permet accedir als mòduls per URL dins del codi. Per exemple, per carregar un mòdul, podeu especificar al codi "import * com a registre de "https://deno.land/std/log/mod.ts". Els fitxers descarregats des de servidors externs mitjançant l'URL s'emmagatzemen a la memòria cau. La vinculació a les versions del mòdul es determina especificant els números de versió dins de l'URL, per exemple, "https://unpkg.com/[protegit per correu electrònic]/dist/liltest.js";
  • L'estructura inclou un sistema integrat d'inspecció de dependències (l'ordre "deno info") i una utilitat per al format de codi (deno fmt);
  • Tots els scripts d'aplicació es poden combinar en un sol fitxer JavaScript.

Diferències amb Node.js:

  • Deno no utilitza el gestor de paquets npm
    i no està vinculat als dipòsits, els mòduls s'aborden mitjançant una URL o una ruta de fitxer, i els mòduls es poden col·locar a qualsevol lloc web;
  • Deno no utilitza "package.json" per definir mòduls;
  • Diferència de l'API, totes les accions asíncrones de Deno retornen una promesa;
  • Deno requereix una definició explícita de tots els permisos necessaris per a fitxers, variables de xarxa i d'entorn;
  • Tots els errors que no es proporcionen amb els controladors condueixen a la finalització de l'aplicació;
  • Deno utilitza el sistema de mòduls ECMAScript i no admet require();
  • El servidor HTTP integrat de Deno està escrit en TypeScript i s'executa a sobre dels sòcols TCP natius, mentre que el servidor HTTP Node.js està escrit en C i proporciona enllaços per a JavaScript. Els desenvolupadors de Deno s'han centrat a optimitzar tota la capa de socket TCP i proporcionar una interfície més general. Deno HTTP Server proporciona un rendiment més baix, però garanteix una baixa latència previsible. Per exemple, a la prova, una aplicació senzilla basada en el servidor HTTP Deno va poder processar 25 mil sol·licituds per segon amb una latència màxima d'1.3 mil·lisegons. A Node.js, una aplicació similar va processar 34 mil sol·licituds per segon, però les latències oscil·laven entre 2 i 300 mil·lisegons.
  • Deno no és compatible amb paquets per a Node.js (NPM), però s'està desenvolupant per separat intercapa per a la compatibilitat amb la biblioteca estàndard Node.js, a mesura que es desenvolupi, cada cop més aplicacions escrites per a Node.js es podran executar a Deno.
  • Font: opennet.ru

Afegeix comentari