맨위로가기

웹어셈블리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

웹어셈블리(WebAssembly, Wasm)는 웹 브라우저에서 네이티브에 가까운 속도로 코드를 실행하기 위해 설계된 바이너리 형식의 명령어 집합이다. 2015년에 처음 발표되었으며, 모질라Asm.js구글 네이티브 클라이언트 기술을 기반으로 개발되었다. 웹어셈블리는 웹 표준으로 채택되었으며, 웹 브라우저뿐만 아니라 독립 실행 환경에서도 활용된다. 웹어셈블리는 C/C++, Rust 등 다양한 언어에서 컴파일할 수 있으며, 샌드박스 환경에서 실행되어 보안성을 제공하지만, DOM 조작의 제한, 디버깅 도구 부족 등의 한계도 존재한다.

더 읽어볼만한 페이지

  • 어셈블리어 - 기계어
    기계어는 컴퓨터 CPU가 직접 이해하고 실행하는 이진수 형태의 명령어 집합으로, 각 프로세서는 고유한 명령어 집합을 가지며 어셈블리 언어를 통해 니모닉 코드로 표현될 수 있다.
  • 어셈블리어 - 주소 지정 방식
  • 웹 프로그래밍 - 자바스크립트
    자바스크립트는 웹 페이지에 동적인 기능을 추가하기 위해 개발된 프로그래밍 언어로, 초기에는 라이브스크립트라 불렸으나 자바의 인기에 힘입어 변경되었고, ECMAScript로 표준화되어 웹 브라우저와 Node.js 등 다양한 환경에서 활용되지만, 오라클의 상표권 소유로 논란이 있다.
  • 웹 프로그래밍 - 블레이저 (웹 프레임워크)
    블레이저는 마이크로소프트가 개발한 웹 프레임워크로, .NET을 사용하여 웹 애플리케이션을 구축하며, C#과 Razor 구문을 사용해 컴포넌트를 만들고, 서버 측 및 클라이언트 측 렌더링을 모두 지원한다.
  • W3C 표준 - HTML
    HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다.
  • W3C 표준 - 타임드 텍스트
    타임드 텍스트는 영상이나 오디오 콘텐츠에 시간 정보를 담아 표현되는 텍스트로, 자막이나 캡션 등에 활용되며 TTML, WebVTT 등의 표준이 존재한다.
웹어셈블리 - [IT 관련 정보]에 관한 문서
개요
WebAssembly 로고
WebAssembly 로고
유형어셈블리어, 바이트코드
설계자W3C
개발자W3C
Mozilla
Microsoft
Google
Apple
출시일2017년 3월
영향 받은 언어asm.js
PNaCl
Lisp
파일 확장자.wat (텍스트 형식)
.wasm (바이너리 형식)
특징
패러다임구조적
스택 머신
타이핑정적
플랫폼플랫폼 독립
라이선스Apache License 2.0
세부 사항
설명웹 브라우저에서 실행되도록 설계된 크로스 플랫폼 어셈블리어 및 바이트코드이다.
목표웹에서 고성능 애플리케이션을 활성화하는 것이 주요 목표이지만 웹 전용 가정을 하거나 웹 전용 기능을 제공하지 않으므로 다른 환경에서도 사용할 수 있다.
추가 정보이 사양은 웹과 같은 특정 임베딩 환경에 대한 인터페이스를 정의하는 추가 문서로 보완된다.
이러한 문서는 주어진 환경에 적합한 WebAssembly 응용 프로그래밍 인터페이스 (API)를 정의한다.
구조WebAssembly 코드는 '구조화된 스택 머신'으로 간주될 수 있다.

2. 역사

웹어셈블리(WebAssembly)라는 이름은 어셈블리 언어와 비슷하게 들리도록 의도되었다. 이 이름은 어셈블리 언어와 유사한 프로그래밍을 으로 가져와 웹 사이트 사용자의 컴퓨터에서 사용자의 웹 브라우저를 통해 클라이언트 측에서 실행되도록 하는 것을 의미한다. 이를 달성하기 위해 웹어셈블리는 진정한 어셈블리 언어보다 훨씬 더 하드웨어 독립적이어야 한다.

2. 1. 초기 개발 및 발표

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

2. 2. 웹 표준화 및 발전

웹어셈블리는 2017년 3월에 최소 기능 제품(MVP) 설계가 완료되었고, 주요 웹 브라우저들이 웹어셈블리를 지원하기 시작했다.[118] 2019년 12월 5일, W3C 권고 "[https://www.w3.org/TR/wasm-core-1/ WebAssembly Core Specification]"이 제정되어 웹어셈블리는 정식 웹 표준으로 인정받았다.[120]

2019년 6월에는 크롬 75가 웹어셈블리 스레드를 기본적으로 활성화하여 출시되었다.[14]

2022년 8월부터 웹어셈블리 2.0이 드래프트 상태가 되었고,[121][122] SIMD 관련 다수의 명령어와 v128 데이터형, 함수가 다중 값을 반환할 수 있는 기능, 대량의 메모리 초기화·복사 등이 추가되었다.

2023년 10월부터 12월에 걸쳐 Wasm 런타임 측에서 가비지 컬렉션(GC)에 대응하는 WebAssembly Garbage Collection (WasmGC)이 크롬, 파이어폭스, 엣지의 최신 버전에서 기본적으로 활성화되었다.

3. 특징

웹어셈블리(Wasm)는 처음에는 웹 브라우저에서 네이티브에 가까운 코드 실행 속도를 실현하기 위해 설계되었지만, 현재는 웹 브라우저의 틀을 넘어 더 일반적인 맥락과 용도로도 가치가 있다고 여겨진다.[123][124]

