프로젝트 소개

Wasmtime은 Bytecode Alliance 프로젝트로 개발된 WebAssembly용 독립형 런타임입니다. 빠르고, 안전하며, 구성 가능하고 표준을 준수하도록 설계되었으며, 명령줄 도구와 다른 애플리케이션에 내장되는 런타임으로 모두 사용할 수 있습니다. 설치 CLI는 Linux와 macOS에서 $WASMTIME_HOME(기본값은 $HOME/.wasmtime)에 설치하는 셸 스크립트로 설치할 수 있으며, 실행 파일은 $WASMTIME_HOME/bin에 배치됩니다. Windows 사용자 및 기타 사용자는 GitHub Releases 페이지에서 설치 프로그램과 바이너리를 다운로드할 수 있습니다. 추가 설치 옵션은 온라인 책에 문서화되어 있습니다. 사용 예 Rust 컴파일러가 설치되어 있으면 Rust 프로그램을 wasm32-wasip2 타깃을 사용하여 WebAssembly 컴포넌트로 컴파일한 다음 wasmtime 명령으로 실행할 수 있습니다. README에는 실행 시 "Hello, world!"를 출력하는 hello-world 예제가 있습니다. 주요 기능 - 빠름: 최적화하는 Cranelift 코드 생성기를 기반으로 하며, 런타임 또는 사전(ahead-of-time)에 기계 코드를 생성할 수 있습니다. 효율적인 인스턴스화, 임베더와 wasm 간의 낮은 오버헤드 호출, 동시 인스턴스의 확장성에 최적화되어 있습니다. - 보안: 개발은 Rust의 런타임 안전 보장을 기반으로 정확성과 보안을 강조합니다. 기능은 RFC 프로세스, Google OSS Fuzz를 통한 지속적인 퍼징, 릴리스 정책 및 명확한 보안 정책을 거칩니다. 또한 프로젝트는 Spectre와 같은 문제에 대한 방어를 통합하고 Wasmtime과 Cranelift의 중요한 부분에 대한 공식 검증을 위해 학계 연구자들과 협력합니다. - 구성 가능: 합리적인 기본값이 제공되지만, 구성을 통해 작은 환경에서 많은 동시 인스턴스를 가진 대형 서버에 이르기까지 CPU 및 메모리 소비를 세밀하게 제어할 수 있습니다. - WASI: WASI 표준을 통해 호스트 환경과 상호 작용하기 위한 풍부한 API 세트를 지원합니다. - 표준 준수: 공식 WebAssembly 테스트 스위트를 통과하고, wasm의 공식 C API를 구현하며, 향후 WebAssembly 제안을 구현합니다. 개발자들은 WebAssembly 표준 프로세스에 참여하고 있습니다. 언어 지원 Wasmtime은 여러 언어에서 임베딩할 수 있습니다. Bytecode Alliance가 지원하는 언어로는 Rust(wasmtime 크레이트), C(wasm.h, wasi.h 및 wasmtime.h 헤더, CMake 포함), C++(wasmtime.hh 헤더), Python(wasmtime PyPI 패키지), .NET(Wasmtime NuGet 패키지), Go(wasmtime-go 저장소) 및 Ruby(wasmtime gem)가 있습니다. 커뮤니티 지원 언어로는 Elixir(wasmex hex 패키지)와 Perl(Wasm Perl 패키지의 Wasm::Wasmtime 모듈)이 있습니다. 문서 Wasmtime 가이드는 Wasmtime이 할 수 있는 일을 배우고, 질문에 답을 얻고, 프로젝트에 기여하기 위한 권장 시작점입니다.