[250127] Bun 1.2 发布:兼容性提升,支持 S3 和 Postgres | PowerShell 7.5 新特性解读

280 阅读5分钟

Bun 1.2 发布:Node.js 兼容性大提升,内置 S3 和 Postgres 支持!

Bun 1.2 迎来了重大更新,带来 Node.js 兼容性、云原生支持和性能提升等多项改进。

一、Node.js 兼容性飞跃

Bun 1.2 开始运行 Node.js 测试套件,修复了数千个 bug,多个 Node.js 模块的测试通过率超过 90%。Bun 团队通过模拟 Node.js 内部 API、调整错误信息和移植测试文件等方式,逐步提高兼容性。

新增支持的 Node.js 模块包括:

  • node:http2 服务器: 性能是 Node.js 的两倍。
import { createSecureServer } from "node:http2";
// ...
  • node:dgram: 支持 UDP sockets,使 DataDog 的 dd-trace@clickhouse/client 等包能够在 Bun 中工作。
import { createSocket } from "node:dgram";
// ...
  • node:cluster: 支持多线程,提高吞吐量。
import cluster from "node:cluster";
// ...
  • node:zlib: 重写为原生代码,性能提升两倍,并新增 Brotli 支持。
import { brotliCompressSync } from "node:zlib";
// ...
  • V8 C++ 插件: 通过在 JavaScriptCore 中实现 V8 的公共 C++ API,使依赖 V8 API 的包(如 cpu-features)能够在 Bun 中工作。

  • node:v8: 支持堆快照,可以使用 Chrome DevTools 检查 Bun 的堆。

此外,Express 在 Bun 1.2 中的运行速度提升了 3 倍。

二、云原生支持:Bun.s3Bun.sql

Bun 1.2 内置了 S3 对象存储 API (Bun.s3) 和 Postgres 客户端 (Bun.sql),MySQL 支持也即将到来。

  • Bun.s3: 使用 Web 标准 API(如 Blob)读写 S3 文件,性能比 Node.js 的 @aws-sdk/client-s3 快 5 倍。
import { s3 } from "bun";
const file = s3.file("folder/my-file.txt");
const content = await file.text();
  • Bun.sql: 使用标签模板字面量运行 SQL 查询,自动转义字符串并使用预处理语句防止 SQL 注入,性能比其他 Postgres 客户端快 50%。
import { sql } from "bun";
const users = await sql`SELECT * FROM users`;

三、包管理器改进

Bun 1.2 引入了基于文本的锁文件 bun.lock,取代了之前的二进制锁文件 bun.lockb,提高了可读性和版本控制的便利性。bun install 速度提升了 30%。package.json 现在支持注释和尾随逗号。其他改进包括 .npmrc 支持、bun run --filterbun outdatedbun publishbun patch 等。

四、测试运行器、打包器和 API 的增强

Bun 1.2 的测试运行器新增了 JUnit 和 LCOV 支持、内联快照、test.only() 等功能。打包器新增了 HTML 导入、独立可执行文件、字节码缓存、CommonJS 输出格式等功能。Bun API 新增了静态路由、Bun.udpSocket()Bun.color() 等。SQLite 客户端新增了 ORM 式对象映射、迭代器查询、严格查询参数等功能。此外,Bun 1.2 还实验性地支持从 JavaScript 编译和运行 C 代码。

五、性能提升和行为变化

Bun 1.2 对许多 API 和功能进行了性能优化,例如 node:http2path.resolve()fetch()String.at() 等。行为变化包括 bun run 使用正确的目录、bun test 中未捕获的错误处理、server.stop() 返回 Promise 等。

Bun 1.2 是一个功能丰富、性能强大的更新,进一步提升了开发者体验,并增强了与 Node.js 生态系统的兼容性。

想要了解更多细节,请访问 Bun 1.2 博客原文:
bun.sh/blog/bun-v1…

PowerShell 7.5 新特性解读

PowerShell 7.5 基于 .NET 9.0.1 GA 版本构建,带来了诸多新特性、更新和突破性改进。本文将为您解读这些重要变化,助您更好地利用 PowerShell 的最新功能。

