【Hacker News搬运】Bun 1.1
-
Title: Bun 1.1
Bun 1.1
Text:
Url: https://bun.sh/blog/bun-v1.1
Bun 1.1 是一个重要的更新,它是运行、构建、测试和调试 JavaScript 和 TypeScript 应用程序的全功能工具包。自从 1.0 版本发布以来,它包含了超过 1700 次提交,修复了许多错误,增加了新功能,并且与 Node.js 的兼容性得到了改进。这个版本的一个显著特点是支持 Windows 10 及以后的版本,与 macOS 和 Linux 相比,Bun 的测试套件的通过率达到了 98%。 Bun 1.1 的一些关键改进和特性包括: - Windows 支持:Bun 现在支持 Windows 10 和以后的版本,内置了与 npm 兼容的包管理器,提供了更快地安装包的能力。`.bunx` 文件格式经过了优化,可以更快地执行脚本,并且 Bun Shell,一个跨平台的壳程序,现在也支持 Windows。 - 性能提升:大型项目启动速度快了 2 倍,各种 Node.js API 的执行速度在 Windows 上得到了优化。Bun 自己的转译器,用高度优化的本地代码编写,进一步提高了性能。 - 新 API 和工具:Bun 1.1 引入了新的 API,如 Glob 用于使用 glob 模式匹配文件和字符串,Semver 用于解析和排序 semver 字符串,stringWidth 用于测量字符串在终端中的可见宽度。 - HTTP/2 客户端支持:Bun 现在支持 node:http2 客户端 API,启用 outgoing HTTP/2 请求和 HTTP/2 上的 gRPC 请求。 - 未文档化的 Node.js API:Bun 旨在成为 Node.js 的无缝替代品,并添加了对各种未文档化 API 的支持,以确保与现有的 npm 包的兼容性。 - Web API 支持:Bun 支持 Web 标准 API,包括 fetch() 和 Response,并对 WebSocket 实现进行了改进,使其在生产环境中稳定可靠。 - 包管理器改进:Bun 的包管理器得到了改进,提高了稳定性、性能和开发者体验,具有生命周期脚本、可信依赖项和从 npm 迁移工具等功能。 - 打包和转译:Bun 充当 JavaScript 和 TypeScript 的打包器、转译器和压缩器,支持为各种平台打包代码,包括 Node.js。 总的来说,Bun 1.1 是一个重大的更新,带来了众多的改进、新特性和与现有工具和平台的更好兼容性。它旨在为 JavaScript 和 TypeScript 开发提供快速和高效解决方案。 Bun 1.1 是 Bun 编程语言的新版本,包括各种改进,如修复的错误、更好的性能和新功能。一些关键特性包括将 TypeScript 和 JavaScript 文件编译为单文件可执行文件的能力、嵌入 NAPI 附加组件、使用宏转换代码以及内置的测试模块 withMatchers 和自定义匹配器。Bun 还内置了 SQLite 支持,并在写文件时创建父目录。值得注意的修复包括更长的网络超时、import.meta.resolve() 同步解决方案,以及其他与 Node.js 的兼容性改进。此外,Bun 1.1 还改进了性能,使某些操作更快,内存使用更少。Bun 1.1 现在支持 Windows,可以通过在终端中运行命令来安装。 文本是使用 "oven/bun" 镜像运行容器的 Docker 命令,并升级 Bun。作者感谢 364 位贡献者,并提到 Bun 是免费的、开源的,并且遵循 MIT 许可。文本还列出了所有贡献者的 GitHub 用户名。
Post by: ksec
Comments:
afavour: I feel like such a downer when I ask this about Bun and Deno, but: why should I use them instead of Node?<p>I don’t mean to take away from the obviously impressive engineering effort here. But VC funding always gives me pause because I don’t know how long the product is going to be around. I was actually more interested in Deno when it promised a reboot of the JS ecosystem but both Bun and Deno seem to have discovered that Node interoperability is a requirement so they’re all in the same (kinda crappy) ecosystem. I’m just not sure what the selling point is that makes it worth the risk.
afavour: 当我问Bun和Deno时,我觉得很沮丧,但是:为什么我要用它们而不是Node<p> 我的意思并不是要剥夺这里明显令人印象深刻的工程努力。但风险投资总是让我停下来,因为我不知道这个产品会存在多久。事实上,当Deno承诺重启JS生态系统时,我对它更感兴趣,但Bun和Deno似乎都发现节点互操作性是一个要求,所以他们都在同一个(有点糟糕)生态系统中。我只是不确定值得冒险的卖点是什么。
earslap: Did not realize Bun had (even if rudimentary) macros - bundle time executing code support. That is pretty neat! <a href="https://bun.sh/docs/bundler/macros" rel="nofollow">https://bun.sh/docs/bundler/macros</a>
earslap: 没有意识到Bun有(即使是初级的)宏-捆绑执行代码支持。那真是太整洁了<a href=“https:#x2F;/;bun.sh/!docs/,bundler/:宏”rel=“nofollow”>https://;bun.sh;docs/;bundler;宏</a>
preommr: Huge fan of Bun.<p>Came for the ts interoperability, stayed for the performance.<p>Also seems like the most sensible project in the space - I tried Deno and it was... rough. Bun on the otherhand was easy to intergrate and a very pleasant experience.
preommr: Bun的超级粉丝<p> 为ts的互操作性而来,为性能而留<p> 这似乎也是这个领域最明智的项目——我尝试了Deno,它。。。粗糙的另一方面,Bun很容易融入其中,是一种非常愉快的体验。
gr4vityWall: Seems like a good release.
I watched their video, and some charts were a bit unclear, as in, I didn't know if they were comparing with the previous Bun version or Node.js.<p>My experience with using Bun in side projects has been good. The built-in APIs work well in my experience, and I hope popular runtimes adopt at least a subset of them. The hashing and the SQLite bindings come to mind as APIs that I wish were available in Deno and Node.js as well.<p>They collect some telemetry by default. I don't think the install script tells you that. The only mention of it that I've found is in the Bunfile documentation: <a href="https://bun.sh/docs/runtime/bunfig#telemetry" rel="nofollow">https://bun.sh/docs/runtime/bunfig#telemetry</a><p>I'd prefer if it was opt-in, and that users were given instructions for disabling it if they want to during installation.<p>They offer an option to create a dependency-free executable for your project, which bundles the runtime with your .js entrypoint. That works great if you want a single binary to distribute to users, but at the moment, the file size is still pretty big (above 90MB on GNU/Linux for a small project). Not terrible, but nothing comparable to Go or QuickJS yet. I wonder if in the future, Bun would offer an option to compile itself with certain features disabled, so we'd get a smaller binary.<p>I have been playing with using Bun as a Haxe target. It works pretty well and IMO it's a choice to consider if you like Haxe more than TypeScript, or if you want to add a web server to an existing Haxe project without adding another programming language. You can also to do things like generating validation code at compile time, which seems hard to do with just TypeScript.gr4vityWall: 看起来是个不错的释放。我看了他们的视频,有些图表有点不清楚,比如,我没有;我不知道它们是在与以前的Bun版本还是Node.js进行比较<p> 我在副业项目中使用Bun的经验很好。根据我的经验,内置的API运行良好,我希望流行的运行时至少采用其中的一个子集。散列和SQLite绑定是我希望在Deno和Node.js中也能使用的API<p> 默认情况下,他们会收集一些遥测数据。我不;我不认为安装脚本告诉你这一点。唯一提到的是;我们在Bunfile文档中找到了:<a href=“https://;/;bun.shȏ;docs/:runtime/!bunfig#telemetry”rel=“nofollow”>https:///;bun.sh;docs/;运行时;bunfig#遥测</a><p>I;我更希望它是选择加入的,并且如果用户想在安装过程中禁用它,会向他们提供禁用说明<p> 它们提供了一个为项目创建无依赖可执行文件的选项,该选项将运行时与.js入口点捆绑在一起。如果您想将单个二进制文件分发给用户,这非常有效,但目前,文件大小仍然很大(对于一个小项目,GNU/;Linux上的文件大小超过90MB)。不可怕,但还没有什么能比得上Go或QuickJS。我想知道在未来,Bun是否会提供在禁用某些功能的情况下编译自己的选项,所以我们;d得到一个较小的二进制数<p> 我一直在使用Bun作为哈克的目标。它工作得很好,并且IMO;如果你更喜欢Haxe而不是TypeScript,或者如果你想在不添加其他编程语言的情况下将web服务器添加到现有的Haxe项目中,这是一个需要考虑的选择。您还可以在编译时生成验证代码,这似乎很难只使用TypeScript。
captn3m0: Request for the bun team: please provide a clear support policy/EOL timeline. Bonus points for clarity on the stability guarantees that are offered between versions and modules.<p><a href="https://github.com/oven-sh/bun/issues/7990">https://github.com/oven-sh/bun/issues/7990</a> (Via <a href="https://github.com/endoflife-date/endoflife.date/pull/4382">https://github.com/endoflife-date/endoflife.date/pull/4382</a>)
captn3m0: 对bun团队的请求:请提供明确的支持政策/;EOL时间表。版本和模块之间提供的稳定性保证的清晰性加分<p> <a href=“https://;/;github.com/:烤箱sh/!bun/,问题#xx2F;7990”>https:///;github.com/;烤箱sh;bun/;问题;7990</a>