실행 가능한 컴포넌트 만들기
이 섹션에는 실행 가능한 컴포넌트를 만드는 방법에 대한 언어별 가이드가 포함되어 있습니다.
리액터(라이브러리와 유사한) 컴포넌트에서 임의의 함수 실행하기
실제로 WebAssembly 컴포넌트에서 내보낸 모든 인터페이스는 다음 방법 중 하나로 실행할 수 있습니다:
- 기능을 임포트하고 재사용하는 사용자 정의 호스트/컴포넌트 만들기
wasmtime run --invoke와 같은 고수준의 범용 도구 사용하기
예를 들어, 다음 WIT를 충족하는 WebAssembly 컴포넌트가 있다고 가정합니다:
package docs:adder@0.1.0;
interface add {
add: func(x: u32, y: u32) -> u32;
}
world adder {
export add;
}
add 인터페이스 내부에서 익스포트된 add 함수를 사용하려면 해당 기능을 임포트하고 사용하도록 빌드된 호스트나 다른 컴포넌트를 작성해야 합니다. 그 예시는 이 저장소에 있는 example-host에서 확인할 수 있습니다.
또는 wasmtime run --invoke처럼 컴포넌트에 대해 범용적으로 동작하는 도구를 사용할 수 있습니다:
wasmtime run --invoke 'add(1, 2)' add.component.wasm
Wasmtime에는 익스포트를 범용적으로 해석하고, 인수를 WebAssembly 인수로 변환하며, 기존 컴포넌트를 동적으로 실행할 수 있는 코드가 포함되어 있습니다.
바이너리처럼 동작하는 컴포넌트 만들기
임의의 함수를 실행하려면 사용자 정의 호스트/플랫폼이나 wasmtime run --invoke와 같은 동적 도구가 필요하지만, 바이너리처럼 취급할 수 있는 컴포넌트(즉, CLI 애플리케이션)도 빌드할 수 있습니다.
개괄적으로 보면, 라이브러리보다는 바이너리에 가까운(즉, wasmtime run과 같은 도구로 쉽게 실행할 수 있는) 컴포넌트를 만드는 방법은 최소 두 가지가 있습니다:
- “command” 컴포넌트 만들기
wasi:cli/run인터페이스 내보내기
command 컴포넌트는 단순히 _start 익스포트를 가지는 반면, wasi:cli/run run 인터페이스를 내보내는 컴포넌트는 WASI를 통해 stdout, stderr와 같은 CLI 환경을 모방하는, 더 견고하고 표준화된 인터페이스를 활용할 수 있습니다.
이 섹션에서는 관련 언어에서 (바이너리처럼) 간단하게 실행할 수 있는 컴포넌트를 만드는 방법을 살펴봅니다.
언어
이 가이드는 다양한 언어에 대해 구현되어 있습니다:
| 언어 |
|---|
| Rust |
| Javascript |
| 기타 언어 |