2025年3月15日,由 Node.js 创始人 Ryan Dahl 打造的 JavaScript/TypeScript 运行时 Deno 发布了 2.9 版本。作为进入 2025 年后的第二次重大更新,Deno 2.9 不仅延续了“兼容、安全、开箱即用”的设计哲学,更在兼容性、开发体验和新兴技术领域(如 AI 数据科学)上迈出了关键一步。

一、Node.js 兼容性再攀高峰:node:inspector 与模块解析大幅优化

Deno 2.0 以来,团队便将“无缝迁移 Node.js 项目”作为核心目标。本次更新中,node:inspector 模块(调试器协议)得到全面实现,这意味着使用 Node.js 调试工具的第三方库(如 debugndb)可以在 Deno 中直接运行,无需任何改装。此前因调试协议缺失导致的“只能运行不能调试”痛点终于解决。

此外,npm: 导入机制引入了 智能缓存预检符号链接解析优化。当从 npm 注册表拉取依赖时,Deno 会先检查本地缓存中是否存在兼容的二进制文件,避免对已安装包进行重复下载或解压。对于 require() 调用场景(仍处于实验阶段),新版提升了同时包含 .js.ts.mjs 文件时的模块查找效率,据官方基准测试,在 express 等大型框架的启动时间上比 2.8 版本快约 18%。

二、内置 Jupyter 内核:Deno 成为数据科学新选择

Deno 2.9 最令人瞩目的新特性是其自带的 Jupyter 内核支持。用户只需运行 deno jupyter --kernel 即可将 Deno 注册为 Jupyter Notebook 的运行时内核。借助 Deno 的 TypeScript 原生支持和标准库中的 MathWebSocket 等 API,数据科学家可以在笔记本中直接使用最新的 ECMAScript 语法,并通过 npm: 导入 Python 常用的 numpypandas 的 JavaScript 移植版本(如 numjsdataframe-js)。

“过去,数据科学家必须在 Python 和 JavaScript 生态中二选一,”Deno 团队在公告中写道,“现在,Deno 的 Jupyter 内核让你既享受 TypeScript 的类型安全性,又能用上丰富的可视化库(如 Observable Plot)。” 该特性尤其适合需要在前端渲染和数据分析之间频繁切换的全栈开发者。

三、TypeScript 5.5 全面集成,deno compile 支持 ARM64 Windows

随着 TypeScript 5.5 于今年 2 月发布(支持推断类型谓词、控制流窄化增强),Deno 2.9 第一时间将其集成至运行时与 deno lint 中。开发者现在可以直接使用 const 类型参数等最新语法,无需等待任何转译步骤。

另一个值得关注的开发者体验改进是 deno compile 工具。除了 macOS、Linux 通用版本外,该命令现在可以为 ARM64 架构的 Windows 系统(如 Surface Pro X 或树莓派 4 运行 Windows)生成单独可执行文件。同时,--include 选项新增了通配符支持,方便将静态资源(.html.svg)一并打包进二进制。

四、权限系统与安全性:细粒度文件访问控制

Deno 一直以安全沙箱著称。2.9 版本中,--allow-read--allow-write 标志现在支持 否定路径模式。例如 --deny-read=/etc/passwd 可以在允许读取项目目录的前提下,专门锁定敏感系统文件。权限申请的提示信息也变得更加友好,当程序尝试访问被禁止的资源时,终端会输出一个包含建议 --allow- 参数的可复制命令。

此外,内置的 fetch API 现在默认拒绝自签名证书(除非显式声明 DENO_TLS_CA_STORE=mozilla),这减少了无意间暴露数据中间人攻击的风险。

五、社区与生态:2.9 升级指南

Deno 2.9 的升级路径十分平滑。用户只需运行 deno upgrade,即可自动拉取最新二进制。对于积极使用 npm 兼容性的项目,官方建议检查 npm: 导入的版本声明,因为部分旧版 npm 包(如 @aws-sdk/client-s3 的某些子模块)需要 Node.js 16+ 特性,这在 Deno 2.9 中已完全被 polyfill 覆盖。

根据开发者调查,目前 Deno 在 Web 服务器构建、CLI 工具开发和小型微服务场景中的采用率持续上升。2.9 版本的数据科学特性有望吸引更多来自 Python 社区的目光,虽然短期难以撼动 Python 的主导地位,但 “Deno 数据科学” 的试验性生态已初具雏形。

结语

从 Node.js 兼容到 Jupyter,Deno 2.9 展现了运行时“不设限”的野心。它既是一款追求性能与安全的工程工具,也在积极向跨语言、跨领域平台进化。对于关注 TypeScript 现代化开发或希望摆脱复杂构建配置的团队而言,Deno 2.9 值得立即尝试升级。