The team behind the Deno runtime for the JavaScript and TypeScript recently released Deno 1.5. This new version improves bundling time by using Rust-based JavaScript/TypeScript compiler swc, and further reduces bundle size with tree-shaking. Deno 1.5 implements the alert
, confirm
, and prompt
web platform APIs. This may allow developers to write simple interactive applications in the terminal.
Deno’s team refactored Deno’s TypeScript compiler infrastructure to use swc. The latter is a JavaScript/TypeScript compiler and bundler written in Rust. Swc claims to be 20 times faster than the Babel compiler on a single thread — and 70 times faster on one four-core benchmark. Deno 1.5’s release notes commented on the impact of swc on Deno’s compilation performance:
This has led to a 3x performance improvement when we type-check your code, and up to a 15x improvement if you use the
--no-check
flag.
The new tree-shaking abilities translate into reduced bundles. The release note gave an example of source code that saw a 35% size reduction when compiled with v1.5 instead of v1.4.
Bundles in Deno 1.5 are now emitted as standard ES modules. The release explained:
Dynamic imports will work correctly now, and
import.meta.url
is also set correctly. If you were using Deno to bundle code for the browser, make sure to load the bundle as an ES module now (type="module"
attribute on your<script>
tag).
The new Deno release implements the web platform APIs alert
, confirm
, and prompt
with similar semantics as in the browser. For instance, in the browser, Window.prompt
displays a dialog with an optional message prompting the user to input some text. In a Deno terminal, the prompt
function will similarly prompt the user and block synchronously till that input is received.
The mentioned APIs may allow developers to implement simple interactive interactions in the terminal. The release note provides a trivial example:
Prompting the user for input in Node.js may require that developers manipulate I/O streams directly (e.g., process.stdin
) or through a library.
The new Deno release also improves the REPL with the addition of several new features. Object properties and methods can be completed within the REPL by pressing the TAB key. Code may be syntax-highlighted if the terminal supports colors. The REPL also now supports top-level await instructions.
The release note details additional minor features that are part of the release. Developers who are interested may review the release note online.
Deno is open-source software available under the MIT license. Contributions are encouraged via the Deno Project and should follow the Deno contribution guideline.