Bun 1.1 发布,全面支持 Windows 系统

4 月 2 日,Jarred Sumner 宣布 Bun 1.1 正式推出。Bun 是一个快速、一体化的工具包,用于运行、构建、测试和调试 JavaScript 和 TypeScript,从单个脚本到全栈应用程序。如果您是 Bun 的新手,可以在 Bun 1.0 博客文章中了解更多信息。

Bun 1.1 是一个巨大的更新。自 Bun 1.0 以来已有超过 1700 次提交,开发团队一直在努力使 Bun 更加稳定并与 Node.js 更加兼容。现在,Bun 正式支持 Windows 系统。

Windows 支持

您现在可以在 Windows 10 及更高版本上运行 Bun!这对我们来说是一个巨大的里程碑,我们很高兴将 Bun 带给全新的开发团队。

Windows 上的 Bun 通过了我们自己的 macOS 和 Linux 上的 Bun 测试套件的 98%。这意味着从运行时、测试运行器、包管理器到捆绑器的所有内容 - 都可以在 Windows 上运行。

要开始在 Windows 上使用 Bun,请在终端中运行以下命令:

powershell -c "irm bun.sh/install.ps1 | iex"

Windows 上的 bun install

Bun 有一个内置的、与 npm 兼容的包管理器,用于安装包。安装 Vite React App 时, bun install 在 Windows 上的运行速度比 yarn 快 18 倍,比 npm 快 30 倍。

Windows 上的 bun run

您还可以使用 bun run 运行脚本,这是 npm run 的更快替代方案。为了使 bun run 在 Windows 上更快,我们设计了一种新的文件格式:.bunx

.bunx 文件是一个跨文件系统符号链接,能够使用 Bun 或 Node.js 启动脚本或可执行文件。最终结果是 bun run 比 npm run 快 11 倍,而 bunx 也比 npx 快 11 倍。

即使您只使用 Bun 作为包管理器而不是运行时, .bunx 也可以与 Node.js 一起使用。这也解决了恼人的“终止批处理作业?” Windows 开发人员在向正在运行的脚本发送 ctrl-c 时习惯使用的提示。

Windows 上的 bun --watch

Bun 内置支持 --watch 模式。这为您提供了在进行更改和让这些更改影响您的代码之间的快速迭代周期。在 Windows 上,我们确保优化 control-s 和进程重新加载之间所需的时间。

Windows 上的 Node.js API

我们还花时间优化 Node.js API,以使用 Windows 上最快的系统调用。例如,Bun 上的 fs.readdir() 比 Windows 上的 Node.js 快 58%。

虽然我们尚未优化每个 API,但如果您发现 Windows 上某些内容比 Node.js 慢,请提出问题,我们将找出如何使其更快的方法。

JavaScript 运行时

与我们自 Bun 1.0 以来所做的数十项新功能、API 和改进相比,Windows 支持只是一件轶事。

  • 大型项目启动速度提高 2 倍
  • Bun Shell
  • Bun.Glob
  • Bun.Semver
  • Bun.stringWidth()
  • server.url
  • server.requestIP()
  • subprocess.resourceUsage()
  • import.meta.env

Node.js 兼容性

Bun 的目标是成为 Node.js 的直接替代品。

Node.js 兼容性仍然是 Bun 的首要任务。我们对 Bun 对 Node.js API 的支持进行了大量改进和修复。这儿是一些精彩片段:

  • HTTP/2 客户端
  • Date.parse() 与 Node.js 兼容
  • 递归 fs.readdir()
  • Bun 和 Node.js 之间的 IPC 支持
  • 未记录的 Node.js API

Web API 支持

Bun 还支持 Web 标准 API,包括 fetch() 和 Response 。这使得编写在浏览器和 Bun 中都有效的代码变得更加容易。

自 Bun 1.0 以来,我们对 Web API 进行了大量改进和修复。

  • WebSocket 稳定
  • performance.mark()
  • fetch() 使用 Brotli 压缩
  • URL.canParse()
  • fetch() 通过 Unix 套接字
  • Response 主体作为 AsyncIterator
  • 已实现 console.table()、console.timeLog()
  • 在 TextEncoder 中支持 ignoreBOM

包管理器

即使您不使用 Bun 作为运行时,您仍然可以使用 bun install 作为包管理器。 Bun 是一个与 npm 兼容的包管理器,安装包的速度比 npm 快 29 倍。

从 Bun 1.0 开始,我们显着提高了 bun install 的稳定性和性能。我们修复了数百个错误,添加了新功能,并改善了整体开发人员体验。

JavaScript 打包器

