Bun v0.6.0 发布,Zig 编写的 JavaScript 运行时


根据官方说法,Bun 0.6.0 版本是迄今为止 Bun 最大的一个更新版本。

最新版本的 Bun 现在有一个内置的 JavaScript 和 TypeScript 捆绑器和简化器,可以用它来捆绑前端应用程序或将你的代码捆绑成一个独立的可执行文件。

Bun 0.6.0 也一直在忙着提高性能和修复 bug:writeFile()在 Linux 上的速度提高了 20%、对Node.js 兼容性和 Web API 兼容性进行了大量的 bug 修复、支持 TypeScript 5.0 语法,并对bun install进行了各种修复。

新的 JavaScript bundler & minifier

这个版本的重点是 Bun 的新 JavaScript Bundler(捆绑器),但捆绑器只是一个更大项目的开始。在接下来的几个月里,Bun 将发布Bun.App—— 一个 "超级 API",将 Bun 的 native-speed 捆绑器、HTTP 服务器和文件系统路由缝合成一个整体。

可以使用bun build CLI 命令或新的Bun.build() JavaScript API 来使用。

JavaScript

Bun.build({
entrypoints: ["./src/index.tsx"],
outdir: "./build",
minify: true,
// ...
});

CLI

bun build ./src/index.tsx --outdir ./build --minify

独立的可执行文件

现在你可以用bun build来创建独立的可执行文件。

bun build --compile ./foo.ts

这让你可以将你的应用程序作为一个可执行文件发布,而不需要用户安装 Bun。

你也可以将其缩小,以提高大型应用程序的启动性能:

bun build --minify --compile ./three.ts
[32ms]minify-123 KB (estimate)
[50ms]bundle456 modules
 [107ms] compilethree

这是由 Bun 的新 JavaScript 捆绑器和简化器提供的。

import.meta.main

现在你可以使用import.meta.main来检查当前文件是否是启动 Bun 的入口点。这对 CLI 很有用,可以确定当前文件是否是启动应用程序的。

例如,如果你有一个名为index.ts的文件:

index.ts

console.log(import.meta.main);

然后你运行它:

$ bun ./index.ts
true

但如果你导入它:

import "./index.ts";

并运行它:

$ bun ./other.ts
false

bun test的改进

  • bun test现在报告运行测试的时间
  • describe.skip已经实现
  • 实现了expect().toBeEven()expect().toBeOdd()

在 Linux 上实现更快的 fs.writeFile

fs.writeFile 在 Linux 上处理大文件的速度提高了 20%

转译器改进

这个版本还引入了许多对转译器的改进。以下是其中的一些亮点:

  • 解析器支持 TypeScript 5.0。
  • 解析器支持导入属性。
  • 一些 npm 包出现了 ReferenceError: Cannot access uninitialized variable 的错误,这是由于 Bun 的转译器中存在循环导入的错误。这一点已被修复。
  • 支持// @jsx// @jsxImportSource// @jsxFragment注释
  • ……

更多详情可查看:https://bun.sh/blog/bun-v0.6.0


相關推薦

2023-06-05

Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。 所谓"all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (nati

2023-06-15

Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。 所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (nat

2023-02-27

Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (nativ

2023-08-25

>>> Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。 所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包

2022-10-18

Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。 所谓 "all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (n

2023-10-05

n 1.0 发布了第 4 个补丁更新:1.0.4。 Bun 是速度极快的 JavaScript 运行时,采用 Zig 编写,集打包器、转译器和包管理器于一身。 此版本修复了 62 个错误,添加了server.requestIP,支持运行时插件中的虚拟模块,并降低了Bun.serve()

2023-09-10

2022年9月8日,Javascript运行时Bun正式发布1.0版本,标志着这个由前Facebook工程师创建的项目正式进入稳定生产可用阶段。 Bun的愿景是通过深度整合,让Javascript开发“快如闪电”。这个新生力量是否能撼动Javascript界老牌霸主Node的

2023-09-17

Bun 上周发布了 1.0 正式版,标志着这个由前 Facebook 工程师创建的项目正式进入稳定生产可用阶段。 在过去的一周里,开发团队积极修复错误,现在已经发布了第 2 个补丁更新:Bun v1.0.2。 此版本修复了许多错误,以及提升bun

2023-09-24

要被干掉? Bun 发布了其最新版本 v1.0.3,这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题,还引入了一系列令人期待的新功能。 首先,Bun 在这个版本中增加了对

2023-11-09

Bun 公司正在招聘运行时工程师。Bun 是速度极快的 JavaScript 运行时,采用 Zig 编写,集打包器、转译器和包管理器于一身。 任职要求 在系统编程语言如Zig或C/C++方面有丰富的经验 对互联网技术如JavaScript/TypeScript和HTTP有深

2022-08-26

新兴的 JavaScript 运行时 Bun 宣布已经获得了一些支持资金。公告指出,旨在支持该项目并将其商业化而成立的公司 Oven 已经筹集了 700 万美元的资金,由风险投资机构 Kleiner Perkins 领投。 Bun 的作者 Jarred Sumner 花了

2023-09-17

borepo 宣布已对 Bun 提供测试版支持。 Bun 是 Zig 编写的 JavaScript 运行时,上周发布了 1.0 正式版,标志着这个由前 Facebook 工程师创建的项目正式进入稳定生产可用阶段。 使用方法 运行bun i -g turbo@latest 命令 运行bu

2023-10-26

Bun Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (native bundler)、转译器、t

2023-09-14

缓存层、多阶段构建以最小化镜像,以及无论是否使用 JavaScript 构建环境所需的所有依赖项。 支持 Bun Bun 是 Zig 编写的 JavaScript 运行时,近日正式发布 1.0 正式版本。此版本支持使用 Bun 作为 JavaScript 运行时来生成新应