新宠儿还是新玩具?Bun 速览

Bun:超快速的JavaScript工具集,让开发更高效! Bun是一款新兴的全能JavaScript工具包,集运行时、打包器、测试运行器和包管理器于一体。它以Zig语言编写,基于JavaScriptCore,提供比Node.js更快的启动速度和更低的内存占用。Bun支持直接运行TypeScript/JSX代码,内置简单高效的测试运行器,简化了包管理流程。安装方式多样(脚本/Docker/npm等),兼容主流操作系统。适用于Web开发、API构建、自动化脚本等场景,能与现有Node项目无缝集成。相比Node.js、Deno等工具,Bun在性能、易用性和工具整合方面具 阅读详情

最近前端圈子又有了新的话题,重量级轮子 Bun。它自称是集 Bundle, transpile, install and run JavaScript & TypeScript 于一身的全能 runtime,对标 node 和 deno 并且有比它们快的多得多的速度。在首页的显著位置直接给出了 http serve 和 sqlite 三倍于 node 的性能对比图,可谓贴脸输出。

一般这种听起来就跨时代的产物第一反应都难免让人觉得是诈骗,所以就花一点点时间,对它进行一个浅层速览吧!

为什么快?

官网没有详细的资料,只作了一些简单的解释:

  • Bun 用苹果的 JavaScriptCore 而非 V8 作为 JS 引擎,因为 JSC 启动和执行比 V8 更快。但链接给出的测试实在是太过于粗糙,如果认真对比的话还是要看看更全面的 benchmark。

  • Bun 是用 ZIG 语言编写。ZIG 是一门比较小众的系统级语言,常被用来对标 C/C++ 和 rust,这不巧了么,后两者刚好是 node 和 deno 所采用的语言。ZIG 能手动管理内存,这是它成为高性能语言的基础之一。另一个亮点是『编译期函数 compile-time function』,有点元编程的意思,比如 ORM 的表值映射可以通过编译期函数直接生成目标代码。

  • Bun 徒手撸了很多东西,包括 JSX/TypeScript 的转译器、打包工具、SQLite client、HTTP client 等等。并且进行了『很多优化』。这……难道不是因为 ZIG 的标准库啥都没有,只能从头撸吗?这也不难解释它在 HTTP serve 和 SQLite 项目的测试上取得很好的成绩,应该做了很多针对性优化吧。

单从以上几点看的话,感觉即使现在性能很强,可能也只是作为一个新项目初期的后发优势,毕竟像 node 这样的成熟项目在迭代过程中性能的优化和劣化是在同时发生的,不用太纠结 ***x faster 的问题。

标准库

Bun 的标准库么,嗯只能说很烂。当然一定程度上是因为 ZIG 的标准库就很烂,造成 Bun 很多东西都只能从头手撸。那么目前有什么呢?官方说的是这样:

其中 fs 和 path 我试了一下,用起来和 node 没什么区别,其他没有尝试。

我有点好奇它的「use the fastest system calls available with Bun.write to write, copy, pipe, send and clone files」指的是什么。我们知道 node 用的是 libuv,它在 linux 上的实现是 epoll,那么 Bun 的 IO 用的是什么技术呢?会是听起来很先进但(似乎)没有广泛应用的 aio 吗?我暂时没有深入去查找资料。

对于 node_modules 这块我比较存疑,因为我的几个简单 node CLI 项目,依赖也不复杂,但是用 Bun 并没有跑起来。后来经过一番二分 debug 发现是它似乎无法正确处理用中文字符做 object literal 的 key,需要像正规 JSON 一样给 key 加上引号,然后勉强运行起来了。虽然不是什么大问题,但过程中几乎无法得到任何有用的报错信息,偶尔有些报错也歪得挺离谱。

Bun 自称它有非常快的 ffi,但它的标准库却是用 ZIG 手撸的,并没有发现移植了现成的各种 C lib 进来,所以这块也不知道作者是如何考虑的,为何不发挥 ffi 的优势移植一堆优秀的 lib 进来快速扩充 Bun 的标准库呢?

Transpiler 也是生撸的,这块一方面是 bug 肯定少不了,另一方面是以后怎么追赶 JSX 和 TS 的迭代会是个问题。

最后是在它介绍当中的 bundler 部分,目前似乎还只是作者规划的美好愿景。

生态

光有 runtime 本身固然没什么用,还需要有各种生态,那么目前 Bun 的生态如何呢?我只能说:略大于零。

官网里这么写:

对于 bun run,上面也说到了,用现成的 node_modules,我试了几个项目都并没有跑起来。要将 node 项目迁移到 bun 目前看来不是很现实。

对于 bun install,我也尝试了,不论是开还是不开代理,都没有安装成功,加上 verbose 参数也没有看出来什么端倪,中间不知道为什么就卡住了。我们知道 npm, yarn, pnpm 在 install 速度上的差异一方面来源于下载包,一方面来源于解析依赖,由于我没有成功执行 bun install 于是也无从继续分析。

开发健康度 & 社区

到今天(2022/07/15)为止,Bun 的 github 提交频率都非常高,每天都有 commit,目前有 200+ open issue 和 20+ pending pr,而且 issue 很多都是最近几天甚至几小时提的,可以看出是有不少人在尝鲜的,活跃度还不错。

从 open issue 大概看看,主要的 bug 有这几种

  • seg fault、illegal instruction 这类 runtime 问题,并不太确定是 Bun 还是 ZIG 的问题

  • 使用 Bun 标准库,如 fetch、HTTP、SQLite 等出现的问题

  • 引用 nodejs 库遇到的问题

这么看的话问题还是在各个维度上都有的,作为一个早期项目来说这可以理解,另外就是估计这些 bug 全修了的话性能优势会抵消不少 😂

另外就是作者 Jarred-Sumner 战斗力极强,从去年 4 月份到现在,有超过 90% 的代码都是他一个人写的,达到了 2,764 commits   1,678,425 ++   998,768 --,从这澡堂瓷砖一样的 calendar 也可见一斑。

小结

即使是 deno,从 1.0 到现在已经 2 年了,该没人用还是没人用,更别说 deno 从初版到 1.0 也熬了有接近 2 年的时间。deno 这么努力也流行不起来,大概是 JS 生态真的不太需要一个新的 runtime 吧。代价那么大,收益却全靠吹,实在是让人提不起劲来。

nodejs 一开始虽然也因为异步 IO 而吹它的性能比 PHP、Java Servlet 快多少云云,但最后选择 node 的项目却大概率不是因为性能而选的。现在 node 成为了前端工具链的枢纽,同时也在服务端有了一定的生态位,更多是因为它占了一个从无到有的先机,后来者想要取而代之恐怕是非常的难了。即使最近一两年来,前端生态圈刮起了一阵用 rust 重写的风,比如 swc,rome,大多也是集中在关键性能的部分,最终还得结合 node 生态才能融入到工具链。

CSM中一些常见问题的解决方式 CSM中一些常见问题的解决方式 抖动 摄像机在每帧移动或者旋转时,会产生较严重的抖动问题。 阅读详情

相关推荐

Neurocomputing 投稿指南

Generation Information:选择论文所属领域。上传附件(利益声明,手稿,摘要)审稿人偏好:可以选择期待的审稿人。

qq_41174671的博客 2万+

Bun 1.0 正式发布,爆火的前端运行时,速度遥遥领先!

Bun 1.0 正式发布,爆火的前端运行时,速度遥遥领先!

m0_64590669的博客 1940

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3794

Bun 入门到精通(一)——简介

Bun 是用于 JavaScript 和 TypeScript 应用程序的多合一工具包。它作为一个名为bun的可执行文件提供。其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在替代 Node.js。它是用 Zig 编写的,并由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用量。

Jackson_Mseven的博客 2785

基于STM32F103标准库与DMA的实时音频FFT频谱显示系统设计

本文详细介绍了基于STM32F103芯片与DMA技术实现实时音频FFT频谱显示系统的设计方法。通过标准库驱动和FFT算法处理音频信号,结合OLED显示屏实时绘制音乐频谱,涵盖硬件选型、核心原理、开发环境搭建及性能优化等关键步骤,为数字信号处理应用提供实用参考。

yellow的专栏 779

AutoSAR系列讲解 - 前言

博主xyfx是一名汽车行业的嵌入式软件工程师,本职工作是同步电机的驱动控制(主要做FOC的,这个大家要是有兴趣,以后可以单独开一个专栏来讲解一下),由于做控制器的时候需要用到AutoSAR,所以特意的去学习了相关知识,同时博主自己也在同步提高中,有写的不合理的地方也请大家指正。我准备对AutoSAR开设两个大的方面来讲解,一是AutoSAR的入门篇,二是AutoSAR的实践篇,分别讲述AutoSAR的理论基础和工具的使用。

雪云飞星的博客 4万+

【前端】Bun:快速上手

Bun 是一个超快的 JavaScript 全栈工具链,集成了包管理器、构建器、运行时和开发服务器。

2303_80346267的博客 1589

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 148

Bun v1.3 重磅发布:一站式全栈 JS 运行时,前端开发、数据库、Redis 全内置

Bun v1.3发布:全栈JS运行时新标杆 摘要:Bun v1.3作为重大版本更新,将JS运行时功能扩展至全栈开发领域。该版本原生支持前端开发全流程(热重载、打包构建)、内置MySQL/PostgreSQL/Redis客户端,并提供前后端同服能力。关键特性包括:1)内置前端开发服务器,支持React热刷新;2)统一前后端路由,消除CORS问题;3)原生支持主流数据库操作;4)可编译为独立可执行文件。性能测试显示其响应速度比传统方案快1.8倍,已被Midjourney等团队采用。安装支持多平台,提供Docke

葡萄城技术团队博客 1660

6.4 直流无刷电机(BLDC):测试与性能评估

本文系统阐述了直流无刷电机(BLDC)的测试与性能评估方法,涵盖参数测量、性能测试、测试平台设计及可靠性评估。详细介绍了绕组电阻、电感和反电动势的测量原理与修正方法,以及转矩-转速特性、效率分析和动态响应测试的技术要点。通过搭建高精度测功机系统,结合自动化数据处理,实现对电机性能的全面评估。最后讨论了温升、振动、EMC等特殊测试方法,为BLDC电机的设计验证和质量控制提供了完整的技术路径。

技术工作者 446

基于VLFM的中文指令视觉语言导航系统设计与实现

文章摘要 本文介绍了一个基于VLFM(视觉语言边界地图)的中文指令视觉语言导航系统设计与实现。该系统采用模块化架构,包含三维场景渲染、URDF机器人仿真、VLFM导航引擎、中文指令解析和PyQt图形界面五大核心模块。系统支持自定义GLB场景模型和URDF机器人模型,通过transformers和langchain实现中文自然语言指令解析,利用VLFM算法进行语义导航决策。技术实现上详细介绍了GLB模型加载器开发、URDF机器人控制、VLFM导航算法集成以及PyQt界面设计。该系统在Ubuntu环境下运行,依

AI的内部世界的博客 212

【Bun运行时】全面解析:高性能、易用的新一代JavaScript/TypeScript运行时

Bun运行时是一款新兴的JavaScript和TypeScript运行时,它由Jarred Sumner创建,旨在提供比Node.js和Deno更高的性能和更快的启动速度。Bun的初衷是通过原生编译、轻量化架构和改进的开发体验,简化前端开发者的工作流程。Bun不仅支持Node.js的大部分API,还内置了诸如包管理、文件系统访问、跨平台支持等多项功能,成为开发者的高效工具。对于追求高性能的API服务、快速启动的开发工具,Bun是值得尝试的选择。

佚名程序员 3184

(9)用于无GPS导航的 Optitrack

Ardupilot官网关于《Non-GPS navigation》的翻译 —《(9) 用于无GPS导航的 Optitrack》。

无人机开发(开源Ardupilot) 3107

Windows如何下载Bun并在前端Vue或React项目上替代Yarn或Npm

根据,Bun在Windows上的安装和使用都已经得到良好的支持,包括bun install在内的命令可以在Windows上得到良好的执行效果,并附有对Vue和React等前端框架的支持~Bun提供了快速的安装速度和运行时间,特别是在处理大量依赖项的前端项目时。使用Bun作为Yarn或NPM的替代品,可以加快你的开发流程。你可以使用以下命令在。

云散的博客 3323

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Bun.js入门简介

我怀疑我们正走向一个同构的服务器端 JavaScript 时代,在这个时代,模块开发人员试图编写与所有运行时兼容的代码:Node.js、Deno、Bun、无服务器、边缘、嵌入式等等。如果您从项目的开始使用 Bun,它是可靠的。速度比 Node.js 更快,尽管除非您的应用程序执行特定的密集任务,如大量的 SQLite 处理或 WebSocket 消息传递,否则不太可能看到显著的性能提升。选择 Node.js 的人很少会因此而被解雇,但 Bun 避免了一些 Deno 的错误,并迅速成为一个吸引人的选择。

菜菜程序员 4251

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WHAT - Bun 真的那么全能吗

