스파이더몽키
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
스파이더몽키는 넷스케이프의 브렌던 아이크가 개발한 자바스크립트 엔진으로, 웹 브라우저에서 스크립트 언어를 실행하기 위해 만들어졌다. 넷스케이프 내비게이터와 파이어폭스 웹 브라우저의 핵심 엔진으로 사용되었으며, 현재는 파이어폭스와 함께 릴리즈되고 있다. 스파이더몽키는 C/C++로 작성되었으며, GC, JSObject, 파서, 인터프리터, JIT 컴파일러, 웹어셈블리 등으로 구성되어 있다. ECMA-262 사양을 구현하여 자바스크립트 언어 표준을 따르며, 다양한 응용 프로그램에 내장되어 자바스크립트 실행 환경을 제공한다.
더 읽어볼만한 페이지
- 자바스크립트 엔진 - V8 (자바스크립트 엔진)
V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다. - 자바스크립트 엔진 - 차크라 (자바스크립트 엔진)
차크라는 ECMAScript 5.1과 ECMAScript 2015의 일부 기능을 지원하는 자바스크립트 엔진이며, 마이크로소프트는 해당 엔진의 핵심 구성 요소를 ChakraCore라는 이름으로 오픈 소스화했다. - 모질라 라이선스 소프트웨어 - 모질라 파이어폭스
모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다. - 모질라 라이선스 소프트웨어 - 시몽키
시몽키는 웹 브라우저, 이메일 클라이언트, HTML 편집기, IRC 클라이언트를 통합한 오픈 소스 인터넷 스위트이며, 모질라 애플리케이션 스위트의 개발 중단 후 시몽키 위원회가 이어받아 개발하고 파이어폭스와 동일한 게코 엔진을 사용한다. - 모질라 - 모질라 재단
모질라 재단은 넷스케이프 사업부 축소 후 모질라 프로젝트의 독립 운영을 위해 2003년 설립된 비영리 단체로, 파이어폭스 개발 지원, 개방형 웹 생태계 유지, 그리고 인터넷 자유 수호를 위한 활동을 전개한다. - 모질라 - 모질라 차이나
모질라 차이나는 한국에서의 역사와 관련된 주제를 다루며, 특정 시대별 주요 사건 및 변화, 쟁점, 사회적 영향, 관련 인물 및 단체, 그리고 미래에 대한 내용을 포함한다.
스파이더몽키 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발 | 모질라 재단 모질라 코퍼레이션 |
최신 릴리스 버전 | 해당 없음 |
최신 릴리스 날짜 | 해당 없음 |
운영체제 | 크로스 플랫폼 |
종류 | 자바스크립트 및 WebAssembly 엔진 |
프로그래밍 언어 | C C++ 러스트 |
플랫폼 | IA-32 x86-64 ARM MIPS SPARC RISC-V |
라이선스 | MPL 2.0 |
웹사이트 | SpiderMonkey JavaScript/WebAssembly Engine |
저장소 | github.com/mozilla-spidermonkey |
2. 역사
브렌던 아이크는 1995년에 "10일 만에 자바스크립트를 작성"했다.[5] 그는 "브라우저에서 'Scheme'을 만들겠다"는 약속을 받고 넷스케이프에 합류했으나, 엔지니어링 관리팀이 이 언어가 'Java'와 비슷해야 한다고 결정하면서 Scheme을 사용하려는 아이디어는 폐기되었다.[6] 1996년 말, 아이크는 첫 해에 남겨진 "상당한 기술 부채"를 해결해야 할 필요성을 느껴 "2주 동안 집에 머물면서 Mocha를 스파이더몽키로 알려진 코드베이스로 다시 작성"했다.[5] (Mocha는 언어의 원래 작업 이름이었다.)[6][7]
2011년에 아이크는 스파이더몽키 코드 관리를 데이브 맨델린에게 넘겼다.[5]
2. 1. 개발 배경
1995년, 넷스케이프의 브렌던 아이크는 웹 브라우저에서 동작하는 스크립트 언어인 자바스크립트를 개발했다.[5] 그는 "브라우저에서 'Scheme'을 만들겠다"는 약속을 받고 넷스케이프에 합류했으나, 엔지니어링 관리팀이 이 언어가 'Java'와 비슷해야 한다고 결정하면서 Scheme을 사용하려는 아이디어는 무산되었다.[6] 1996년 말, 아이크는 첫해에 남겨진 "상당한 기술 부채"를 해결해야 할 필요성을 느껴 2주 동안 집에 머물면서 Mocha를 스파이더몽키라는 코드베이스로 다시 작성했다.[5] (Mocha는 이 언어의 원래 작업 이름이었다.)[6][7]2011년, 아이크는 스파이더몽키 코드 관리를 데이브 맨델린(Dave Mandelin)에게 넘겼다.[5]
2. 2. 버전
스파이더몽키는 넷스케이프에서 개발되어 넷스케이프 내비게이터와 함께 발전해왔으며, 이후 파이어폭스 웹 브라우저의 핵심 엔진으로 사용되고 있다. 각 버전은 ECMAScript 표준을 준수하며, 새로운 기능과 성능 개선이 이루어졌다.[35] 1995년에 브렌던 아이크(Eich)가 "10일 만에 JavaScript를 작성"했으며,[5] 1996년 말에는 "2주 동안 집에 머물면서 Mocha를 SpiderMonkey로 알려진 코드베이스로 다시 작성"했다.[5] 2011년부터는 Dave Mandelin이 SpiderMonkey 코드 관리를 맡고 있다.[5] 2014년부터 스파이더몽키는 파이어폭스와 동시에 릴리즈되고 있다.
스파이더몽키는 C/C++(프로그래밍 언어)로 작성되었으며, 인터프리터, WarpMonkey JIT 컴파일러, 가비지 컬렉션 등을 포함한다.[36][37] Rhino와 함께 ECMAScript for XML (E4X) 표준을 지원한다.
3. 구성 요소
3. 1. 주요 구성 요소
스파이더몽키는 다음과 같은 주요 구성 요소로 이루어져 있다.[36][37]
4. 내부
스파이더몽키는 C/아이크는 "상당한 기술 부채"를 해결하기 위해 "2주 동안 집에 머물면서 Mocha를 SpiderMonkey로 알려진 코드베이스로 다시 작성"했다.[5] 2011년에 아이크는 스파이더몽키 코드 관리를 데이브 맨델린에게 넘겼다.[5]
4. 1. 내부 구성
스파이더몽키는 C/- '''컴파일러''': 자바스크립트 코드를 바이트코드로 변환한다.
- '''인터프리터''': 바이트코드를 실행한다.
- '''역컴파일러''': 필요시 바이트코드를 다시 자바스크립트 코드로 변환한다. (디버깅 등에 사용)
- '''가비지 컬렉션''': 더 이상 사용되지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지한다.
- '''표준 클래스군''': 자바스크립트 표준 라이브러리를 제공한다.
스파이더몽키는 DOM과 같은 호스트 환경을 자체적으로 제공하지 않으며, Rhino와 함께 ECMAScript for XML (E4X) 표준을 지원한다.
4. 2. 성능 최적화
스파이더몽키는 JIT(Just-In-Time) 컴파일 기술을 통해 성능을 향상시켜왔다. 다음은 스파이더몽키에서 사용된 주요 JIT 컴파일러들이다.- TraceMonkey: 파이어폭스 3.5부터 10까지 사용된 최초의 자바스크립트 JIT 컴파일러이다. TraceMonkey는 특정 코드 경로(트레이스)를 추적하여 네이티브 코드로 최적화하는 트레이싱 JIT 방식을 사용했다. 이를 통해 기존 인터프리터보다 20~40배 빠른 성능 향상을 제공했다.[13] 하지만 TraceMonkey는 타입 추론 엔진의 발전으로 인해 결국 쓸모없게 되어 파이어폭스 11부터 제거되었다.[14]
- JägerMonkey: 파이어폭스 4부터 17까지 사용되었으며, TraceMonkey의 한계를 극복하기 위해 개발된 전체 메서드 JIT 컴파일러이다. JägerMonkey는 SpiderMonkey의 내부 함수 표현인 바이트코드를 통해 선형적으로 반복하며 작동하여, 빠른 컴파일 속도를 제공했다. 이는 변수 유형 변경으로 인해 재컴파일이 자주 발생하는 자바스크립트에 유용하다. JägerMonkey는 다형적 인라인 캐시와 타입 추론과 같은 중요한 최적화를 구현했다.[17]
- IonMonkey: 파이어폭스 18부터 82까지 사용되었으며, JägerMonkey 아키텍처에서는 불가능했던 많은 최적화를 가능하게 하기 위해 개발되었다.[18] IonMonkey는 정적 단일 할당 형식(SSA)을 중간 표현으로 사용하는 전통적인 컴파일러 아키텍처를 기반으로 한다. 이를 통해 타입 특수화, 함수 인라인, 데드 코드 제거 등 다른 프로그래밍 언어에서 잘 알려진 최적화를 자바스크립트에 적용할 수 있게 되었다.[19]
- OdinMonkey: asm.js와 같은 자바스크립트 하위 집합에 대한 최적화 모듈이다. OdinMonkey 자체는 JIT 컴파일러가 아니며, 현재 JIT 컴파일러를 활용한다. 파이어폭스 22부터 포함되었다.
- WarpMonkey: 파이어폭스 83부터 현재까지 사용되고 있으며, IonMonkey를 대체하는 최신 JIT 컴파일러이다. WarpMonkey는 다른 스크립트를 인라인할 수 있으며, 처리되는 데이터 및 인수에 따라 코드를 특수화할 수 있다. 스크립트가 이전에 관찰된 것과 유사한 데이터를 계속 볼 것이라는 가정하에 최적화를 수행한다.[22]
5. 표준
스파이더몽키는 ECMA-262 사양(ECMAScript)을 구현한다. 2013년 초에 ECMA-357(E4X) 지원이 중단되었다.[10]
스파이더몽키는 C 언어로 구현되었으며, 컴파일러, 인터프리터, 역 컴파일러, 가비지 수집기, 표준 클래스군 등으로 구성된다. 자체적으로 DOM과 같은 호스트 환경을 제공하지는 않는다.
스파이더몽키와 자매 관계에 있는 Rhino는 E4X 표준을 지원했었다.
6. 응용
스파이더몽키는 다양한 응용 프로그램에 내장되어 자바스크립트 실행 환경을 제공한다.
- 웹 브라우저: 파이어폭스, 페일 문, 바실리스크, 워터폭스 등.[23]
- 데이터 저장 애플리케이션: MongoDB, Riak, CouchDB.[24]
- 어도비 제품군: 어도비 아크로뱃, Adobe Reader, 어도비 플래시 프로페셔널, 어도비 드림위버.[25]
- 데스크톱 환경: GNOME.
- 기타: 야후! 위젯, FreeSWITCH, PythonMonkey,[26] ELinks,[27] Wine,[28] Synchronet, JavaScript OSA, ''0 A.D.'', Wasmer (WinterJS 프로젝트), 울티마 온라인 서버 에뮬레이터 UOX3, 오픈 소스 롤플레잉 게임 설계 지원 도구 Sphere.
스파이더몽키는 또한 다른 많은 오픈 소스 프로젝트에서 사용된다.[29]
참조
[1]
웹사이트
'1.8.8 – SpiderMonkey | MDN'
https://developer.mo[...]
Developer.mozilla.org
2013-03-21
[2]
웹사이트
SpiderMonkey Newsletter (Firefox 110-111)
https://spidermonkey[...]
2023-12-27
[3]
간행물
Mozilla Licensing Policies
https://www.mozilla.[...]
mozilla.org
2013-03-26
[4]
웹사이트
Home
https://spidermonkey[...]
2023-04-24
[5]
웹사이트
New JavaScript Engine Module Owner
http://brendaneich.c[...]
BrendanEich.com
2011-07-01
[6]
웹사이트
Popularity
http://brendaneich.c[...]
BrendanEich.com
2011-07-01
[7]
웹사이트
Mapping the Monkeysphere
http://blog.cdleary.[...]
2011-08-19
[8]
웹사이트
New in JavaScript 1.6
https://web.archive.[...]
2015-07-28
[9]
문서
https://archive.mozi[...]
[10]
웹사이트
'759422 – Remove use of e4x in account creation'
https://bugzilla.moz[...]
2013-02-05
[11]
웹사이트
JavaScript:TraceMonkey, MozillaWiki
https://wiki.mozilla[...]
2020-07-22
[12]
웹사이트
TraceMonkey: JavaScript Lightspeed, Brendan Eich's Blog
https://brendaneich.[...]
2020-07-22
[13]
웹사이트
Firefox to get massive JavaScript performance boost
https://arstechnica.[...]
Ars Technica
2013-03-21
[14]
웹사이트
'SpiderMonkey is on a diet | Nicholas Nethercote'
http://blog.mozilla.[...]
Blog.mozilla.com
2013-03-21
[15]
웹사이트
'JaegerMonkey – Fast JavaScript, Always! » Mystery Bail Theater'
http://www.bailopan.[...]
Bailopan.net
2013-03-21
[16]
웹사이트
Mozilla borrows from WebKit to build fast new JS engine
https://arstechnica.[...]
Ars Technica
2013-03-21
[17]
웹사이트
JaegerMonkey - MozillaWiki
https://wiki.mozilla[...]
Wiki.mozilla.org
2013-03-21
[18]
웹사이트
Platform/Features/IonMonkey - MozillaWiki
https://wiki.mozilla[...]
Wiki.mozilla.org
2013-03-21
[19]
웹사이트
'IonMonkey: Mozilla’s new JavaScript JIT compiler'
http://www.infoq.com[...]
Infoq.com
2013-03-21
[20]
웹사이트
Firefox Notes - Desktop
https://website-arch[...]
Mozilla.org
2013-03-21
[21]
웹사이트
Warp: Improved JS performance in Firefox 83 – Mozilla Hacks - the Web developer blog
https://hacks.mozill[...]
2021-08-28
[22]
웹사이트
SpiderMonkey — Firefox Source Docs documentation
https://firefox-sour[...]
2021-08-28
[23]
웹사이트
'JavaScript Changes in MongoDB 3.2 — MongoDB Manual 3.4'
https://docs.mongodb[...]
2016-11-23
[24]
웹사이트
The Release Riak 0.8 and JavaScript Map/Reduce
http://basho.com/blo[...]
2011-04-24
[25]
웹사이트
Acrobat DC SDK Documentation
https://helpx.adobe.[...]
2021-11-05
[26]
웹사이트
'Distributive-Network/PythonMonkey: A Mozilla SpiderMonkey JavaScript engine embedded into the Python VM, using the Python engine to provide the JS host environment.'
https://github.com/D[...]
2023-07-10
[27]
웹사이트
2005 Text Mode Browser Roundup
http://www.linuxjour[...]
Linux Journal
2005-03-08
[28]
뉴스
wine-cvs mailing list
http://www.winehq.or[...]
winehq.org
2008-09-16
[29]
웹사이트
SpiderMonkey > FOSS
https://developer.mo[...]
2019-04-02
[30]
웹사이트
Introduction to the JavaScript shell
https://web.archive.[...]
Mozilla Developer Network
2010-12-14
[31]
뉴스
wine-cvs mailing list
http://www.winehq.or[...]
2008-09-16
[32]
뉴스
Firefox to get massive JavaScript performance boost
http://arstechnica.c[...]
ars technica
2008-08-22
[33]
문서
Starting JägerMonkey
http://blog.mozilla.[...]
David Mandelin's blog
[34]
문서
SpiderMonkey-Welcome!
https://spidermonkey[...]
[35]
웹인용
New in JavaScript 1.6
https://web.archive.[...]
2017-12-06
[36]
웹사이트
firefox source doc - SpiderMonkey
https://firefox-sour[...]
[37]
웹사이트
mozilla wiki - Oxidation
https://wiki.mozilla[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com