Deno (программное обеспечение)
Deno | |
---|---|
Тип | Среда выполнения |
Автор | Райан Даль |
Разработчик | The Deno Company[1] and contributors |
Написана на | TypeScript, JavaScript, Rust, C++ |
Операционная система | Linux, macOS, Microsoft Windows |
Первый выпуск | 13 мая 2018[2] |
Лицензия | MIT License[3][4] |
Deno — программная платформа, среда выполнения для JavaScript и TypeScript, основанная на движке JavaScript V8 и написанная на языке программирования Rust. Проект Deno был создан Райаном Далем, создателем Node.js. [5] Deno совмещает функциональность среды выполнения и пакетного менеджера. [6] [7]
История
Проект Deno был анонсирован Райаном Далем в выступлении «10 вещей, о которых я сожалею в Node.js», которое прозвучало на JSConf EU 2018. [8] В этом выступлении Даль выразил сожаление по поводу ряда архитектурных решений, принятых им самим в Node.js. [9] В конце доклада он представил прототип Deno.
Первоначально Deno был написан на Go и использовал Protocol Buffers для обмена сообщениями между привилегированной частью движка (написанной на Go и имеющей доступ к вызову системных функций) и непривилегированной (средой выполнения JavaScript, основанной на V8). [10] Однако вскоре Go был заменен на Rust из-за проблем, вызванных наличием двух сред выполнения в рамках одного процесса, каждая из которых использовала собственный сборщик мусора . [11] Библиотека libuv, реализующая асинхронную обработку событий, была заменена на Tokio, [12] а также был проведен эксперимент с заменой технологии Protocol Buffers на Flat Buffers, который был признан неудачным из-за проблем с производительностью. [13][14][15]
Стандартная библиотека по образцу стандартной библиотеки языка программирования Go, была представлена в ноябре 2018. Этот шаг был предпринят в попытке избежать проблемы, существовавшей в среде выполнения Node.js – из-за скудности стандартной библиотеки, использующим Node.js разработчикам приходится подключать к своим проектам внешние зависимости для решения базовых задач. [16]
Официальная версия Deno 1.0 была выпущена 13 мая 2020 г. [17]
29 марта 2021 года было объявлено о создании компании Deno. Проект получил финансовую поддержку от Shasta Ventures, Mozilla Corporation и некоторых других компаний. Компания была создана для обеспечения дальнейшего развития Deno, а также для разработки коммерческих решений на основе технологии.
Обзор
Целью Deno является создание эргономичной среды выполнения для современного программиста. [18] Подобно Node.js, Deno реализует событийно-ориентированную архитектуру, предоставляя набор неблокирующих методов управления вводом-выводом. Deno можно использовать для создания веб-серверов, выполнения научных вычислений и т. д. [19]
Сравнение с Node.js
Deno и Node.js – это среды выполнения, основанные на движке JavaScript V8 , который используется в Google Chrome . Обе среды выполнения основаны на обработке цикла событий и предоставляют интерфейсы командной строки для запуска скриптов.
Основные отличия Deno от Node.js заключаются в следующем: [18]
- Deno использует стандарт ES Module вместо CommonJS.
- Deno использует URL-адреса для подключения локальных или удаленных внешних зависимостей.
- Deno имеет встроенный пакетный менеджер, т.е. внешние решения подобные npm не требуются.
- Deno поддерживает TypeScript, используя встроенный компилятор TypeScript с механизмами кэширования.
- Deno уделяет особое внимание совместимости с браузерами на уровне исходного кода.
- Deno по умолчанию ограничивает доступ JavaScript-кода к файловой системе, сети и прочим системам.
- Deno реализует новое API Promises и других функций ES6 и TypeScript.
- Основное API Deno имеет небольшой размер, при этом рантайм предоставляет обширную стандартную библиотеку без внешних зависимостей.
- Deno использует каналы передачи сообщений для вызова привилегированных системных API.
Примечания
- ↑ Ryan Dahl, Bert Belder. Announcing the Deno Company (29 марта 2021).
- ↑ Contributors, denoland/deno, Github . Дата обращения: 5 июля 2019. Архивировано 30 мая 2019 года.
- ↑ deno/LICENSE at main . GitHub. Дата обращения: 5 июля 2019.
- ↑ The MIT License . Open Source Initiative (17 September 2018). Дата обращения: 17 сентября 2018. Архивировано 9 мая 2020 года.
- ↑ Deno: Secure V8 TypeScript Runtime from Original Node.js Creator . InfoQ. Дата обращения: 17 мая 2019. Архивировано 8 января 2020 года.
- ↑ Deno Manual . deno.land. Дата обращения: 17 мая 2019. Архивировано 8 января 2020 года.
- ↑ Paul Krill. Ryan Dahl’s Node.js regrets lead to Deno . InfoWorld (21 июня 2018). Дата обращения: 26 апреля 2021. Архивировано 25 апреля 2020 года.
- ↑ JSConf (2018-06-06), 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU 2018, <https://www.youtube.com/watch?v=M3BM9TB-8yA> Архивная копия от 25 апреля 2020 на Wayback Machine
- ↑ Dahl. Design mistakes in Node . Github (6 июня 2018).
- ↑ denoland/deno, branch "golang" . Github.
- ↑ Suggestion: Look into porting to Rust and using Tokio . GitHub. Дата обращения: 26 апреля 2021. Архивировано 29 августа 2018 года.
- ↑ Tokio - The asynchronous run-time for the Rust programming language. . Tokio.rs. Дата обращения: 26 апреля 2021. Архивировано 20 мая 2020 года.
- ↑ Remove flatbuffers . GitHub. Дата обращения: 26 апреля 2021. Архивировано 26 ноября 2020 года.
- ↑ Protobuf seems like a lot of overhead for this use case? . Github. Дата обращения: 26 апреля 2021. Архивировано 8 декабря 2020 года.
- ↑ Replace flatbuffers . GitHub. Дата обращения: 26 апреля 2021. Архивировано 26 ноября 2020 года.
- ↑ denoland/deno_std: deno standard modules . Github. Дата обращения: 26 апреля 2021. Архивировано 15 июня 2020 года.
- ↑ Deno 1.0 . deno.land. Дата обращения: 14 мая 2020. Архивировано 14 мая 2020 года.
- ↑ 18,0 18,1 Deno Manual . deno.land. Дата обращения: 17 мая 2019. Архивировано 8 января 2020 года."Deno Manual" Архивная копия от 8 января 2020 на Wayback Machine. deno.land.
- ↑ Deno Is Ready for Production (англ.). InfoQ. Дата обращения: 1 июля 2020. Архивировано 1 июля 2020 года.
Ссылки
- deno.land — официальный сайт Deno
- Официальное руководство Deno