Bun 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Bun 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Bun 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 白开水不加糖
适用人群 未知
收录时间 2022-08-30

软件简介

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

Bun 是一个新的:

  • 带有 Web API 的 JavaScript 运行时,内置fetchWebSocketAPI。bun 嵌入了 JavaScriptCore,它往往比 V8 等更流行的引擎更快且内存效率更高(尽管更难嵌入)
  • JavaScript/TypeScript/JSX 转译器
  • JavaScript 和 CSS 打包器
  • package.json 脚本的任务运行器
  • npm 兼容的包管理器

Bun 的 HTTP 服务器基于 Request 和 Response 等 Web 标准:

// http.js
export default {
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
};

Bun 完全从零开始构建,对标的项目是 Node.js 和 Deno 这类现代化的 JavaScript 运行时。

Bun 旨在替代当前的 JavaScript 和 TypeScript 应用程序或脚本,原生实现了数百个 Node.js 和 Web API,包括约 90% 的 Node-API 函数(native modules)、fs、path、Buffer 等。

Bun 的目标是在浏览器之外运行世界上大多数 JavaScript,为未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发人员的生产力。

  • 内置了诸如 fetch、WebSocket 和 ReadableStream 等Web API
  • node_modules bun 实现了 Node.js 的模块解析算法,因此你可以在 Bun 中使用 npm 包。支持ESM和CommonJS,但Bun内部使用ESM
  • 在 Bun中,每个文件都是转译的。TypeScript和JSX就可以使用
  • Bun支持来自tsconfig.json文件的 "paths"、"jsxImportSource "等。
  • Bun.Transpiler Bun的JsX和TypeScript转译器在Bun中作为API可用。
  • 使用Bun.write提供的最快系统调用来写入、复制、管道、发送和克隆文件。
  • Bun自动从.env文件加载环境变量。不再需要 require("dotenv").config()
  • Bun提供了一个快速的SQLite3客户端,内置bun:sqlite。
  • Node-API Bun实现了大部分的Node-API(N-API)。许多Node.js原生模块都可以使用
  • bun:ffi 使用Bun的低开销外部函数接口从JavaScript调用 native code。
  • node:fs node:path Bun原生支持越来越多的Node.js核心模块,以及像Buffer和process这样的globals。

性能测试结果对比:

▲ 服务器端渲染(每秒的 HTTP 请求数)

▲ 加载大型数据表(每秒的平均请求数)

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(3) 发布并加入讨论🔥
发表了资讯
06/21 10:10

Bun 在解码 Base64 方面比 Node.js 22 快得多,但两者都依赖于相同的库

在最近的一则推文中,计算机科学家 Daniel Lemire 指出,JavaScript 运行时 Bun 在解码 Base64 输入时,比 Node.js 22 快了数倍。尽管两者都依赖于同一个底层库 simdutf 来进行实际解码,但 Node.js 在与其底层 JavaScript 引擎 v8 交互时遇到了瓶颈。 Lemire 详细解释了问题的根源在于 Node.js 在开始解码字符串之前,需要通过调用 String::Value 函数来获取字符串的值。这一步操作会在 Node.js 内部分配一个数组,并要求 v8 将...

2
1
发表了资讯
05/31 11:49

Bun 的五月更新:性能提升与内存优化

