Deno 1.21 has been released. This latest upgrade to the JavaScript/TypeScript runtime features improvements to the REPL (read-evaluate-print loop) and a move away from default type-checking.
The Deno REPL is a tool for prototyping and trying out new things. With Deno 1.21, an -–eval-file
flag can be used with the deno repl
subcommand. This flag allows for passing of a list of paths or URLs to files that will be executed before the REPL starts and is useful for building custom, specialized REPLs. Also, type checking has been disabled for imported modules in the REPL, leading to faster imports. And the REPL now has a global clear()
function that acts as an alias for console.clear
. This aligns with what is found in REPLs in many browsers, Deno’s developers said.
Deno 1.21 begins a path toward disabling type checking by default in deno run
. Type checking will need to be performed explicitly using a new deno check
subcommand. This change will be phased in gradually, with the new release adding a deno check
subcommand and a DENO_FUTURE_CHECK=1
environment variable that can be set to switch Deno into the new “no type check by default” mode that will become the default in the future.
Note that this change does not mean TypeScript support is being removed from Deno. In explaining the reasoning behind the change, Deno’s developers said recent years have shown the usefulness of annotating JavaScript code with type information. But type checking can be slow and impact application startup performance. Most developers already use an IDE that surfaces the results of type checking at development time. Additionally, JavaScript is on a path toward getting native type annotations.
Announced April 21, Deno 1.21 can be downloaded by current users via the deno upgrade
command. Instructions for new users can be found in release notes.
Other new features and improvements in Deno 1.21 include the following:
- Deno’s error-handling behavior is now aligned for uncaught exceptions in asynchronous event loop tasks like
setTimeout
,setInterval
, or event handlers to the browser. A global “error” event will be dispatched for uncaught exceptions in the above-mentioned APIs. - The unstable
Deno.upgradeHttp
API, which can be used to perform HTTP protocol switches, now supports protocol switches on HTTP servers running on top of Unix connections. - A
DENO_NO_PROMPT
environment variable has been added. When set, Deno will disable all interactive prompts, even when the output is an interactive terminal. This has an identical effect to specifying–-no-prompt
on all invocations to the denocode binary. - Built-in testing facilities have been improved. In one improvement,
deno test
will filter out stack frames coming from Deno's internal code and show the line of code where the error originates.