Адбыўся рэліз JavaScript-платформы Deno 1.16, прызначанай для адасобленага выканання (без выкарыстання браўзэра) прыкладанняў, напісаных на мовах 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 МБ (у zip-архіве – 31 МБ) у выглядзе аднаго выкананага файла;
- У камплекце прапануецца сістэма дазволу залежнасцяў і фарматавання кода;
- Арыентаваць на высокапрадукцыйныя прыкладанні.
Dino апрацоўвае запыты ў неблакіруючым рэжыме з ужываннем платформы 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