Deno 1.21 improves REPL, error handling

Latest release of the JavaScript and TypeScript runtime also begins phasing in not type checking by default.

Deno 1.21 improves REPL, error handling
Getty Images

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.

Copyright © 2022 IDG Communications, Inc.