Интерпретатор Python 3 на Rust, который запускает код без привязки к CPython и поддерживает 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 обновляется ежедневно.
Похожие проекты
Универсальный редактор тайловых карт для игр — от RPG и платформеров до клонов Breakout.
Экспериментальный компилятор TypeScript и JavaScript, который превращает программы в нативные исполняемые файлы или WebAssembly без необходимости устанавливать Node.js.
Порт компилятора и языкового сервера TypeScript 7 на Rust — готовая замена для проверки типов и генерации кода.
Open-source OCR-движок libtesseract и CLI для распознавания текста на изображениях: LSTM-распознавание и поддержка более 100 языков.
Простой 2D-движок для языка программирования D со встроенной физикой, анимацией, тайловыми картами и диалогами.