Bun 是一个 JavaScript 和 TypeScript 打包器、转译器和压缩器,可用于打包浏览器、Node.js 和其他平台的代码。

Bun 可以使用 --target=node 标志捆绑代码以在 Node.js 上运行。在 Bun 1.0 中,有几个错误导致其无法正常工作,例如无法请求 node:fs 和 node:path 等内置模块。在 Bun 1.1 中,这些错误现已得到修复。

Bun 可以使用 --compile 标志将 TypeScript 和 JavaScript 文件编译为单个文件可执行文件。在 Bun 1.1 中,您还可以嵌入 NAPI (n-api) 插件 .node 文件。这对于捆绑原生 Node.js 模块非常有用,例如 @anpi-rs/canvas 。然后,您可以将应用程序编译并作为单文件可执行文件运行。

Bun 有一个强大的宏系统,允许您在编译时转换代码。宏可用于生成代码、优化代码,甚至在编译时运行代码。在 Bun 1.1 中,您现在可以在捆绑时导入内置模块。

测试运行器

Bun 有一个内置的测试模块,可以轻松地用 JavaScript、TypeScript 和 JSX 编写和运行测试。它支持与 Jest 相同的 API,其中包括 expect() 样式的 API。

SQLite 支持

从 1.0 开始,Bun 就内置了对 SQLite 的支持。它有一个受 better-sqlite3 启发的 API,但它是用本机代码编写的,速度更快。从那时起,bun:sqlite 出现了许多新功能和改进。

开发者体验

我们花了很多时间思考 Bun 的开发者体验。我们希望能够轻松编写、运行和调试 JavaScript 和 TypeScript 代码。对命令、输出和错误消息进行了大量改进,使 Bun 更易于使用。

当 Bun 中抛出错误时,它会通过多行源代码预览将堆栈跟踪打印到控制台。现在,源代码预览会突出显示语法,这使其更易于阅读。

来自 Error.stack 的堆栈跟踪现在包含更少的噪音,例如与错误无关的内部函数。这样可以更轻松地查看错误发生的位置。

快速入门

就是这样——这就是 Bun 1.1,而这对于 Bun 来说还只是一个开始。

我们使 Bun 更快、更可靠,修复了数千个错误,添加了大量新功能和 API,现在 Bun 支持 Windows。首先,请在终端中运行以下任意命令。

# curl
curl -fsSL https://bun.sh/install | bash

# powershell
powershell -c "irm bun.sh/install.ps1 | iex"

# npm
npm install -g bun

# brew
brew tap oven-sh/bun
brew install bun

# docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/509309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 免费许可证到期问题解决

问题 es日志报错信息:current license is non-compliant for [security] [2024-04-01T03:20:52.96800:00][ERROR][savedobjects-service] [.kibana_alerting_cases] Action failed with security_exceptionRoot causes:security_exception: current license is no…

Spark 起源发展与项目架构说明

文章目录 前言Spark 的起源Spark 是什么速度易用性模块化可扩展性 分析方法的统一Spark SQLSpark MLlibSpark Structured StreamingGraphX Spark的分布式执行Spark driverSparkSessionCluster managerSpark executor部署模式分布式数据和分区 开发的经验Spark 的使用人群与使用…

0基础 三个月掌握C语言(16)

⽂件操作 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据…

成都直播产业园有哪些特色服务

在成都这片热土上,天府锋巢直播产业基地以其特色服务独树一帜,成为了引领直播行业的先锋。 一、天府锋巢直播产业基地的特色服务,首先体现在其完善的产业链整合能力上。 作为西南大型的成都直播产业园区,这里不仅汇聚了众多优秀…

js实现简单的添加移除水印效果

一、实现场景 在做某些内部管理系统时,需求可能要求增加水印,水印内容通常可能是logo或者用户名手机号。实现效果如图: 以下步骤可实现简单添加或者移除水印,并且可以自定义样式、旋转角度等。 二、实现方式 1、先新建一个js…

网络套接字补充——TCP网络编程

六、TCP网络编程 6.1IP地址字符串和整数之间的转换接口 //字符串转整数接口 #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int inet_aton(const char *cp, struct in_addr *inp); int inet_pton(int af, const char *strptr, …

Go微服务实战——服务治理(负载均衡,请求重试,服务熔断,服务降级)

负载均衡 在微服务架构中各个服务都是独立部署、可独立扩展和管理的。在上一节Go微服务实战——服务的注册与获取&#xff08;nacos做服务注册中心&#xff09;将所有的服务注册到注册中心&#xff0c;供其他服务使用。 这是对于整个系统的层面&#xff0c;对于单个服务来说&…