Wasm 자체는 명령어 집합 등의 측면만 정할 뿐, 리눅스 커널이 제공하는 시스템 콜(예: 파일 I/O)이나 웹 브라우저가 제공하는 DOM 접근 등은 제공하지 않는다.[125] 이러한 특징은 안전성과 이식성을 보장한다. 응용에 필요한 API는 별도로 정의되며, Wasm 런타임이 이를 구현함으로써 해당 기능을 제공한다.[126] 이로 인해 Wasm 생태계는 높은 확장성을 갖는다.

웹어셈블리는 이식 가능한 스택 머신이며,[135] 기존 웹 브라우저에서 널리 사용되는 자바스크립트에 비해 구문 분석 및 실행이 더 빠르도록 설계되었다.[136]

3. 1. 성능

웹어셈블리(WebAssembly, Wasm)는 자바스크립트보다 빠르고 효율적인 실행을 목표로 설계되었다. 컴팩트한 바이너리 형식으로 인해 로딩 시간이 단축되고, 실행 속도가 향상된다.[142] Wasm은 ''Compact'', ''Modular'', ''Efficient'', ''Streamable'', ''Parallelizable'', ''Portable''을 설계 방침으로 한다.[142]

초기 벤치마크에서는 코드 실행 속도가 로드/인스턴스화 시간을 제외하고 약 91%(10% 느림)였지만,[67] 최근에는 네이티브 속도의 100%에서 33% 사이,[68] 자바스크립트의 120%(20% 빠름)로 나타났다.[69] 2024년 개인 웹 페이지의 브라우저 벤치마크에서는 모바일 폰에서 간단한 게임 애플리케이션 실행 시 네이티브 속도의 110%에서 190% 사이의 결과를 보였다.[70]

2021년 연구에 따르면, 특정 경우와 브라우저에서 웹 어셈블리는 자바스크립트보다 훨씬 빠르다. 예를 들어 작은 파일에서 복잡한 함수를 실행하는 경우(그래픽 파일 처리 등)에 웹 어셈블리가 유리하다. 반면 자바스크립트에는 웹 어셈블리에 없는 JIT와 같은 몇 가지 최적화 기능이 있다.[72]

웹 어셈블리는 DOM에 직접 접근할 수 없어 성능이 저하되는 문제점이 있었지만,[73] 이는 현재 해결되고 있거나 향후 해결될 수 있다.[74]

Wasm 버전 2.0 (드래프트)에는 128비트 폭의 벡터형(`v128`)과 SIMD 명령어가 추가되었다.[144]

3. 2. 이식성

웹어셈블리(Wasm) 코드는 이식 가능한 가상 스택 머신 (VM)에서 실행되도록 설계되었다. 이 VM은 자바스크립트보다 더 빠르게 파싱하고 실행하며, 콤팩트한 코드 표현을 갖도록 설계되었다. Wasm 이진 코드가 예상할 수 있는 외부 기능 (예: 시스템 콜)은 표준에서 규정하지 않는다. 대신, VM이 실행되는 호스트 환경의 모듈을 통해 인터페이스를 제공하는 방식을 제공한다.[81][19]

Wasm 자체는 명령어 집합 등만 정하며, 리눅스 커널이 제공하는 시스템 콜(예: 파일 I/O)이나 웹 브라우저가 제공하는 DOM 접근 등은 제공하지 않는다.[125] 안전성과 이식성은 이러한 특징에서 기인한다. 응용에 필요한 API는 별도로 정의되며, Wasm 런타임이 이를 구현함으로써 해당 기능을 제공한다.[126] 이로 인해 Wasm 생태계는 높은 확장성을 갖는다.

3. 3. 보안

웹어셈블리는 기본적으로 외부와 격리된 샌드박스 환경에서 실행된다.[125] WASM은 계산 결과를 전달하거나 외부 함수를 호출하기 위해 'imports'/'exports' 기능을 제공한다.[126] 대상 객체는 함수, 테이블, 메모리, 전역 변수의 네 종류이다. WASM 외부에서 'exports' 요소에 등록된 대상의 인덱스를 통해 해당 객체에 접근할 수 있다(함수 호출 및 메모리 읽기/쓰기). 또한 WASM 런타임은 'imports' 요소에 등록된 대상의 이름과 형식을 통해 WASM 외부에 존재하는 대상에 대한 접근을 제공한다.[126]

3. 4. 개방성

웹어셈블리(Wasm)는 처음에는 웹 브라우저에서 네이티브에 가까운 코드 실행 속도를 실현하기 위해 설계되었지만, 현재는 웹 브라우저의 틀을 넘어 더 일반적인 맥락과 용도로도 가치가 있다고 여겨지고 있다.[123][124]

Wasm 자체는 명령어 집합 등의 측면만 정하며, 리눅스 커널이 제공하는 시스템 콜(예: 파일 I/O)이나 웹 브라우저가 제공하는 DOM 접근 등은 제공하지 않는다.[125] 이러한 특징은 안전성과 이식성을 보장한다. 응용에 필요한 API는 별도로 정의되며, Wasm 런타임이 이를 구현함으로써 해당 기능을 제공한다.[126] 이로 인해 Wasm 생태계는 높은 확장성을 갖는다.

3. 5. 웹 브라우저

모질라 파이어폭스,[178] 구글 크롬,[179] 마이크로소프트 엣지[180] 등 모든 주요 브라우저에서 웹어셈블리를 지원한다. iOS, 안드로이드 모바일 웹 브라우저에서도 지원한다. 2024년 3월 기준으로, 99%의 브라우저가 웹어셈블리 (버전 1.0)를 지원하며, 이는 이전 기술인 asm.js를 넘어선 수치이다.

3. 6. 독립 실행 환경

웹어셈블리는 처음에는 웹 브라우저에서 거의 네이티브 코드 실행 속도를 허용하도록 설계되었지만, 더 일반적인 맥락에서도 그 가치를 인정받고 있다.[17][18] 웹어셈블리의 런타임 환경(RE)은 호스트 애플리케이션에 포함될 수 있는 저수준의 가상 스택 머신(JVM 또는 플래시 VM과 유사)이기 때문에, Wasmer, Wasmtime[19][20] 등과 같은 독립 실행 환경(Standalone Runtime)이 만들어졌다. 이러한 독립 실행 환경은 "서버 측" 웹어셈블리 애플리케이션을 호스팅하기 위해 애플리케이션 서버에 포함되거나, 플러그인 기반 소프트웨어 확장 아키텍처를 지원하기 위해 다른 애플리케이션에도 포함된다. 예를 들어, 웹어셈블리 기반 ABI를 지정하여 프록시 서버를 확장하는 "프록시를 위한 웹어셈블리"(proxy-wasm)가 있다.[21][22]

3. 7. WASI (WebAssembly System Interface)

WASI(WebAssembly System Interface)는 모질라가 설계한, 모든 플랫폼으로 이식 가능하도록 의도된 간단한 인터페이스(ABI 및 API)이다.[130] 이는 POSIX와 유사한 기능을 제공하며, 예를 들어 "역량 기반 보안에 의해 제약된 파일 I/O"와 같은 것을 제공한다.[131][132] 이 외에도 몇 가지 ABI/API가 제안되고 있다.[133] WASI는 Capsicum의 CloudABI의 영향을 받았다.

도커의 공동 창업자인 솔로몬 하이클스(Solomon Hykes)는 2019년에 "만약 2008년에 WASM+WASI가 존재했다면 도커를 만들 필요가 없었을 것이다, 라고 할 정도로 중요한 것이다. 서버 상에서의 WebAssembly는 컴퓨팅의 미래이다"라고 썼다.[134]

3. 8. 컴파일러

EmscriptenCC++LLVM을 백엔드로 사용하여 Wasm으로 컴파일한다.[27] Emscripten SDKLLVM이 지원하는 모든 언어(예: C, C++, Rust 등) 소스 코드를 JavaScript 코드와 동일한 샌드박스에서 실행되는 바이너리 파일로 컴파일할 수 있다. Emscripten은 WebGL과 같이 일반적으로 사용되는 몇 가지 환경 인터페이스에 대한 바인딩을 제공한다.

8버전부터 독립형 Clang은 CC++를 Wasm으로 컴파일할 수 있다.[32] 초기 목표는 CC++로부터의 컴파일을 지원하는 것이었지만, Rust, .NET 언어[33] 및 AssemblyScript[34] (TypeScript와 유사)와 같은 다른 소스 프로그래밍 언어에 대한 지원도 등장하고 있다.

C 언어/C++에서 WebAssembly로 컴파일할 때, Emscripten은 프런트엔드에 clang 혹은 그 포크인 fastcomp-clang을, 중간층에 LLVM 혹은 그 포크인 fastcomp을, 백엔드에 binaryen을 사용한다.[145]

GCC asm.js 백엔드는 asm.js 및 WebAssembly에 대응한다.[146]

LLVM은 WebAssembly 백엔드를 가지고 있으며, WebAssembly 바이너리를 직접 출력할 수 있다. 또한, LLD에 의한 WebAssembly 바이너리 링크도 가능하다. LLVM 8.0에서 정식으로 지원한다.[147]

3. 9. 백엔드

Binaryen은 웹어셈블리 툴체인 및 최적화 도구이다.[145] 관련 도구는 다음과 같다.

Binaryen 도구 목록
도구명설명
asm2wasmasm.js에서 웹어셈블리 텍스트로 변환
s2wasmLLVM의 웹어셈블리용 텍스트 어셈블리(*.s)에서 웹어셈블리 텍스트로 변환
mir2wasmRust 언어의 중간 레벨 IR(MIR)에서 웹어셈블리 텍스트로 변환
wasm-as웹어셈블리 텍스트에서 웹어셈블리 바이너리로 변환



WABT (WebAssembly Binary Toolkit)는 웹어셈블리 바이너리 형식과 텍스트 형식 간 변환 도구를 제공한다.[145] 관련 도구는 다음과 같다.

WABT 도구 목록
도구명설명
wat2wasm웹어셈블리 텍스트에서 웹어셈블리 바이너리로 변환
wasm-link웹어셈블리 바이너리 링커


3. 10. 런타임

WASM(웹어셈블리) 코드는 이식 가능한 가상 스택 머신 (VM)에서 실행되도록 설계된 이진 코드(바이트코드)이다. 이 VM은 자바스크립트보다 더 빠르게 파싱하고 실행하며, 콤팩트한 코드 표현을 갖도록 설계되었다. WASM은 컴퓨터의 실행 파일이 아니므로, 그대로 기계어로 실행할 수 없다. 따라서 WASM 파일은 런타임을 통해 해석 및 실행된다. 런타임에는 인터프리터 / JIT 컴파일러 / AOT 컴파일러가 있으며 용도에 맞춰 선택된다.

Wasm 이진 코드가 예상할 수 있는 외부 기능 (예: 시스템 콜)은 표준에서 규정하지 않는다. 대신, VM이 실행되는 호스트 환경의 모듈을 통해 인터페이스를 제공하는 방식을 제공한다.[81][19]

