WebAssembly 소개
마지막 업데이트:
WebAssembly 는 2019년 12월, WASM이 W3C 권장사항이 되면서, HTML, CSS, JavaScript 에 이어 웹의 4번째 공식 언어가 되었습니다.
특징
Speed
- 컴파일된 바이너리 포맷의 wasm 모듈은 JavaScript 엔진 내에서 JavaScript 와 같이 실행됩니다.
- 바이너리 형태로 제공되기 때문에 파싱, 컴파일, 최적화 단계가 필요없기 때문에 실행속도가 빠릅니다. 모든 최적화는 컴파일 단계에서 이루어집니다.
- WASM 바이너리 실행속도는 동일한 네이티브 코드보다 20% 정도만 느리게 실행됩니다.
Portability
- 일반 애플리케이션을 디바이스에서 실행하려면, 프로세서 아키텍처와 OS가 호환이 되어야 합니다.
- WASM은 일단 컴파일되고 나면, 모든 최신 브라우저에서 실행할 수 있습니다.
Flexibility
- 지금까지는 브라우저에서 지원하는 언어는 JavaScript 만이었지만, 이제는 WASM 이라는 새로운 선택지가 생겼습니다.
- UI 와 애플리케이션 로직은 JavaScript 를 사용하고, 그 외 코어 부분이나 성능 최적화가 필요한 부분은 WASM을 사용할 수 있게 되었습니다.
- WASM으로 컴파일 할 수 있는 언어는 여기에서 확인할 수 있으며, 2022년 6월 현재 다음과 같습니다:
- 초반에는 C/C++ 를 주로 사용했지만, 최근에는 Rust 를 가장 많이 사용하는 추세입니다.
런타임
컴파일된 WASM을 실행하려면
- JavaScript에서 사용하기
- wasmtime을 사용해 CLI로 실행할 수 있습니다.
- Node.js 환경에서 WASI를 사용해 시스템 자원에 접근 가능합니다.
- WASI 참고