用 Rust 编写的 Python 3 解释器,不依赖 CPython 绑定,支持 WebAssembly 与嵌入 Rust 应用。
WebAssembly/binaryen
面向 WebAssembly 的 C++ 编译与优化基础库,附带 wasm-opt 等命令行工具和 binaryen.js。
- Star
- 8,666
- Fork
- 899
- 未关闭 Issue
- 580
- 最近提交
- 8小时前
这是什么?
Binaryen 是一个用 C++ 编写的 WebAssembly 编译与工具链基础库,提供简单的 C API,也可以在 JavaScript 中调用。它既接受类似 WebAssembly 的文本形式输入,也支持通用的控制流图,内部 IR 设计上便于快速编译为 WebAssembly,并可并行执行优化。
内置的优化器包含大量 Pass,用于减小代码体积并提升运行速度,重点是 WebAssembly 特有的优化,例如局部变量复用、死代码消除、内联和数据段打包等。主要命令行工具 wasm-opt 可对 wasm 文件运行这些优化,配套工具还包括 wasm 的汇编与反汇编、通过 wasm2js 转为 JavaScript、模块合并、测试用例缩减以及解释执行。
Emscripten、wasm-pack、Kotlin/Wasm 和 Flutter 的 Web 构建等工具链将 Binaryen 作为组件使用,AssemblyScript 和 Grain 等编译器则将其作为库调用。
核心功能
- 01包含大量面向 WebAssembly 的优化 Pass,用于减小体积并提升速度
- 02提供 wasm-opt 命令行工具,可优化和转换 wasm 文件
- 03wasm2js 可将 WebAssembly 编译为 ES6 JavaScript 模块
- 04提供简洁的 C API 和 binaryen.js,便于在代码中构建和优化模块
- 05wasm-merge、wasm-metadce、wasm-reduce 等工具分别用于合并、裁剪和缩减 wasm 文件
适用场景
- 缩减和加速由 C、C++、Rust 或 Kotlin 工具链生成的 WebAssembly 输出
- 在不支持原生 wasm 的环境中,将 WebAssembly 编译为 JavaScript
- 发布前将多个 wasm 模块合并为一个文件
- 在 JavaScript 或 C 代码中以编程方式构建 WebAssembly 模块
使用前须知
- 默认文本输出不一定是有效的 WebAssembly 文本,如需有效文本,请使用 --generate-stack-ir --print-stack-ir。
标签
常见问题
- binaryen 是什么?
- 面向 WebAssembly 的 C++ 编译与优化基础库,附带 wasm-opt 等命令行工具和 binaryen.js。 Binaryen 是一个用 C++ 编写的 WebAssembly 编译与工具链基础库,提供简单的 C API,也可以在 JavaScript 中调用。它既接受类似 WebAssembly 的文本形式输入,也支持通用的控制流图,内部 IR 设计上便于快速编译为 WebAssembly,并可并行执行优化。
- binaryen 可以免费使用吗?用的什么许可证?
- binaryen 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- binaryen 还在维护吗?
- 活跃维护中。binaryen 最近一次提交是在 2026年10月21日。
- binaryen 适合用来做什么?
- 缩减和加速由 C、C++、Rust 或 Kotlin 工具链生成的 WebAssembly 输出 在不支持原生 wasm 的环境中,将 WebAssembly 编译为 JavaScript 发布前将多个 wasm 模块合并为一个文件 在 JavaScript 或 C 代码中以编程方式构建 WebAssembly 模块
- 在哪里获取 binaryen?
- 源代码和安装说明在 GitHub 上:https://github.com/WebAssembly/binaryen
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
通用瓦片地图编辑器,用于为 RPG、平台跳跃等瓦片类游戏制作关卡地图。
一个实验性的编译器,可将 TypeScript/JavaScript 编译为原生可执行文件或 WebAssembly,运行时无需 Node.js。
用 Rust 重写的 TypeScript 7 编译器与语言服务,可直接替换现有类型检查流程。
开源 OCR 引擎(libtesseract)及命令行工具,可从图片中识别文字,支持 100 多种语言。
面向 D 语言的轻量 2D 游戏引擎,内置物理、动画、瓦片地图和对话系统。