WASI 0.3.0 릴리스 노트
WASI 0.3.0은 WebAssembly 시스템 인터페이스를 구성 요소 모델 기반 아키텍처로 전환하여 액터와 스트림과 같은 비동기 기능을 도입합니다. 이 릴리스는 간단한 유닉스 유사 API에서 벗어나 서버 측 Wasm 런타임을 위해 설계된 더 구조화되고 상호 운용 가능한 구성 요소 시스템으로의 전환을 나타냅니다.
구성 요소 모델로의 전환
WASI 0.3.0은 WebAssembly 구성 요소 모델을 기반으로 구축되었으며, 레거시 단일체 API 접근 방식에서 벗어났습니다. 이 아키텍처 전환은 .wit (WebAssembly 인터페이스 타입) 파일을 사용하여 인터페이스를 정의함으로써 다양한 생태계 간의 상호 운용성을 향상시키는 것을 목표로 합니다. 이 파일은 WASI GitHub 제안 디렉토리에서 직접 찾아볼 수 있습니다.
구성 요소 모델은 모듈성을 촉진하기 위한 의도이지만, 복잡성에 대해 개발자들 사이에서 논쟁을 일으켰습니다. 일부 비평가들은 레인한 유닉스 유사 API에서 "의견이 강한 구성 요소 모델"로의 이동이 불필요한 과도한 복잡성을 도입하여 WebAssembly를 빠르고 간단하게 유지하는 주요 목표를 방해할 수 있다고 주장합니다.
새로운 비동기 기능
WASI 0.3.0의 주요 기술적 발전은 async/await 스타일 기능의 도입입니다. 여기에는 다음이 포함됩니다:
- 액터: 구조화된 동시성과 통신을 가능하게 함.
- 스트림: 데이터 흐름을 비동기적으로 처리하는 표준화된 방법을 제공함.
これらの機能は、Wasm エコシステムにモダンな非同期プログラミング パターンをもたらすように設計されていますが、スタックフル async がスタック スイッチング提案に依存するかどうかなどの実装の詳細は、ランタイム実装者の間で技術的な問い合わせのポイントのままです。
생태계 호환성 및 런타임 지원
WASI 0.3.0은 현재 서버 측 런타임을 대상으로 하며 브라우저에서 기본적으로 지원되지 않습니다. 또한 원래 WASI 제안 및 레거시 버전을 지원했던 런타임과의 호환성 단절도 유지합니다.
오늘날 수정된 C/C++ 프로그램과 라이브러리를 WebAssembly로 컴파일해야 하는 개발자에게는 WASIX와 같은 대안이 종종 더 실용적인 옵션으로 언급되는데, 이는 WASI 0.3.0에 대한 현재 툴링 격차 때문입니다. 또한 언어 지원은 여전히 진화 중이며, 예를 들어 Rust 개발자는 새로운 릴리스를 충분히 활용하기 위해 전용 WASI 0.3 대상을 기다리고 있습니다.
커뮤니티 관점 및 비판
출시에 대한 커뮤니티 피드백은 투명성과 구성 요소 모델의 유용성에 초점을 맞춰 극단적으로 나뉩니다:
"wasi 구성 요소의 약속은 이행되지 않았습니다. 시장은 동적으로 아티팩트를 핫로드하고 링크하고 싶어 합니다. wasi 프로젝트는 그렇게 사용하려면 내부자 수준의 마법이 필요합니다: 제공은 당신이 배포하기 전에 구성 요소를 정적으로 연결하는 것이었습니다.
다른 개발자들은 0.3.0 릴리스 이전의 개발 과정에 대한 공개 가시성 부족에 불만을 표했으며, 발표 이전에 상당한 기간 동안 진행 상황이 대중에게 명확히 보이지 않았다고 제안했습니다.
주요 변경 사항 요약
| 기능 | WASI 0.2 / 레거시 | WASI 0.3.0 |
|---|---|---|
| 아키텍처 | 단일체 / 유닉스 유사 | 구성 요소 모델 기반 |
| 비동기 지원 | 제한적/동기 | async/await, 액터, 스트림 |
| 인터페이스 정의 | C 스타일 헤더/API | .wit 파일 |
| 주요 대상 | 일반 Wasm | 서버 사이드 런타임 |