跳到主要内容
Deno 2 终于来了 🎉️
了解更多
Deno 1.41

Deno 1.41:更小的 deno compile 二进制文件

Deno 的目标是在尽可能多的环境中简化编程。在这个 1.41 版本中,我们很高兴地宣布了一些改进,这些改进扩展了 Deno 的使用方式和使用场所:我们已经将 deno compile 二进制文件的大小缩减了大约一半,并添加了 官方 Linux ARM 64 版本。此外,我们还继续改进 Node.js 兼容性、LSP 以包含更好的自动完成以及 Deno API。

如果您已经安装了 Deno,请在终端中使用以下命令升级到 1.41 版本

deno upgrade

如果您还没有安装 Deno,可以使用以下命令之一安装它,或者 使用其他许多方法

MacOS / Linux 安装

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

Windows 安装

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

以下是 Deno 1.41 中新增功能的概述

更小的 deno compile 二进制文件

自从 v1.6 以来,deno compile 允许您将项目编译成单个二进制可执行文件,这对于以下情况非常有用

  • 在所有主要平台上分发和执行二进制文件,而无需安装 Deno 或依赖项
  • 将资产打包在可执行文件中,以提高可移植性
  • 简化部署
  • 实现更快的启动时间

此后,我们通过添加 对 Web 工作线程和动态导入的支持 以及 npm 包支持,继续改进 deno compile

我们很高兴地宣布,此版本为 deno compile 二进制文件带来了更轻量级的构建,使生成的二进制文件的大小最多缩小 50%!

在 v1.40 中,一个“Hello world”程序在 Mac ARM 上编译成一个 116Mb 的二进制文件

$ 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

在 v1.41 中,相同程序的大小减少到 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

我们计划在未来进一步缩小生成的二进制文件的大小,并允许您使用仅包含所需功能的自定义 Deno 构建进行编译。

Linux ARM64 支持

官方 Linux ARM64 版本是 Deno 社区最需要的功能之一。我们很高兴地宣布,它们现在在 Deno 1.41 中可用。

官方 ARM64 二进制文件可以在 Deno 版本 中找到。请注意,此更新意味着我们的 官方 Deno Docker 镜像 现在也支持 ARM64。

我们感谢 Luke Channings 在过去三年为社区提供了 Linux ARM64 版本。

ARM64 预览版本

除了稳定的 Deno 版本,您还可以安装“预览”版本,这对于测试最新功能和错误修复非常有用,可以使用以下命令:

deno upgrade --canary

我们的预览版本 每天发布多次,用于 main 上的每个提交。

从 Deno 1.41 开始,Linux 和 Mac ARM64 可用预览版本。

Node.js 兼容性更新

我们在 Deno 1.41 中修复了几个与 Node.js 兼容性相关的问题。以下是一些亮点

Deno API 更改

此版本对 Deno API 做了一些更改

  • Deno.ConnectTlsOptions 现在支持 certkey 属性,以更好地将其与 Deno 中的其他“连接”API 对齐;这使得 certChainprivateKey 属性已弃用。

  • Deno.FsFile.isTerminal()Deno.FsFile.setRaw() 现在可用,以更好地支持终端 I/O。请注意,这些方法仅在打开的是 TTY 时才有效。

  • Deno.FsFile.lock()Deno.FsFile.unlock() 现在可用,以更好地支持文件锁定。同步对应项也可用,如 Deno.FsFile.lockSync()Deno.FsFile.unlockSync()

语言服务器改进

此版本带来了更好的自动完成触发器,以及对 npm: 说明符更可靠的版本建议。

此外,还发现并修复了 LSP 中的内存泄漏问题。内存泄漏发生在代码 linting 期间,并且与文件数量及其大小成正比。

感谢 Ian Bull 对 LSP 内部进行了彻底的分析和调查,这有助于查明问题所在。

感谢我们的贡献者!

没有社区的帮助,我们无法构建 Deno!无论是在社区 Discord 服务器 上回答问题,还是 报告错误,我们对您的支持都深表感谢。特别是,我们要感谢以下人员对 Deno 1.41 的贡献:Alessandro Cosentino、Dan Rose、Florian Schwalm、Jason Ford、Javier Hernández、John Spurlock、Lino Le Van、restlessronin、zhanghengxin、林炳权。

您想加入 Deno 贡献者行列吗?查看我们的贡献文档,我们下次将在列表中看到您。

信不信由你,上面列出的更改仍然没有告诉您 1.41 中的所有改进。您可以在 GitHub 上查看 Deno 1.41 中合并的所有拉取请求

感谢您关注我们的 1.41 版本发布,希望您喜欢使用 Deno 进行构建!

想尝试一个用于 JavaScript 和 TypeScript 的现代包注册表吗?

我们正在寻求反馈。加入候补名单