突破性变化:

  • 修复了 Test-Path -OlderThan-NewerThan 参数与 PathType 和日期范围一起使用时的错误。
  • 更改了 New-FileCatalog -CatalogVersion 的默认值,现在为 2。
  • 在受限的远程会话中阻止从网络位置获取帮助。
  • Windows 安装程序现在会记住上次安装时使用的选项,并在下次安装时初始化这些选项。
  • ConvertTo-Json 现在将 BigInteger 序列化为数字。

模块更新:

  • Microsoft.PowerShell.PSResourceGet 更新至 v1.1.0
  • PSReadLine 更新至 v2.3.6

Tab 补全改进:

感谢 @ArmaanMcleod 等人的贡献,PowerShell 7.5 的 Tab 补全功能得到了显著增强,包括:

  • 哈希表键值无法从安全表达式中检索时回退到类型推断。
  • 修复了对 $_ 进行类型推断时的回归问题。
  • 在 Windows 上使用 Tab 补全时,将 ~ 扩展为 $home
  • 声明参数名称和类成员时不再进行补全。
  • Tab 补全类型名称时,防止回退到文件补全。
  • Set-StrictMode-Version 参数添加了参数补全器。
  • Get-Verb/ Get-Command-Verb 参数添加了参数补全器,并重构了 Get-Verb
  • Start-Process-Verb 参数添加了参数补全器。
  • *-Variable*-Alias*-PSDrive 命令的 -Scope 参数添加了参数补全器。
  • Save-Help/Update-Help 命令的 -Module 参数添加了补全功能。

新增 Cmdlet:

  • 新增 ConvertTo-CliXmlConvertFrom-CliXml cmdlet。

Web Cmdlet 改进:

  • 允许 -PassThru-Outfile 参数一起使用。
  • WebResponseObject 中添加了 OutFile 属性。
  • Invoke-WebRequest -OutFile -Verbose 中显示文件名。
  • 修复了指定 -Body 但未指定 ContentType 时 Web Cmdlet 的问题。
  • 修复了指定 -ResumeInvoke-WebRequest 报告错误大小的问题。
  • 修复了 Web Cmdlet 以允许 WinForm 应用程序正常工作的问题。

其他 Cmdlet 改进:

  • Register-PSSessionConfiguration 支持 -NoRestart 参数。
  • Test-Json cmdlet 新增 IgnoreCommentsAllowTrailingCommas 选项。
  • Get-Help 可能会将具有 ValueFromRemainingArguments 属性的参数报告为可管道化。
  • Select-String 中的 LineNumber 类型更改为 ulong
  • Get-Process:移除了 -IncludeUserName 的管理员权限要求。
  • 修复了 Test-Path -IsValid 以检查无效的路径和文件名字符。
  • 在错误报告的 ConciseView 中添加了 RecommendedAction
  • Remove-Item cmdlet 添加了进度条。
  • 修复了由于 .NET 8 更改导致的 Test-Connection 问题。

引擎改进:

  • 显式启动和停止 ANSI 错误颜色。
  • 改进了泛型方法的 .NET 重载定义。
  • 优化了集合为对象数组时的 += 操作性能。

实验性功能:

以下实验性功能已在 PowerShell 7.5-rc.1 中转换为正式功能:

  • PSCommandNotFoundSuggestion
  • PSCommandWithArgs
  • PSModuleAutoLoadSkipOfflineFiles

以下实验性功能包含在 PowerShell 7.5-rc.1 中:

  • PSRedirectToVariable - 允许重定向到变量。
  • PSNativeWindowsTildeExpansion - 为 Windows 原生命令添加波浪号扩展。
  • PSSerializeJSONLongEnumAsNumber - ConvertTo-Json 现在将大型枚举视为数字。

性能改进:

PowerShell 7.5-rc.1 包含了 @jborean93 提交的 PR#23901,该 PR 提高了对象数组 += 操作的性能。具体测试数据请参考原文。

PowerShell 7.5 带来了大量的改进和新功能,涵盖了 Tab 补全、Cmdlet 功能、引擎性能等多个方面,值得升级体验。 更多详细信息,请参阅 GitHub 上的更改日志

来源:
learn.microsoft.com/en-us/power…




更多内容请查阅 : blog-250127


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法