其他
新宠儿还是新玩具?Bun 速览
为什么快?
为什么快?
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 项目的测试上取得很好的成绩,应该做了很多针对性优化吧。
标准库
标准库
生态
生态
开发健康度 & 社区
开发健康度 & 社区
seg fault、illegal instruction 这类 runtime 问题,并不太确定是 Bun 还是 ZIG 的问题
使用 Bun 标准库,如 fetch、HTTP、SQLite 等出现的问题
引用 nodejs 库遇到的问题
小结
小结
即使是 deno,从 1.0 到现在已经 2 年了,该没人用还是没人用,更别说 deno 从初版到 1.0 也熬了有接近 2 年的时间。deno 这么努力也流行不起来,大概是 JS 生态真的不太需要一个新的 runtime 吧。代价那么大,收益却全靠吹,实在是让人提不起劲来。
nodejs 一开始虽然也因为异步 IO 而吹它的性能比 PHP、Java Servlet 快多少云云,但最后选择 node 的项目却大概率不是因为性能而选的。现在 node 成为了前端工具链的枢纽,同时也在服务端有了一定的生态位,更多是因为它占了一个从无到有的先机,后来者想要取而代之恐怕是非常的难了。即使最近一两年来,前端生态圈刮起了一阵用 rust 重写的风,比如 swc,rome,大多也是集中在关键性能的部分,最终还得结合 node 生态才能融入到工具链。将 MySQL 数据库恢复到某个时间点
Bytebase 1.2.1 - 2022.7.7