stringtranslate.com

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

Deno / d n / [5] — это среда выполнения для JavaScript , TypeScript и WebAssembly , основанная на движке JavaScript V8 и языке программирования Rust . Соавтором Deno был Райан Дал , который также создал Node.js. [6]

Deno явно берет на себя роль среды выполнения и менеджера пакетов в одном исполняемом файле , вместо того, чтобы требовать отдельной программы управления пакетами . [5] [7]

История

Deno был анонсирован на JSConf EU 2018 Райаном Далем в его выступлении «10 вещей, о которых я сожалею о Node.js». [8] В своем выступлении Даль упомянул о своих сожалениях по поводу первоначальных проектных решений с использованием Node.js, сосредоточив внимание на своем решении не использовать обещания при проектировании API , использовании устаревшей системы сборки GYP , node_modules и package.json, оставив без файла файл . расширения, волшебное разрешение модулей с помощью index.js и выход из изолированной среды V8. [9] В конце концов он представил прототип Deno, стремясь добиться привязки системных вызовов посредством передачи сообщений с помощью инструментов сериализации, таких как протокольные буферы , и предоставить флаги командной строки для контроля доступа .

Изначально Deno был написан на Go и использовал буферы протоколов для сериализации между привилегированной (Go, с доступом к системным вызовам) и непривилегированной (V8) сторонами. [10] Однако вскоре Go был заменен на Rust из-за опасений, связанных с двойным временем выполнения и необходимостью сборки мусора . [11] Tokio была представлена ​​вместо libuv как асинхронная платформа, управляемая событиями, [12] и FlatBuffers был принят для более быстрой сериализации и десериализации с «нулевым копированием» [13] , но позже, в августе 2019 года, FlatBuffers был удален [14] ] после публикации тестов, которые измеряли значительные накладные расходы на сериализацию в апреле 2019 года. [15]

Стандартная библиотека, созданная по образцу стандартной библиотеки Go, была создана в ноябре 2018 года и предоставляет обширные инструменты и утилиты, частично решая проблему взрыва дерева зависимостей Node.js. [16]

Официальный Deno 1.0 был выпущен 13 мая 2020 года. [17]

Deno Deploy, вдохновленный Cloudflare Workers, [18] был выпущен 23 июня 2021 года . [19] Анонсировано 4 мая 2022 года. В бета-версии 4 улучшена панель мониторинга и добавлены функции выставления счетов. Публичная доступность Deno Deploy ожидается в третьем квартале 2022 года. [20]

Deno Fresh 1.0 был анонсирован 28 июня 2022 года. [21] Он включает в себя новую полнофункциональную веб-инфраструктуру для Deno, которая не отправляет клиенту нулевой JavaScript. В инфраструктуре нет этапа сборки, что позволяет на порядок сократить время развертывания. Версия 1.1 вышла 8 сентября 2022 года. [22]

Бета-версия Deno SaaSKit была анонсирована 4 апреля 2023 года. [23] Это современный SaaS-шаблон с открытым исходным кодом, созданный с помощью Fresh и Deno.

Обзор

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

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

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

Deno в основном отличается от Node.js в следующих аспектах: [5]

  1. Поддерживает только модули ES, такие как браузеры, где Node.js поддерживает как модули ES, так и CommonJS . Поддержка CommonJS в Deno возможна за счет использования уровня совместимости. [25] [26]
  2. Поддерживает URL-адреса для загрузки локальных или удаленных зависимостей, аналогично браузерам , и использует спецификаторы модулей, такие как npm:и, node:для импорта модулей NPM или Polyfill Node.JS. Node.js поддерживает как URL-адреса [27], так и модули.
  3. Для получения ресурсов не требуется менеджер пакетов, поэтому нет необходимости в реестре, таком как npm . [28]
  4. Поддерживает TypeScript «из коробки» [29] с использованием моментального компилятора TypeScript или компилятора swc [30] с механизмами кэширования.
  5. Направлен на лучшую совместимость с браузерами с широким спектром веб-API.
  6. По умолчанию ограничивает доступ к файловой системе и сети для запуска изолированного кода.
  7. Поддерживает единый API для использования обещаний, функций ES6 и TypeScript, тогда как Node.js поддерживает API обещаний и обратных вызовов.
  8. Минимизирует размер ядра API, предоставляя при этом большую стандартную библиотеку без внешних зависимостей.
  9. Использует каналы передачи сообщений для вызова привилегированных системных API и использования привязок.

Финансирование

29 марта 2021 года было объявлено о создании Deno Land Inc при поддержке в миллионы долларов со стороны Shasta Ventures , Mozilla Corporation и некоторых других. Он был создан для дальнейшего развития Deno и предоставления коммерческих предложений пользователям. [1]

Год спустя Deno объявила о дополнительном финансировании серии А на сумму 21 миллион долларов под руководством Sequoia Capital . [31]

История выпусков

Таблицы ниже были созданы с использованием официальной страницы релизов. [32]

Дено


Дено Фреш

Дено СаасКит

Примеры

Базовый Привет, Мир! программа в Дено:

консоль . log ( "Привет, Мир!" );

Глобальные Denoпространства имен предоставляют API, недоступные в браузере. Реализация программы Unix cat : [1]

