Издан выпуск платформы Deno 2.0, предназначенной для изолированного выполнения серверных приложений на языках JavaScript и TypeScript с использованием движка V8, который применяется в браузерах на базе Chromium. Проект Deno разрабатывает Райан Даль, создатель Node.js, с целью предоставления более защищенной окружения и исправления концептуальных ошибок, допущенных в архитектуре Node.js. Для повышения безопасности обертка вокруг движка V8 написана на языке Rust, а для обработки запросов в неблокирующем режиме используется платформа Tokio. Код проекта распространяется под лицензией MIT. Сборки доступны для Linux, Windows и macOS.
При подготовке новой ветки основное внимание было уделено совместимости со старой инфраструктурой JavaScript и расширению спектра поддерживаемых JavaScript-проектов без ущерба для обеспечения безопасности. Среди изменений:
- Реализована обратная совместимость с Node.js и npm, позволяющая запускать немодифицированные приложения, созданные для Node.js. Поддержка Node.js также позволяет постепенно переносить существующие проекты с Node.js на использование Deno или подключать зависимости из NPM к Deno-проектам с помощью спецификатора «npm:» при импорте пакетов в deno.json.
- Добавлена встроенная поддержка файла package.json и каталога с модулями node_modules, используемых в Node.js.
- Обеспечена поддержка приватных NPM-репозиториев, определённых через файлы «.npmrc».
- Добавлена поддержка популярных JavaScript-фреймворков, таких как Next.js, Astro, Remix, Angular, SvelteKit и QwikCity.
- Добавлена поддержка рабочих пространств npm (workspace) и моно-репозиториев (monorepo) с отдельной обработкой зависимостей.
- Добавлены новые команды управления пакетами: «deno install» для установки зависимостей, «deno add» для добавления пакетов в package.json или deno.json, «deno remove» для удаления пакетов. Утверждается, что «deno install» работает примерно на 15% быстрее npm при отсутствии пакетов в кэше и на 90% быстрее при наличии пакета в кэше (поддерживается как node_modules, так и собственный глобальный кэш).
- Стабилизирована стандартная библиотека.
- Обеспечен долгосрочный цикл поддержки (LTS).
- Представлен JSR — репозиторий с JavaScript- и TypeScript-библиотеками, которые можно использовать в различных JavaScript Runtime.
- В команде «deno fmt» добавлена возможность форматирования контента в форматах HTML, CSS и YAML.
- Ekipo ‘deno lint’ je dodana podrška za pravila i popravke specifične za Node.js.
- U komandi ‘deno test’ je implementirana mogućnost pokretanja testova kreiranih pomoću node:test.
- U komandi ‘deno task’ je implementirana podrška za pokretanje skripti putem package.json.
- U komandi ‘deno compile’ je uvedena mogućnost digitalnog potpisivanja koda.
- U komandi ‘deno serve’ je implementirano paralelno izvršavanje operacija HTTP servera koristeći više CPU jezgri.
- U komandi ‘deno coverage’ je uvedena podrška za čuvanje izveštaja u HTML formatu.
- Izvedena je optimizacija zmogljivosti.

Glavne značilnosti Deno:
- Usmerjenost na varnost v privzeti konfiguraciji. Dostopi do datotek, mrežne možnosti in dostop do spremenljivk okolja so privzeto blokirani in zahtevajo izrecno omogočitev. Aplikacije se privzeto zaženejo v izoliranih sandbox okoljih in ne morejo dostopati do sistemskih možnosti brez izrecnega dovoljenja.
- Vgrajena podpora za jezik TypeScript poleg JavaScript. Za preverjanje tipov in generiranje JavaScript se uporablja vgrajeni prevajalnik TypeScript, kar povzroča upad zmogljivosti v primerjavi z razčlenitvijo JavaScript v V8.
- Runtime dolazi u obliku jedne samostalne izvršne datoteke (‘deno’). Za pokretanje aplikacija pomoću Deno potrebno je preuzeti jednu izvršnu datoteku za svoju platformu, veličine oko 40 MB, bez spoljnjih zavisnosti i bez potrebe za posebnom instalacijom u sistemu. Pritom, deno nije monolitna aplikacija, već predstavlja kolekciju crate paketa na Rustu (deno_core, rusty_v8) koji se mogu koristiti odvojeno;
- Pri zagonu programa in za nalaganje modulov je mogoče uporabiti naslovitev prek URL. Na primer, za zagon programa welcome.js lahko uporabite ukaz 'deno https://deno.land/std/examples/welcome.js'. Koda iz zunanjih virov se naloži in predpomni na lokalnem sistemu, nikoli pa se samodejno ne posodablja (za posodobitev je treba izrecno zagnati aplikacijo z zastavico '--reload').
- Učinkovita obdelava omrežnih zahtevkov prek HTTP, platforma je zasnovana za ustvarjanje visoko zmogljivih omrežnih aplikacij.
- Možnost ustvarjanja univerzalnih spletnih aplikacij, ki lahko delujejo tako v Deno kot v običajnem spletnih brskalnikih.
- Zagotavljanje standardnega nabora modulov, katerih uporaba ne zahteva vezave na zunanje odvisnosti. Moduli iz standardne zbirke so šli skozi dodatni pregled in preverjanje združljivosti.
- Poleg runtima igra platforma Deno tudi vlogo upravitelja paketov in omogoča dostop do modulov v kodi prek URL. Na primer, za nalaganje modula lahko v kodi navedete 'import * as log from "https://deno.land/std/log/mod.ts". Datoteke, naložene iz zunanjih strežnikov preko URL, se predpomnijo. Povezava na različice modulov se določi s številkami različic znotraj URL, na primer 'https://unpkg.com/liltest@0.0.5/dist/liltest.js'.
- Usmerenje ka korišćenju Web standarda, podrška za Promise, fetch i ECMAScript module.
- Kompatibilnost sa paketima hostovanim u NPM repozitorijumu i kreiranim za Node.js platformu.
- Vključuje sistem za pregled odvisnosti (ukaz „deno info“) in orodje za oblikovanje kode (deno fmt);
- Sve skripte aplikacije mogu biti objedinjene u jedan JavaScript fajl.
Izvor: opennet.ru

