최근 수정 시각 : 2026-06-21 22:06:36

SpiderMonkey



[[JavaScript|
파일:JavaScript 로고.svg
JavaScript
관련 문서
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#f7df1e,#f7df1e><colcolor=#000,#000> 관련 문서 표준(TC39 · 브라우저 전쟁) · Vanilla JS · AJAX · JSFuck · 상태관리 라이브러리 · JSON · CSS-in-JS
문법 this · undefined
표준 라이브러리 및 API 표준 내장 객체 · Fetch API · Web Cryptography API
구현체 <bgcolor=#f7df1e,#f7df1e> 엔진 V8 · SpiderMonkey · JavaScriptCore · 헤르메스 · Boa
<bgcolor=#f7df1e,#f7df1e> 런타임 Node.js · Deno · Bun · workerd
패키지 관리자 npm · Bun
파생 언어 TypeScript · CoffeeScript · ActionScript · AssemblyScript · elm · PureScript · ReasonML · ReScript
관련 인물 브랜든 아이크
기타 JavaScript npm 마비 사태 }}}}}}}}}
SpiderMonkey
종류 JavaScript 엔진
최초 개발자 브랜든 아이크
개발 모질라 재단
출시일 1995년 9월[1]
언어 C++, Rust
라이선스 MPL 2.0
홈페이지
1. 개요2. asm.js3. 사용 환경4. 관련문서

1. 개요

모질라 재단에서 개발하는 JIT 기반 오픈 소스 자바스크립트 엔진. 넷스케이프 브라우저에 들어간 세계 최초의 자바스크립트 엔진이다.

본래 C++로 작성되었으나 최근 Rust로 포팅 작업이 점진적으로 이루어지고 있다.

2. asm.js

모질라에서 2013년에 개발한 자바스크립트의 서브셋 언어로, 런타임이 자바스크립트를 기계어 수준으로 빠르게 실행하기 위해 존재했던 최적화 기법이다.

코드 블럭 상단에 "use asm";을 선언하여 사용할 수 있으며, 해당 블럭이 감지되면 해당 코드 부분을 즉시 기계어로 컴파일한다.

asm.js에서는 일반적인 자바스크립트와 달리 정적 타입이 사용된다. 따라서 변수에 값을 할당할 때 어떤 타입을 할당할건지 명시적으로 선언해야 한다. 또한 가비지 컬렉션을 회피하기 위해 Object를 생성하는 대신 하나의 거대한 ArrayBuffer를 선언해서 공유한다.

사람이 직접 짜는 언어가 아닌 LLVM 백엔드로 생성되는 일종의 바이트코드에 가까우며, 백엔드 구현체로 emscripten가 있었다[2]. 보통 C, C++를 비롯한 LLVM 프론트엔드가 존재하는 언어를 asm.js로 컴파일하는 형태로 사용된다. 이 덕분에 CPU 레지스터나 프레임 버퍼를 에뮬레이션하여 웹 브라우저에서 운영체제를 구동할 수도 있다. JSLinuxv86이 대표적이었다[3].

asm.js는 파이어폭스 148 버전에서 비활성화됐으며, JIT의 발전과 웹어셈블리가 이를 대신하게 되었다. #

3. 사용 환경

4. 관련문서


[1] 넷스케이프 내비게이터 2.0에 최초 탑재[2] 현재 asm.js는 지원하지 않으며 웹어셈블리 타겟으로 유지보수되고 있다.[3] 현재 해당 프로젝트들은 웹어셈블리 기반으로 작동한다.