Rust 再次打败 Go,Astro 7 首发,什么叫“万物皆可锈化“!

👇 今日要闻

打破信息壁垒,走近全球前端。Hello 大家好,我是林语冰。

Rust 直译为" ",用 Rust 重写其他语言的软件被戏称为"锈化"(Rustify)。

前端基建中,原本基于 Go 的技术栈也逐渐被 Rust "锈化",Rust 越来越有对 Go 语言"降维打击"的趋势了:

  • Node 之父早期用 Go 语言开发 Deno 原型,后来 Deno 直接改用 Rust
  • Turborepo 早期基于 Go 语言,后来重构为 Rust 移植版
  • Vite 7 构建基于 Go 语言的 esbuild + rollup,Vite 8 改用 Rust 实现的 Oxc + Rolldown

现在,Astro 团队官宣第 7 个主版本正式发布,最大的升级就是原本使用 Go 实现的编译器也"锈化"为 Rust 重写的编译器了......

Markdown 引擎和编译器的极致性能就是 Astro 7 的最大版本亮点,本期一起来看看 Rust 是如何"锈化" Astro,使其成为 史上最快 的版本吧。

👉 新型 Rust 编译器

Astro 7 采用了 Rust 重写的新型编译器,取代了之前基于 Go 语言实现的编译器,高性能地编译 .astro 格式的组件。

Rust 编译器底层基于尤雨溪公司的 Oxc 编译器,并使用 Lighting CSS 处理 CSS 作用域,这是 Vite 未来默认会采用 CSS 预处理器,这些都是已经被 Rust "锈化"的工具。

目前新型的 Rust 编译器基本向后兼容旧版的 Go 编译器,除了下列几种特殊情况:

  • 不再进行 HTML 纠错:Go 编译器会通过重排元素等方式将标签隐式重写为"有效的 HTML",这些意外操作常常导致难以 debug 的 bug,Rust 编译器会直接处理
  • JSX 严格模式 :诸如 <div class="text-white >Astro 之类的未闭合标签和未终止属性,Rust 编译器现在会报错,而不是像 Go 编译器那样隐式纠错后,忽略这些真正的模板 bug
  • JSX 空格处理:元素之间的空格现在遵循 JSX 约定被折叠,与 React 和其他 JSX 框架的行为保持一致

举个栗子,行内元素之间的换行符不再产生可见的空格:

Rust 编译器也借鉴了 Rolldown 的模式,为不同平台发布原生二进制文件,提供 WASM(Web 汇编)回退方案。

👉 Rust 驱动的 Vite 8

Astro 7 从 Vite 7 升级到了 Vite 8,这是 Vite 的一个革命性版本,因为 Vite 8 底层集成了基于 Rust 实现的 Rolldown + Oxc,取代了 Go 实现的 esbuild + rollup。

Rolldown 的插件系统兼容 rollup API,但速度提升了至少 10 倍,最高可达 30 倍。

Vite 8 包含了一个兼容层,能将旧版 esbuildrollupOptions 配置自动转换为 Rolldown 的等效配置。

因此,Astor 7 采用 Vite 8 之后,大多数项目无需更改配置就能无缝升级,直接享受更快的构建速度。

👉 Markdown 锈化

前端基建使用 Rust 重写或许见怪不怪,现在更通用的开发技术栈也开始"锈化"了。

Astro 7 默认采用了 satteri 作为 Markdown 和 MDX 的处理管道,这也是一个基于 Rust 的处理器。

在底层,satteri 使用 pulldown-cmark 解析 CommonMark 通用 Markdown 语法,使用 Oxc 解析 MDX 扩展表达式,这些全部都是 Rust 原生库,性能惊人。

但性能并非唯一的优势,原本某些可插拔的功能也直接使用 Rust 实现为内置功能,比如 GitHub 风格的 Markdown 语法,不再需要额外的插件。

对于非默认的功能,可以在 astro.config.js 中自己配置是否启动:

此外,Astro 的 Markdown 处理管道原本基于 unified,其中涉及 remark 和 rehype 等 Markdown 生态的插件,这些插件目前尚未全部使用 Rust 重写。

但可以使用 satteri 的插件 API 实现,或者使用原本的 JS 处理管道:

实际上,Astro 的新型 Rust 编译器带来的性能提升还不是重点,作为 GitHub 前五的 SSG(静态站点生成器),Markdown 生态的锈化提升的性能有过之而无不及。

以构建 Astro 官方文档为例,单独来看,新型的 Rust 编译器的构建速度比旧版 Go 编译器提升了约 6%,因为 .astro 的编译一般不会成为性能瓶颈,而大量 Markdown 的处理才是真正的性能杀手。

现在,Astro 的 Markdown 处理器也锈化了,联手 Rust 编译器,两者的性能叠加就更加明显。而且,随着网页规模的扩大,使用 Markdown 越多的网站,性能提升越明显。

👇 重点总结

Astro 团队官宣 Astro 7 正式发布,其中大量 Go 和 JS 的基建使用 Rust 重写"锈化",使其成为了 Astro 进化史上的 最快版本

  • 新型 Rust 编译器取代了基于 Go 语言的旧版编译器
  • Astro 从 Vite 7 升级到 Vite 8,基于 Rust 的 Rolldown + Oxc 取代了 Go 语言实现的 esbuild + rollup
  • 使用 Rust 实现的 satteri 作为默认的 Markdown / MDX 引擎,部分可插拔功能直接使用 Rust 重写为内置功能

Rust 工业革命还在继续,这不仅发生在 JS / TS 相关的前端基建,也蔓延到了基于 Go 等其他语言更广泛的开发技术栈,榨干原生性能,为程序员提供极致丝滑的开发体验。

未来前端基建的主流或许不再是"Go vs Rust",而是"Go to Rust"(万物皆可锈化)。

👍 以上就是本期《前端日报》的全部内容了,如果读完对你有所帮助,可以按赞打卡、在看推荐或转发分享。

🙏 已经关注我的粉丝们,我们下期再见啦,掰掰~~

👇 参考文献:

相关推荐
V158897262014 小时前
从滴滴模式看机器人租赁:撮合型租赁平台开发源码的调度系统设计思路
linux·前端·机器人
研☆香4 小时前
js中使用的正则表达式
开发语言·javascript·正则表达式
szarron4 小时前
国产手持式频谱分析仪选型攻略:TFN RC系列 vs HTOOL SA8T频谱分析仪 专业参数对比(军工/路测/调试全覆盖)
开发语言·前端·状态模式
开开心心就好4 小时前
免费桌签打印工具,支持批量导入名字
前端·javascript·人工智能·docker·jupyter·智能手机·语音识别
涛涛ing4 小时前
2026 年 9 月,整个 npm 生态的「心脏」都被 Rust 换了
前端
爱喝水的鱼丶4 小时前
SAP-ABAP: BAdI 开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流·开发交流
IT_陈寒4 小时前
明明设了默认值,为什么我的JavaScript函数参数还是undefined?
前端·人工智能·后端
CappuccinoRose4 小时前
Web Components 基础
前端·javascript·交互·web component·shadow dom
晴天164 小时前
前端 Monorepo 入门分享:从概念到实践
前端
imgsq4 小时前
MapLibre GL JS v6 正式发布:v5 之后八个月的第一个大版本(编译)
开发语言·javascript·ecmascript