L'autore di Node.js ha presentato la piattaforma JavaScript sicura Deno 1.0

Dopo due anni di sviluppo presentato первый значительный выпуск Deno 1.0, платформы для обособленного выполнения приложений на языках JavaScript и TypeScript, которая может быть использована для создания обработчиков, работающих на сервере. Платформу развивает Райан Даль (Ryan Dahl), создатель Node.js. Как и в Node.js в Deno используется JavaScript-движок V8, который также применяется в браузерах на основе Chromium. При этом Deno не является ответвлением от Node.js, а представляет собой созданный с нуля новый проект. Код проекта distribuito под лицензией MIT. Сборки preparati per Linux, Windows e macOS.

Значительный номер версии связан со стабилизацией API в пространстве имён Deno, которые отвечают за взаимодействие приложений с ОС. Программные интерфейсы, которые пока не стабилизированы, по умолчанию скрыты и доступны только при запуске в режиме «—unstable». По мере формирования новых версий подобные API постепенно будут переводиться в разряд стабильных. API в глобальном пространстве имён, включающий такие общие функции как setTimeout() и fetch(), по возможности приближен к API обычных web-браузеров и развивается в соответствии с Web-стандартами для браузеров. Предоставляемые Rust API, которые применяется непосредственно в коде платформы, а также интерфейс для разработки плагинов к Deno runtime, пока не стабилизированы и продолжают развиваться.

Ключевыми мотивами создания новой JavaScript-платформы стало желание устранить концептуальные ошибки, допущенные в архитектуре Node.js, и предоставить пользователям более защищённое окружение. Для повышения безопасности обвязка вокруг движка V8 написана на языке Rust, позволяющем избежать многих уязвимостей, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера. Для обработки запросов в неблокирующем режиме применяется платформа Tokio, scritto anche in linguaggio Rust. Tokio consente di creare applicazioni ad alte prestazioni basate su architettura orientata agli eventi, supportando il multithreading e la gestione delle richieste di rete in modo asincrono.

Principali caratteristiche Deno:

  • Orientamento alla sicurezza nella configurazione predefinita. Le richieste ai file, le capacità di rete e l'accesso alle variabili ambientali per impostazione predefinita sono bloccati e richiedono un'attivazione esplicita. Le applicazioni predefinite vengono eseguite in ambienti sandbox isolati e non possono accedere alle capacità di sistema senza concessione di autorizzazioni esplicite;
  • Встроенная поддержка языка TypeScript помимо JavaScript. Для проверки типов и генерации JavaScript задействован штатный компилятор TypeScript, что приводит к проседанию производительности по сравнению с разбором JavaScript в V8. В будущем планируется подготовить собственную реализацию системы проверки типов TypeScript, которая позволит на порядок поднять производительность обработки TypeScript;
  • Il runtime è fornito come un singolo file eseguibile autonomo («deno»). Per eseguire applicazioni utilizzando Deno è sufficiente scaricare для своей платформы один исполняемый файл, размером около 20 Мб, не имеющих внешних зависимостей и не требующий какой-то особой установки в систему. При этом deno не является монолитным приложением, а представляет собой коллекцию crate-пакетов на Rust (deno_core, rusty_v8), которые могут использоваться по отдельности;
  • All'avvio del programma e per il caricamento dei moduli è possibile utilizzare l'indirizzamento tramite URL. Ad esempio, per avviare il programma welcome.js, si può utilizzare il comando «deno https://deno.land/std/examples/welcome.js». Il codice da risorse esterne viene scaricato e memorizzato nella cache sul sistema locale, ma non viene mai aggiornato automaticamente (per aggiornare è necessario avviare esplicitamente l'applicazione con il flag «—reload»).
  • Gestione efficace delle richieste di rete HTTP nelle applicazioni; la piattaforma è progettata per creare applicazioni di rete ad alte prestazioni.
  • Possibilità di creare applicazioni web universali, che possono essere eseguite sia in Deno che in un normale browser web.
  • Disponibilità стандартного набора модулей, использование которых не требует привязки к внешним зависимостям. Модули из стандартной коллекции прошли дополнительный аудит и проверку на совместимость;
  • Oltre al runtime, la piattaforma Deno funge anche da gestore di pacchetti e consente di accedere ai moduli tramite URL nel codice. Ad esempio, per caricare un modulo si può specificare nel codice «import * as log from 'https://deno.land/std/log/mod.ts». I file caricati da server esterni tramite URL sono memorizzati nella cache. I vincoli alle versioni dei moduli sono definiti attraverso l'indicazione dei numeri di versione all'interno dell'URL, ad esempio «https://unpkg.com/liltest@0.0.5/dist/liltest.js».
  • Il sistema integra un ispezionatore delle dipendenze (comando «deno info») e un'utilità per la formattazione del codice (deno fmt);
  • Tutti gli script dell'applicazione possono essere uniti in un unico file JavaScript.

Differenze rispetto a Node.js:

  • Deno non utilizza il gestore di pacchetti npm
    e non si collega ai repository; gli indirizzi dei moduli sono gestiti tramite URL o percorsi di file, con i moduli che possono essere ospitati su qualsiasi sito;
  • In Deno non si utilizza il «package.json» per definire i moduli;
  • Differenze nell'API: tutte le operazioni asincrone in Deno restituiscono un promise;
  • Deno richiede una dichiarazione esplicita di tutti i permessi necessari per file, rete e variabili d'ambiente;
  • Tutti gli errori non gestiti portano alla terminazione dell'applicazione;
  • В Deno применяется система модулей ECMAScript и не поддерживается require();
  • Встроенный HTTP-сервер Deno написан на TypeScript и работает поверх нативных TCP-сокетов, а HTTP-сервер Node.js написан на Си и предоставляет привязки для JavaScript. Разработчики Deno сосредоточили усилия на оптимизации всего слоя TCP-сокетов и предоставление более общего интерфейса. HTTP-сервер Deno обеспечивает меньшую пропускную способность, но гарантирует предсказуемые низкие задержки. Например, в тесте простое приложение на базе Deno HTTP server смогло обработать 25 тысяч запросов в секунду с максимальной задержкой в 1.3 миллисекунд. В Node.js аналогичное приложение обработало 34 тысячи запросов в секунду, но задержки колебались от 2 и 300 миллисекунд.
  • Deno не совместим с пакетами для Node.js (NPM), но отдельно развивается strato intermedio для совместимости со стандартной библиотекой Node.js, по мере развития которой в Deno смогут запускаться всё больше приложений, написанных для Node.js.
  • Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster