Repolode
WebAssembly

WebAssembly/binaryen

wasm-opt 도구와 JavaScript 빌드(binaryen.js)를 제공하는 WebAssembly용 C++ 컴파일러 및 최적화 라이브러리입니다.

스타
8,666
포크
899
열린 이슈
580
마지막 커밋
8시간 전

어떤 프로젝트인가요?

Binaryen은 C++로 작성된 WebAssembly용 컴파일러 및 툴체인 인프라 라이브러리입니다. 간단한 C API와 JavaScript 인터페이스를 제공하며, WebAssembly와 유사한 형식의 입력뿐 아니라 일반 제어 흐름 그래프도 처리합니다. 내부 IR은 WebAssembly로 빠르게 컴파일하고 최적화 패스를 병렬로 실행하도록 설계되었습니다.

최적화기에는 코드 크기를 줄이고 실행 속도를 높이는 다양한 패스가 포함되어 있으며, 로컬 레지스터 할당, 데드 코드 제거, 인라이닝, 데이터 세그먼트 패킹 등 WebAssembly에 특화된 변환에 중점을 둡니다. 주요 도구인 wasm-opt는 wasm 파일에 이러한 패스를 적용합니다. 관련 도구로는 wasm 조립 및 역어셈블, wasm2js를 통한 wasm의 JavaScript 변환, 모듈 병합, 테스트 사례 축소, wasm 인터프리터가 있습니다.

Emscripten, wasm-pack, Kotlin/Wasm, Dart의 Flutter 웹 빌드 등 여러 툴체인이 Binaryen을 구성 요소로 사용하며, AssemblyScript와 Grain은 라이브러리로 사용합니다.

핵심 기능

  • 01코드 크기를 줄이고 실행 속도를 높이는 WebAssembly 특화 패스를 다수 포함한 최적화기
  • 02wasm 파일을 최적화하고 변환하는 명령줄 도구 wasm-opt
  • 03WebAssembly를 ES6 JavaScript 모듈로 변환하는 컴파일러 wasm2js
  • 04코드에서 모듈을 만들고 최적화할 수 있는 간단한 C API와 binaryen.js
  • 05wasm 파일을 번들링하고 정리하거나 축소하는 wasm-merge, wasm-metadce, wasm-reduce 유틸리티

활용 사례

  • C, C++, Rust 또는 Kotlin 툴체인에서 생성한 WebAssembly 결과물의 크기를 줄이고 실행 속도를 높이기
  • 네이티브 wasm을 지원하지 않는 환경에서 사용할 수 있도록 WebAssembly를 JavaScript로 컴파일하기
  • 배포 전에 여러 wasm 모듈을 하나의 파일로 병합하기
  • JavaScript 또는 C에서 프로그래밍 방식으로 WebAssembly 모듈 만들기

사용 전 알아둘 점

  • 기본 텍스트 출력이 항상 유효한 WebAssembly 텍스트 형식인 것은 아닙니다. 유효한 텍스트를 출력하려면 --generate-stack-ir --print-stack-ir를 사용하세요.

토픽

자주 묻는 질문

binaryen은(는) 무엇인가요?
wasm-opt 도구와 JavaScript 빌드(binaryen.js)를 제공하는 WebAssembly용 C++ 컴파일러 및 최적화 라이브러리입니다. 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

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트