WebAssembly (WASM) 개요 및 설계 목표
Source
Evernote/ancom21c's notebook/WebAssembly(WASM).md
Summary
WebAssembly(WASM)는 브라우저 벤더들이 자바스크립트의 성능 갭을 메우기 위해 제안한 실험적 저수정 프로그래밍 언어다. 기존 asm.js, PNaCL 등의 한계를 극복하고, 바이너리 인코딩을 통해 빠른 디코딩과 AOT 컴파일 최적화를 지원한다. WASM은 자바스크립트를 대체하기보다 보완하며, 브라우저 내 고성능 애플리케이션(게임, 멀티미디어 등)과 브라우저 외 서버사이드 환경 모두를 목표로 한다. 설계 목표는 가벼운 바이너리 포맷, 점진적 스펙 제정(MVP 및 PostMVP), 기존 웹 플랫폼과의 통합(보안, API 접근), 논-브라우저 임베딩 지원, 그리고 생태계 도구 구축이다.
Key Points
- 정의: 브라우저 클라이언트 사이드 스크립팅을 위한 실험적 저수정 언어로, C/C++ 포팅을 주 대상으로 함.
- 배경: 자바스크립트 성능 갭 해소 및 기존 포팅 프로젝트(asm.js, PNaCL)의 제약 극복.
- 장점: 바이너리 인코딩으로 인한 빠른 디코딩, AOT 컴파일 최적화 용이성, 브라우저 엔진 내 구현을 통한 비용 절감.
- 관계: 자바스크립트 대체가 아닌 보완. 양방향 동기적 호출 가능, Web API 접근 가능.
- 구조: 모듈(Import/Export), 선형 메모리, 바이너리/텍스트 포맷, AST 기반.
- 개발 목표: 1) 가벼운 바이너리 포맷, 2) 점진적 스펙 제정(MVP→PostMVP), 3) 웹 플랫폼 통합 및 하위호환, 4) 논-브라우저 임베딩(Node.js 등) 지원, 5) 생태계 도구(LLVM 백엔드 등) 구축.
- 유즈케이스: 브라우저 내(게임, P2P, VPN 등), 브라우저 외(서버사이드, 하이브리드 앱).