Bun (一个快速全能的 JavaScript 运行环境)现已发布 1.3 版本。此次更新堪称迄今为止最大的一个版本,不仅实现了全栈开发能力,还推出了统一的数据库 API,并显著提升了运行时的整体性能。
Bun 1.3 引入了零配置前端开发模式,内置模块热替换功能并支持 React 快速刷新。开发人员现在可以直接通过 Bun 运行 HTML 文件,系统将自动处理 JavaScript、CSS 及 React 的转译与打包。开发服务器通过平台专属 API(如 macOS 的 kqueue 和 Linux 的 inotify)实现文件系统监听,无需任何额外配置即可实现热重载。当生产就绪时,运行 bun build --production 命令即可打包应用程序并生成优化后的输出文件。
Bun 1.3 的核心功能之一是 Bun.SQL,这是一个支持 MySQL、MariaDB、PostgreSQL 和 SQLite 的统一 API,而且完全不依赖外部组件。对于所有的数据库适配器,该 API 都提供了一致的语法,并且通过原生实现保持了高性能。下面是这种统一语法的示例:
import { sql, SQL } from "bun";const postgres = new SQL("postgres://[localhost/mydb](<http://localhost/mydb>)");const mysql = new SQL("mysql://[localhost/mydb](<http://localhost/mydb>)");const sqlite = new SQL("sqlite://data.db");const username = "test_user";const findUser = await sql`SELECT name, role, username FROM users WHERE username = ${username}`;
本次发布还引入了一个内置的 Redis 客户端,其性能比流行的 ioredis 包高出 7.9 倍以上。它支持所有的标准 Redis 操作。集群、流和 Lua 脚本功能计划在未来版本中实现。
对于此次发布,社区的反响褒贬不一,开发者们既表现出兴奋又流露出担忧。Hacker News 上的一篇讨论帖获得了 56 个赞,其中不乏积极评价,例如:
Bun 真是太棒了。我几乎不需要安装任何软件包,因为 Bun 内置的组件恰到好处,比如 SQL 、S3 ,现在连 Redis 也支持了。
在其他地方,Lobsters 上有评论者对性能基准测试提出了质疑,特别是关于编译后的 Bun 应用程序能比 nginx 更快地处理文件的说法。
Reddit 上一位用户评论说,对于生产应用,他们仍然有些问题需要解决:
在开发阶段,Bun 已经百分之百就绪。但在生产环境中,我仍然会不时地遇到各种问题。
Bun 1.3 通过单体库依赖项目录扩展了包管理功能,其设计灵感源自 pnpm 的目录特性。工作区现默认采用隔离安装模式,这样可以防止包访问未声明的依赖项。新增的 bun update --interactive 命令支持开发人员有选择性地更新依赖项,而 bun why 命令则可以解析依赖链。安全改进包括用于漏洞检测的 Scanner API,而 Socket 正在实现官方安全扫描器集成。
从早期版本迁移时,Bun 1.3 包含若干破坏性变更。最显著的是 Bun.serve() 的 TypeScript 类型已重构,尤其是对于 WebSocket 数据处理。若将 SQL 客户端作为函数而非带标签的模板字面量调用,现在会抛出错误。Bun 现在将 TypeScript 配置中的 "module": "Preserve" 作为默认值,而非自动检测(auto-detection)。要了解详细的迁移指南,请查阅 Bun 1.3 版本的发布说明。
该版本性能提升显著,Next.js 和 Elysia 等框架的 JavaScript 内存占用减少了 10% 至 30% 。AbortSignal.timeout 实现的速度提升了 40 倍,而通过 I/O 线程池优化,macOS 系统上 bun build 的性能提升了 60%。Express 基准测试显示性能提升 9%,Fastify 因 node:http 改进速度提升了 5.4%。
相较于 Node.js 和 Deno 等竞争对手,Bun 通过将常用功能直接打包到运行时环境中继续保持差异化优势。Node.js 需要单独安装数据库客户端、打包工具和测试套件,而 Bun 则开箱即用地提供了这些功能。
Bun 是一个基于 JavaScriptCore 构建的开源 JavaScript 运行时,由 Oven 开发,Jarred Sumner 及其团队维护。它旨在成为 Node.js 的直接替代方案,同时提供明显更快的性能和更好的开发体验。Bun 可以通过运行 bun upgrade 来升级,或按照 bun.sh 中的说明全新安装。
原文链接:





