웹어셈블리(WebAssembly) 바이너리 포맷을 만들기 위한 움직임이 가속화하고 있다. 애플이 사파리에 사용되는 오픈소스 브라우저 엔진 '웹킷(WebKit)'에서 웹어셈블리를 완전하게 지원하기로 했기 때문이다.
이에 따라 인텔 x86-64와 ARM64 프로세서용 웹어셈블리가 웹킷에 추가된다. 애플 측은 웹어셈블리를 '자바스크립트에 대한 실용적인 조력자'로 표현하며 C++ 같은 언어에 적합하게 컴파일할 수 있도록 설계된 저수준 바이러니 포맷이라고 설명했다. 업체 관계자는 "웹어셈블리 코드는 결국 고수준, 최적화될 것이다. 이는 결국 C++나 다른 언어를 최적화하는 방법을 몰라도 적용할 수 있다는 것을 의미하므로 매우 중요하다"고 말했다.
웹어셈블리를 이용하면 브라우저 내에서 실행되는 웹 애플리케이션의 실행 속도를 개선하고 자바스크립트 이외 언어를 사용할 수 있다. 이 기술은 현재 구글과 마이크로소프트, 모질라 등 다른 주요 브라우저 개발 업체와 조직의 지원을 받고 있기도 하다. 단, 웹어셈블리는 자바스크립트의 모든 기능을 지원하는 것은 아니다. 예를 들어 자바스크립트 호출 없이 DOM에 접근하는 것은 불가능하다. 이런 작업은 여전히 자바스크립트를 사용해야 한다.
일부 제약이 있지만 장점도 많다. 웹어셈블리는 일반 자바스크립트 객체로 노출되므로 이 웹킷을 적용하면 이미 웹킷에 있는 일부 요소를 재사용할 수 있다. 웹어셈블리를 적용하기 위해 사용되는 ECMA스크립트 모듈이 대표적이다. 애플은
웹 워커(Web Workers) 간의 모듈 공유를 허용하고 스레드 같은 기능을 지원하기 위해 웹어셈블리 내부 구현 코드가 스레드를 보호하도록 설계했다.
이에 앞서 최근 구글은 브라우저 내에서 네이티브 코드를 실행하기 위해 웹어셈블리를 선택하고 자사의 기존 기술인 PNaCl(Portable Native Client)을 폐기하기로 했다. 주요 4개 브라우저 제작업체들은 초기 웹어셈블리와 바이너리 포맷 개발에 합의했고, 이번 애플의 도입 결정으로 주요 4개 브라우저에서 웹어셈블리를 기본으로 지원하게 됐다. ciokr@idg.co.kr