在刚刚过去的五月,Bun团队只发布了三个小版本更新(v1.1.8、v1.1.9和v1.1.10),在不断优化性能和提升稳定性的同时,也为开发者带来了许多新的功能和改进。这些更新不仅修复了大量的bug,还对关键功能进行了显著的优化,尤其是fetch函数的内存使用效率。 主要更新内容概述 这三次更新总共修复了超过140个bug,涉及从Windows平台稳定性到Node.js兼容性的各个方面。以下是几个关键改进: 异常处理改进:添加了对process.on("unc...

0
2
发表了资讯
05/06 11:24

Bun 1.1 系列版本频繁更新,不断修复问题改进性能

自从 Bun 1.1 版本发布以来的一个多月里,Bun 开发团队持续高频率地推出了多个小版本更新,从 1.1.1 一直到最新的 1.1.7,累计修复了上百个 bug,满足了大量用户的需求。 在这一系列的更新中,Bun 的安装依赖速度和可靠性得到了显著提升,尤其是在 Windows 平台上。开发者们优化了 TypeScript 的解析和编译,修复了多个会导致"不可达代码"错误的缺陷。此外,Bun 还改进了错误信息的显示方式,避免冗长的代码片段占满终端。 Bun ...

3
3
发表了资讯
04/02 10:51

Bun 1.1 版本震撼发布,Windows 支持来了

JavaScript开发者们瞩目已久的Bun 1.1版本终于正式发布了!这次大版本更新带来了一系列令人兴奋的新特性和显著的性能提升,将为开发者们提供更加顺畅、高效的开发体验。 首先,让我们为Bun 1.1支持Windows而欢呼吧!是的,你没有看错,现在Windows开发者也能享受到Bun带来的极速体验了。通过一行简单的PowerShell命令,即可在Windows 10及以上系统安装Bun。更令人惊喜的是,Bun在Windows上的测试覆盖率已经达到了98%,这意味着你...

7
6
发表了资讯
02/04 09:28

Bun 1.0.26 版本发布:Windows 版即将在 2 月 15 日发布

近日,Bun的开发者Jarred Sumner宣布了JavaScript运行时环境Bun的最新版本——1.0.26的发布。Bun不仅是一个运行时环境,还集成了打包器、转译器和包管理器的功能。在这个新版本中,Bun带来了一系列的改进和修复,包括解决了30个bug,增加了对bun:sqlite中多语句查询的支持,提升了bun --watch在长时间运行中的可靠性,以及对Bun.FileSystemRouter的路由数量进行了扩展。 具体到功能改进上,Bun 1.0.26版本增加了对bun:sqlite多语...

3
1
发表了资讯
01/26 11:19

JavaScript 运行时 Bun 引入新工具:Bun Shell

近日,Bun 开发团队宣布推出新工具:Bun Shell。Bun Shell 是 Bun 新引入的实验性嵌入式语言和解释器,支持在 JavaScript 和 TypeScript 中运行跨平台 Shell 脚本,不需要额外的转换和打包。 在 Bun Shell 中,所有模板变量都会自动转义,以增加 Shell 指令执行的安全性。另外,诸如通配符、重定向、管道命令 (Pipe)、环境变量等常见 Shell 功能,Bun Shell 也一应俱全。 Bun 是速度极快的 JavaScript 运行时,采用 Zig 编写,集...

4
4
发表了资讯
01/17 10:04

Bun 1.0.23 版本发布,打包部署更便捷

Bun这个兼具运行时、打包工具、转译器和包管理器多重功能的JavaScript工具,在日前迎来了1.0.23版本的更新。本次更新针对社区反馈修复了40个bug,共计获得了194个赞。更新使Bun在打包部署等方面的易用性有所提升。 引入SQLite数据库:轻松管理数据 Bun v1.0.23的一大亮点是引入了对SQLite数据库的支持。开发者现在可以直接在Bun中导入SQLite数据库,极大简化了在项目中使用SQLite的流程。通过简单的import语句,开发者能够轻松导...

3
0
发表了资讯
01/10 15:46

Bun 1.0.22 版本发布,提升性能和兼容性

Bun 1.0.22版本终于面世了!这个小巧玲珑的JavaScript运行时可谓是编程界的“黑马”,短短一年多时间就以其独特的魅力吸引了众多开发者。这一次的更新再次印证了Bun背后的团队充满激情与执着,他们一如既往地致力于让Bun成为JavaScript开发的“瑞士军刀”。那么,这一期的更新又带来了哪些惊喜呢?让我们来一一揭晓。 首先,解决了在Vercel上安装时遇到的问题。我们都知道,Vercel是前沿的无服务器平台,可以让开发者零配置部署应...

1
1
发表了资讯
01/02 17:32

Bun 1.0.21 版本发布,实现 console.table(),优化大文件上传性能

Bun发布了1.0.21版本。不仅包含了多项改进和性能优化,还特别在处理大文件上传时引入了一项关键的内存优化技术:写时复制(Copy-on-write)。这次更新修复了33个bug,并处理了80个👍反应,体现了对用户反馈的积极响应。新增功能如console.table(),为开发者调试提供了极大的便利。此外,Bun对Bun.write、Bun.file和bun:sqlite等模块进行了内存优化,提升了整体性能。 在bun:sqlite错误信息处理方面,此更新使错误信息更加详细...

2
1
发表了资讯
2023/12/24 08:54

Bun 1.0.19 版本更新:重要的性能优化与功能改进

Bun的最新版本1.0.19为JavaScript和TypeScript运行环境带来了一系列重要更新。这个版本在性能、兼容性和可用性方面进行了显著改进,解决了多个问题,并提高了整体的开发者体验。 增强的TypeScript支持:@types/bun Bun 1.0.19中的一个突出更新是重新引入@types/bun,此前称为bun-types。这一变化极大地简化了Bun与TypeScript的整合,解决了先前实现中的一些问题。开发者不再需要为Bun特别配置tsconfig.json,而新包无缝重导出@...

1
1
发表了资讯
2023/11/24 12:30

Bun 1.0.14 版本发布:快速文件匹配、改进的依赖安装与错误消息处理

Bun的最新版本1.0.14带来了对这个JavaScript运行环境的重大改进和新功能。一个重要的新增功能是Bun.Glob,这是一个用于匹配文件和字符串的快速API,使用glob模式。这个功能比流行的Node.js库(如fast-glob或micromatch)的类似功能快三倍。 此更新还解决了在执行bun install时遇到的关键竞争条件问题。这个问题源于创建用于安装依赖项的临时文件名时的一个错误,偶尔会导致在同时提取多个版本的同一包时安装依赖失败。 此外,新...

2
0
发表了资讯
2023/11/17 14:13

Bun v1.0.12 版本发布:功能升级与错误修复

Bun技术团队近期推出了其JavaScript运行时、包管理器、打包器和测试运行器的升级版本——Bun v1.0.12。该版本在修复了24个安全漏洞的基础上,引入了多项创新功能和重大改进,以增强用户体验并提高与Node.js的兼容性。 Bun v1.0.12的一个显著新特性是bun -e命令的加入,允许开发者在不创建文件的情况下直接运行脚本。这极大提升了编写和测试小型脚本的便利性和灵活性。此外,此版本通过bun --env-file命令的引入,使得用户可以指...

0
1
发表了资讯
2023/11/08 10:36

Bun 招募运行时工程师,要求 C/C++ 或 Zig 经验,可远程

Bun 公司正在招聘运行时工程师。Bun 是速度极快的 JavaScript 运行时,采用 Zig 编写,集打包器、转译器和包管理器于一身。 任职要求 在系统编程语言如Zig或C/C++方面有丰富的经验 对互联网技术如JavaScript/TypeScript和HTTP有深入理解 热衷于编写快速高效的代码 加分项 具有Zig的经验(大部分的Bun都是用Zig编写的) 具有JavaScript运行时深入层面的经验:JavaScriptCore、V8、SpiderMonkey 理解UNIX系统、内核、TCP/UDP网络 ...

7
2
发表了资讯
2023/11/04 13:50

Bun 1.0.8 版本发布:优化内存使用,增强测试功能,修复众多 bug

集成了JavaScript运行时、打包器、转译器和包管理器于一身的 Bun 发布了1.0.8版本。在这次更新中,Bun 团队修复了138个错误,并获得了257个来自社区的👍。这不仅体现了Bun团队对社区需求的重视,也展示了Bun作为一个开源项目的活跃和健康发展态势。 值得一提的是,Bun 1.0.8版本在require()函数的内存使用上做出了显著优化,减少了高达30%的内存占用。这一改进源于Bun内置模块从ESM转为CommonJS时引入的内存泄漏问题的解决,以...

1
1
发表了资讯
2023/10/22 11:32

Bun 1.0.7 版本发布,实现多个 Node.js 兼容改进

Bun是一个集打包工具、转译器和包管理器于一体的JavaScript运行时,由Jarred Sumner于2023年10月20日发布了1.0.7版本。本次更新实现了对Node.js运行时的多项兼容性改进,并修复了近60个bug。 根据发布说明,本版本对“bun install”命令进行了优化,支持可选的peerDependencies,可以避免安装不必要的依赖包。修复了一个边缘案例Bug,之前在匹配语义化版本范围时,有时会选择比较老的包版本。另外还修复了一些确定性相关问题,以...

0
2
发表了资讯
2023/10/04 11:14

Bun v1.0.4 发布,Zig 编写的 JavaScript 运行时

Bun 1.0 发布了第 4 个补丁更新:1.0.4。 Bun 是速度极快的 JavaScript 运行时,采用 Zig 编写,集打包器、转译器和包管理器于一身。 此版本修复了 62 个错误,添加了server.requestIP,支持运行时插件中的虚拟模块,并降低了Bun.serve()中的内存消耗。 降低Bun.serve()中的内存消耗 Bun.serve() 现在向 JavaScriptCore 的垃圾回收器报告手动管理的每个请求的内存使用情况。在某些情况下,这会将Bun.serve()的内存使用量减少 50...

0
1
发表了资讯
2023/09/23 11:48

Bun v1.0.3 发布,Zig 编写的 JavaScript 运行时

Bun 发布了其最新版本 v1.0.3,这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题,还引入了一系列令人期待的新功能。 首先,Bun 在这个版本中增加了对 TypeScript 的 emitDecoratorMetadata 的支持,这意味着开发者现在可以在 Bun 中无缝地使用 Nest.js 这样的框架。Nest.js 是 Node.js 生态系统中的一个受欢迎的框架,而 Bun 对其的支持无疑将进一步扩大其在开发者社...

1
0
发表了资讯
2023/09/16 14:23

Bun v1.0.2 发布,Zig 编写的 JavaScript 运行时

Bun 上周发布了 1.0 正式版,标志着这个由前 Facebook 工程师创建的项目正式进入稳定生产可用阶段。 在过去的一周里,开发团队积极修复错误,现在已经发布了第 2 个补丁更新:Bun v1.0.2。 此版本修复了许多错误,以及提升bun --watch速度。 其他变化 修复 bunx @latest cache 错误 针对 Bun.serve(), node:stream, node:readline, node:tty, transpiller 的错误修复 修复 bun run 错误 修复 fastify 错误 Concurrent node:fs v...

1
0
发表了资讯
2023/09/12 18:44

JS 三大运行时对比:Deno、Bun 和 Node.js

这篇博客对比了当前流行的三大 JavaScript 运行时环境:Deno、Bun 和 Node.js。 先直观看一下特性上的比较: 除了表格上这些直观可以对比的特性,作者还列出了一些相关的值得关注的要点: Bun 在一定程度上对 Windows 有作支持。(刚看完另一篇博客,Bun 在 Windows 上很难受:https://alemtuzlak.hashnode.dev/why-i-cant-love-bun) Node 已开始搞权限模型。 Node npm list 是有一个外部依赖视图的。 Bun 有半内置的 REPL,需...

12
18
发表了资讯
2023/09/09 11:34

Bun 发布 1.0 正式版本,Zig 编写的 JavaScript 运行时

2023年9月8日,Javascript运行时Bun正式发布1.0版本,标志着这个由前Facebook工程师创建的项目正式进入稳定生产可用阶段。 Bun的愿景是通过深度整合,让Javascript开发“快如闪电”。这个新生力量是否能撼动Javascript界老牌霸主Node的地位,成为下一代前端开发标准?让我们一睹这个新星的威力。 作为Javascript社区中一个相对较新的革新者,Bun致力于解决碎片化工具过多导致的开发低效问题。它将运行时、打包工具、测试框架等功...

24
5
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
3 评论
19 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部