WASM 런타임
실행 환경엔진/런타임컴파일러
구글 크롬 & Node.jsV8Liftoff (baseline)[148] + TurboFan (optimizing)[149]
모질라 파이어폭스스파이더몽키[150]rabaldr (baseline) + BaldrMonkey (optimizing, backed by IonMonkey)
wasmtime[151]-Cranelift[152]
Wasmer[153]-pluggable (LLVM, Cranelift)[154]



런타임은 웹 브라우저에 내장 (자바스크립트 실행 환경에서 호출)되거나 독립적인 WASM 네이티브 런타임 (예: CLI에서 $ wasmtime foo.wasm[155])으로 존재한다.

과거에 존재했던 런타임에는 Cranelift 컴파일러 기반[156]의 Lucet이 있다[157].

3. 11. 개발 환경

WebAssembly Studio는 웹 기반의 웹어셈블리 개발 환경으로, C 언어 및 Rust를 지원하며, 오픈 소스이다.[158]

4. 한계 및 과제

웹어셈블리는 여러 장점을 가지지만, 다음과 같은 한계점과 과제를 안고 있다.


  • DOM 접근 제한: 웹어셈블리 코드는 웹 브라우저문서 객체 모델(DOM)에 직접 접근할 수 없다. 따라서 DOM 조작을 위해서는 자바스크립트를 이용해야 한다.[50][51]
  • 디버깅 및 개발 도구 부족: 2023년 10월 개발자 설문 조사에 따르면, 응답자의 절반 정도만이 웹어셈블리의 현재 상태에 만족했다. 많은 개발자들이 WASI, 디버깅 지원, 자바스크립트 및 브라우저 API와의 통합, 빌드 도구 등에서 개선이 필요하다고 지적했다.[52]
  • 메모리 관리: 웹어셈블리에서 메모리 집약적인 할당은 특히 모바일 브라우저에서 안정적인 배포를 어렵게 만드는 심각한 제한 사항으로 작용한다.[53] 현재 Chrome on Android에서 Chrome 관련 해결 방법을 사용하지 않거나 iOS의 Safari에서 300MB 이상의 메모리를 할당하는 것은 안정적이지 않다.[53]

4. 1. DOM 접근 제한

웹 어셈블리 코드는 웹 브라우저문서 객체 모델(DOM)에 직접 접근하는 것을 허용하지 않는다. 따라서 Wasm 코드는 DOM 조작을 위해 자바스크립트에 위임해야 한다.[50][51]

4. 2. 디버깅 및 개발 도구 부족

2023년 10월 개발자 설문 조사에서, 303명의 참가자 중 절반도 안 되는 수가 웹어셈블리의 상태에 만족했다. 대다수는 WASI, 디버깅 지원, 자바스크립트 및 브라우저 API와의 통합, 빌드 도구의 네 가지 영역에서 개선이 필요하다고 언급했다.[52]

4. 3. 메모리 관리

웹 어셈블리에서 메모리 집약적인 할당은 "모바일 브라우저에서 많은 응용 프로그램을 '안정적으로' 배포하는 것을 불가능하게 만드는 심각한 제한 사항"이 있다.[53] 현재 Chrome on Android에서 Chrome 관련 해결 방법을 사용하지 않거나 iOS의 Safari에서 ~300MB 이상의 메모리를 할당하는 것은 안정적이지 않다.[53]

5. 보안 고려 사항

2018년 6월, 한 보안 연구원은 공유 메모리를 가진 스레드 지원이 추가되면 웹어셈블리를 사용하여 스펙터 및 멜트다운 보안 취약점에 대한 브라우저 완화를 우회할 가능성이 있다고 제시했다. 이러한 우려로 인해 웹어셈블리 개발자들은 해당 기능을 보류했다.[62][57][58] 그러나 구글 크롬은 이러한 미래의 언어 확장을 탐구하기 위해 2018년 10월에 웹어셈블리 스레드 제안에 대한 실험적 지원을 추가했다.[59]

웹어셈블리는 구조화된 제어 흐름만 지원하므로 기호 실행을 포함한 보안 검증 기술에 적합하다.[66]

5. 1. 악성 코드 은닉

웹어셈블리는 악성 소프트웨어 제작자, 사기꾼, 피싱 공격자가 증거를 은폐하기 쉽게 만든다는 비판을 받았다. 웹어셈블리는 사용자의 기기에 컴파일된 형태로만 존재하여 "악성 소프트웨어 탐지를 어렵게" 만든다.[60] 웹어셈블리의 속도와 은폐 용이성은 웹사이트 방문자의 장치 내에서 숨겨진 암호화폐 채굴에 사용되게 했다.[60][61][62] 현재는 운영되지 않는, 웹사이트 방문자의 브라우저에서 암호화폐 채굴을 쉽게 하는 서비스인 코인하이브(Coinhive)는 자사의 "마이너가 웹어셈블리를 사용하며 네이티브 마이너의 약 65% 성능으로 실행된다"고 주장했다.[62] 2019년 6월 브라운슈바이크 공과대학교(Technische Universität Braunschweig)의 연구에 따르면, 알렉사 상위 100만 개의 웹사이트에서 웹어셈블리의 사용을 분석한 결과 악성 암호화폐 채굴에 주로 사용되었으며, 연구 대상 웹어셈블리 사용 웹사이트의 절반 이상이 악성 소프트웨어에 해당했다.[63][64] 2021년 4월 슈투트가르트 대학교(Universität Stuttgart)의 연구에 따르면, 그 이후 암호화폐 채굴은 주변화되어 광범위한 소스에서 수집된 모든 웹어셈블리 모듈의 1% 미만으로 떨어졌으며, 여기에는 알렉사 상위 100만 개의 웹사이트도 포함된다.[65]

