Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Deno (software)

From Wikipedia, the free encyclopedia
Secure JavaScript and TypeScript runtime
Deno
Logo used since 2024
Original author(s)Ryan Dahl
Developer(s)Deno Land Inc[1] and contributors
Initial releaseMay 13, 2018; 6 years ago (2018-05-13)[2]
Stable release
2.2.4[3] Edit this on Wikidata / 14 March 2025; 5 days ago (14 March 2025)
Repositorygithub.com/denoland/deno
Written inTypeScript,JavaScript,Rust,C++ (V8 bindings)
Operating systemLinux,macOS,Microsoft Windows
TypeRuntime environment
LicenseMIT License[4]
Websitedeno.com Edit this on Wikidata

Deno (/dn/[5]) is aruntime forJavaScript,TypeScript, andWebAssembly that is based on theV8 JavaScript engine and theRust programming language. Deno was co-created byRyan Dahl, the creator ofNode.js[6] and Bert Belder.[7]

Deno explicitly takes on the role of both runtime andpackage manager within a singleexecutable, rather than requiring a separatepackage-management program.[5][8]

History

[edit]

Deno was announced at JSConf EU 2018 byRyan Dahl in his talk "10 Things I Regret About Node.js".[9] In his talk, Dahl mentioned his regrets about the initial design decisions with Node.js, focusing on his choices of not usingpromises inAPI design, usage of the legacy build systemGYP, node_modules and package.json, leaving outfile extensions, magical module resolution with index.js and breaking the sandboxed environment of V8.[10] He eventually presented the prototype of Deno, aiming to achieve system call bindings through message passing with serialization tools such asProtocol Buffers, and to provide command line flags foraccess control.

Deno was initially written inGo and usedProtocol Buffers for serialization between privileged (Go, with system call access) and unprivileged (V8) sides.[11] However, Go was soon replaced withRust due to concerns of double runtime andgarbage collection pressure.[12]Tokio was introduced in place oflibuv as the asynchronous event-driven platform,[13] andFlatBuffers was adopted for faster, "zero-copy" serialization and deserialization[14] but later in August 2019, FlatBuffers was removed[15] after publishing benchmarks that measured a significant overhead of serialization in April 2019.[16]

A standard library, modeled after Go's standard library, was created in November 2018 to provide extensive tools and utilities, partially solving Node.js'dependency tree explosion problem.[17]

The official Deno 1.0 was released on May 13, 2020.[18]

Deno Deploy, inspired byCloudflare Workers,[19] was released on June 23, 2021.[20] Announced May 4, 2022 Beta 4 improved the dashboard and added billing functionality.[21]

Deno Fresh 1.0 was announced June 28, 2022.[22] It features a new full stack web framework for Deno that by default sends zero JavaScript to the client. The framework has no build step which allows for an order of magnitude improvements in deployment times. Version 1.1 was released September 8, 2022.[23]

Deno SaaSKit beta was announced April 4, 2023.[24] It is an open-source, modern SaaS template built with Fresh and Deno.

Deno 2 was released October 9, 2024.[25] It primarily brings Node.js compatibility improvements and removes deprecated features.

Overview

[edit]

Deno aims to be a productive and securescripting environment for the modern programmer.[5] Similar to Node.js, Deno emphasizesevent-driven architecture, providing a set ofnon-blocking core I/O utilities, along with their blocking versions. Deno could be used to createweb servers, perform scientific computations, etc. Deno isopen source software under theMIT License.[26]

Comparison with Node.js

[edit]

Deno and Node.js are both runtimes built on theV8 JavaScript engine developed by the Chromium Project, the engine used forChromium andGoogle Chrome web browsers. They both have internalevent loops and providecommand-line interfaces for running scripts and a wide range of system utilities.

