asm.js 코드는 시간 내에 컴파일되고 실행됩니까? 무엇으로 컴파일?
다른 브라우저는 다른 방식으로 asm.js 코드를 컴파일합니다. 2015 년 8 월 현재 :
- Firefox는 asm.js를 기계 코드로 컴파일합니다 (그리고 동일한 asm.js의 향후로드를 위해 기계 코드를 캐시합니다) [ 1 ].
- Windows 10에서 실험용 플래그로 Edge는 asm.js [ 2 ] 의 Ahead-of-Time 유효성 검사 및 컴파일도 수행 합니다.
- Chrome은 특히 asm.js 시작 부분에있는 "use asm"지시문을 인식하여 코드를 더 열심히 파싱하고 분석하고 컴파일 휴리스틱을 조정합니다.
- Safari는 asm.js를 특수 처리하지 않습니다.
asm.js가 텍스트이고 wasm (웹 어셈블리)이 이진 인 것 외에 2의 차이점은 무엇입니까?
asm.js는 JavaScript 일 뿐이므로 JavaScript 사양에 따라 정확하게 작동해야합니다. 새로운 표준으로서 WebAssembly는 JavaScript 동작이 이상적이지 않은 일부 코너 케이스를 수정할 수 있습니다 (성능 또는 컴파일 관점에서) [ 3 ]. 미래 [에 4 ], WebAssembly 그렇지 않으면 자바 스크립트로 표현하기 어려울 것 기능을 추가 할 수 있습니다.
이것은 브라우저에서 실행되는 다른 스크립팅 언어에 대해 무엇을 의미합니까? 예를 들어 파이썬을 생각해보십시오.
- wasm으로 컴파일 된 파이썬 코드? 또는
- 파이썬 인터프리터 (Cpython)는 wasm으로 컴파일되고 파이썬을 해석합니까?
v.1에서 브라우저에서 Python을 실행하는 가장 간단한 방법은 말했듯이 Python 인터프리터를 wasm으로 컴파일하는 것입니다. 이것은 예를 들어 Python GC가 wasm 코드에서 실행되고 wasm 선형 메모리를 수동으로 관리한다는 것을 의미합니다. 이미 asm.js 백엔드를 PyPy [ 5 ] 에 추가하는 실험적인 프로젝트가 있습니다 (wasm에서도 잘 작동 할 수 있음). 현재 wasm의 동적 연결 미래 기능 으로 해결할 수있는 asm.js의 한계에 부딪 힙니다. 나아가 wasm 은 웹 플랫폼과의보다 효율적이고 자연스러운 통합을 가능하게하는 GC 통합 과 JIT 컴파일 지원을 모두 제공하려고 합니다.