GoForum🌐 V2EX

有人用 MoonBit 做出逼近浏览器级基础设施了,国产语言真的要起飞了

Zongen · 2026-03-26 11:29 · 0 次点赞 · 19 条回复

[图片]

看到最近有人在尝试用 MoonBit 做浏览器,虽然还只是实验品,但 MoonBit 的发展速度真的挺惊人的!看到官网说今年中左右就要推出 1.0 版本了 ,真的推荐大家最近去试用一下 MoonBit

MoonBit: https://www.moonbitlang.com/

下面是结合 AI 关于这个浏览器的介绍 传送门: https://github.com/mizchi/crater


项目介绍

mizchi/crater 不是普通的“布局小玩具”,而是在做一个用 MoonBit 写的、面向浏览器/渲染器方向的 CSS layout engine 基座。 它当前最核心的定位,是根据 HTML/CSS 计算元素布局结果,也就是算出每个节点的 x / y / width / height ,但不负责真正的文本测量、绘制和完整浏览器渲染。README 里直接写了,它专注 layout calculation ,不处理字体加载、真实文本 shaping 、绘制、DOM 操作。 可以把它理解成三层里的中间那层:

  1. 上层:HTML/DOM/CSS 输入
  2. 中层:layout engine ,算盒模型、Flexbox 、Grid 、位置尺寸
  3. 下层:真正绘制到屏幕/Canvas/终端 crater 现在最强的是第 2 层。 仓库 README 直接定义它是:
  • A CSS layout engine written in MoonBit
  • ported from Taffy
  • 目标类似 Yoga ,但支持的 CSS 能力更广,尤其是 Flexbox 和 Grid 作者在文章里也讲得很直白: 他参考了 Yoga 、Taffy 、Stylo 、Blitz 这些现有方案,但目标不是简单绑定现成 Rust/C 实现,而是为了学习和未来可组合性,在 MoonBit 里从头写一套纯实现。 这意味着它的价值不只是“能算布局”,而是:
  • 给 MoonBit 提供一个浏览器/渲染器基础设施样板
  • 证明 MoonBit 可以承载复杂规范实现
  • 为后续 TUI 、轻量浏览器、SSR renderer 、嵌入式 UI runtime 打底

这个项目最强的地方

1 )目标不是 toy demo ,而是对齐真实 Web 标准 这项目最有含金量的地方,不是“支持 Flexbox/Grid”这几个字,而是它在用两类非常硬的测试体系校验自己: 一类是 Taffy compatibility tests 。 README 里写了,当前移植自 Taffy 的布局算法测试通过率大概是:

  • Flexbox: 543 / 609 ,89.2%
  • Block: 204 / 226 ,90.3%
  • Grid: 268 / 331 ,81.0%
  • Total: 1015 / 1166 ,87.0% 另一类更关键,是 WPT ( Web Platform Tests )。 README 当前列出的 CSS 相关 WPT 结果非常强,整体是 1477 / 1484 ,99.5%,其中 flexbox 、grid 、display 、box 、sizing 、align 、position 、overflow 、contain 、variables 等模块基本全绿,filter-effects 也到 93.4%。 这个指标很重要,因为 WPT 不是作者自己随手写的单元测试,而是浏览器圈通用的规范一致性测试集合。作者文章里也明确说,项目核心目标之一就是尽量通过 WPT 。 这说明它不是“看起来像浏览器”,而是在往“行为接近真实浏览器”推进。

2 )项目边界清楚,没有假装自己已经是完整浏览器 很多项目的问题是讲得很大,但边界模糊。crater 反而比较干净: 它明确承认自己现在的局限,包括:

  • 没有真实字体渲染
  • 文本测量是近似的 monospace sizing
  • 没有完整 text layout
  • baseline alignment 只做了部分实现
  • vertical writing mode 支持有限 这很关键。因为浏览器最难的部分之一就是文本排版和字体相关行为。 如果一个项目在这块没做完,却不说清楚,就容易误导别人。crater 这里反而是技术口径比较严谨的。 所以我的判断是: 它现在已经是相当强的 CSS layout engine ,但还不是完整 browser engine 。

3 )它的 ambition 明显不止 layout ,已经在往“MoonBit 浏览器运行时”扩 README 除了 CSS 布局测试,还列了:

  • DOM WPT (wpt/dom/nodes):9296 / 9296 ,100%
  • WebDriver BiDi 多个套件:100% 而 AGENTS.md 里还把路线写得更明确:
  • Milestone 1: Preact Compatibility
  • Milestone 2: Playwright Integration 包括 DOM API 覆盖、事件处理、组件生命周期、WebDriver BiDi 协议绑定等。 这说明作者思路不是停在“做一个布局库”,而是继续往下做:
  • DOM
  • 浏览器自动化协议
  • 让前端框架运行起来
  • 最终逼近一个可用的轻量 Web runtime 这个方向对 MoonBit 很有代表性。因为它在证明: MoonBit 不只是编译到 JS/WASM 的语言,而是有机会承载更完整的 Web 基础设施。

为什么这个项目对 MoonBit 特别有意义

我觉得它的意义有三层。 第一层:展示 MoonBit 能写“规范密集型系统” CSS layout engine 这种东西,不是 CRUD ,也不是 demo parser 。 它是那种:

  • 状态空间大
  • edge case 多
  • 规范细节极碎
  • 一堆行为要和浏览器对齐 这种项目非常考验语言的:
  • 类型系统
  • 抽象能力
  • 可维护性
  • 重构安全性
  • 测试组织能力 而 crater 当前已经有很多提交,仓库主要语言也几乎都是 MoonBit ,说明它不是“少量核心代码用 MoonBit ,外面靠别的语言撑着”,而是真正以 MoonBit 为主体。 第二层:它给 MoonBit 提供了一个对外好讲的“硬核样板” 很多语言生态对外展示时,项目都偏:
  • TodoMVC
  • 小游戏
  • 算法题
  • 通用工具库 这些没法立刻建立“这语言能做硬东西”的认知。 但 layout engine / browser runtime / FreeType / ORM / parser 这种项目,一眼就能让外部开发者理解技术含量。 crater 就属于这类样板。 它的传播价值其实非常高。 第三层:它和 MoonBit 的产品方向有协同 作者文章里提到,目标之一是做到 Yoga alternative ,并为 TUI 的 Ink 替代品 打基础,还会把 JS build 发到 npm 、WASM 模块发到 wa.dev 。 这意味着它天然适合 MoonBit 擅长的几个出口:
  • JS
  • WASM
  • 跨环境 runtime
  • 前端/终端渲染基础设施

这个项目现在的短板

也很明显。 1 )离“真实浏览器可替代”还有关键缺口 最主要就是文本和字体。 作者自己也说了,现在很多没做的部分集中在:

  • vertical text
  • 依赖真实 font rendering 的 baseline
  • 更完整的 rendering-dependent behavior 这不是小问题。 浏览器最麻烦的 bug ,很多都和字体、inline layout 、baseline 、文字测量、国际化排版有关。 所以当前更准确的定位是: 高完成度 layout/runtime foundation ,而不是完整 browser engine 。 2 )项目复杂度已经很高,后续维护成本会陡增 仓库规模已经不小,作者自己也提到当前代码量很大,甚至可能是最大的 MoonBit 项目之一。 这种项目一旦进入:
  • 更多 WPT 覆盖
  • 事件系统
  • DOM mutation
  • Playwright 兼容
  • Preact 生态兼容 维护压力会几何级上升。 尤其是规范跟进和回归测试,会非常吃工程纪律。 3 )生态转化还需要“杀手级落地案例” 现在它的技术演示性很强,但用户真正会问的是:
  • 能不能嵌进某个产品里
  • 能不能替代 Yoga / Taffy 的部分场景
  • 能不能支撑 TUI / SSR / 邮件排版 / PDF / 小型浏览器
  • 性能和集成成本怎么样 也就是说,crater 已经有了研究价值和生态象征意义,但要进一步破圈,还需要一个直接可感知的落地产品。

我对这个项目的总体评价

我的评价是: 这是一个“方向非常对、技术含量很高、对 MoonBit 生态有象征意义”的项目。 更具体一点:

  • 从工程硬度看,它很强,因为它在啃浏览器标准和 WPT 。
  • 从生态价值看,它比普通库高很多,因为它是基础设施。
  • 从产品成熟度看,它还处在“非常有潜力的核心引擎”阶段,不该被误说成完整浏览器。 一句话概括就是: crater 的厉害之处,不只是“MoonBit 也能写布局引擎”,而是它已经开始逼近“MoonBit 也能写浏览器级基础设施”这件事。 如果你要对外讲,我建议重点讲这三个点:
  1. Pure MoonBit 实现的 CSS layout engine
  2. 对齐 Taffy 与 WPT ,不是玩具 demo
  3. 目标正在从 layout 扩展到 DOM / Preact / Playwright runtime 如果你要,我可以继续把这版压缩成一段更适合发 X 的短评。

未来展望

