Bez - 生成的 Web 引擎 # 根据规范和测试生成 Web 渲染引擎。为什么 # 手工构建一个 Web 引擎需要数百名工程师和多年的时间,因此只有少数公司可以拥有一个,并且只有他们才能决定 Web 的工作方式。 Bez 而是生成引擎:根据规范,使用三个附带浏览器(相互检查)和 WPT 作为测试。一旦管道建成,每增加一台发动机的成本就非常低。目标 # 完成,或摇摇欲坠。默认构建是一个完整的引擎。对于 Web 浏览器以外的用途,构建可以仅包含其内容使用的 Web 功能:分析站点或应用程序,并且它从未涉及的每个功能都会从二进制文件中排除,而不仅仅是关闭( docs/content-scoped-engine.md )。在任何设备上都快速。较小的引擎做的工作较少,需要的内存也较少。易于嵌入。一个具有清晰 API 的小型引擎,适用于当今全部搭载或不搭载 Chromium 的应用程序和设备。更新最快。当规范或测试发生变化时,受影响的代码将重新生成并重新验证,而不是手动重写。它是如何工作的 # 流程图 LR spec["spec text"] --> model["model writes
many Candidates"] model --> engine["candidate running
inside the engine"] browsers["Chromium, Firefox,
WebKit (cached)"] --> check{"相同的框,
相同的地方?"} engine --> check check -- no --> model check -- yes --> code["commited as
ordinary Rust"] Status # 于 2026 年 9 月 25 日根据 browser-compat-data 8.0.4(17259 个叶键, docs/feature-map.json 中的 74 条规则)计算。区域生成手写链接oracle仅未达到总体0.6% 0.3% 0.5% 5.7% 93.0% css 2.5% 1.1% 2.0% 0.0% 94.4% html 0.0% 0.0% 0.0% 0.0% 100.0% api 0.0% 0.0% 0.0% 9.9% 90.1% JavaScript 0.0% 0.0% 0.0% 0.0% 100.0% svg 0.0% 0.0% 0.0% 0.0% 100.0% WebAssembly 0.0% 0.0% 0.0% 0.0% 100.0% http 0.0% 0.0% 0.0% 0.0% 100.0% mathml 0.0% 0.0% 0.0% 0.0% 100.0% 请参阅 docs/dashboard.md 了解这些状态的含义以及该表如何保持同步。 DOM、样式、盒子树和片段树是在 crates/dom 和 crates/layout 中手写的,并通过浏览器检查(roadmap.md →“第 1 阶段 - 引擎引导”)。九个 CSS 2.1 布局规则位于 crates/layout/src/ generated ;八个是由模型编写的,并在三浏览器投票中被承认,并且块高度保留其手写规则,因为没有模型候选人击败它。他们一起传递所有 227 个配方案例和所有 11 个可用的 WPT 正常流程页面。引擎实际调用哪些规则:roadmap.md →“每个生成的函数运行哪个解析器”。证明论文的内容:roadmap.md →“概念证明”。到目前为止的调查结果 # 三个浏览器大部分都同意,第三个浏览器指出了奇怪的一个。 705 个浏览器对比较中的 699 个在 235 个文档中达成一致(提交 3ca7323 );所有六个分歧都是十二个深度的百分比嵌套,每次多数投票都将 Firefox 列为异常值。文档/firefox-app-units.md 。 Firefox 的差异是一个真正的网络兼容性错误。 Gecko 将长度舍入为 1/60 px,而 Blink 和 WebKit 使用 1/64 px,这使得 Flex 项目仅在 Firefox 中换行,或者 offsetWidth 相差一个像素。复制品与 Mozilla 在 Slack、Google Store 和 Samsung 上诊断的损坏以及 Mozilla bug 1719314.experiments/firefox-compat/ 相匹配。 WPT 投票表在大多数套件中都是一致的。稳定的三引擎多数覆盖 2,282,301 个测试/子测试密钥中的 2,162,676 个(94.8%)。文档/wpt-votes.md 。脚本可观察的行为也同意。虚假媒体配置文件下的追踪探测器对 18 个引擎对中的 15 个达成一致;这三个分歧是真正的平台差异。 docs/dump-format.md →“跟踪协议”。一致性套件是可用的预言机。计算三个引擎中的两个同意时可用的测试:WPT canvas 82.6%(92.7%,不包括暂定),Khronos WebGL with dEQP 99.7%,WPT Web Audio 74.4%(85.6%,不包括暂定); WebGPU CTS 大约 85% 用于验证,大约 50% 用于数值执行。文档/conformance-oracles.md 、文档/webgpu-cts.md 。逻辑编程的地位很窄。以 Datalog 形式编写的边距崩溃与浏览器在 1195 个偏移量中的 1195 个达成一致,并捕获了所有 227 个案例中几何检查都遗漏的种子错误。文档/逻辑层.md 。经济学适用于该平台的一部分。大约 55-60% 的与引擎相关的兼容条目具有可用的自动化预言机和可生成的规范散文;大约 8-18% 没有。文档/platform-economics.md ,文档/oracle-coverage.md 。设计了一个针对某一站点内容的引擎,并且其内容分析器已经落地。文档/content-scoped-engine.md 。开放性问题 # 手动构建每个规则的成本是多少,功能的生成部分应该有多宽,无需 JavaScript 即可访问多少 WPT,以及 IDL 生成的代码在哪里结束:roadmap.md →“开放性问题”。各个区域的状态: docs/platform-areas.md 。来源#
开发者生态
morning
Bez:根据规范和测试生成浏览器引擎
摘要
Bez - a generated web engine # Generate a web rendering engine from specs and tests. Why # Building a web engine by hand costs hundreds of engineers and many years, so only a few companies can have on...
engine
the
and
web
100
only
model
check
hand
docs
2026-10-02
1 阅读
约8分钟阅读
nerdypepper
字号:
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