프로젝트 소개

wasm-bindgen은 Rust 및 WebAssembly 워킹 그룹의 프로젝트로, WebAssembly 모듈과 JavaScript 간의 고수준 상호작용을 용이하게 한다. Rust 코드가 JavaScript 기능을 가져오고 JavaScript에서 사용할 Rust 함수를 내보낼 수 있게 하며, 바인딩과 글루 코드를 생성한다. 설치는 cargo를 통해 `cargo install wasm-bindgen-cli`로 하거나 릴리스 페이지에서 다운로드하여 수행한다. 미리 빌드된 아티팩트는 cargo-binstall로도 설치할 수 있다. README에는 기본 예제가 나와 있다. `#[wasm_bindgen]`이 붙은 `extern "C"` 블록으로 Web에서 `window.alert`를 Rust로 가져오고, Rust에서 JavaScript로 `greet` 함수를 내보낸다. 내보낸 함수는 ECMAScript 모듈 구문을 사용하여 JavaScript에서 소비된다. 설명된 주요 기능은 다음과 같다. - 경량 출력: 실제로 사용된 JavaScript 가져오기와 내보낸 Rust 기능에 대해서만 바인딩과 글루가 생성되므로 사용되지 않는 API는 포함되지 않는다. - ECMAScript 모듈: WebAssembly 모듈을 JavaScript 모듈처럼 가져올 수 있으며, WebAssembly/ESM 통합과의 향후 호환성이 명시되어 있다. - Web IDL 바인딩 제안을 염두에 두고 설계되었으며, Rust로 생성된 wasm 함수와 네이티브 DOM 메서드 사이의 JavaScript 심을 제거하고, 정적 타입 검사를 통해 JavaScript보다 빠른 DOM 접근을 가능하게 하는 것을 목표로 한다. 이 프로젝트는 가이드, wasm-bindgen, js-sys, web-sys, wasm-bindgen-futures에 대한 API 문서, 기여 가이드, Discord 채팅을 제공한다. MSRV 정책을 명시하고 있다. crates.io의 라이브러리는 MSRV가 v1.81이고, CLI 도구와 그 지원 라이브러리는 MSRV가 v1.86이며, 라이브러리에 대해서는 2년 MSRV 정책을, CLI에 대해서는 더 짧은 정책을 목표로 한다고 밝히고 있다. MSRV 이력 표에는 0.2.93부터 0.2.129까지의 버전이 나열되어 있다. 라이선스는 이중으로, 사용자의 선택에 따라 Apache License 2.0 또는 MIT이다. 별도로 명시하지 않는 한 기여는 동일한 이중 라이선스로 허용된다.