Skip to main content
Deno 1.41

Deno 1.41: smaller deno compile binaries

Deno’s goal is to simplify programming in as many environments as possible. In this 1.41 release, we’re excited to announce improvements that broaden how and where Deno can be used: we’ve roughly halved the size of deno compile binaries, as well as added an official Linux ARM 64 build. Additionally, we’ve continued to improve Node.js compatibility, the LSP to include better auto-completion, and Deno APIs.

If you already have Deno installed, upgrade to version 1.41 in your terminal with:

deno upgrade

If you don’t yet have Deno installed, you can install it with one of the following commands, or many other ways.

MacOS / Linux Install

curl -fsSL https://deno.land/install.sh | sh

Windows Install

irm https://deno.land/install.ps1 | iex

Here’s an overview of what’s new in Deno 1.41:

Smaller deno compile binaries

Since v1.6, deno compile has allowed you to compile your project into a single binary executable, which is useful for:

  • distributing and executing binaries on all major platforms without needing to install Deno or dependencies
  • packaging assets inside executable for more portability
  • simplifying deployment
  • achieving a faster startup time

Since then, we’ve continued to improve deno compile, by adding support for web workers and dynamic imports, as well as npm packages.

We’re happy to announce that this release brings a more lightweight build for deno compile binaries, making produced binaries up to 50% smaller!

In v1.40 a “Hello world” program compiled to a 116Mb binary on Mac ARM:

$ echo "console.log('Hello world');" > hello_world.ts

$ deno compile hello_world.ts
Check file:///Users/ib/dev/deno/hello_world.ts
Compile file:///Users/ib/dev/deno/hello_world.ts to hello_world

$ ls -lah hello_world
116M Feb 22 15:59 hello_world

In v1.41 the size of the same program is reduced to 58Mb:

$ deno upgrade
Looking up latest version
Found latest version 1.41.0

$ deno compile hello_world.ts
Check file:///Users/ib/dev/deno/hello_world.ts
Compile file:///Users/ib/dev/deno/hello_world.ts to hello_world

$ ls -lah hello_world
58M Feb 22 16:02 hello_world

We have futher plans to make the produced binaries even smaller in the future, as well as allowing you to compile a custom build of Deno with only the features you need.

Linux ARM64 support

Official Linux ARM64 builds were one of the most requested features by the Deno community. We are happy to announce that they are now available in Deno 1.41.

The official ARM64 binaries can be found in the Deno releases. Note that this update means our official Deno Docker image now also supports ARM64.

We’d like to thank Luke Channings who provided the community Linux ARM64 builds for the past 3 years.

ARM64 canary builds

In addition to stable Deno versions, you can also install a “canary” build, which is useful for testing the latest features and bug fixes, with:

deno upgrade --canary

Our canaries are released multiple times daily for each commit on main.

Starting from Deno 1.41, canary builds are available for Linux and Mac ARM64.

Updates to Node.js compatibility

We fixed serveral issues with Node.js compatibility in Deno 1.41. Here are some of the highlights:

Changes to Deno APIs

This release brings a few changes to the Deno APIs:

  • Deno.ConnectTlsOptions now supports cert and key properties to better align it with other “connect” APIs in Deno; that makes certChain and privateKey properties deprecated.

  • Deno.FsFile.isTerminal() and Deno.FsFile.setRaw() are now available to better support terminal I/O. Note that these methods only have effect if the opened is a TTY.

  • Deno.FsFile.lock() and Deno.FsFile.unlock() are now available to better support file locking. Synchronous counterparts are also available as Deno.FsFile.lockSync() and Deno.FsFile.unlockSync().

Language server improvements

This release brings better auto-completion triggers and more reliable version suggestions for npm: specifiers.

Additionally, a memory leak in the LSP was identified and fixed. The memory was leaked during linting and was proportional to the number of files and their size.

Thanks to Ian Bull for thorough profiling and investigation of the LSP internals that helped pinpoint the issue.

Thank you to our contributors!

We couldn’t build Deno without the help of our community! Whether by answering questions in our community Discord server or reporting bugs, we are incredibly grateful for your support. In particular, we’d like to thank the following people for their contributions to Deno 1.41: Alessandro Cosentino, Dan Rose, Florian Schwalm, Jason Ford, Javier Hernández, John Spurlock, Lino Le Van, restlessronin, zhanghengxin, 林炳权.

Would you like to join the ranks of Deno contributors? Check out our contribution docs here, and we’ll see you on the list next time.

Believe it or not, the changes listed above still don’t tell you everything that got better in 1.41. You can view the full list of pull requests merged in Deno 1.41 on GitHub here.

Thank you for catching up with our 1.41 release, and we hope you love building with Deno!

Want to try a modern package registry for JavaScript and TypeScript?

We’re looking for feedback. Join the waitlist.