特性说明快速启动比 Node.js 快数倍,冷启动时间几乎为零原生 TypeScript无需配置即可运行.ts文件更快的安装依赖比 npm/yarn 快 10 倍以上内置测试使用bun test编写并运行测试小内存占用相比 Node 运行同样的代码占用更少的资源Bun 的性能和功能优势背后有着一套清晰的技术设计理念,我们逐条来解释它是如何实现这些优势的。

weixin_58540586的博客 1243

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

超越 Node.js:Bun 的创新与突破

运行时”(Runtime)在计算机编程中指的是一个软件程序执行时提供的环境,其中包含了执行程序所必需的库、调试和其他支持功能。在 JavaScript 的世界中,运行时负责解释执行 JavaScript 代码,并提供可以由 JavaScript 代码调用的 API,例如处理文件系统、网络通信、定时器等。就 JavaScript 语言而言,最著名的运行时环境是浏览器和 Node.js。浏览器提供了一个针对客户端脚本的运行环境,允许 JavaScript 与网页交互,控制 DOM 元素,响应事件等。

王乐平 技术博客 4402

【高级前端进阶】Bun 快速上手入门教程 - 老曹带你飞

Bun入门速成指南:从安装到实战 摘要: Bun是新一代JavaScript运行时,号称比Node.js快100倍。本文提供了Bun的完整入门指南: 一键安装:支持macOS/Linux/Windows系统 基础使用:直接运行JS/TS文件无需编译 包管理:bun install比npm快30倍 Web开发:内置高性能HTTP服务器 测试支持:自带测试框架 性能对比:Bun在启动速度和包管理上大幅领先传统方案 特色: 兼容Node.js生态 原生支持TypeScript 极简API设计 超快启动速度

silverclayz的技术分享 1568

探秘Bun:一款现代化、高性能的JavaScript运行时环境

探秘Bun:一款现代化、高性能的JavaScript运行时环境 【免费下载链接】bun 极其快速的JavaScript运行时环境、打包工具、测试运行器和包管理器——集于一身。 项目地址: https://gitcode.com/GitHub_Trending/bu...

gitblog_00077的博客 947

告别 Node.js?Bun 运行环境的基础入门与核心定位

Bun 是新一代 JavaScript 运行时,旨在优化现代 Web 开发流程。:Bun 仍处于快速迭代期(v1.0 已发布),生产环境需评估稳定性。,通过集成工具链、加速执行效率及简化开发体验实现突破。

gsfddsfsd的博客 342

新 JavaScript 运行时 Bun 火了

Bun is a fast all-in-one JavaScript runtime,翻译一下就是,Bun 是一个快速的多合一 JavaScript 运行时。官方文档:https://bun.sh/。近日,前端工具链 Bun 项目的关注度颇高。Bun 是像 Node 或 Deno 一样的现代 JavaScript 运行时,作者是 Jarred Sumner ,曾在 St...

文摘资讯 2001

2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆破、文件、隐写、逆向、PWN等全套工具

经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!

Libra1313的博客 1万+

Bun:JavaScript 世界的新兴高性能工具

Bun是一款颠覆性的JavaScript/TypeScript一体化开发工具,集运行时、包管理器和转译器于一身。相比传统工具链(Node.js+npm+Webpack等),Bun凭借Zig语言和JavaScriptCore引擎实现显著性能提升:安装依赖快20-100倍,冷启动速度快10倍,并提供零配置的TS/JSX支持。其核心优势包括智能缓存、并行安装和内置构建工具,特别适合追求效率的项目。虽然对复杂项目生态支持尚在完善,但Bun已展现出替代传统工具链的潜力,为开发者提供更轻量、高效的开发体验。

kinghzking的专栏 667

前端全栈混合之路Deno篇:Deno2.0与Bun对比,谁更胜一筹?它们分别适合怎样的项目,谁更适合前端转全栈?

在前端全栈开发中,工具的不断演变让开发者们始终在寻找更高效、更现代化的解决方案。Deno2.0的近期的发布让它在性能和兼容性方面大幅提升,而Bun则凭借其高效的运行速度和友好的开发体验获得了广泛关注。那么,Deno 2.0和Bun到底谁更胜一筹?本文将对这两个工具进行理性对比,并探讨各自的优势与适用场景。

分享有趣的、贴近生活的CS知识 6175
上一篇: 关于数据库你应该知道的那些事儿
下一篇: 资深工程师教你写出研发喜欢的文档
Bytebase
博客等级 码龄5年 1349粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值