Deno mainly deviates from Node.js in the following aspects:[5]

  1. Supports only ES Modules like browsers where Node.js supports both ES Modules andCommonJS. CommonJS support in Deno is possible by using a compatibility layer.[27][28]
  2. SupportsURLs for loading local or remote dependencies, similar tobrowsers, and uses module specifiers likenpm: andnode: to import NPM or polyfill Node.JS modules. Node.js supports both URLs[29] and modules.
  3. Does not require a package manager for resource fetching, thus no need for a registry likenpm.[30]
  4. Supports TypeScript out of the box,[31] using a snapshotted TypeScriptcompiler or the swc compiler[32] with caching mechanisms.
  5. Aims for better compatibility with browsers with a wide range of Web APIs.
  6. Restricts file system and network access by default in order to run sandboxed code.
  7. Supports a single API to utilize promises,ES6 and TypeScript features whereas Node.js supports both promise and callback APIs.
  8. Minimizes core API size, while providing a large standard library with no external dependencies.
  9. Uses message passing channels for invoking privileged system APIs and using bindings.

Funding

[edit]

On March 29, 2021, Deno Land Inc was announced, with backing in millions of dollars fromShasta Ventures,Mozilla Corporation and a few others. It was established to further the development of Deno and provide a commercial offering to users.[1]

A year on, Deno announced a further $21 million in Series A funding led bySequoia Capital.[33]

Release history

[edit]

The tables below were created using the official Releases page.[34]

Deno

