WASM 3.0 완성

2 hours ago 1

  • 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 표준으로 자리 잡으며, 웹 브라우저와 독립 엔진에서 지원이 확대됨
    • Wasm 기능 상태 페이지에서 각 엔진의 지원 현황을 추적 가능
    • 새로운 SpecTec 도구 체인을 사용해 첫 번째 버전으로 생산되어 신뢰성 향상

주요 변경점 및 신기능

  • 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 타겟 컴파일에 필수적 기반 제공
  • Java, OCaml, Scala, Kotlin, Scheme, Dart 등 주요 언어에서도 GC 기능을 적극 활용하기 시작함

사양 제작 및 배포 현황

  • Wasm 3.0은 새로운 SpecTec 툴체인으로 처음 제작된 표준임
  • 대부분의 주요 웹 브라우저에서 이미 Wasm 3.0을 지원 중이며, Wasmtime 등 독립형 엔진도 곧 완성 예정
  • Wasm feature status 페이지에서 각 엔진별 지원 현황 확인 가능

Read Entire Article