El proyecto Deno está desarrollando una plataforma JavaScript segura similar a Node.js

Disponible lanzamiento del proyecto Deno 0.33, que ofrece una plataforma similar a Node.js para la ejecución de aplicaciones independientes en JavaScript y TypeScript que se puede usar para ejecutar aplicaciones sin estar vinculadas a un navegador, como la creación de controladores que se ejecutan en el servidor. Deno utiliza un motor JavaScript V8, que también se utiliza en Node.js y navegadores basados ​​en el proyecto Chromium. Código de proyecto distribuido por bajo licencia MIT. El proyecto está siendo desarrollado por Ryan Dahl (ryan dahl), creador de la plataforma JavaScript Node.js.

Uno de los principales objetivos de la creación de un nuevo tiempo de ejecución para JavaScript es proporcionar un entorno más seguro. Para mejorar la seguridad, el motor V8 está escrito en Rust, lo que evita muchas de las vulnerabilidades que surgen de la manipulación de la memoria de bajo nivel, como el acceso posterior, desreferencias de puntero nulo y desbordamientos del búfer. La plataforma se utiliza para procesar solicitudes en modo sin bloqueo. Tokio, también escrito en Rust. Tokio le permite crear aplicaciones de alto rendimiento basadas en una arquitectura basada en eventos, que admite subprocesos múltiples y procesa solicitudes de red en modo asíncrono.

El principal Características Deno:

  • Configuración predeterminada orientada a la seguridad. El acceso a archivos, las redes y el acceso a variables de entorno están deshabilitados de forma predeterminada y deben habilitarse explícitamente;
  • Soporte integrado para el lenguaje TypeScript además de JavaScript;
  • El tiempo de ejecución se presenta en forma de un único archivo ejecutable autónomo (“deno”). Para ejecutar aplicaciones usando Deno es suficiente descargar para su plataforma un archivo ejecutable, de unos 10 MB de tamaño, que no tiene dependencias externas y no requiere ninguna instalación especial en el sistema;
  • Al iniciar el programa, además de cargar módulos, puede utilizar el direccionamiento URL. Por ejemplo, para ejecutar el programa bienvenido.js, puede utilizar el comando "deno https://deno.land/std/examples/welcome.js". El código de recursos externos se descarga y almacena en caché en el sistema local, pero nunca se actualiza automáticamente (la actualización requiere ejecutar explícitamente la aplicación con el indicador "--reload");
  • Procesamiento eficiente de solicitudes de red a través de HTTP en aplicaciones; la plataforma está diseñada para crear aplicaciones de red de alto rendimiento;
  • La capacidad de crear aplicaciones web universales que se pueden ejecutar tanto en Deno como en un navegador web normal;
  • Además del tiempo de ejecución, la plataforma Deno también actúa como administrador de paquetes y le permite acceder a los módulos mediante URL dentro del código. Por ejemplo, para cargar un módulo, puede especificar en el código “importar * como registro desde “https://deno.land/std/log/mod.ts”. Los archivos descargados desde servidores externos a través de URL se almacenan en caché. El enlace a las versiones del módulo se determina especificando los números de versión dentro de la URL, por ejemplo, “https://unpkg.com/[email protected]/dist/liltest.js";
  • La estructura incluye un sistema integrado de inspección de dependencias (el comando “deno info”) y una utilidad para formatear código (deno fmt).
  • Para desarrolladores de aplicaciones sugirió un conjunto de módulos estándar que se han sometido a pruebas adicionales de auditoría y compatibilidad;
  • Todos los scripts de la aplicación se pueden combinar en un archivo JavaScript.

Diferencias con Node.js:

  • Deno no usa el administrador de paquetes npm
    y no está vinculado a repositorios, los módulos se acceden a través de una URL o mediante una ruta de archivo, y los módulos mismos se pueden colocar en cualquier sitio web;

  • Deno no usa "package.json" para definir módulos;
  • Diferencia de API, todas las acciones asincrónicas en Deno devuelven una promesa;
  • Deno requiere una definición explícita de todos los permisos necesarios para archivos, red y variables de entorno;
  • Todos los errores que no se proporcionan con los controladores provocan la finalización de la aplicación;
  • Deno utiliza el sistema de módulos ECMAScript y no admite require().

Fuente: opennet.ru

Añadir un comentario