[edit]
VersionLatest patch releaseRelease dateDate of last patch releaseDescription
Old version, not maintained: 0.1.0Old version, not maintained: 0.1.122018-08-232018-11-12Rust rewrite and V8 snapshot
Old version, not maintained: 0.2.0Old version, not maintained: 0.2.112018-11-272019-02-08Mildly usable
Old version, not maintained: 0.3.0Old version, not maintained: 0.3.102019-02-182019-04-25Instead of importing a "deno" module, there is now a global variable called "Deno"
Old version, not maintained: 1.0.0Old version, not maintained: 1.0.52020-05-132020-06-03Initial production release with CLI, first-class TypeScript Support, Rust APIs and improvements in HTTP server performance
Old version, not maintained: 1.1.0Old version, not maintained: 1.1.32020-06-122020-07-03Various additions and fixes to the CLI, Rust 1.44.0
Old version, not maintained: 1.2.0Old version, not maintained: 1.2.32020-07-132020-08-08Various additions and fixes to the CLI
Old version, not maintained: 1.3.0Old version, not maintained: 1.3.32020-08-132020-09-04Various additions and fixes to the CLI, various improvements to the Deno language, TypeScript 3.9.7
Old version, not maintained: 1.4.0Old version, not maintained: 1.4.62020-09-132020-10-10New web standard WebSocket API, automatic restarts on file change, integrated test coverage
Old version, not maintained: 1.5.0Old version, not maintained: 1.5.42020-10-272020-11-23Faster tree-shaking and bundling, refactored REPL
Old version, not maintained: 1.6.0Old version, not maintained: 1.6.32020-12-082020-12-30Compile standalone binaries via "deno compile", support TypeScript 4.1, experimental support for Mac ARM64
Old version, not maintained: 1.7.0Old version, not maintained: 1.7.52021-02-052021-02-19Cross compilation and 60% smaller binaries for deno compile, a DNS resolver API, support for data URLs in import statements and web workers
Old version, not maintained: 1.8.0Old version, not maintained: 1.8.32021-03-022021-04-02Experimental support for WebGPU API, built-in internationalization APIs enabled, support for fetching private modules, revamped coverage tooling, support for TypeScript 4.2
Old version, not maintained: 1.9.0Old version, not maintained: 1.9.22021-04-132021-04-23Native HTTP/2 web server, Faster calls into Rust with serde_v8, Blob URL support & improvements to fetch api, Import completions in the LSP, Interactive permission prompt
Old version, not maintained: 1.10.0Old version, not maintained: 1.10.22021-05-112021-05-17Improvements to the built in test runner,structuredClone() support in Web Workers, Web Storage API, support for remote import maps
Old version, not maintained: 1.11.0Old version, not maintained: 1.11.32021-06-082021-06-29Official docker images, more web crypto APIs added, BroadcastChannel, abortable fetch, deno lint stabilized
Old version, not maintained: 1.12.0Old version, not maintained: 1.12.22021-07-132021-07-26Support forgenerateKey, sign and verify web crypto APIs, native WebSocket server support, TypeScript support in REPL, support forMessagePort andMessageChannel
Old version, not maintained: 1.13.0Old version, not maintained: 1.13.22021-08-102021-08-23Native HTTP web server stabilization, support forself.structuredClone(),AbortSignal support, support forCODEN avigator.hardwareConcurrency,javascript API, experimentalWebSocketStream API, FFI replaces native plugin system
Old version, not maintained: 1.14.0Old version, not maintained: 1.14.32021-09-142021-10-04URLPattern, file locking APIs, mutual TLS support in fetch, TypeScript 4.4, URL parsing and std/http performance improvements
Old version, not maintained: 1.15.0Old version, not maintained: 1.15.32021-10-122021-10-25New crypto APIs, deno uninstall subcommand, nested testing API, FFI improvements, new—compat flag for improved Node compatibility
Old version, not maintained: 1.16.0Old version, not maintained: 1.16.42021-11-092021-12-03Fetch support for file URLs, new unstable signal listener API, support for specifying a reason when aborting anAbortSignal, improvements to Web Streams API, findLast and findLastIndex array methods, Deno to npm package build tool
Old version, not maintained: 1.17.0Old version, not maintained: 1.17.32021-12-162022-01-12Import assertions and JSON modules, improvements to the Web Cryptography API, unref timers, unstable support for negotiating ALPN, TypeScript 4.5
Old version, not maintained: 1.18.0Old version, not maintained: 1.18.02022-01-202022-01-20Configuration auto-discovery, completion of Web Cryptography API, stabilization of test steps API, FFI improvements, LSP improvements
Old version, not maintained: 1.19.0Old version, not maintained: 1.19.32022-02-172022-03-10New Deno vendor dependency, default permission prompt, new web streams for files, network sockets and stdio, CompressionStream and DecompressionStream supported, better errors for ops and resource sanitizers, improved console log
Old version, not maintained: 1.20.1Old version, not maintained: 1.20.62022-04-142022-03-16Faster calls into Rust, auto-compression for HTTP response bodies, new subcommands (deno bench, deno task), security improvements, stricter defaults in programmatic permission, TypeScript 4.6, V8 10.0
Old version, not maintained: 1.21.0Old version, not maintained: 1.21.32022-04-202022-05-12Various improvements to the Deno language, VSCode extension, and REPL. Improvements in Deno Test
Old version, not maintained: 1.22.0Old version, not maintained: 1.22.32022-05-182022-06-09Updated default type checking behavior, various improvements to the Deno language, updates to the test runner
Old version, not maintained: 1.23.0Old version, not maintained: 1.23.42022-06-152022-07-12No type-checking by default, various improvements to the Deno language, force a new line in REPL, TypeScript 4.7
Old version, not maintained: 1.24.0Old version, not maintained: 1.24.32022-07-202022-08-11Type checking and emitting performance improvements, various improvements to the Deno language, Deno Test improvements, Updates to the new subprocess API, LSP improvements, addition of semver module
Old version, not maintained: 1.25.0Old version, not maintained: 1.25.42022-08-242022-09-22deno init subcommand, experimental npm support, new HTTP server API, improvements to startup time, FFI API improvements
Old version, not maintained: 1.26.0Old version, not maintained: 1.26.22022-09-292022-10-17Cache Web API, WebCrypto Secure Curves, --allow-sys permission flag, improvements to npm and Node.JS support, improvements toDeno.serve() API, improved module download UI, developer experience improvement, TypeScript 4.8
Old version, not maintained: 1.27.0Old version, not maintained: 1.27.22022-10-272022-11-08Major IDE improvements, improvements to npm compatibility, navigator.language Web API, Improvements to deno task, Upgrade checker, Changes to Deno APIs, Updates to deno lint, V8 10.8, Node.js compatibility improvements, Changes to standard library APIs
Old version, not maintained: 1.28.0Old version, not maintained: 1.28.32022-11-132022-12-01Various fixes and feature stabilisations, NPM package importer, auto discovery of the lock file, V8 10.9
Old version, not maintained: 1.29.0Old version, not maintained: 1.29.42022-12-142023-01-16npm compatibility improvements, REPL changes, quality of life improvements, Deno API changes, TypeScript 4.9, standard library updates
Old version, not maintained: 1.30.0Old version, not maintained: 1.30.32023-01-262023-02-07Support for built-in Node.js modules (import"node:fs"), deno.json becomes an import map, deno fmt supports configuring semicolons
Old version, not maintained: 1.31.0Old version, not maintained: 1.31.12023-02-242023-02-25Support for package.json, Stabilization of Node-API, Node compatibility layer for NodeJS moved to the Deno runtime itself, Stabilizations in Deno API, Change to pointer type in FFI API
Old version, not maintained: 1.32.0Old version, not maintained: 1.32.52023-03-232023-04-18Enhanced Node.js compatibility, deno compile support for web workers and dynamic import, changes to Deno APIs, changes to Web APIs, changes to the standard library, TypeScript 5.0, V8 11.2
Old version, not maintained: 1.33.0Old version, not maintained: 1.33.42023-04-282023-05-18Built inKey-value database, flatter configuration, no permission check for dynamic imports, further enhanced Node.js/npm compatibility, performance improvements, CLI improvements, changes to Deno APIs, V8 11.4
Old version, not maintained: 1.34.0Old version, not maintained: 1.34.32023-05-232023-6-15Deno compile support for npm packages, glob support in Deno.json and CLI flags, support for IP addresses in TLS certificates, configuration file improvements, API Changes, Node.js compatibility improvements, TypeScript 5.0.4, V8 11.5
Old version, not maintained: 1.35.0Old version, not maintained: 1.35.32023-07-052023-07-26New stable web server API, Node.js compatibility improvements, Deno API changes, Web API changes, LSP improvements, updates to standard library, TypeScript 5.1.6, V8 11.6
Old version, not maintained: 1.36.0Old version, not maintained: 1.36.22023-08-032023-08-21More flexible security and expanded testing APIs
Old version, not maintained: 1.37.0Old version, not maintained: 1.37.22023-09-192023-10-12Jupyter support, TypeScript 5.2, bug fixes
Old version, not maintained: 1.38.0Old version, not maintained: 1.38.52023-11-012023-12-05Deno.Server renamed toDeno.HttpServer, Jupyter support and fixes, Websocket features
Old version, not maintained: 1.39.0Old version, not maintained: 1.39.42023-12-132024-01-13Re-addition of WebGPU support
Old version, not maintained: 1.40.0Old version, not maintained: 1.40.52024-01-252024-02-15Temporal API, additionalimport.meta support, stage 3 decorator support, Deno 2 preparatory deprecations, better import maps, WebGPU windowing, and updates to unstable flags
Old version, not maintained: 1.41.0Old version, not maintained: 1.41.32024-02-222024-03-14Smaller compiled binaries, official Linux ARM64 builds
Old version, not maintained: 1.42.0Old version, not maintained: 1.42.32024-02-222024-03-14JSR support
Old version, not maintained: 1.43.0Old version, not maintained: 1.43.62024-05-012024-05-21Sped up language server in monorepos, new deno serve,URL.parse() API, Deno 2 feature flag, V8 12.4
Old version, not maintained: 1.44.0Old version, not maintained: 1.44.42024-05-302024-06-19Initial Next.js support, private npm registries, gRPC
Old version, not maintained: 1.45.0Old version, not maintained: 1.45.52024-07-102024-07-31Monorepo support with workspaces, deno install updates, command to initialize JSR project, deno vendor deprecation, stabilization of the Standard Library ongoing, V8 12.7 and TypeScript 5.5.2
Old version, not maintained: 1.46.0Old version, not maintained: 1.46.32024-08-222024-09-04CLI simplifications, deno serve multithreading, expanded formatting support, import assertion deprecation, code signing, Playwright support, stable HMR, Standard Library stabilized, CLI additions, V8 12.9
Old version, not maintained: 2.0.0Old version, not maintained: 2.0.62024-10-092024-11-10Node.js compatibility improvements, announced LTS release channel, performance improvements
Old version, not maintained: 2.1.0Old version, not maintained: 2.1.102024-11-212025-02-13
Old version, not maintained: 2.2.0Latest version:2.2.22025-02-182025-02-25
Legend:
Old version
Old version, still maintained
Latest version
Latest preview version
Future version

