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 发展更好

相关推荐
小行星1253 分钟前
前端把dom页面转为pdf文件下载和弹窗预览
前端·javascript·vue.js·pdf
Lysun00112 分钟前
[less] Operation on an invalid type
前端·vue·less·sass·scss
J总裁的小芒果27 分钟前
Vue3 el-table 默认选中 传入的数组
前端·javascript·elementui·typescript
Lei_zhen9630 分钟前
记录一次electron-builder报错ENOENT: no such file or directory, rename xxxx的问题
前端·javascript·electron
咖喱鱼蛋32 分钟前
Electron一些概念理解
前端·javascript·electron
yqcoder34 分钟前
Vue3 + Vite + Electron + TS 项目构建
前端·javascript·vue.js
鑫宝Code1 小时前
【React】React Router:深入理解前端路由的工作原理
前端·react.js·前端框架
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
永乐春秋3 小时前
WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性
前端
鸽鸽程序猿3 小时前
【前端】CSS
前端·css