/** * cat.ts */ for ( const имя файла Deno . args ) { const file = await Deno . открыть ( имя файла ); жду файл . удобочитаемый . PipeTo ( Deno . stdout . writable , { preventClose : true }); }                

Простой веб-сервер : [2]

Дено . служить (( req ) => новый ответ ( «привет, мир» ));   

Deno автоматически загружает и кэширует файлы удаленной стандартной библиотеки при запуске сценария, а затем компилирует код.

Аналогично, он может запускать стандартный библиотечный сценарий (например, файловый сервер ) напрямую, без явной загрузки, указав URL-адрес в качестве имени входного файла ( -Aвключает все разрешения):

$ deno  run  -A  https://deno.land/std/http/file_server.ts Скачать https://deno.land/std/http/file_server.ts Компилировать https://deno.land/std/http/file_server .ts ... HTTP-сервер прослушивает http://0.0.0.0:4500/

Рекомендации

  1. ^ аб Райан Даль, Берт Белдер (29 марта 2021 г.). «Анонс компании Deno».
  2. ^ «Соавторы, denoland/deno, Github». Гитхаб . Проверено 5 июля 2019 г.
  3. ^ «Выпуск 1.40.5» . 15 февраля 2024 г. Проверено 19 февраля 2024 г.
  4. ^ "deno/LICENSE в основном" . Гитхаб . Проверено 5 июля 2019 г.
  5. ^ abcd "Руководство Deno". deno.com . Проверено 17 мая 2019 г.
  6. Шиманн, Дилан (26 декабря 2018 г.). «Deno: безопасная среда выполнения TypeScript V8 от оригинального создателя Node.js». ИнфоQ . Архивировано из оригинала 17 мая 2019 года . Проверено 17 мая 2019 г.
  7. ^ Пол Крилл (21 июня 2018 г.). «Сожаления Райана Даля о Node.js привели к Deno» . Инфомир .
  8. ^ JSConf (06.06.2018), 10 вещей, о которых я сожалею о Node.js - Райан Даль - JSConf EU 2018 , получено 17 мая 2019 г.
  9. ^ Даль, Райан (6 июня 2018 г.). «Ошибки проектирования в Node» (PDF) . Гитхаб .
  10. ^ "деноланд/дено, ветка "голанг"" . Гитхаб .
  11. ^ «Предложение: рассмотреть возможность портирования на Rust и использования Tokio». Гитхаб .
  12. ^ «Tokio — асинхронная среда выполнения языка программирования Rust» . Токио.рс .
  13. ^ «Кажется, Protobuf требует больших затрат для этого варианта использования?». Гитхаб .
  14. ^ «Удалить плоские буферы». Гитхаб .
  15. ^ «Заменить плоские буферы» . Гитхаб . 15 апреля 2019 года . Проверено 11 июля 2019 г.
  16. ^ «denoland/deno_std: стандартные модули deno» . Гитхаб . 3 марта 2022 г.
  17. ^ "Дено 1.0" . deno.com . Проверено 14 мая 2020 г.
  18. Даль, Райан (4 мая 2022 г.). «Контейнеры JavaScript». tinyclouds.org . Архивировано из оригинала 4 мая 2022 года.
  19. ^ Криль, Пол (24 июня 2021 г.). «Компания Deno представляет услугу серверного хостинга JavaScript» . Инфомир . Архивировано из оригинала 27 июня 2022 года . Проверено 14 апреля 2022 г.
  20. ^ Криль, Пол (3 июня 2022 г.). «Deno Deploy переходит к общедоступной версии, добавляет платный план». Инфомир . Проверено 24 июля 2022 г.
  21. ^ Лука, Казонато (22 июля 2022 г.). «Введение Fresh 1.0 как новой полнофункциональной веб-инфраструктуры для Deno». Блог Дено . Проверено 24 июля 2022 г.
  22. ^ Казонато, Лука (08 сентября 2022 г.). «Свежая версия 1.1 — автоматический JSX, плагины, DevTools и многое другое». Блог Дено . Проверено 10 сентября 2022 г.
  23. ^ Цзян, Энди (04 апреля 2023 г.). «Анонс Deno SaaSKit: шаблон SaaS с открытым исходным кодом, созданный с помощью Fresh». Блог Дено . Проверено 4 апреля 2022 г.
  24. ^ «Deno готов к производству» . ИнфоQ . Проверено 1 июля 2020 г.
  25. ^ «Модули: модули ECMAScript | Документация Node.js v17.6.0» .
  26. ^ «Deno — современная среда выполнения JavaScript и TypeScript» .
  27. ^ «Модули: модули ECMAScript | Документация Node.js v17.6.0» .
  28. ^ «Deno — современная среда выполнения JavaScript и TypeScript» .
  29. ^ «Deno.js в производстве. Ключевые выводы» . Medium.com . Проверено 16 мая 2022 г.
  30. ^ «Документация». Гитхаб . 3 марта 2022 г.
  31. ^ «Дено собирает 21 миллион долларов» . deno.com . Архивировано из оригинала 22 июня 2022 года.
  32. ^ «Релизы». Гитхаб . 2020-12-30 . Проверено 14 января 2021 г.

Внешние ссылки