-
Wasm 3.0 표준이 공식 발표되며, 6~8년간 준비된 대규모 기능들이 포함됨
-
64비트 주소 공간, 가비지 컬렉션, 타입드 레퍼런스, 테일 콜, 예외 처리 등으로, 고수준 언어를 Wasm에 더 쉽게 컴파일할 수 있게 함
- 핵심 신기능들은 고성능 애플리케이션, 다양한 언어 런타임, 안전성 및 확장성에 도움을 줌
-
웹 환경 외에도 비웹 생태계에서 더 큰 용량과 데이터 집합을 다뤄야 하는 사례에 적합함
- 이미 주요 웹 브라우저에서 지원 중이며, Wasmtime 같은 독립 엔진에서도 곧 완성될 예정으로, Wasm이 범용 실행 플랫폼으로 더욱 자리잡을 것
Wasm 3.0 출시 개요
- WebAssembly 표준의 3.0 버전이 2025년 9월 17일에 출시됨
- 2.0 버전(2022년 완료)이 벡터 명령어, 벌크 메모리 작업, 다중 반환 값, 간단한 참조 타입을 도입한 지 3년 만의 주요 업데이트
- W3C 커뮤니티 그룹과 워킹 그룹이 개발을 지속하며, 이번 릴리스는 6~8년간 준비된 대형 기능들을 포함한 상당히 큰 규모의 변경
- Wasm은 저수준 언어로서의 정신을 유지하면서 메모리와 타입 시스템을 강화하여 고수준 언어 컴파일을 더 잘 지원
- 2.0 버전 이후 개발된 기능들이 마무리되어 Live 표준으로 자리 잡으며, 웹 브라우저와 독립 엔진에서 지원이 확대됨
주요 변경점 및 신기능
-
64비트 주소 공간
- 메모리와 테이블을 i64 타입으로 선언할 수 있음
- Wasm 애플리케이션의 주소 공간이 약 4GB에서 물리 한계까지(이론적으로 16엑사바이트) 확장 가능
- 웹의 경우 16GB 제한을 적용하지만, 비웹 생태계에서는 대규모 애플리케이션·데이터셋 지원에 유용함
-
다중 메모리
- 단일 모듈 내에서 여러 메모리 객체 선언 및 직접 접근 가능
- 모듈 병합 및 주소 공간 분리, 버퍼링, 보안 등 다양한 활용 가능
-
wasm-merge 같은 정적 링킹 도구가 모든 Wasm 모듈에 사용할 수 있게 됨
-
가비지 컬렉션 (GC)
- 선형 메모리 외에, Wasm 런타임이 자동 관리하는 저장소 지원
- 컴파일러는 struct/array 타입 및 unboxed 정수 등 데이터 레이아웃을 직접 선언함
- 메모리 관리의 기본 빌딩블록만 제공하고, 고수준 객체 시스템 또는 클로저는 구현 언어에 따라 개별적으로 설계 가능
-
타입드 레퍼런스
- Wasm 타입 시스템이 확장되어, 힙 값의 형태와 함수 참조를 더 정확히 기술
- 하위타입(subtyping), 타입 재귀를 지원하며, 새로운 call_ref 명령어로 런타임 타입 체크 없이 안전한 간접 함수 호출 가능
-
테일 콜
- 기존 함수의 스택 공간 추가 사용 없이, 바로 반환하는 tail call 구조 지원
- 함수형 언어나 런타임 내부 최적화 등에 활용될 수 있음
-
예외 처리
- Wasm 내에서 네이티브 예외 처리 시스템을 도입
- 예외 태그와 페이로드 선언, 선택적 캐치, 블록단위 예외 핸들러 제공
- 기존에 JS로 우회하던 비효율적 방법 없이 이식성과 성능 개선 가능
-
리랙스드(완화된) 벡터 명령어
- SIMD 명령어의 하드웨어 차이에 대응해, 일부 명령어의 세부 동작을 구현 자유에 맡기도록 relaxed variant 제공
- 합법적 동작 집합 내에서 다양한 최적화가 가능함
-
결정론적 프로파일
- 동일 명령에 대한 결과가 비결정적인 상황(부동소수점 연산, relaxed SIMD 등)에서도, 플랫폼 간 결정론적 실행을 정의
- 블록체인, 재생 가능한 시스템 등 재현성과 이식성 보장 가능
-
커스텀 애노테이션 구문
- 소스 코드 내에서 사람이 읽고 쓸 수 있는 애노테이션 문법 추가
- 표준이 직접 해석하지 않지만, 향후 표준·확장 구현에 활용 가능
JavaScript 연결 및 호환성
-
JS string builtins
- JS의 문자열 값을 externref로 Wasm에 전달 및 조작 가능
- 새 기본 함수를 import하여, Wasm 내부에서 직접 외부 JS 문자열을 쓸 수 있음
Wasm 3.0의 효용성 및 전망
사양 제작 및 배포 현황
- Wasm 3.0은 새로운 SpecTec 툴체인으로 처음 제작된 표준임
- 대부분의 주요 웹 브라우저에서 이미 Wasm 3.0을 지원 중이며, Wasmtime 등 독립형 엔진도 곧 완성 예정
-
Wasm feature status 페이지에서 각 엔진별 지원 현황 확인 가능