웹어셈블리

웹어셈블리(WebAssembly, 간단히 Wasm)는 실행 프로그램 및 그와 일치하는 텍스트 어셈블리어, 그리고 이러한 프로그램과 호스트 환경 간 통신을 용이케하는 인터페이스를 위한 이식 가능한 이진 코드 포맷을 정의하는 개방형 표준이다. 웹어셈블리의 주 목적은 웹 페이지에서 고성능의 애플리케이션을 가능케 하는 것이지만 포맷은 다른 환경에서도 실행 및 연동되도록 설계되어 있다.

Wasm은 자바스크립트를 대체하지는 않는다. 브라우저에서 Wasm을 사용하려면 사용자는 Emscripten SDK를 사용하여 C++(또는 D 또는 러스트 등의 기타 LLVM 지원 언어) 소스 코드를 이진 파일로 컴파일한 다음 동일한 샌드박스에서 일반 자바스크립트 코드로 실행할 수 있다. Emscripten은 WebGL 등 흔히 사용되는 여러 환경 인터페이스들의 바인딩을 제공한다. 확장 가능한 메모리와 수많은 스케일러 값에만 접근이 가능하다. 문서 객체 모델(DOM) 직접 접근은 하지 않으나 이를 위한 프록시 함수를 만들 수 있다. (예를 들면 stdweb, web_sys,, js_sys을 통해)

W3C는 모질라, 마이크로소프트, 구글, 애플의 기여와 함께 표준을 관리하고 있다.

2019년 6월 Technische Universität Braunschweig의 연구에 따르면 알렉사 최상위 100만 개의 웹사이트에서의 웹어셈블리 사용률 분석 결과 가장 현저하게 사용되고 있는 부분은 악성 가상 화폐 채굴이었음이 드러났다.

역사 
웹어셈블리는 2015년 처음 발표되었으며, 첫 시연은 유니티의 앵그리 봇(Angry Bots)을 모질라 파이어폭스 구글 크롬, 마이크로소프트 엣지에서 실행하는 것이었다. 선도자격 기술은 모질라, 구글 네이티브 클라이언트의 Asm.js이었으며 최초 구현체는 asm.js의 기능 집합에 기반을 두었다.

참고 문헌

내용주

각주

데모 
 위젯 데모:   with NWSTK
 3D mountain geometry synthesis demo:   with NWSTK
 Demo for loading and drawing a jpg file:   with NWSTK

외부 링크 
 
 W3C Community Group
 WebAssembly Design
  with info on browser compatibility and specifications (WebAssembly JavaScript API)
  WebAssembly: What and What Next? at 유튜브

어셈블리어
웹 프로그래밍
W3C 표준