6. 활용 사례

웹어셈블리는 현재 다양한 분야에서 활용되고 있으며, 앞으로 그 활용 범위가 더욱 넓어질 것으로 예상된다.

참조

[1] 웹사이트 WebAssembly/design/Semantics.md https://github.com/W[...] 2021-02-23
[2] 웹사이트 Understanding WebAssembly text format https://developer.mo[...] 2019-12-09
[3] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[4] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[5] 웹사이트 Conventions — WebAssembly 1.0 https://webassembly.[...] 2019-05-17
[6] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[7] 웹사이트 Introduction — WebAssembly 1.1 https://webassembly.[...] 2021-02-19
[8] 간행물 Bringing the Web Up to Speed with WebAssembly 2017-06-14
[9] 웹사이트 WebAssembly Core Specification https://www.w3.org/T[...] 2019-12-09
[10] 웹사이트 WebAssembly 1.0 Becomes a W3C Recommendation and the Fourth Language to Run Natively in Browsers https://www.infoq.co[...] 2019-12-09
[11] 웹사이트 WebAssembly Specification — WebAssembly 1.1 https://webassembly.[...] 2021-03-22
[12] 웹사이트 Programming Languages Software Award http://www.sigplan.o[...]
[13] 웹사이트 Staring at the Sun: Dalvik vs. ASM.js vs. Native https://blog.mozilla[...] 2019-12-07
[14] 웹사이트 WebAssembly Worker Based Threads - Chrome Platform Status https://chromestatus[...] 2022-02-19
[15] 웹사이트 WebAssembly Specification — WebAssembly 2.0 (Draft 2022-09-01) https://webassembly.[...] 2022-09-09
[16] 웹사이트 WebAssembly 2.0 First Public Working Drafts {{!}} W3C News https://www.w3.org/b[...] 2022-09-09
[17] 웹사이트 Non-Web Embeddings https://webassembly.[...] 2019-05-15
[18] 웹사이트 Non-Web Embeddings https://github.com/W[...] 2019-05-15
[19] 웹사이트 Outside the web: standalone WebAssembly binaries using Emscripten · V8 https://v8.dev/blog/[...] 2020-07-28
[20] 웹사이트 Wasmer - The Universal WebAssembly Runtime https://wasmer.io/ 2021-02-19
[21] 웹사이트 Proxy-Wasm: It's WebAssembly for Proxies https://konghq.com/b[...] 2024-05-06
[22] 웹사이트 proxy-wasm/spec: WebAssembly for Proxies (ABI specification) https://github.com/p[...] 2024-05-06
[23] 웹사이트 asm.js {{!}} Can I use... Support tables for HTML5, CSS3, etc https://caniuse.com/[...] 2024-09-29
[24] 웹사이트 WebAssembly Reference Types {{!}} Can I use... Support tables for HTML5, CSS3, etc https://caniuse.com/[...] 2024-03-03
[25] 웹사이트 Wasmtime — a small and efficient runtime for WebAssembly & WASI https://wasmtime.dev[...] 2020-12-18
[26] 웹사이트 Roadmap https://webassembly.[...] 2021-12-07
[27] 트윗 Emscripten has switched to the upstream LLVM wasm backend by default! / Details:https://groups.google.com/forum/#!topic/emscripten-discuss/NpxVAOirSl4 2019-10-22
[28] 웹사이트 Developer's Guide - WebAssembly https://webassembly.[...] 2019-06-10
[29] 웹사이트 Compiling a New C/C++ Module to WebAssembly https://developer.mo[...] 2019-06-10
[30] 웹사이트 Building to WebAssembly — Emscripten 1.38.33 documentation https://emscripten.o[...] 2019-06-10
[31] 웹사이트 Emscripting a C library to Wasm {{!}} Web https://developers.g[...] 2019-06-10
[32] 웹사이트 LLVM 8.0.0 Release Notes — LLVM 8 documentation https://releases.llv[...] 2019-10-22
[33] 웹사이트 Frequently asked questions (FAQ) about Blazor https://blazor.net/d[...] 2018-06-18
[34] 웹사이트 AssemblyScript/assemblyscript https://github.com/A[...] The AssemblyScript Project 2020-09-09
[35] 웹사이트 WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome {{!}} Blog https://developer.ch[...] 2023-12-11
[36] 웹사이트 Bolero: F# in WebAssembly https://fsbolero.io/ 2019-07-25
[37] 웹사이트 A new way to bring garbage collected programming languages efficiently to WebAssembly · V8 https://v8.dev/blog/[...] 2023-12-11
[38] 웹사이트 Pyodide: Bringing the scientific Python stack to the browser – Mozilla Hacks - the Web developer blog https://hacks.mozill[...] 2020-09-09
[39] 웹사이트 Julia in the Browser https://nextjournal.[...] 2019-04-09
[40] 웹사이트 WebAssembly platform by tshort · Pull Request #2 · JuliaPackaging/Yggdrasil https://github.com/J[...] 2019-04-09
[41] 웹사이트 GitHub - Keno/julia-wasm: Running julia on wasm. https://github.com/K[...] 2019-07-25
[42] 웹사이트 MRuby in Your Browser https://ruby.dj/ 2019-07-25
[43] 웹사이트 Ring language upgrade focuses on WebAssembly https://www.infoworl[...] InfoWorld 2020-08-24
[44] 웹사이트 Ring in web browser https://ring-lang.gi[...] 2024-08-17
[45] 웹사이트 Java to WebAssembly Compiler - CheerpJ https://leaningtech.[...] 2023-04-27
[46] 웹사이트 JWebAssembly https://github.com/i[...] 2023-04-27
[47] 웹사이트 TeaVM — Overview https://www.teavm.or[...] 2023-04-27
[48] 웹사이트 Bringing Kotlin to the Web https://developers.g[...] 2023-12-11
[49] 웹사이트 The huge potential of Kotlin/Wasm https://seb.deleuze.[...] 2023-12-11
[50] 웹사이트 stdweb - Rust https://docs.rs/stdw[...] 2019-06-05
[51] 웹사이트 web_sys - Rust https://docs.rs/web-[...] 2019-06-05
[52] 웹사이트 The State of WebAssembly 2023 https://blog.scottlo[...] Scott Logic 2024-03-14
[53] 웹사이트 Wasm needs a better memory management story · Issue #1397 · WebAssembly/design https://github.com/W[...] 2021-02-15
[54] 웹사이트 WebAssembly/content-security-policy https://github.com/W[...] 2021-02-17
[55] 웹사이트 948834 - chromium - An open-source project to help move the web forward. - Monorail https://bugs.chromiu[...] 2021-02-17
[56] 웹사이트 No way to use WebAssembly on Chrome without 'unsafe-eval' · Issue #7 · WebAssembly/content-security-policy https://github.com/W[...] 2021-02-17
[57] 웹사이트 Changes in WebAssembly Could Render Meltdown and Spectre Browser Patches Useless https://www.bleeping[...] Bleeping Computer 2019-06-08
[58] 웹사이트 How opaque WebAssembly code could increase the risk of Spectre attacks online https://www.techrepu[...] 2019-06-09
[59] 웹사이트 Google Chrome 70 now supports WebAssembly threads to build multi-threaded web applications https://hub.packtpub[...] 2019-06-09
[60] 웹사이트 The dark side of WebAssembly https://www.virusbul[...] 2019-06-08
[61] 웹사이트 Persistent drive-by cryptomining coming to a browser near you https://blog.malware[...] Malwarebytes 2019-06-08
[62] 웹사이트 In-browser mining: Coinhive and WebAssembly https://www.forcepoi[...] Forcepoint 2019-06-08
[63] 웹사이트 Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes https://www.infoq.co[...] 2019-11-03
[64] 서적 Detection of Intrusions and Malware, and Vulnerability Assessment https://www.sec.cs.t[...] Detection of Intrusions and Malware, and Vulnerability Assessment 2022-02-15
[65] 간행물 An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases. https://software-lab[...] 2021-04-01
[66] 서적 Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs https://www.reposito[...] ACM 2018-01-08
[67] 서적 Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code http://worldcat.org/[...] 2019-01-25
[68] 웹사이트 Performance of WebAssembly runtimes in 2023 https://00f.net/2023[...] 2024-12-06
[69] 서적 2022 International Conference on ICT for Sustainability (ICT4S) 2022-06-01
[70] 웹사이트 WebAssembly Is Fast: A Real-World Benchmark of WebAssembly vs. ES6 https://medium.com/@[...]
[71] 논문 On the Energy Consumption and Performance of WebAssembly Binaries across Programming Languages and Runtimes in IoT 2023-06-14
[72] 서적 Proceedings of the 21st ACM Internet Measurement Conference 2021-11-02
[73] 웹사이트 WebAssembly Web API https://webassembly.[...]
[74] 웹사이트 WebAssembly in 2024: Promises, Challenges, and the Road Ahead https://blog.enkamba[...] 2024-12-06
[75] 웹사이트 WebAssembly System Interface Repo https://github.com/W[...] 2020-02-10
[76] 웹사이트 Additional background on Capabilities https://github.com/b[...] bytecodealliance 2022-03-04
[77] 웹사이트 Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog https://hacks.mozill[...]
[78] 웹사이트 reference-sysroot Repo https://github.com/W[...] 2020-01-12
[79] 웹사이트 wasm-c-api Repo https://github.com/W[...] 2020-02-03
[80] 웹사이트 Solomon Hykes on X https://x.com/solomo[...] 2024-09-29
[81] 웹사이트 Portability - WebAssembly https://webassembly.[...] 2020-07-28
[82] 웹사이트 Conventions — WebAssembly 1.0 https://webassembly.[...] 2019-11-12
[83] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-05-17
[84] 웹사이트 Instructions — WebAssembly 1.0 https://webassembly.[...] 2019-11-12
[85] 웹사이트 Final opcodes by tlively · Pull Request #452 · WebAssembly/simd · GitHub https://github.com/W[...] Bytecode Alliance 2021-05-12
[86] 웹사이트 'File wasm-tools/expr.rs at b5c3d98e40590512a3b12470ef358d5c7b983b15 · bytecodealliance/wasm-tools · GitHub' https://github.com/b[...] Bytecode Alliance 2021-05-12
[87] 웹사이트 Update interpreter and text with finalized opcodes by ngzhian · Pull Request #486 · WebAssembly/simd https://github.com/W[...] 2021-05-14
[88] 웹사이트 WebAssembly/simd https://github.com/W[...] 2021-05-14
[89] 웹사이트 WebAssembly/relaxed-simd https://github.com/W[...] WebAssembly 2021-05-14
[90] 웹사이트 How we made the JVM 40x faster https://astojanov.gi[...] 2021-02-17
[91] 웹사이트 WebAssembly Specification Release 1.0 https://webassembly.[...] 2020-01-01
[92] 웹사이트 Modules (Binary) https://webassembly.[...]
[93] 웹사이트 WebAssembly Binary Toolkit (wabt) demos https://webassembly.[...]
[94] 웹사이트 abbreviated Wasm ... A contraction of “WebAssembly”, not an acronym, hence not using all-caps. https://webassembly.[...] WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26
[95] 웹사이트 Understanding WebAssembly text format https://developer.mo[...] 2019-12-09
[96] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[97] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[98] 웹사이트 Conventions — WebAssembly 1.0 https://webassembly.[...] 2019-05-17
[99] 웹사이트 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[100] 웹사이트 Introduction — WebAssembly 1.1 https://webassembly.[...] 2021-02-19
[101] 논문 Bringing the Web Up to Speed with WebAssembly 2017-06-14
[102] 웹사이트 Outside the web: standalone WebAssembly binaries using Emscripten · V8 https://v8.dev/blog/[...] 2020-07-28
[103] 웹사이트 Wasmer - The Universal WebAssembly Runtime https://wasmer.io/ 2021-02-19
[104] 웹사이트 At its core, WebAssembly is a virtual instruction set architecture (virtual ISA). https://webassembly.[...] WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26
[105] 웹사이트 The design goals of WebAssembly are the following ... Fast: executes with near native code performance ... Safe: code is validated and executes in a memory-safe, sandboxed environment ... Hardware-independent ... Language-independent ... Platform-independent: can be embedded in browsers, run as a stand-alone VM, or integrated in other environments https://webassembly.[...] WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26
[106] 웹사이트 Programming Languages Software Award http://www.sigplan.o[...] 2024-03-17
[107] 뉴스 New Bytecode Alliance Brings the Security, Ubiquity, and Interoperability of the Web to the World of Pervasive Computing https://blog.mozilla[...] Mozilla 2019-11-12
[108] 웹사이트 The Web is getting its bytecode: WebAssembly http://arstechnica.c[...] Condé Nast 2015-06-18
[109] 웹사이트 Launch bug https://github.com/W[...] 2015-06-11
[110] 웹사이트 A WebAssembly Milestone: Experimental Support in Multiple Browsers https://hacks.mozill[...] 2016-03-14
[111] 웹사이트 Experimental support for WebAssembly in V8 http://v8project.blo[...] 2016-03-15
[112] 웹사이트 Previewing WebAssembly experiments in Microsoft Edge https://blogs.window[...] 2016-03-15
[113] 웹사이트 Staring at the Sun: Dalvik vs. ASM.js vs. Native https://blog.mozilla[...] 2019-12-07
[114] 서적 Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code http://worldcat.org/[...] 2019-01-25
[115] 웹사이트 Announcing Rust 1.14 https://blog.rust-la[...] 2016-12-22
[116] 웹사이트 Go 1.11 is released https://blog.golang.[...] 2018-08-24
[117] 웹사이트 Kotlin/Native v0.4 released: Objective-C interop, WebAssembly and more https://blog.jetbrai[...] 2017-11-16
[118] 웹사이트 Firefox、ゲームなどをネイティブ並に高速実行する「WebAssembly」を採用 https://pc.watch.imp[...] Impress Watch 2017-03-08
[119] 웹사이트 WebAssemblyが主要ブラウザでサポート - Mozilla official blog https://news.mynavi.[...] マイナビニュース 2017-11-14
[120] 뉴스 World Wide Web Consortium (W3C) brings a new language to the Web as WebAssembly becomes a W3C Recommendation. https://www.w3.org/2[...] W3C 2019-12-05
[121] 웹사이트 WebAssembly Specification — WebAssembly 2.0 (Draft 2022-09-01) https://webassembly.[...] 2022-09-09
[122] 웹사이트 WebAssembly 2.0 First Public Working Drafts {{!}} W3C News https://www.w3.org/b[...] 2022-09-09
[123] 웹사이트 Non-Web Embeddings https://webassembly.[...] 2019-05-15
[124] 웹사이트 Non-Web Embeddings https://github.com/W[...] 2019-05-15
[125] 문서 This document is concerned with the core ISA layer of WebAssembly. ... It does not, however, define how WebAssembly programs can interact with a specific environment they execute in https://webassembly.[...] WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26
[126] 문서 Instead, this specification is complemented by additional documents defining interfaces to specific embedding environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment. https://webassembly.[...] WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26
[127] 웹사이트 WebAssembly Reference Types {{!}} Can I use... Support tables for HTML5, CSS3, etc https://caniuse.com/[...] 2024-03-03
[128] 웹사이트 Outside the web: Standalone WebAssembly binaries using Emscripten - V8 https://v8.dev/blog/[...] 2020-07-28
[129] 웹사이트 Wasmer - The Universal WebAssembly Runtime https://wasmer.io/ 2021-02-19
[130] 웹사이트 WebAssembly System Interface https://github.com/W[...] 2024-03-17
[131] 웹사이트 Additional background on Capabilities https://github.com/b[...] bytecodealliance 2024-03-17
[132] 웹사이트 Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog https://hacks.mozill[...] 2024-03-17
[133] 웹사이트 WebAssembly C and C++ API https://github.com/W[...] 2024-03-17
[134] 웹사이트 The "Wasmer" WebAssembly Runtime is Generally Available https://www.infoq.co[...] 2021-02-19
[135] 웹사이트 Design Rationale https://github.com/W[...] 2016-10-01
[136] 웹사이트 WebAssembly High-Level Goals https://github.com/W[...] 2015-12-11
[137] 문서 Control instructions alter control flow. Control flow is structured ... well-nested constructs ... Branches can only target such constructs. WASM specification 1.0
[138] 문서 func ::= {type typeidx, locals vec(valtype), body expr} WASM specification 1.0
[139] 문서 Code is organized into separate functions. Each function takes a sequence of values as parameters and returns a sequence of values as results. WASM specification 1.0
[140] 문서 Functions may also declare mutable local variables that are usable as virtual registers. WASM specification 1.0
[141] 문서 "''valtype'' ::= i32 | i64 | f32 | f64" WASM specification 1.0
[142] 웹사이트 サンプルのソースコードはGitHubのWebAssemblyプロジェクトより https://github.com/W[...]
[143] 웹사이트 http://cultureofdeve[...]
[144] 문서 "2.4.2. Vector Instructions Vector instructions (also known as ''SIMD'' instructions, single data multiple value) provide basic operations over values of vector type." https://webassembly.[...] W3C 2022-03-02
[145] 웹사이트 https://github.com/W[...]
[146] 웹사이트 https://github.com/p[...]
[147] 뉴스 「LLVM 8.0」登場、WebAssemblyを正式サポート https://mag.osdn.jp/[...] OSDN 2019-03-22
[148] 웹사이트 V8 first compiles a WebAssembly module with its baseline compiler, Liftoff. https://v8.dev/docs/[...] V8.dev
[149] 웹사이트 This is why, as soon as Liftoff compilation is finished, V8 immediately starts to "tier up" the module by recompiling all functions with TurboFan, the optimizing compiler in V8 for both WebAssembly and JavaScript. https://v8.dev/docs/[...] V8.dev
[150] 웹사이트 SpiderMonkey is the JavaScript and WebAssembly engine in Firefox. https://github.com/b[...] wasmtime 2018
[151] 웹사이트 A standalone runtime for WebAssembly https://github.com/b[...] bytecodealliance/wasmtime
[152] 웹사이트 Wasmtime is built on the optimizing Cranelift code generator to quickly generate high-quality machine code at runtime. https://github.com/b[...] bytecodealliance/wasmtime
[153] 웹사이트 The leading WebAssembly Runtime supporting WASI and Emscripten https://github.com/w[...] wasmerio/wasmer
[154] 웹사이트 Wasmer supports different compilation frameworks to best suit your needs (LLVM, Cranelift...). https://github.com/w[...] wasmerio/wasmer
[155] 웹사이트 you can execute a WebAssembly file https://docs.wasmtim[...] wastime
[156] 웹사이트 Lucet uses, and is developed in collaboration with, the Bytecode Alliance's Cranelift code generator. https://github.com/b[...] bytecodealliance/lucet
[157] 웹사이트 Lucet is a native WebAssembly compiler and runtime. https://github.com/b[...] bytecodealliance/lucet
[158] 뉴스 Aw, all grown up: Mozilla moves WebAssembly into sparsely furnished Studio apartment https://www.theregis[...] The Register 2018-04-11
[159] 뉴스 New Bytecode Alliance Brings the Security, Ubiquity, and Interoperability of the Web to the World of Pervasive Computing https://blog.mozilla[...] Mozilla 2019-05-27 #오기재 수정
[160] 웹인용 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[161] 웹인용 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[162] 웹인용 Conventions — WebAssembly 1.0 https://webassembly.[...] 2019-05-17
[163] 웹인용 Introduction — WebAssembly 1.0 https://webassembly.[...] 2019-06-18
[164] 웹인용 WebAssembly Specification Release 1.0 (Draft, last updated Apr 16, 2019): Introduction https://webassembly.[...] 2019-05-06
[165] 저널 Bringing the Web Up to Speed with WebAssembly https://doi.acm.org/[...] 2017-06-14
[166] 웹인용 Developer’s Guide - WebAssembly https://webassembly.[...] 2019-06-10
[167] 웹인용 Compiling a New C/C++ Module to WebAssembly https://developer.mo[...] 2019-06-10
[168] 웹인용 Building to WebAssembly — Emscripten 1.38.33 documentation https://emscripten.o[...] 2019-06-10
[169] 웹인용 Emscripting a C library to Wasm {{!}} Web https://developers.g[...] 2019-06-10
[170] 웹인용 stdweb - Rust https://docs.rs/stdw[...] 2019-06-05
[171] 웹인용 web_sys - Rust https://docs.rs/web-[...] 2019-06-05
[172] 웹인용 js_sys - Rust https://docs.rs/js-s[...] 2019-06-05
[173] 웹인용 The Web is getting its bytecode: WebAssembly https://arstechnica.[...] Condé Nast 2015-06-18
[174] 웹인용 Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes https://www.infoq.co[...] 2019-11-03
[175] 웹인용 보관된 사본 https://web.archive.[...] 2019-11-09
[176] 웹인용 보관된 사본 https://www.dimva201[...] 2019-11-09
[177] 웹인용 Launch bug https://github.com/W[...] 2015-06-11
[178] 웹인용 A WebAssembly Milestone: Experimental Support in Multiple Browsers https://hacks.mozill[...] 2016-03-14
[179] 웹인용 Experimental support for WebAssembly in V8 https://v8project.bl[...] 2016-03-15
[180] 웹인용 Previewing WebAssembly experiments in Microsoft Edge https://blogs.window[...] 2016-03-15
[181] 뉴스 Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web https://techcrunch.c[...] 2015-06-17
[182] 웹인용 Google Is to Remove Support for PNaCl https://www.infoq.co[...] 2017-05-31
[183] 웹인용 WebAssembly: a binary format for the web https://www.2ality.c[...] 2015-06-18



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com