展望未来,crater 最值得关注的,不只是它还能补齐多少布局细节,而是它会不会从一个高完成度的 CSS layout engine ,继续成长为一个真正可运行前端框架、可接入自动化工具的轻量 Web runtime 。 从目前的路线来看,这个方向并不遥远。它已经在布局计算之外,持续推进 DOM 能力、WebDriver BiDi 兼容,以及 Preact 和 Playwright 相关集成。这意味着 crater 的下一阶段,重点很可能不再只是“把布局算对”,而是进一步走向“把应用跑起来、把测试接起来、把运行时用起来”。一旦它能稳定承载真实前端框架,它的定位就会发生明显变化:从一个布局引擎,升级为 MoonBit 生态中的 Web 基础设施底座。 再往前看,crater 的上限其实不止于此。当前它最明显的边界仍然在文本、字体和真实渲染层面,这也是它离“更完整浏览器能力”之间最大的缺口。但也正因为如此,它未来的成长空间仍然很大。如果后续 MoonBit 生态中的字体、文本 shaping 、绘制等基础设施逐步成熟,并能与 crater 形成组合,那么它完全有机会从“布局正确”走向“排版完整”,进一步支撑 Canvas UI 、终端界面、文档渲染,甚至更轻量的浏览器容器等方向。 当然,这条路不会轻松。随着项目继续向 DOM 、事件系统、框架兼容、自动化协议推进,复杂度会快速上升,维护成本也会越来越高。真正困难的部分,往往不是大功能本身,而是大量细碎但必须对齐标准的行为实现。因此,crater 未来能走多远,既取决于技术能力,也取决于它能否持续保持工程纪律,并逐步找到清晰的落地场景。 但无论如何,crater 已经展示出一个很重要的信号:MoonBit 并不只适合写工具和小型项目,它同样有能力承载复杂、规范密集、具备长期演进潜力的基础设施工程。如果接下来它能继续完成从 layout engine 到 runtime 的推进,并出现真正可感知的应用案例,那么 crater 很可能会成为 MoonBit 生态中最具代表性的项目之一。 如果你愿意,我也可以继续把这篇整理成一版完整成稿标题 + 导语 + 正文结构。

19 条回复
sddyzm · 2026-03-26 11:29
#1

推广

Zongen · 2026-03-26 11:34
#2

不是推广的,是真的推荐,MoonBit 编程语言目前是非盈利的,就算是推广也是希望大家能看到国产技术

sdawtgb · 2026-03-26 11:34
#3

直接把 AI 内容丢上来最后一句都不删是吧 BYD

Zongen · 2026-03-26 11:34
#4

@sdawtgb 说了呀是 AI 总结的内容

Zongen · 2026-03-26 11:34
#5

@sdawtgb 不是 这个 BYD 不是骂人把,哥们

icyalala · 2026-03-26 11:34
#6

浓浓的 AI 味,一点都看不下去。。连宣传文案都懒得自己写了吗?

doctorzry · 2026-03-26 11:34
#7

说实话发这些还是建议润个色(重新发个 prompt 让 AI 优化下就行),最近用 AI 用多了用的头晕,看到你开头的“不是”,,“而是”这种经典 AI 腔真有点 PTSD

Zongen · 2026-03-26 11:34
#8

@icyalala 说了是 Ai 总结的,不是宣传啊!!!

Zongen · 2026-03-26 11:34
#9

@doctorzry 额。那我重新写一下?

rtv · 2026-03-26 11:39
#10

国产编程语言已经落伍了,现在都是 vibe coding

Zongen · 2026-03-26 11:39
#11

@rtv 写代码这件事可能落伍,但编程语言本身 10 年内不会落伍,AI 直接 二进制 目前还看不到

incu · 2026-03-26 11:44
#12

AI 时代,开始关门了,前面没有足够积累的语言就更难推广了。

iorilu · 2026-03-26 11:44
#13

都 ai 了, 没人关心语言 只关心 ai 删除啥语言, 显然老的用户量大成熟语言占优阿

Zongen · 2026-03-26 11:44
#14

@incu 有道理,我也觉得这是编程语言最后的机会,未来大概率不会有新的出现了

snylonue · 2026-03-26 11:49
#15

烂炒

Zongen · 2026-03-26 11:49
#16

@iorilu 之前大家都这么以为,还觉得什么 以前编程语言代码量大 AI 好学,现在看完全不是了,AI 太聪明了,不用很多代码就能学会, 编译速度 在这个时代还真是优势极其明显

Zongen · 2026-03-26 11:49
#17

@snylonue 真的建议你去真的写两行再喷

fcvi44 · 2026-03-26 11:49
#18

一眼路边

Zongen · 2026-03-26 11:49
#19

@fcvi44 哈哈

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: Zongen
发布: 2026-03-26
点赞: 0
回复: 0