AI 요약
Mozilla는 자바스크립트 엔진인 SpiderMonkey의 asm.js 최적화 기능을 Firefox 148 버전부터 기본 비활성화하고, 향후 릴리스에서 관련 코드를 완전히 삭제할 예정이라고 밝혔습니다. 2013년 Firefox 22 출시 당시 Google의 NaCl/PNaCl 기술에 대응해 고안된 asm.js는 자바스크립트의 정적 타입 서브셋을 감지해 네이티브 수준의 속도로 컴파일해 주는 혁신적인 기술이었습니다. 이는 웹 표준 기술만으로 Unity나 Unreal Engine 같은 C/C++ 기반 대형 엔진의 코드를 웹에서 구동할 수 있음을 증명하며 Firefox 52의 웹어셈블리(WebAssembly) 탄생에 결정적 기여를 했습니다. 현재 웹어셈블리가 완전히 안착함에 따라, 중복 컴파일러 유지보수 부담과 보안 취약점 공격 표면(Attack Surface)을 줄이기 위해 퇴장이 결정되었습니다. 기존 asm.js 사이트는 일반 JavaScript JIT 컴파일러를 통해 문제없이 작동하지만, 개발진은 더 빠른 속도와 작은 바이너리 크기를 위해 웹어셈블리로의 재컴파일을 강력히 권장하고 있습니다.
핵심 인사이트
- Firefox 148부터 비활성화: SpiderMonkey 엔진 내 asm.js 전용 최적화 코드가 기본 비활성화되며 차기 버전에서 완전히 제거됩니다.
- 13년간의 헌신: 2013년 Firefox 22에서 도입되어 약 13년 동안 웹 기술 발전을 이끌었습니다.
- 웹어셈블리(WebAssembly)의 초석: asm.js의 성공을 바탕으로 표준화 작업이 진행되어, 수년 뒤 Firefox 52에서 웹어셈블리가 정식 출시되었습니다.
- 기존 호환성 보장: asm.js는 순수 JavaScript의 서브셋이므로, 최적화가 제거되어도 기존 사이트의 작동이 중단되지는 않고 일반 JIT를 통해 실행됩니다.
주요 디테일
- 개발 배경: 별도의 샌드박스나 IPC 없이 웹 브라우저 내에서 네이티브 실행 속도를 달성하기 위해 Mozilla가 제안한 영리한 자바스크립트 서브셋 기술이었습니다.
- 상징적 성과: Epic Games의 'Epic Citadel' 데모가 단 4일 만에 웹으로 포팅되는 이정표를 세웠으며, 대형 C/C++ 게임 엔진들의 웹 이식을 현실화했습니다.
- 북유럽 신화 기반 코드네임: asm.js 컴파일러의 이름은 'OdinMonkey'였으며, 이 컴파일러를 정리하는 버그 트래킹 이름은 'Ragnarök(라그나로크)'입니다. OdinMonkey의 퇴장 이후에는 웹어셈블리 최적화 컴파일러인 'BaldrMonkey'와 베이스라인 컴파일러인 'RabaldrMonkey'가 그 자리를 이어받습니다.
- 종료 이유: 웹어셈블리로의 이주가 대부분 완료된 시점에서, 동일 기능을 처리하는 두 개의 파이프라인을 유지하는 비용과 가상 머신(VM) 보안 위험 요소를 제거하기 위함입니다.
향후 전망
- 웹어셈블리 표준 단일화: asm.js 파이프라인이 정리되면서 웹 브라우저 기반 고성능 애플리케이션 개발 환경은 웹어셈블리(WebAssembly) 체제로 완전히 단일화될 것입니다.
- 레거시 프로젝트의 마이그레이션: 여전히 asm.js 방식을 유지하고 있는 웹 서비스들은 더 향상된 실행 속도와 경량화된 바이너리 크기를 확보하기 위해 웹어셈블리로의 전환 작업을 본격화할 것입니다.