Linux:运营商在网络中扮演的角色

文章目录 ip目前的问题ip目前的几种解决方案私有ipVS公有ip运营商再谈ip划分运营商的角度看ip 本篇总结的是运营商在网络中扮演的角色 ip目前的问题 在目前看来&#xff0c;ip最大的问题是ip号不够用了&#xff0c;那这个问题如何解决呢&#xff1f; 在之前的内容中有子网掩…

什么是智慧公厕?智慧旅游下的智慧公厕功能和特点

智慧旅游下的智慧公厕功能和特点&#xff1f;智慧旅游是景区、公园、游乐场、文化场馆等领域的一种信息化解决方案&#xff0c;智慧公厕是智慧旅游极为重要的一部分&#xff0c;能大大提升游客满意度。智慧公厕采用物联网、互联网、大数据、云计算等技术&#xff0c;实现旅游景…

RPM与YUM

目录 rpm包的管理 介绍 rpm包的简单查询指令 rpm包名基本格式 rpm包的其他查询指令: 卸载rpm包 yum 介绍 rpm包的管理 介绍 rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.RPM是RedHat Package Manager(RedHat)软件包管…

SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图&#xff1a; 上图大致流程是对的&#xff0c;有几个没写到的地方&#xff1a; 加载沙盒中对应的图片后&#xff0c;不仅要显示&#xff0c;而且要把图片缓存到内存中下载完毕后&#xff0c;有一个异步解码的过程&#xff0c;没体现出来 网上有大佬做了…

修改nuxtjs项目中的浏览器图标步骤

处理步骤&#xff1a; 打开配置页面 使用el-upload 上传图片到后台 后台把图片转为ico&#xff0c;返回图标路径 配置页面修改本页面预览图&#xff0c;点击保存&#xff0c;修改的数据库。 通知nuxt布局页面&#xff0c;修改head节点中的图标属性&#xff0c;…

智慧酒店(二):AI智能分析网关V4视频分析技术在酒店管理中的应用

一、人工智能技术如何应用在酒店管理中&#xff1f; 随着科技的飞速发展&#xff0c;人工智能技术已经逐渐渗透到我们生活的方方面面&#xff0c;其中&#xff0c;酒店管理行业便是其应用的重要领域之一。人工智能技术以其高效、精准的特点&#xff0c;为酒店管理带来了革命性…

基于java的智能停车场管理系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

文件管理原理

文章目录 1)一个文件&#xff0c;它是文件内容和文件属性的集合 文件文件属性文件内容 文件属性 文件内容 2)文件分为打开的文件和未打开的文件 3)打开的文件是谁打开的&#xff1f; 由进程打开&#xff01;而研究一个被打开的进程本质就是研究进程和文件的关系。 而被打开的…

vue快速入门(二)安装vue调试插件

教程很详细&#xff0c;直接上过程 上一篇 新增内容 在国内网站下载谷歌插件安装插件 点击跳转极简插件 此处我们以Chrome浏览器为例 到这里我们就成功安装了插件 使用上一篇博客的代码在浏览器F12调试一下 这样就可以使用了&#xff01;&#xff01;&#xff01;

依赖倒转原则

1.1 MM请求电脑 MM电脑坏了&#xff0c;需要修电脑&#xff0c;是因为每次打开QQ,一玩游戏&#xff0c;机器就死了。出来蓝底白字的一堆莫名奇妙的英文。蓝屏死机了&#xff0c;估计内存有问题。 1.2 电话遥控修电脑 遥控修理电脑&#xff0c;打开内存条&#xff0c;两根内存…

Python学习从0到1 day20 第二阶段 面向对象 ② 封装

缘分 朝生暮死犹如露水 —— 24.4.1 学习目标&#xff1a; 1.理解封装的概念 2.掌握私有成员的使用 一、面向对象三大特性&#xff1a; 面向对象编程&#xff0c;是许多编程语言都支持的一种编程思想 简单理解是&#xff1a;基于模板&#xff08;类&#xff09;去创建实体&…

免费分享一套SpringBoot+Vue健身房管理系统,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue健身房管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue健身房管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue健身房管理系统 Java毕业设计项目来自互联…

【SQL Server】2. 将数据导入导出到Excel表格当中

最开始&#xff0c;博主介绍一下自己的环境&#xff1a;SQL Sever 2008 R2 SQL Sever 大致都差不多 1. 通过自带软件的方式 首先找到下载SQL Sever中提供的导入导出工具 如果开始界面没有找到自己下载的路径 C:\Program Files\Microsoft SQL Server\100\DTS\Binn下的DTSWiz…