简介
Bun v1.0.2 修复了许多错误并使其速度 bun --watch
更快。
感谢您报告问题。我们正在努力尽快修复它们。
Bun 是一个非常快速的 JavaScript 运行时、打包(bundler
)、转译器(transpiler
)和包管理器(package manager
)------多合一。我们最近对 Bun 发布了很多更改。以下是最近几个版本的回顾。万一你错过了:
安装
要安装 Bun:
curl
bash
curl -fsSL https://bun.sh/install | bash
npm
bash
npm install -g bun
brew
bash
brew tap oven-sh/bun
brew install bun
docker
bash
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun
内容
bunx @latest 总是获取最新版本
以前,如果以前未在 /tmp
文件夹中安装软件包(每 3 天或在重新启动时清除一次, bunx package@latest
在您的操作系统上挂起),则只会获取最新版本的软件包)。
现在, bunx package@latest
将始终获取最新版本的包。如果存在标记并且该 @
标记不是数字,它将在 npm 注册表中获取查询匹配版本的包。
bun --watch 更快
bun --watch <./path-to-file.ts>
允许您监视文件,并在文件或其任何导入更改时重新运行该文件。开发环境很有用
以前, bun --watch
会在更改时将任务排队到事件循环以重新加载进程。这意味着任何阻塞或长时间运行的任务都会延迟重新加载。
现在,它会立即重新加载。
在此 gif 中,当前时间戳(以毫秒为单位)在重新启动时打印到控制台。
bun run --slient 不再打印错误消息
bash
bun run --silent bash -c 'exit 1'
以前:
bash
error: "bash" exited with code 1
以后:
bash
# nothing!
Bun现在使用 V8的日期解析器
Bun 现在使用 V8
的 Date 解析器(Date parser
)。这意味着日期解析在 Bun 中的行为与在 Chrome 和 Node.js 中的行为相同。
以前
javascript
Date.parse("2020-09-21 15:19:06 +00:00"); // Invalid Date
以后
javascript
Date.parse("2020-09-21 15:19:06 +00:00"); // 1600701546000
修复了许多错误,其中日期解析在 Bun 中失败,但在 Node.js 中正常
URL.canparse
已实现
该 URL
类现在有一个静态 canParse
方法,如果可以解析 URL,则返回该方法, false
否则返回 true
。URL: canParse() static method - Web APIs | MDN (mozilla.org)
javascript
URL.canParse("https://example.com"); // true
URL.canParse("https://example.com:8080"); // true
URL.canParse("apoksd!"); // false
URL.canParse
是 Web 平台中相对较新的新增功能。在撰写本文时,它还在Chrome或Firefox中可用。
urlsearchparams.size
已实现
该 URLSearchParams
类现在有一个属性,该 size
属性返回搜索参数中的键/值对数。
javascript
const params = new URLSearchParams("a=1&b=2&c=3");
params.size; // 3
URLSearchParams.prototype.size
是 Web 平台中相对较新的新增功能。URLSearchParams: size property - Web APIs | MDN (mozilla.org)
修复 bun run
以前, bun run
将始终加载 tsconfig.json 文件。这意味着,当 tsconfig.json
配置错误,会导致 bun run
失败,这是完全没有必要的。此问题已修复。
修复 node:stream
当传递给函数时 encoding
write
,不会调用 。 callback
此问题已修复。
修复 fetch中传递data参数的错误
以前,无效 data:
, URL 会在 中 fetch
抛出异常。这与 Node 不一致.js后者会在 URL 中留下不正确的数据。多亏了@davidmhewitt,此问题已得到修复。链接
Bugfix node:readline
修复了导致终端在 WSL 上挂起的错误 node:readline
。 #5435 链接
Bugfix node:dns
已修复 node:dns
中 resolve
函数引发的崩溃问题 #5200 链接
os.availableParallelism()
已实现
模块 node:os
现在有一个属性,该 availableParallelism 属性返回进程可用的逻辑 CPU 数。
javascript
os.availableParallelism(); // 8
您也可以使用 navigator.hardwareConcurrency
.
Bugfix Bun.serve()
修复了在开始读取流之前将所有数据排队时可能发生的崩溃。发生此崩溃是因为代码缺少对 JavaScript 函数是否为可调用对象的检查。 #5321 链接
Bugfix 设置Cookie 传递参数错误
在某些情况下, node:http
中设置 set-cookie
标头设置可能不正确的bug, 已得到修复。
node:fs
支持并发
以前,只有少数 node:fs
函数是并发的。现在,他们都是。
可删除的setTimeout 和其他全局变量
大多数全局变量现在是可配置/可删除的,这修复了影响某些库和 ExecJS 的问题。
Bugfix Fastify
Fastify在初始化期间循环遍历require.cache
。之前在require.cache
中包含了尚未完成评估的ES Modules
,这导致Fastify出现了部分故障。现已修复。
Bugfix CRLF终止文件中多行字符串 修复
Bugfix Bun.file()
当文件的长度小于 的大小 Bun.file()
时,文件有时无法完成读取。已修复。
Bugfix node:tty
已修复 WritableStream.prototype.getColorDepth
有时引发异常的错误。
Transpiler bugfix 将非ASCII正则表达式字面量转换为latin1编码
内部变化
我们从LLVM 15和Clang 15升级到LLVM 16和Clang 16
最后,让我们一起期待,bun
发展更好