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

相关推荐
css趣多多16 分钟前
案例自定义tabBar
前端
林的快手2 小时前
CSS列表属性
前端·javascript·css·ajax·firefox·html5·safari
匹马夕阳2 小时前
ECharts极简入门
前端·信息可视化·echarts
API_technology2 小时前
电商API安全防护:JWT令牌与XSS防御实战
前端·安全·xss
yqcoder3 小时前
Express + MongoDB 实现在筛选时间段中用户名的模糊查询
java·前端·javascript
十八朵郁金香3 小时前
通俗易懂的DOM1级标准介绍
开发语言·前端·javascript
m0_528723814 小时前
HTML中,title和h1标签的区别是什么?
前端·html
Dark_programmer4 小时前
html - - - - - modal弹窗出现时,页面怎么能限制滚动
前端·html
GDAL4 小时前
HTML Canvas clip 深入全面讲解
前端·javascript·canvas
禾苗种树4 小时前
在 Vue 3 中使用 ECharts 制作多 Y 轴折线图时,若希望 **Y 轴颜色自动匹配折线颜色**且无需手动干预,可以通过以下步骤实现:
前端·vue.js·echarts