O autor de Node.js presentou a plataforma segura JavaScript Deno 1.0

Despois de dous anos de desenvolvemento presentado primeiro gran lanzamento Dáme 1.0, unha plataforma para a execución autónoma de aplicacións en JavaScript e TypeScript, que se pode usar para crear controladores que se executan no servidor. A plataforma está desenvolvida por Ryan Dahl (Ryan Dahl), creador de Node.js. Do mesmo xeito que Node.js, Deno usa un motor JavaScript V8, que tamén se usa nos navegadores baseados en Chromium. Ao mesmo tempo, Deno non é unha bifurcación de Node.js, senón que é un proxecto novo creado desde cero. Código do proxecto distribuído por baixo licenza MIT. Asembleas preparado para Linux, Windows e macOS.

O número de versión significativo está asociado coa estabilización das API no espazo de nomes Deno, que son responsables da interacción das aplicacións co SO. Interfaces de software que teñen ata agora non estabilizado, están ocultos por defecto e só están dispoñibles cando se executan no modo "--unstable". A medida que se formen novas versións, estas API iranse establecindo gradualmente. A API do espazo de nomes global, que inclúe funcións comúns como setTimeout() e fetch(), achégase o máis posible á API dos navegadores web convencionais e desenvólvese de acordo cos estándares web para navegadores. As API proporcionadas por Rust, que se usan directamente no código da plataforma, así como a interface para desenvolver complementos para o tempo de execución de Deno, aínda non se estabilizaron e seguen desenvolvéndose.

Os motivos fundamentais para crear unha nova plataforma JavaScript foron o desexo de eliminar erros conceptuais, admitido na arquitectura Node.js e proporciona aos usuarios un ambiente máis seguro. Para mellorar a seguridade, o motor V8 está escrito en Rust, o que evita moitas das vulnerabilidades que se derivan da manipulación de memoria de baixo nivel, como o acceso libre posterior, as desreferencias de punteiro nulo e os excesos de memoria intermedia. A plataforma utilízase para procesar solicitudes en modo sen bloqueo Toquio, tamén escrito en Rust. Tokio permítelle crear aplicacións de alto rendemento baseadas na arquitectura impulsada por eventos, que admite multi-threading e procesa solicitudes de rede en modo asíncrono.

O principal Características Deno:

  • Configuración predeterminada orientada á seguridade. O acceso aos ficheiros, as redes e o acceso ás variables de ambiente están desactivados por defecto e deben estar activados de forma explícita. As aplicacións execútanse de forma predeterminada en ambientes sandbox illados e non poden acceder ás capacidades do sistema sen conceder permisos explícitos;
  • Soporte integrado para TypeScript máis aló de JavaScript. O compilador TypeScript estándar úsase para comprobar os tipos e xerar JavaScript, o que leva a un éxito de rendemento en comparación coa análise de JavaScript en V8. No futuro, pensamos preparar a nosa propia implementación do sistema de verificación de tipos TypeScript, que mellorará o rendemento do procesamento de TypeScript nunha orde de magnitude;
  • O tempo de execución vén en forma dun único ficheiro executable autónomo ("deno"). Para executar aplicacións usando Deno é suficiente descargar para a súa plataforma hai un ficheiro executable, duns 20 MB de tamaño, que non ten dependencias externas e non require ningunha instalación especial no sistema. Ademais, deno non é unha aplicación monolítica, senón que é unha colección de paquetes de caixas en Rust (deno_core, oxidado_v8), que se pode usar por separado;
  • Ao iniciar o programa, así como para cargar módulos, pode usar o enderezo URL. Por exemplo, para executar o programa welcome.js, pode usar o comando "deno https://deno.land/std/examples/welcome.js". O código de recursos externos descárgase e almacena en caché no sistema local, pero nunca se actualiza automaticamente (a actualización require executar explícitamente a aplicación coa marca "--reload");
  • Procesamento eficiente de solicitudes de rede mediante HTTP nas aplicacións; a plataforma está deseñada para crear aplicacións de rede de alto rendemento;
  • A capacidade de crear aplicacións web universais que se poden executar tanto en Deno como nun navegador web normal;
  • dispoñibilidade conxunto estándar de módulos, cuxo uso non require vinculación a dependencias externas. Os módulos da colección estándar foron sometidos a auditorías adicionais e probas de compatibilidade;
  • Ademais do tempo de execución, a plataforma Deno tamén actúa como xestor de paquetes e permite acceder aos módulos por URL dentro do código. Por exemplo, para cargar un módulo, pode especificar no código "import * como rexistro de "https://deno.land/std/log/mod.ts". Os ficheiros descargados de servidores externos mediante o URL almacénanse na memoria caché. A vinculación ás versións do módulo determínase especificando os números de versión dentro do URL, por exemplo, "https://unpkg.com/[protexido por correo electrónico]/dist/liltest.js";
  • A estrutura inclúe un sistema integrado de inspección de dependencias (o comando "deno info") e unha utilidade para o formato de código (deno fmt);
  • Todos os scripts de aplicación pódense combinar nun ficheiro JavaScript.

Diferenzas con Node.js:

  • Deno non usa o xestor de paquetes npm
    e non está ligado a repositorios, os módulos envíanse a través dunha URL ou por unha ruta de ficheiro, e os propios módulos pódense colocar en calquera sitio web;
  • Deno non usa "package.json" para definir módulos;
  • Diferenza da API, todas as accións asíncronas en Deno devolven unha promesa;
  • Deno require unha definición explícita de todos os permisos necesarios para os ficheiros, as variables de rede e de ambiente;
  • Todos os erros que non se proporcionan cos controladores levan á finalización da aplicación;
  • Deno usa o sistema de módulos ECMAScript e non admite require();
  • O servidor HTTP integrado de Deno está escrito en TypeScript e execútase enriba dos sockets TCP nativos, mentres que o servidor HTTP Node.js está escrito en C e ofrece enlaces para JavaScript. Os desenvolvedores de Deno centráronse en optimizar toda a capa de socket TCP e proporcionar unha interface máis xeral. Deno HTTP Server ofrece un menor rendemento pero garante unha baixa latencia previsible. Por exemplo, na proba, unha aplicación sinxela baseada no servidor HTTP Deno foi capaz de procesar 25 mil solicitudes por segundo cunha latencia máxima de 1.3 milisegundos. En Node.js, unha aplicación similar procesaba 34 mil solicitudes por segundo, pero as latencias oscilaban entre 2 e 300 milisegundos.
  • Deno non é compatible cos paquetes para Node.js (NPM), pero está a ser desenvolvido por separado capa intermedia para compatibilidade coa biblioteca estándar Node.js, a medida que se desenvolve, cada vez máis aplicacións escritas para Node.js poderán executarse en Deno.
  • Fonte: opennet.ru

Engadir un comentario