Repolode
WebAssembly

WebAssembly/binaryen

Библиотека компилятора и оптимизатора на C++ для WebAssembly, включающая инструмент wasm-opt и сборку для JavaScript — binaryen.js.

Звёзды
8,666
Форки
899
Открытые issues
580
Последний коммит
8 часов назад

Что это?

Binaryen — библиотека инфраструктуры компилятора и инструментальной цепочки для WebAssembly, написанная на C++. Она предоставляет простой C API и интерфейс для JavaScript, а на вход принимает как представление, похожее на WebAssembly, так и общий граф потока управления. Внутреннее IR библиотеки рассчитано на быструю компиляцию в WebAssembly и параллельное выполнение проходов оптимизации.

Оптимизатор включает множество проходов, предназначенных для уменьшения размера кода и повышения скорости. Особое внимание уделено преобразованиям, специфичным для WebAssembly, например локальному распределению регистров, удалению мёртвого кода, встраиванию функций и упаковке сегментов данных. Основной инструмент, wasm-opt, запускает эти проходы для wasm-файла. Другие инструменты позволяют собирать и дизассемблировать wasm, преобразовывать его в JavaScript с помощью wasm2js, объединять модули, сокращать тестовые случаи и интерпретировать wasm.

Binaryen используется как компонент в нескольких инструментальных цепочках, включая Emscripten, wasm-pack, Kotlin/Wasm и веб-сборку Flutter для Dart. Кроме того, AssemblyScript и Grain используют его как библиотеку.

Ключевые возможности

  • 01Оптимизатор со множеством специфичных для WebAssembly проходов для уменьшения размера кода и повышения скорости
  • 02Консольный инструмент wasm-opt для оптимизации и преобразования wasm-файлов
  • 03Компилятор wasm2js, преобразующий WebAssembly в модули JavaScript ES6
  • 04Простой C API и binaryen.js для создания и оптимизации модулей из кода
  • 05Утилиты wasm-merge, wasm-metadce и wasm-reduce для объединения, сокращения и уменьшения wasm-файлов

Сценарии использования

  • Уменьшение размера и ускорение WebAssembly-кода, созданного инструментальными цепочками для C, C++, Rust или Kotlin
  • Компиляция WebAssembly в JavaScript для сред без встроенной поддержки wasm
  • Объединение нескольких wasm-модулей в один файл перед поставкой
  • Программное создание модулей WebAssembly на JavaScript или C

Что важно знать

  • Текстовый вывод по умолчанию не всегда является корректным текстом WebAssembly. Чтобы получить корректный текст, используйте --generate-stack-ir --print-stack-ir.

Темы

Частые вопросы

Что такое binaryen?
Библиотека компилятора и оптимизатора на C++ для WebAssembly, включающая инструмент wasm-opt и сборку для JavaScript — binaryen.js. Binaryen — библиотека инфраструктуры компилятора и инструментальной цепочки для WebAssembly, написанная на C++. Она предоставляет простой C API и интерфейс для JavaScript, а на вход принимает как представление, похожее на WebAssembly, так и общий граф потока управления. Внутреннее IR библиотеки рассчитано на быструю компиляцию в WebAssembly и параллельное выполнение проходов оптимизации.
binaryen можно использовать бесплатно? Какая у него лицензия?
binaryen распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
binaryen всё ещё поддерживается?
Активно поддерживается. Последний коммит в binaryen — 21 окт. 2026 г..
Для чего можно использовать binaryen?
Уменьшение размера и ускорение WebAssembly-кода, созданного инструментальными цепочками для C, C++, Rust или Kotlin Компиляция WebAssembly в JavaScript для сред без встроенной поддержки wasm Объединение нескольких wasm-модулей в один файл перед поставкой Программное создание модулей WebAssembly на JavaScript или C
Где скачать binaryen?
Исходный код и инструкции по установке — на GitHub: https://github.com/WebAssembly/binaryen

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты