Пуснато е издание на платформата Deno 1.16 за JavaScript, предназначена за самостоятелно изпълнение (без ползване на браузър) на приложения, написани на JavaScript и TypeScript. Проектът се развива от автора на Node.js Райън Дал (Ryan Dahl). Кодът на платформата е написан на програмния език Rust и се разпространява под лицензия MIT. Готови версии са подготвени за Linux, Windows и macOS.
Проектът е подобен на платформата Node.js и, подобно на нея, използва JavaScript двигателя V8, но според автора на Node.js, коригира редица архитектурни недостатъци на предшественика си и се отличава с следните нюанси:
- Използването на Rust като основен език, което, според разработчиците, намалява риска от уязвимости, свързани с ниско ниво операции с паметта (препълване на буфера, use-after-free и др.);
- Deno не използва пакетния мениджър npm и package.json, предлагайки на потребителя инсталация на модули чрез указване на URL адрес или пътя до модула за инсталация. Въпреки това, проектът предлага няколко инструмента за опростяване на работата с външни модули;
- Приложенията се изпълняват самостоятелно в пясъчни среди и нямат достъп до мрежата, променливи на средата и файловата система, без явно позволение;
- В архитектурата е заложена възможността за създаване на универсални уеб приложения, които могат да работят както в системата Deno, така и в обикновен браузър;
- Използване на «ES Modules» и отсъствие на поддръжка за require();
- Всички необработени грешки на програмиста във уеб приложението водят до принудително прекратяване;
- Поддръжка на TypeScript в допълнение към JavaScript;
- Пълният размер на готовата платформа е 84 MB (в zip архив — 31 MB) под формата на един изпълняем файл;
- Включена е система за разрешаване на зависимости и форматиране на кода;
- Ориентирана към високо производителни приложения.
Deno обработва заявките в неблокиращ режим с използване на платформата Tokio, предназначена за създаване на високо производителни приложения на базата на събитийна (event-driven) архитектура. Също така е интересно, че вграденият HTTP сървър на Deno е реализиран на TypeScript на базата на нативни TCP сокети, което положително се отразява на производителността на мрежовите операции.
В новата версия се отбелязват:
- Оптимизация на производителността (4 поправки);
- Поправка на над 15 грешки, като например, сега TLS-клиентът поддържа HTTP/2, подсистемата за кодиране поддържа допълнителни етикети за кодиране и др.;
- Над двайсет нововъведения, сред които можем да отбележим стабилизацията на предишните тестови подсистеми Deno.startTls и Deno.TestDefinition.permissions, актуализация на движка JS V8 до версия 9.7 и поддръжка на преобразуванията на React 17 JSX.
Източник: opennet.ru
