WebAssembly

덤프버전 :

WebAssembly
파일:WASM.png
특징
명령형, 구조적, 정적 타이핑
최초 공개
2017년 3월
설계
W3C
개발
W3C, Intel, Red Hat, Fastly,
Mozilla, Microsoft, Google, Apple
라이선스
Apache License 2.0
파일 확장자
.wat (텍스트 포맷)
.wasm (바이너리 포맷)
홈페이지

1. 개요
2. 역사
3. 예시
4. 현황 및 전망
5. 주요 프레임워크
6. 한국팀 현황




1. 개요[편집]


웹 브라우저에서 실행하는 프로그래밍 언어이자 바이트코드이다. C, C++, Rust, Go, 파이썬 등 다양한 언어로 프로그램을 작성하고 컴파일한다.[1]

Docker 설립자 Solomon Hykes는 웹어셈블리의 중요성을 다음과 같이 강조했다. "2008년에 WASM+WASI가 있었다면 Docker를 만들 필요가 없었을 것입니다. 그만큼 중요합니다. 서버의 웹어셈블리는 컴퓨팅의 미래입니다."#

2. 역사[편집]


2015년부터 JavaScript의 느린 속도를 보완 및 대체하기 위해 개발되었다. 2019년부터 웹브라우저 밖 다양한 환경에서 활용하는 (런타임, WASI 등) 연구가 진행중이다.

3. 예시[편집]


C 소스 코드
#include <stdio.h>

int factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}

WebAssembly IR
get_local 0
i64.eqz
if (result i64)
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

WebAssembly 바이너리
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B



4. 현황 및 전망[편집]


웹어셈블리에 타기팅이 가능한 언어 목록

이미 웹어셈블리를 타깃으로 컴파일이 가능한 언어는 저렇게 많다. 인기 좀 있다 싶은 언어들은 다 되는 수준. 성능도 이미 사전에 약속한 대로 "거의 네이티브에 가까운" 속도가 나오고 있다. (네이티브 코드에 비해 약 10% 정도 느리다고) 자바스크립트에 비하면 당연히 훨씬 빠르다.

이런저런 이유로 웹어셈블리가 한국에서도 활성화되고 성숙하고 나면 기존의 자바스크립트에게는 사실상의 시한부 인생 카운트다운이 내려질 것이라고 점치는 사람들도 적지 않다. 왜냐하면 자바스크립트는 호불호가 극단적으로 갈리는 동시에 아무래도 싫어하는 사람들이 좀 많기 때문이다. 자바스크립트가 항상 인기도 면에서 1위인 이유는 웹용 언어이고 웹에서 수십년 간 대체재가 전혀 없는, 말하자면 공인된 독점 시장이었기 때문인데, 그렇기 때문에 애착을 가진 사람들도 많은 반면 설계상 깔끔하지도 않은 누더기 언어를 강제당하는 개발자들의 원한도 엄청나다. 자바스크립트 옹호론자들은 npm의 패키지 누적량이 세계 최고이며 자바스크립트의 우월성을 증명하는 것이라고 하지만... 반대로 구석구석마다 서드 파티 라이브러리를 쓰지 않고서는 답이 안나오는 덜떨어진 언어를 직업상 써야 하니까 직접 확장하는 경우가 많을 수밖에 없다는 반론도 만만치 않다.

즉, 지금도 자바스크립트 사용을 피하기 위해 타입스크립트나 커피스크립트 등을 써가며 자바스크립트를 컴파일 타깃 취급하는 경향이 많은데 컴파일 타깃마저 웹어셈블리로 옮겨가고 나면 누가 수백 가지 함정을 감수해 가며 자바스크립트를 쓰겠냐는 것이 논지이다.

일단 웹어셈블리 개발 기획상으로는 자바스크립트를 대체하는 것이 아니라 서로 보완하는 관계가 될 것이라고는 하지만[2], 정말로 자바스크립트의 역할이 단지 각종 웹어셈블리의 글루코드 역할만 하게 된다면 그건 사실상 죽는 것이나 다름없긴 하다. (그마저도 여타 유사 자바스크립트 언어 등에서 트랜스파일해버린다면?...)

물론, 실제로 자바스크립트가 사장되는 일은 쉽게 일어나지는 않을 것이고, 일어나더라도 시간이 좀 걸릴 것이다. 한 가지 이유는 이미 자바스크립트로 작성된 웹사이트는 유지보수를 해야 되기 때문이고, 주니어 웹 개발자를 찍어내는 가장 빠른 방법이 자바스크립트를 가르치는 것이기 때문이다. [3]

어셈블리라는 키워드가 낡은 IT 기술의 상징으로 취급됨에도 불구하고 WASM 커뮤니티는 젊은 사람들의 참여가 상대적으로 활발한 편이다. WASM을 웹 관련 기업과 협회가 주도하고 있고 배우는 사람들도 웹 기술을 통해 처음 접하는 경우가 많기 때문이다. 현재 WASM 해석기(인터프리터)를 사용할 수 있는 CPU 아키텍처는 X86, ARM, MIPS, RISC-V (소형 기기에서 주로 사용되는 RISC-V 기반 파생 컨트롤러인 ESP32를 포함) 등이 있다. 사용할 수 있는 운영체제는 POSIX 기반 시스템(리눅스, BSD 등) 및 윈도우즈가 호환된다.


5. 주요 프레임워크[편집]





6. 한국팀 현황[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-05 10:49:42에 나무위키 WebAssembly 문서에서 가져왔습니다.

[1] 웹어셈블리 지원 언어[2] 아직까지 웹어셈블리는 직접 웹사이트를 조작하는 것이 아니라 자바스크립트에서 모듈처럼 불러와서 그 기능만을 사용하게 되어 있다.[3] 수많은 대체제들이 나왔음에도, JAVA가 아직도 국내 백엔드 점유율 1위를 달리고 있는지 보면 알 수 있다. 다른 거창한 이유들이 분명 있지만, 결국 가장 큰 이유는 이미 서비스 되고 있는 레거시 코드들 때문이다.