Оригинальный автор(ы) | Райан Даль |
---|---|
Разработчик(и) | Deno Land Inc [1] и участники |
Первоначальный выпуск | 13 мая 2018 г. ( 2018-05-13 ) | [2]
Стабильный релиз | 2.0.0 [3] / 9 октября 2024 г. ( 9 октября 2024 г. ) |
Репозиторий | github.com/denoland/deno |
Написано в | TypeScript , JavaScript , Rust , C++ (привязки V8) |
Операционная система | Linux , macOS , Microsoft Windows |
Тип | Среда выполнения |
Лицензия | Лицензия Массачусетского технологического института [4] |
Веб-сайт | deno.com |
Deno ( / d iː n oʊ / [5] ) — это среда выполнения для JavaScript , TypeScript и WebAssembly , основанная на движке V8 JavaScript и языке программирования 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, стремясь достичь привязки системных вызовов через передачу сообщений с помощью инструментов сериализации, таких как Protocol Buffers , и предоставить флаги командной строки для управления доступом .
Deno изначально был написан на Go и использовал Protocol Buffers для сериализации между привилегированной (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 улучшила панель управления и добавила функциональность выставления счетов. [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]
Deno и Node.js — это среды выполнения, построенные на движке JavaScript V8, разработанном Chromium Project, движке, используемом для веб-браузеров Chromium и Google Chrome . Они оба имеют внутренние циклы событий и предоставляют интерфейсы командной строки для запуска скриптов и широкого спектра системных утилит.
Deno в основном отличается от Node.js в следующих аспектах: [5]
npm:
и node:
для импорта модулей NPM или полифилла Node.JS. Node.js поддерживает как URL-адреса [27] , так и модули.29 марта 2021 года была анонсирована компания Deno Land Inc, получившая поддержку в миллионы долларов от Shasta Ventures , Mozilla Corporation и нескольких других. Она была создана для дальнейшей разработки Deno и предоставления коммерческого предложения пользователям. [1]
Год спустя Deno объявила о дополнительном финансировании серии A в размере 21 миллиона долларов США под руководством Sequoia Capital . [31]
Таблицы ниже были созданы с использованием официальной страницы релизов. [32]
Версия | Последний релиз патча | Дата выпуска | Дата выпуска последнего патча | Описание |
---|---|---|---|---|
Старая версия, больше не поддерживается:0.1.0 | Старая версия, больше не поддерживается:0.1.12 | 2018-08-23 | 2018-11-12 | Переписывание Rust и снимок V8 |
Старая версия, больше не поддерживается:0.2.0 | Старая версия, больше не поддерживается:0.2.11 | 2018-11-27 | 2019-02-08 | Умеренно пригодный к использованию |
Старая версия, больше не поддерживается:0.3.0 | Старая версия, больше не поддерживается:0.3.10 | 2019-02-18 | 2019-04-25 | Вместо импорта модуля «deno» теперь есть глобальная переменная с именем «Deno». |
Старая версия, больше не поддерживается:1.0.0 | Старая версия, больше не поддерживается:1.0.5 | 2020-05-13 | 2020-06-03 | Первоначальный выпуск продукции с CLI, первоклассной поддержкой TypeScript, API Rust и улучшениями производительности HTTP-сервера |
Старая версия, больше не поддерживается:1.1.0 | Старая версия, больше не поддерживается:1.1.3 | 2020-06-12 | 2020-07-03 | Различные дополнения и исправления в CLI, Rust 1.44.0 |
Старая версия, больше не поддерживается:1.2.0 | Старая версия, больше не поддерживается:1.2.3 | 2020-07-13 | 2020-08-08 | Различные дополнения и исправления в CLI |
Старая версия, больше не поддерживается:1.3.0 | Старая версия, больше не поддерживается:1.3.3 | 2020-08-13 | 2020-09-04 | Различные дополнения и исправления в CLI, различные улучшения в языке Deno, TypeScript 3.9.7 |
Старая версия, больше не поддерживается:1.4.0 | Старая версия, больше не поддерживается:1.4.6 | 2020-09-13 | 2020-10-10 | Новый веб-стандартный API WebSocket, автоматический перезапуск при изменении файла, интегрированное тестовое покрытие |
Старая версия, больше не поддерживается:1.5.0 | Старая версия, больше не поддерживается:1.5.4 | 2020-10-27 | 2020-11-23 | Более быстрое встряхивание дерева и объединение, рефакторинг REPL |
Старая версия, больше не поддерживается:1.6.0 | Старая версия, больше не поддерживается:1.6.3 | 2020-12-08 | 2020-12-30 | Компиляция отдельных двоичных файлов с помощью «deno compile», поддержка TypeScript 4.1, экспериментальная поддержка Mac ARM64 |
Старая версия, больше не поддерживается:1.7.0 | Старая версия, больше не поддерживается:1.7.5 | 2021-02-05 | 2021-02-19 | Кросс-компиляция и на 60% меньшие двоичные файлы для компиляции deno, API-интерфейс DNS-резолвера, поддержка URL-адресов данных в операторах импорта и веб-воркерах |
Старая версия, больше не поддерживается:1.8.0 | Старая версия, больше не поддерживается:1.8.3 | 2021-03-02 | 2021-04-02 | Экспериментальная поддержка API WebGPU, встроенные API интернационализации включены, поддержка извлечения закрытых модулей, обновленный инструментарий покрытия, поддержка TypeScript 4.2 |
Старая версия, больше не поддерживается:1.9.0 | Старая версия, больше не поддерживается:1.9.2 | 2021-04-13 | 2021-04-23 | Собственный веб-сервер HTTP/2, более быстрые вызовы в Rust с serde_v8, поддержка Blob URL и улучшения для API-интерфейса Fetch, завершения импорта в LSP, интерактивный запрос разрешений |
Старая версия, больше не поддерживается:1.10.0 | Старая версия, больше не поддерживается:1.10.2 | 2021-05-11 | 2021-05-17 | Улучшения встроенного тестового исполнителя, поддержка структурированного клонирования в Web Workers, API веб-хранилища, поддержка карт удаленного импорта |
Старая версия, больше не поддерживается:1.11.0 | Старая версия, больше не поддерживается:1.11.3 | 2021-06-08 | 2021-06-29 | Официальные образы Docker, добавлено больше API веб-криптографии, BroadcastChannel, прерываемая выборка, стабилизация denolint |
Старая версия, больше не поддерживается:1.12.0 | Старая версия, больше не поддерживается:1.12.2 | 2021-07-13 | 2021-07-26 | Поддержка API-интерфейсов generateKey, sign и verify для веб-криптографии, встроенная поддержка сервера WebSocket, поддержка TypeScript в REPL, поддержка MessagePort и MessageChannel |
Старая версия, больше не поддерживается:1.13.0 | Старая версия, больше не поддерживается:1.13.2 | 2021-08-10 | 2021-08-23 | Собственная стабилизация веб-сервера HTTP, поддержка self.structuredClone(), поддержка AbortSignal, поддержка navigator.hardwareConcurrency API, экспериментальный API WebSocketStream, FFI заменяет собственную систему плагинов |
Старая версия, больше не поддерживается:1.14.0 | Старая версия, больше не поддерживается:1.14.3 | 2021-09-14 | 2021-10-04 | URLPattern, API блокировки файлов, поддержка Mutual TLS в fetch, TypeScript 4.4, анализ URL и улучшения производительности std/http |
Старая версия, больше не поддерживается:1.15.0 | Старая версия, больше не поддерживается:1.15.3 | 2021-10-12 | 2021-10-25 | Новые API-интерфейсы шифрования, подкоманда deno uninstall, API вложенного тестирования, улучшения FFI, новый флаг совместимости для улучшения совместимости с Node |
Старая версия, больше не поддерживается:1.16.0 | Старая версия, больше не поддерживается:1.16.4 | 2021-11-09 | 2021-12-03 | Поддержка Fetch для URL-адресов файлов, новый нестабильный API прослушивателя сигналов, поддержка указания причины при прерывании AbortSignal, улучшения в API веб-потоков, методы массива findLast и findLastIndex, инструмент сборки пакетов Deno to npm |
Старая версия, больше не поддерживается:1.17.0 | Старая версия, больше не поддерживается:1.17.3 | 2021-12-16 | 2022-01-12 | Импорт утверждений и модулей JSON, улучшения API веб-криптографии, таймеры отмены ссылок, нестабильная поддержка согласования ALPN, TypeScript 4.5 |
Старая версия, больше не поддерживается:1.18.0 | Старая версия, больше не поддерживается:1.18.0 | 2022-01-20 | 2022-01-20 | Автоматическое обнаружение файла конфигурации, завершение API веб-криптографии, стабилизация API этапов тестирования, улучшения FFI, улучшения LSP |
Старая версия, больше не поддерживается:1.19.0 | Старая версия, больше не поддерживается:1.19.3 | 2022-02-17 | 2022-03-10 | Новая зависимость от поставщика Deno, запрос разрешений по умолчанию, новые веб-потоки для файлов, сетевых сокетов и stdio, поддержка CompressionStream и DecompressionStream, улучшенные ошибки для ops и санистайзеров ресурсов, улучшенный журнал консоли |
Старая версия, больше не поддерживается:1.20.1 | Старая версия, больше не поддерживается:1.20.6 | 2022-04-14 | 2022-03-16 | Более быстрые вызовы в Rust, автоматическое сжатие тел ответов HTTP, новые подкоманды (deno bench, deno task), улучшения безопасности, более строгие значения по умолчанию в программных разрешениях, TypeScript 4.6, V8 10.0 |
Старая версия, больше не поддерживается:1.21.0 | Старая версия, больше не поддерживается:1.21.3 | 2022-04-20 | 2022-05-12 | Различные улучшения языка Deno, расширения VSCode и REPL. Улучшения в Deno Test |
Старая версия, больше не поддерживается:1.22.0 | Старая версия, больше не поддерживается:1.22.3 | 2022-05-18 | 2022-06-09 | Обновленное поведение проверки типов по умолчанию, различные улучшения языка Deno, обновления тестового исполнителя |
Старая версия, больше не поддерживается:1.23.0 | Старая версия, больше не поддерживается:1.23.4 | 2022-06-15 | 2022-07-12 | По умолчанию проверка типов не выполняется, различные улучшения языка Deno, принудительное создание новой строки в REPL, TypeScript 4.7 |
Старая версия, больше не поддерживается:1.24.0 | Старая версия, больше не поддерживается:1.24.3 | 2022-07-20 | 2022-08-11 | Улучшения производительности проверки типов и генерации, различные улучшения языка Deno, улучшения Deno Test, обновления нового API подпроцесса, улучшения LSP, добавление модуля semver |
Старая версия, больше не поддерживается:1.25.0 | Старая версия, больше не поддерживается:1.25.4 | 2022-08-24 | 2022-09-22 | подкоманда deno init, экспериментальная поддержка npm, новый API HTTP-сервера, улучшения времени запуска, улучшения FFI API |
Старая версия, больше не поддерживается:1.26.0 | Старая версия, больше не поддерживается:1.26.2 | 2022-09-29 | 2022-10-17 | Cache Web API, WebCrypto Secure Curves, флаг разрешения --allow-sys, улучшения поддержки npm и Node.JS, улучшения API Deno.serve(), улучшенный пользовательский интерфейс загрузки модулей, улучшение опыта разработчика, TypeScript 4.8 |
Старая версия, больше не поддерживается:1.27.0 | Старая версия, больше не поддерживается:1.27.2 | 2022-10-27 | 2022-11-08 | Основные улучшения IDE, Улучшения совместимости с npm, веб-API navigator.language, Улучшения задачи deno, Проверка обновлений, Изменения API Deno, Обновления deno lint, V8 10.8, Улучшения совместимости с Node.js, Изменения API стандартной библиотеки |
Старая версия, больше не поддерживается:1.28.0 | Старая версия, больше не поддерживается:1.28.3 | 2022-11-13 | 2022-12-01 | Различные исправления и стабилизация функций, импортер пакетов NPM, автоматическое обнаружение файла блокировки, V8 10.9 |
Старая версия, больше не поддерживается:1.29.0 | Старая версия, больше не поддерживается:1.29.4 | 2022-12-14 | 2023-01-16 | Улучшения совместимости npm, Изменения REPL, Улучшения качества жизни, Изменения в API Deno, TypeScript 4.9, Изменения в стандартных модулях |
Старая версия, больше не поддерживается:1.30.0 | Старая версия, больше не поддерживается:1.30.3 | 2023-01-26 | 2023-02-07 | Поддержка встроенных модулей Node.js (импорт "node:fs"), deno.json становится картой импорта, deno fmt поддерживает настройку точек с запятой |
Старая версия, больше не поддерживается:1.31.0 | Старая версия, больше не поддерживается:1.31.1 | 2023-02-24 | 2023-02-25 | Поддержка package.json, стабилизация Node-API, уровень совместимости Node для NodeJS перемещен в среду выполнения Deno, стабилизация в Deno API, изменение типа указателя в FFI API |
Старая версия, больше не поддерживается:1.32.0 | Старая версия, больше не поддерживается:1.32.5 | 2023-03-23 | 2023-04-18 | Улучшенная совместимость с Node.js, поддержка компиляции deno для веб-воркеров и динамического импорта, изменения в API Deno, изменения в веб-API, изменения в стандартной библиотеке, TypeScript 5.0, V8 11.2 |
Старая версия, больше не поддерживается:1.33.0 | Старая версия, больше не поддерживается:1.33.4 | 2023-04-28 | 2023-05-18 | Встроенная база данных «ключ-значение» , более плоская конфигурация, отсутствие проверки разрешений для динамического импорта, дальнейшее улучшение совместимости с Node.js/npm, повышение производительности, улучшение CLI, изменения в API Deno, V8 11.4 |
Старая версия, больше не поддерживается:1.34.0 | Старая версия, больше не поддерживается:1.34.3 | 2023-05-23 | 2023-6-15 | Поддержка компиляции Deno для пакетов npm, поддержка glob в Deno.json и флагах CLI, поддержка IP-адресов в сертификатах TLS, улучшения файла конфигурации, изменения API, улучшения совместимости с Node.js, TypeScript 5.0.4, V8 11.5 |
Старая версия, больше не поддерживается:1.35.0 | Старая версия, больше не поддерживается:1.35.3 | 2023-07-05 | 2023-07-26 | Новый стабильный API веб-сервера, улучшения совместимости с Node.js, изменения API Deno, изменения веб-API, улучшения LSP, обновления стандартной библиотеки, TypeScript 5.1.6, V8 11.6 |
Старая версия, больше не поддерживается:1.36.0 | Старая версия, больше не поддерживается:1.36.2 | 2023-08-03 | 2023-08-21 | Более гибкая безопасность и расширенные API тестирования |
Старая версия, больше не поддерживается:1.37.0 | Старая версия, больше не поддерживается:1.37.2 | 2023-09-19 | 2023-10-12 | Добавление поддержки и исправлений Jupyter, поддержка и исправления TypeScript 5.2 |
Старая версия, больше не поддерживается:1.38.0 | Старая версия, больше не поддерживается:1.38.5 | 2023-11-01 | 2023-12-05 | Deno.Server переименован в Deno.HttpServer, поддержка и исправления Jupyter, функции Websocket |
Старая версия, больше не поддерживается:1.39.0 | Старая версия, больше не поддерживается:1.39.4 | 2023-12-13 | 2024-01-13 | |
Старая версия, больше не поддерживается:1.40.0 | Старая версия, больше не поддерживается:1.40.5 | 2024-01-25 | 2024-02-15 | |
Старая версия, больше не поддерживается:1.41.0 | Старая версия, больше не поддерживается:1.41.3 | 2024-02-22 | 2024-03-14 | |
Старая версия, больше не поддерживается:1.42.0 | Старая версия, больше не поддерживается:1.42.3 | 2024-02-22 | 2024-03-14 | |
Старая версия, больше не поддерживается:1.43.0 | Старая версия, больше не поддерживается:1.43.6 | 2024-05-01 | 2024-05-21 | |
Старая версия, больше не поддерживается:1.44.0 | Старая версия, больше не поддерживается:1.44.4 | 2024-05-30 | 2024-06-19 | |
Старая версия, больше не поддерживается:1.45.0 | Старая версия, больше не поддерживается:1.45.5 | 2024-07-10 | 2024-07-31 | |
Старая версия, больше не поддерживается:1.46.0 | Старая версия, больше не поддерживается:1.46.3 | 2024-08-22 | 2024-09-04 | |
Текущая стабильная версия: 2.0.0 | Текущая стабильная версия: 2.0.0 | 2024-10-09 | 2024-10-09 | |
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий релиз |
Номера версий основаны на релизах с Github. [33]
Версия | Последний релиз патча | Дата выпуска | Дата выпуска последнего патча | Описание |
---|---|---|---|---|
Старая версия, больше не поддерживается:1.0.0 | Старая версия, больше не поддерживается:1.0.0 | 2022-06-28 | 2022-06-28 | Первоначальный выпуск |
Старая версия, больше не поддерживается:1.1.0 | Старая версия, больше не поддерживается:1.1.6 | 2022-08-09 | 2023-05-23 | Автоматический JSX, новый плагин Twind, поддержка Preact Signals, поддержка Preact DevTools, явный рендеринг страниц 404, стековое промежуточное ПО, экспериментальная поддержка Deno.serve, демонстрация и значки «Made with Fresh» |
Старая версия, больше не поддерживается:1.2.0 | Старая версия, больше не поддерживается:1.2.0 | 2023-06-15 | 2023-06-15 | Больше типов данных, поддерживаемых в свойствах островов, поддержка передачи JSX в острова и вложенных островов, поддержка импорта пакетов из npm, настраиваемые обработчики запросов HEAD, переопределения заголовков и статуса из ctx.render, асинхронный рендеринг плагинов, упрощенное тестирование |
Старая версия, больше не поддерживается:1.3.0 | Старая версия, больше не поддерживается:1.3.1 | 2023-07-18 | 2023-07-21 | Компоненты асинхронного маршрута. Добавление маршрутов и/или промежуточного программного обеспечения из плагина. Откат шаблона ошибки 500, границы ошибок, экспорт нескольких островов в один файл, новые правила линтинга, поддержка Deno.serve |
Старая версия, больше не поддерживается:1.4.0 | Старая версия, больше не поддерживается:1.4.3 | 2023-08-16 | 2023-09-06 | Более быстрая загрузка страниц с предварительной компиляцией, пользовательским HTML, тегами заголовка и тела, макетами (асинхронные макеты и асинхронная оболочка приложения, более быстрый ввод текста с помощью функций определения) |
Старая версия, больше не поддерживается:1.5.0 | Старая версия, больше не поддерживается:1.5.4 | 2023-10-10 | 2023-09-06 | |
Текущая стабильная версия: 1.6.0 | Текущая стабильная версия: 1.6.8 | 2023-12-01 | 2024-03-22 | |
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий релиз |
Номера версий основаны на номерах релизов из репозитория Github. [34]
Версия | Последний релиз патча | Дата выпуска | Дата выпуска последнего патча | Описание |
---|---|---|---|---|
Старая версия, больше не поддерживается:бета | Старая версия, больше не поддерживается:бета | 2023-04-04 | 2022-04-04 | Первоначальный выпуск |
Старая версия, больше не поддерживается:0.1.0 | 2023-04-19 | |||
Старая версия, больше не поддерживается:0.2.0 | 2023-05-08 | |||
Старая версия, больше не поддерживается:0.3.0 | 2023-06-06 | |||
Старая версия, больше не поддерживается:0.4.0 | 2023-06-20 | Дено KV OAuth | ||
Старая версия, больше не поддерживается:0.5.0 | 2023-06-27 | |||
Старая версия, больше не поддерживается:0.6.0 | Старая версия, больше не поддерживается:0.6.1 | 2023-08-06 | 2023-09-12 | |
Текущая стабильная версия: 0.7.0 | 2023-12-19 | |||
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий релиз |
Эта статья может потребовать очистки для соответствия стандартам качества Википедии . Конкретная проблема: читается как руководство по программному обеспечению. Некоторые примеры кода могут быть полезны для иллюстрации аспектов фреймворка, но их следует выбирать с целью предоставления контекста для статьи энциклопедии о программном обеспечении. ( Июль 2023 г. ) |
Базовая программа Hello, World! на языке Deno:
console.log ( "Привет, мир! " ) ;
Глобальные Deno
пространства имен предоставляют API, которые недоступны в браузере. Реализация программы Unix cat : [1]
/** * cat.ts */ for ( const filename of Deno . args ) { const file = await Deno . open ( filename ); await file . readable . pipeTo ( Deno . stdout . writable , { preventClose : true }); }
Простой веб-сервер : [2]
Deno . serve (( req ) => new Response ( "hello world" ));
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/
{{cite web}}
: Отсутствует или пусто |title=
( помощь )