Bun@1.0.2 更新

简介

Bun v1.0.2 修复了许多错误并使其速度 bun --watch 更快。

感谢您报告问题。我们正在努力尽快修复它们。

Bun 是一个非常快速的 JavaScript 运行时、打包(bundler)、转译器(transpiler)和包管理器(package manager)------多合一。我们最近对 Bun 发布了很多更改。以下是最近几个版本的回顾。万一你错过了:

  • v1.0.0 Bun的第一个稳定版本!
  • v1.0.1 命名导入.json和.toml文件,bug修复到bun安装,node:path,缓冲区

安装

要安装 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 否则返回 trueURL: 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:dnsresolve 函数引发的崩溃问题 #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终止文件中多行字符串 修复

#5318 链接

Bugfix Bun.file()

当文件的长度小于 的大小 Bun.file() 时,文件有时无法完成读取。已修复。

#5186 链接

Bugfix node:tty

已修复 WritableStream.prototype.getColorDepth有时引发异常的错误。

#5468 链接

Transpiler bugfix 将非ASCII正则表达式字面量转换为latin1编码

#5468 链接

内部变化

我们从LLVM 15和Clang 15升级到LLVM 16和Clang 16


最后,让我们一起期待,bun 发展更好

相关推荐
weixin_4316004434 分钟前
做 Agent 会用到的 Node API(3):异步与流
前端·学习·ai·agent·ai编程
程序员黑豆39 分钟前
鸿蒙应用开发之生命周期方法完全指南
前端·harmonyos
一点一木39 分钟前
第 23 届 ChinaJoy 刚结束,我把 965 个展台做成了 3D 云展馆
前端·人工智能
wordbaby42 分钟前
前端请求缓存写了,同一个接口为什么还是打了十几次?
前端·promise
不可能掉发42 分钟前
Env Guard:让浏览器一眼分清生产、测试和开发环境
前端·javascript·chrome·测试工具·html·开源软件·个人开发
饼干哥哥1 小时前
Codex 必改的8 个基础配置
前端·人工智能·后端
ClouGence1 小时前
AI Agent 能写测试、跑流程,为什么回归测试还不能完全交给 AI?
前端·测试
码云之上1 小时前
Context Engineering:让 Agent 在当前步骤看到正确的事实
前端·人工智能·前端工程化
烂蜻蜓1 小时前
Node.js入门教程(一):初识Node.js——服务端JavaScript的诞生与特点
开发语言·javascript·node.js
嘟嘟07171 小时前
从手写 HashRouter 到 React Router:逐层拆解 SPA 前端路由的完整实现
前端·javascript