Kotlin/Wasm과 WASI 시작하기

Kotlin/Wasm과 WASI 시작하기

이 튜토리얼에서는 Kotlin/Wasm으로 만든 간단한 애플리케이션을 WebAssembly System Interface(WASI)를 이용해서 다양한 WebAssembly 가상 머신에서 실행하는 방법을 보여드릴게요.

예제 애플리케이션은 Node.js, Wasmtime, Deno, WasmEdge 가상 머신에서 실행할 수 있어요. 표준 WASI API를 사용하는 간단한 애플리케이션이랍니다.

현재 Kotlin/Wasm은 WASI 0.1(Preview 1이라고도 불러요)을 지원해요. WASI 0.2 지원은 향후 릴리스에서 계획되어 있고, WASI 0.2 지원 소식은 YouTrack 이슈에서 확인하실 수 있어요.

wasmWasi 타깃은 기본적으로 새로운 예외 처리(exception handling) 제안을 사용해서, 최신 WebAssembly 런타임과의 호환성을 높여줘요.

Kotlin/Wasm 툴체인은 Node.js 태스크(wasmWasiNode*)와 Wasmtime 태스크(wasmWasiWasmtime*)를 기본으로 제공해요. 프로젝트에 있는 Deno나 WasmEdge를 사용하는 태스크는 커스텀 태스크로 포함되어 있답니다.

출처: Get started with Kotlin/Wasm and WASI

본문

시작하기 전에

  1. 최신 버전의 IntelliJ IDEA를 다운로드해서 설치해 주세요.
  2. IntelliJ IDEA에서 File | New | Project from Version Control을 선택해서 Kotlin/Wasm WASI 템플릿 저장소를 클론해 주세요.

명령줄에서도 클론할 수 있어요:

git clone [email protected]:Kotlin/kotlin-wasm-wasi-template.git

애플리케이션 실행하기

  1. View | Tool Windows | Gradle을 선택해서 Gradle 도구 창을 여세요.

    Gradle 도구 창에서 프로젝트가 로드되면 kotlin-wasm-wasi-example 아래에 Gradle 태스크를 찾을 수 있어요.

    태스크가 제대로 로드되려면 Gradle JVM으로 최소한 Java 11이 필요하답니다.

  2. kotlin-wasm-wasi-example | Tasks | kotlin node에서 다음 Gradle 태스크 중 하나를 선택해서 실행해 주세요.

    • wasmWasiNodeDevelopmentRun — Node.js에서 애플리케이션을 실행해요.
    • wasmWasiWasmtimeDevelopmentRun — Wasmtime에서 애플리케이션을 실행해요.
    • wasmWasiDenoDevelopmentRun — Deno에서 애플리케이션을 실행해요.
    • wasmWasiWasmEdgeDevelopmentRun — WasmEdge에서 애플리케이션을 실행해요.

Windows 플랫폼에서 Deno를 사용할 때는 deno.exe가 설치되어 있어야 해요. 자세한 내용은 Deno 설치 문서를 참고해 주세요.

[IMAGE: Kotlin/Wasm and WASI tasks]

또는 kotlin-wasm-wasi-template 루트 디렉터리에서 터미널에 다음 명령 중 하나를 실행해도 돼요.

  • Node.js에서 애플리케이션을 실행하려면:
./gradlew wasmWasiNodeDevelopmentRun
  • Wasmtime에서 애플리케이션을 실행하려면:
./gradlew wasmWasiWasmtimeDevelopmentRun
  • Deno에서 애플리케이션을 실행하려면:
./gradlew wasmWasiDenoDevelopmentRun
  • WasmEdge에서 애플리케이션을 실행하려면:
./gradlew wasmWasiWasmEdgeDevelopmentRun

애플리케이션이 성공적으로 빌드되면 터미널에 메시지가 표시돼요:

[IMAGE: Kotlin/Wasm and WASI app]

애플리케이션 테스트하기

Kotlin/Wasm 애플리케이션이 다양한 가상 머신에서 올바르게 동작하는지도 테스트할 수 있어요.

Gradle 도구 창에서 kotlin-wasm-wasi-example | Tasks | verification의 다음 Gradle 태스크 중 하나를 실행해 주세요.

  • wasmWasiNodeTest — Node.js에서 애플리케이션을 테스트해요.
  • wasmWasiWasmtimeTest — Wasmtime에서 애플리케이션을 테스트해요.
  • wasmWasiDenoTest — Deno에서 애플리케이션을 테스트해요.
  • wasmWasiWasmEdgeTest — WasmEdge에서 애플리케이션을 테스트해요.

[IMAGE: Kotlin/Wasm and WASI test tasks]

또는 kotlin-wasm-wasi-template 루트 디렉터리에서 터미널에 다음 명령 중 하나를 실행해도 돼요.

  • Node.js에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiNodeTest
  • Wasmtime에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiWasmtimeTest
  • Deno에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiDenoTest
  • WasmEdge에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiWasmEdgeTest

더 알아보기

Kotlin Slack에서 Kotlin/Wasm 커뮤니티에 참여해 보세요:

Kotlin/Wasm 커뮤니티 참여하기

Kotlin/Wasm 예제를 더 둘러보세요: