Deno (программное обеспечение)

Deno
Логотип программы Deno
Тип Среда выполнения
Автор Райан Даль
Разработчик The Deno Company[1] and contributors
Написана на TypeScript, JavaScript, Rust, C++
Операционные системы Linux[4], macOS[4], Windows[4] и FreeBSD[5]
Первый выпуск 13 мая 2018[2]
Последняя версия
Репозиторий github.com/denoland/deno
Лицензия лицензия MIT[6]
Сайт deno.com (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Deno — программная платформа, среда выполнения для JavaScript и TypeScript, основанная на движке JavaScript V8 и написанная на языке программирования Rust. Проект Deno был создан Райаном Далем, создателем Node.js[7]. Deno совмещает функциональность среды выполнения и пакетного менеджера[8][9].

История

Проект Deno был анонсирован Райаном Далем в выступлении «10 вещей, о которых я сожалею в Node.js», которое прозвучало на JSConf EU 2018[10]. В этом выступлении Даль выразил сожаление по поводу ряда архитектурных решений, принятых им самим в Node.js[11]. В конце доклада он представил прототип Deno.

Первоначально Deno был написан на Go и использовал Protocol Buffers для обмена сообщениями между привилегированной частью движка (написанной на Go и имеющей доступ к вызову системных функций) и непривилегированной (средой выполнения JavaScript, основанной на V8)[12]. Однако вскоре Go был заменен на Rust из-за проблем, вызванных наличием двух сред выполнения в рамках одного процесса, каждая из которых использовала собственный сборщик мусора[13]. Библиотека libuv, реализующая асинхронную обработку событий, была заменена на Tokio[14], а также был проведен эксперимент с заменой технологии Protocol Buffers на Flat Buffers, который был признан неудачным из-за проблем с производительностью[15][16][17].

Стандартная библиотека по образцу стандартной библиотеки языка программирования Go, была представлена в ноябре 2018. Этот шаг был предпринят в попытке избежать проблемы, существовавшей в среде выполнения Node.js — из-за скудности стандартной библиотеки, использующим Node.js разработчикам приходится подключать к своим проектам внешние зависимости для решения базовых задач[18].

Официальная версия Deno 1.0 была выпущена 13 мая 2020 г[19].

29 марта 2021 года было объявлено о создании компании Deno. Проект получил финансовую поддержку от Shasta Ventures, Mozilla Corporation и некоторых других компаний. Компания была создана для обеспечения дальнейшего развития Deno, а также для разработки коммерческих решений на основе технологии.

Обзор

Целью Deno является создание эргономичной среды выполнения для современного программиста[8]. Подобно Node.js, Deno реализует событийно-ориентированную архитектуру, предоставляя набор неблокирующих методов управления вводом-выводом. Deno можно использовать для создания веб-серверов, выполнения научных вычислений и т. д.[20]

Сравнение с Node.js

Deno и Node.js — это среды выполнения, основанные на движке JavaScript V8, который используется в Google Chrome. Обе среды выполнения основаны на обработке цикла событий и предоставляют интерфейсы командной строки для запуска скриптов.

Основные отличия Deno от Node.js заключаются в следующем:[8]

  1. Deno использует стандарт ES Module вместо CommonJS.
  2. Deno использует URL-адреса для подключения локальных или удаленных внешних зависимостей.
  3. Deno имеет встроенный пакетный менеджер, то есть внешние решения подобные npm не требуются.
  4. Deno поддерживает TypeScript, используя встроенный компилятор TypeScript с механизмами кэширования.
  5. Deno уделяет особое внимание совместимости с браузерами на уровне исходного кода.
  6. Deno по умолчанию ограничивает доступ JavaScript-кода к файловой системе, сети и прочим системам.
  7. Deno реализует новое API Promises и других функций ES6 и TypeScript.
  8. Основное API Deno имеет небольшой размер, при этом рантайм предоставляет обширную стандартную библиотеку без внешних зависимостей.
  9. Deno использует каналы передачи сообщений для вызова привилегированных системных API.

Примечания

  1. Ryan Dahl, Bert Belder. Announcing the Deno Company  (неопр.) (29 марта 2021).
  2. https://github.com/denoland/deno/graphs/contributors (англ.) // (unknown type) — 2007.
  3. Release 1.43.6 — 2024.
  4. 1 2 3 https://deno.land/[email protected]/getting_started/installation
  5. https://www.freshports.org/www/deno
  6. https://github.com/denoland/deno/blob/master/LICENSE
  7. Deno: Secure V8 TypeScript Runtime from Original Node.js Creator  (неопр.). InfoQ. Дата обращения: 17 мая 2019. Архивировано 8 января 2020 года.
  8. 1 2 3 Deno Manual  (неопр.). deno.land. Дата обращения: 17 мая 2019. Архивировано 8 января 2020 года.
  9. Paul Krill. Ryan Dahl’s Node.js regrets lead to Deno  (неопр.). InfoWorld (21 июня 2018). Дата обращения: 26 апреля 2021. Архивировано 25 апреля 2020 года.
  10. JSConf (2018-06-06), 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU 2018, Архивировано 17 мая 2019, Дата обращения: 26 апреля 2021 Источник  (неопр.). Дата обращения: 26 апреля 2021. Архивировано 25 апреля 2020 года.
  11. Dahl. Design mistakes in Node  (неопр.). Github (6 июня 2018).
  12. denoland/deno, branch "golang"  (неопр.). Github.
  13. Suggestion: Look into porting to Rust and using Tokio  (неопр.). GitHub. Дата обращения: 26 апреля 2021. Архивировано 29 августа 2018 года.
  14. Tokio - The asynchronous run-time for the Rust programming language.  (неопр.) Tokio.rs. Дата обращения: 26 апреля 2021. Архивировано 20 мая 2020 года.
  15. Remove flatbuffers  (неопр.). GitHub. Дата обращения: 26 апреля 2021. Архивировано 26 ноября 2020 года.
  16. Protobuf seems like a lot of overhead for this use case?  (неопр.) Github. Дата обращения: 26 апреля 2021. Архивировано 8 декабря 2020 года.
  17. Replace flatbuffers  (неопр.). GitHub. Дата обращения: 26 апреля 2021. Архивировано 26 ноября 2020 года.
  18. denoland/deno_std: deno standard modules  (неопр.). Github. Дата обращения: 26 апреля 2021. Архивировано 15 июня 2020 года.
  19. Deno 1.0  (неопр.). deno.land. Дата обращения: 14 мая 2020. Архивировано 14 мая 2020 года.
  20. Deno Is Ready for Production (англ.). InfoQ. Дата обращения: 1 июля 2020. Архивировано 1 июля 2020 года.

Ссылки

  • deno.com (англ.) — официальный сайт Deno
  • Официальное руководство Deno
Перейти к шаблону «JavaScript»
Идеи
Компиляторы
Движки
Библиотеки
и фреймворки
Редакторы
Инструменты
Связанные
технологии
Люди
Категория Категория