Deno Fresh

[edit]

Version numbers are based on releases from GitHub.[35]

VersionLatest patch releaseRelease dateDate of last patch releaseDescription
Old version, not maintained: 1.0.0Old version, not maintained: 1.0.02022-06-282022-06-28Initial release
Old version, not maintained: 1.1.0Old version, not maintained: 1.1.62022-08-092023-05-23Automatic JSX, new twind plug-in, Preact Signals support, Preact DevTools support, explicit rendering of 404 pages, stacked middleware, experimental Deno.serve support, showcase & "Made with Fresh" badges
Old version, not maintained: 1.2.0Old version, not maintained: 1.2.02023-06-152023-06-15More datatypes supported in island props, support for passing JSX to islands and nesting islands, support for importing packages from npm, custom HEAD request handlers, overrides for headers and status from ctx.render, asynchronous plugin rendering, simplified testing
Old version, not maintained: 1.3.0Old version, not maintained: 1.3.12023-07-182023-07-21Async Route Components. adding routes and/or middlewares from plugin. 500 error template fallback, error Boundaries, export multiple islands in the same file, Fresh linting rules, support for Deno.serve
Old version, not maintained: 1.4.0Old version, not maintained: 1.4.32023-08-162023-09-06Faster page loads with ahead-of-time compilation, custom html, head and body tags, layouts (async layouts and async app wrapper, quicker typing with define functions
Old version, not maintained: 1.5.0Old version, not maintained: 1.5.42023-10-102023-09-06Partials and CSR support, active link styling, exposed esbuild targets configuration and metafile.json
Old version, not maintained: 1.6.0Old version, not maintained: 1.6.82023-12-012024-03-22Tailwind CSS support, partials improvements, bundling improvements, improved plugin API, improved route matching performance, subpaths support, better typings, error overlay is closable
Old version, not maintained: 1.7.0Latest version:1.7.32024-08-152024-10-14Add Unix domain sockets support
Legend:
Old version
Old version, still maintained
Latest version
Latest preview version
Future version

Deno SaasKit

[edit]

Version numbers are bases on release numbers from the GitHub repository.[36]

VersionLatest patch releaseRelease dateDate of last patch releaseDescription
Old version, not maintained: betaOld version, not maintained: beta2023-04-042022-04-04Initial release
Old version, not maintained: 0.1.02023-04-19
Old version, not maintained: 0.2.02023-05-08
Old version, not maintained: 0.3.02023-06-06
Old version, not maintained: 0.4.02023-06-20Deno KV OAuth
Old version, not maintained: 0.5.02023-06-27
Old version, not maintained: 0.6.0Old version, not maintained: 0.6.12023-08-062023-09-12
Latest version:0.7.02023-12-19
Legend:
Old version
Old version, still maintained
Latest version
Latest preview version
Future version

Examples

[edit]
This article mayrequirecleanup to meet Wikipedia'squality standards. The specific problem is:Reads like a software tutorial. Some code examples may be useful to illustrate aspects of the framework, but they should be selected for the purpose of providing context to an encyclopedia article on the software. Please helpimprove this article if you can.(July 2023) (Learn how and when to remove this message)

GlobalDeno namespaces expose APIs that are not available in the browser.

An implementation of theUnixcat program:[1]

/** * cat.ts */for(constfilenameofDeno.args){constfile=awaitDeno.open(filename);awaitfile.readable.pipeTo(Deno.stdout.writable,{preventClose:true});}

A simpleWeb server:[2]

Deno.serve((req)=>newResponse("hello world"));

Deno automatically downloads and caches the remote standard library files when the script is run, and then compiles the code.

Similarly, it can run a standard library script (such as afile server) directly without explicitly downloading, by providing the URL as the input filename (-A turns on all permissions):

$denorun-Ahttps://deno.land/std/http/file_server.tsDownload https://deno.land/std/http/file_server.tsCompile https://deno.land/std/http/file_server.ts...HTTP server listening on http://0.0.0.0:4500/

References

[edit]
  1. ^abRyan Dahl, Bert Belder (2021-03-29)."Announcing the Deno Company".
  2. ^"Contributors, denoland/deno, Github".GitHub. Retrieved5 July 2019.
  3. ^"Release v2.2.4". 14 March 2025. Retrieved19 March 2025.
  4. ^"deno/LICENSE at main".GitHub. Retrieved5 July 2019.
  5. ^abcd"Deno Manual".deno.com. Retrieved2019-05-17.
  6. ^Schiemann, Dylan (December 26, 2018)."Deno: Secure V8 TypeScript Runtime from Original Node.js Creator".InfoQ.Archived from the original on May 17, 2019. RetrievedMay 17, 2019.
  7. ^"The JavaScript ecosystem is 'hopelessly fragmented'... so here is another runtime: Deno is now a company". Archived fromthe original on 2024-06-25. Retrieved2025-01-10.
  8. ^Paul Krill (2018-06-21)."Ryan Dahl's Node.js regrets lead to Deno".InfoWorld. Archived fromthe original on 2019-04-14.
  9. ^Dahl, Ryan (2018-06-06).10 things I regret about Node.js. JSConf EU. Retrieved2019-05-17 – via YouTube.
  10. ^Dahl, Ryan (2018-06-06)."Design mistakes in Node"(PDF).Github.
  11. ^"denoland/deno, branch "golang"".GitHub.
  12. ^"Suggestion: Look into porting to Rust and using Tokio".GitHub.
  13. ^"Tokio - The asynchronous run-time for the Rust programming language".Tokio.rs.
  14. ^"Protobuf seems like a lot of overhead for this use case?".GitHub.
  15. ^"Remove flatbuffers".GitHub.
  16. ^"Replace flatbuffers".GitHub. April 15, 2019. RetrievedJuly 11, 2019.
  17. ^"denoland/deno_std: deno standard modules".GitHub. 3 March 2022.
  18. ^"Deno 1.0".deno.com. 13 May 2020. Retrieved2020-05-14.
  19. ^Dahl, Ryan (4 May 2022)."JavaScript Containers".tinyclouds.org. Archived fromthe original on 4 May 2022.
  20. ^Krill, Paul (2021-06-24)."Deno Company unveils server-side JavaScript hosting service".InfoWorld. Archived fromthe original on 27 Jun 2022. Retrieved2022-04-14.
  21. ^Krill, Paul (2022-06-03)."Deno Deploy moves toward GA, adds paid plan".InfoWorld. Retrieved2022-07-24.
  22. ^Luca, Casonato (2022-07-22)."Introduction Fresh 1.0 as new full stack web framework for Deno".Deno Blog. Retrieved2022-07-24.
  23. ^Casonato, Luca (2022-09-08)."Fresh 1.1 - automatic JSX, plugins, DevTools, and more".Deno Blog. Retrieved2022-09-10.
  24. ^Jiang, Andy (2023-04-04)."Announcing Deno SaaSKit: an open-source SaaS template built with Fresh".Deno Blog. Retrieved2022-04-04.
  25. ^"Announcing Deno 2".Deno Blog. 2024-10-09. Retrieved2024-10-27.
  26. ^"Deno Is Ready for Production".InfoQ. Retrieved2020-07-01.
  27. ^"Modules: ECMAScript modules | Node.js v17.6.0 Documentation".
  28. ^"Deno - A modern runtime for JavaScript and TypeScript".
  29. ^"Modules: ECMAScript modules | Node.js v17.6.0 Documentation".
  30. ^"Deno - A modern runtime for JavaScript and TypeScript".
  31. ^"Deno.js in Production. Key Takeaways".Medium.com. Retrieved16 May 2022.
  32. ^"Documentation".GitHub. 3 March 2022.
  33. ^"Deno raises $21M".deno.com. 21 June 2022. Archived fromthe original on 22 June 2022.
  34. ^"Releases".GitHub. 2020-12-30. Retrieved2021-01-14.
  35. ^"Releases".GitHub.
  36. ^"Releases".GitHub.

External links

[edit]
Code analysis
Supersets
Transpilers
Concepts
Debuggers
Doc generators
Editors(comparison)
Engines
Frameworks
Relatedtechnologies
Package managers
Module bundlers
Server-side
Unit testing frameworks(list)
People
Retrieved from "https://en.wikipedia.org/w/index.php?title=Deno_(software)&oldid=1278573738"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp