Bun 1.2大更新强化Node.js相容性,原生支援S3与PostgreSQL

轻量级JavaScript执行环境

由于Node.js与Bun的JavaScript引擎不同,Node.js采用Chrome V8,Bun则使用Safari的JavaScriptCore,而Bun开发团队现在于JavaScriptCore中实作了V8的公开C++ API,让原本依赖这些API的C++套件,也能在Bun环境运作。

除了Node.js相容性外,Bun 1.2原生支援S3与Postgres也是这次更新的一大亮点。Bun 1.2新增了Bun.s3 API,让开发者能直接操作S3,支援读取、写入、删除档案,以及产生预签章URL等操作。开发团队表示,因为Bun.s3 API采用原生程式码编写,读取效能为使用JavaScript SDK的5倍。此外,Bun 1.2更进一步将S3整合进现有的Bun.file() API中,开发者透过使用s3://协定,就可直接存取S3上的档案,简化了开发流程。

而对于PostgreSQL资料库,Bun 1.2也提供了内建的Bun.sql客户端,支援以标签模板语法执行SQL查询,并自动处理字串跳脱(Escape),避免SQL注入风险。Bun.sql同样以原生程式码开发,并针对效能进行最佳化,因此Bun.sql可比其他PostgreSQL客户端快50%(下图)。官方还预告,他们很快也会支援MySQL。

在套件管理方面,Bun 1.2将预设的锁定档(Lockfile)格式从二进位的bun.lockb改为文字格式的bun.lock。新的bun.lock采用JSONC格式,支援注解与尾逗号(Trailing commas),更易于人工阅读与版本控制系统比对差异。不过,Bun 1.2仍将维持向下相容支援bun.lockb。开发团队强调,即使bun.lock是文字格式,但bun install的效能仍比前一版本提升30%。