W3C 공개 최근 포스팅을 통해 새로운 사양의 초안 의 준비 코드를 표준화하는 WebAssembly 2.0 및 관련 API 브라우저와 하드웨어 플랫폼 간에 이식 가능한 고성능 응용 프로그램을 만들 수 있습니다.
WebAssembly를 처음 사용하는 사람들은 다음을 알아야 합니다. 이것은 일반 미들웨어를 제공합니다, 낮은 수준 및 브라우저 독립적, 컴파일된 응용 프로그램 실행 다양한 프로그래밍 언어에서. WebAssembly용 JIT를 사용하면 네이티브 코드에 가까운 수준의 성능을 얻을 수 있습니다.
웹어셈블리 정보
WebAssembly 브라우저에서 고성능 작업을 수행하는 데 사용할 수 있습니다.C/C++와 같은 컴파일된 언어로 작성된 코드를 실행하여 비디오 인코딩, 오디오 처리, 3D 및 그래픽 조작, 게임 개발, 암호 연산 및 수학 계산과 같은 작업을 수행합니다.
WebAssembly의 주요 작업 중에는 이식성 제공, 행동 예측 가능성 및 다양한 플랫폼에서 코드 실행 ID 제공이 있습니다. 최근 WebAssembly는 브라우저에 국한되지 않고 모든 인프라, 운영 체제 및 장치에서 안전한 코드 실행을 위한 범용 플랫폼으로 승격되었습니다.
WebAssembly 2.0 초안 정보
WebAssembly 이후 변경된 사항 중 WebAssembly 2.0에 대한 완성된 제안은 고정 너비 SIMD, 대용량 메모리 작업, 참조 유형, WebAssembly i64에 대한 JavaScript BigInt 지원, 다중 반환 값 지원 및 변경 가능한 가져오기/내보내기입니다. 전역 변수.
W3C는 WebAssembly 2.0 사양 초안 XNUMX가지를 발표했습니다.
- 웹 어셈블리 코어: 중간 WebAssembly 코드를 실행하기 위한 저수준 가상 머신을 설명합니다. WebAssembly와 관련된 리소스는 Java ".class" 파일과 유사한 ".wasm" 형식으로 제공되며 이 파일에는 해당 데이터와 함께 작동하는 정적 데이터 및 코드 세그먼트가 포함되어 있습니다.
- WebAssembly JavaScript 인터페이스 : JavaScript와의 통합을 위한 API를 제공합니다. WebAssembly 함수에 값을 가져오고 매개변수를 전달할 수 있습니다. WebAssembly 실행은 JavaScript 보안 모델을 따르며 호스트와의 모든 상호 작용은 JavaScript 코드를 실행하는 것과 유사한 방식으로 수행됩니다.
- WebAssembly 웹 API : ".wasm" 리소스를 요청하고 실행하기 위한 Promise 메커니즘을 기반으로 API를 정의합니다. WebAssembly 리소스 형식은 파일이 완전히 다운로드될 때까지 기다리지 않고 실행을 시작하도록 최적화되어 웹 애플리케이션의 응답성을 향상시킵니다.
WebAssembly와 WebAssembly 2.0의 차이점
또한 표준의 첫 번째 버전과 비교하여 WebAssembly 2.0에 몇 가지 중요한 변경 사항이 있다는 점에 유의해야 합니다.
- v128 벡터 유형 지원 여러 숫자 값에 대해 병렬로 연산을 수행할 수 있는 관련 벡터 명령어(SIMD, 단일 명령어, 다중 데이터).
- 변경 가능한 전역 변수 가져오기 및 내보내기 기능, C++에서 스택 포인터로 값에 대한 전역 바인딩을 허용합니다.
- float를 int로 변환하는 새로운 지침결과 오버플로에 대해 예외를 발생시키는 대신 가능한 최소 또는 최대 값을 반환합니다(SIMD에 필요함).
- 정수 부호 확장 지침 (부호와 값을 유지하면서 숫자의 비트 깊이 증가).
- 블록 및 함수별로 여러 값 반환 지원 (또한 여러 매개변수를 함수에 전달).
- JavaScript 함수 BigInt64Array 및 BigUint64Array 구현 JavaScript 유형 BigInt와 64비트 정수의 WebAssembly 표현 사이를 변환합니다.
- 참조 유형 지원 (funcref 및 externref) 및 관련 문(select, ref.null, ref.func 및 ref.is_null).
- memory.copy, memory.fill, memory.init 및 data.drop 명령어 메모리 영역 간에 데이터를 복사하고 메모리 영역을 삭제합니다.
- 테이블의 직접 액세스 및 수정 지침 (table.set, table.get, table.size, table.grow).
- 하나의 모듈에서 여러 테이블 생성, 가져오기 및 내보내기 기능. 배치 모드에서 테이블을 복사/채우는 기능(table.copy, table.init 및 elem.drop).
마지막으로, 그것에 대해 더 알고 싶다면 자세한 내용을 참조하십시오. 다음 링크에서.