Node.js Author представя сигурна JavaScript платформа Deno 1.0

След две години разработка представени първо голямо издание Дено 1.0, платформа за самостоятелно изпълнение на приложения в JavaScript и TypeScript, която може да се използва за създаване на манипулатори, които се изпълняват на сървъра. Платформата е разработена от Райън Дал (Райън Дал), създател на Node.js. Подобно на Node.js, Deno използва JavaScript двигател V8, който се използва и в базирани на Chromium браузъри. В същото време Deno не е разклонение на Node.js, а е нов проект, създаден от нулата. Код на проекта разпространява се от под лиценз на MIT. Събрания подготвени за Linux, Windows и macOS.

Значителният номер на версията е свързан със стабилизирането на API в пространството от имена на Deno, които отговарят за взаимодействието на приложенията с ОС. Софтуерни интерфейси, които досега не е стабилизиран, са скрити по подразбиране и са достъпни само когато работят в режим „--unstable“. Тъй като се формират нови версии, такива API постепенно ще станат стабилни. API в глобалното пространство от имена, което включва общи функции като setTimeout() и fetch(), е възможно най-близо до API на конвенционалните уеб браузъри и е разработено в съответствие с уеб стандартите за браузъри. API-тата, предоставени от Rust, които се използват директно в кода на платформата, както и интерфейсът за разработване на плъгини за Deno runtime, все още не са стабилизирани и продължават да се развиват.

Основните мотиви за създаването на нова JavaScript платформа бяха желанието да се премахнат концептуалните грешки, допуснати в архитектурата Node.js и предоставят на потребителите по-сигурна среда. За да се подобри сигурността, V8 енджинът е написан на Rust, което избягва много от уязвимостите, които възникват от манипулиране на паметта на ниско ниво, като следосвободен достъп, дерефериране на нулев указател и препълване на буфера. Платформата се използва за обработка на заявки в неблокиращ режим Токио, също написан на Rust. Tokio ви позволява да създавате високопроизводителни приложения, базирани на управлявана от събития архитектура, поддържаща многопоточност и обработка на мрежови заявки в асинхронен режим.

Основната Удобства Дено:

  • Конфигурация по подразбиране, ориентирана към сигурността. Достъпът до файлове, работата в мрежа и достъпът до променливите на средата са деактивирани по подразбиране и трябва да бъдат изрично разрешени. Приложенията по подразбиране работят в изолирани пясъчни среди и нямат достъп до системните възможности без предоставяне на изрични разрешения;
  • Вградена поддръжка за TypeScript извън JavaScript. Стандартният компилатор на TypeScript се използва за проверка на типове и генериране на JavaScript, което води до постигане на по-добра производителност в сравнение с анализа на JavaScript във V8. В бъдеще планираме да подготвим собствена реализация на системата за проверка на типа TypeScript, която ще подобри производителността на обработката на TypeScript с порядък;
  • Времето за изпълнение идва под формата на единичен самостоятелен изпълним файл („deno“). Достатъчно е да стартирате приложения с Deno изтегляне за своята платформа има един изпълним файл с размер около 20 MB, който няма външни зависимости и не изисква специална инсталация в системата. Нещо повече, deno не е монолитно приложение, а е колекция от пакети за каси в Rust (deno_core, rusty_v8), които могат да се използват отделно;
  • При стартиране на програмата, както и за зареждане на модули, можете да използвате URL адресиране. Например, за да стартирате програмата welcome.js, можете да използвате командата „deno https://deno.land/std/examples/welcome.js“. Кодът от външни ресурси се изтегля и кешира в локалната система, но никога не се актуализира автоматично (актуализацията изисква изрично стартиране на приложението с флага „--reload“);
  • Ефективна обработка на мрежови заявки чрез HTTP в приложения, платформата е предназначена за създаване на високопроизводителни мрежови приложения;
  • Възможност за създаване на универсални уеб приложения, които могат да се изпълняват както в Deno, така и в обикновен уеб браузър;
  • наличност стандартен набор от модули, чието използване не изисква обвързване с външни зависимости. Модулите от стандартната колекция са преминали допълнителен одит и тестове за съвместимост;
  • В допълнение към времето за изпълнение, платформата Deno действа и като мениджър на пакети и ви позволява да осъществявате достъп до модули чрез URL вътре в кода. Например, за да заредите модул, можете да посочите в кода „импортиране * като журнал от „https://deno.land/std/log/mod.ts“. Файловете, изтеглени от външни сървъри чрез URL, се кешират. Свързването към версиите на модула се определя чрез посочване на номера на версията вътре в URL адреса, например „https://unpkg.com/[имейл защитен]/dist/liltest.js";
  • Структурата включва интегрирана система за проверка на зависимости (команда „deno info“) и помощна програма за форматиране на код (deno fmt);
  • Всички скриптове на приложения могат да бъдат комбинирани в един JavaScript файл.

Разлики от Node.js:

  • Deno не използва мениджър на пакети npm
    и не е обвързано с хранилища, модулите се адресират чрез URL или чрез път към файл, а самите модули могат да бъдат поставени на всеки уебсайт;
  • Deno не използва "package.json" за дефиниране на модули;
  • API разлика, всички асинхронни действия в Deno връщат обещание;
  • Deno изисква изрично дефиниране на всички необходими разрешения за файлове, мрежови и променливи на средата;
  • Всички грешки, които не са снабдени с манипулатори, водят до прекратяване на приложението;
  • Deno използва модулната система ECMAScript и не поддържа require();
  • Вграденият HTTP сървър на Deno е написан на TypeScript и работи върху естествени TCP сокети, докато HTTP сървърът на Node.js е написан на C и предоставя обвързвания за JavaScript. Разработчиците на Deno са се съсредоточили върху оптимизирането на целия слой TCP сокет и предоставянето на по-общ интерфейс. Deno HTTP сървърът осигурява по-ниска пропускателна способност, но гарантира предвидимо ниско забавяне. Например, в теста, просто приложение, базирано на Deno HTTP сървър, успя да обработи 25 хиляди заявки в секунда с максимална латентност от 1.3 милисекунди. В Node.js подобно приложение обработваше 34 хиляди заявки в секунда, но закъсненията варираха от 2 до 300 милисекунди.
  • Deno не е съвместим с пакети за Node.js (NPM), но се разработва отделно междинен слой за съвместимост със стандартната библиотека Node.js, тъй като се развива, все повече приложения, написани за Node.js, ще могат да работят в Deno.
  • Източник: opennet.ru

Добавяне на нов коментар