V8(JavaScript 엔진)

V8 (JavaScript engine)
V8
V8 JavaScript engine logo 2.svg
원저작자구글라스
개발자크롬 프로젝트
초기 릴리즈2008년 9월 2일, 13년 전(2008-09-02)
안정된 릴리스
9.9 / 2022년 1월 31일[1]; 6개월 전 (2022년 1월 31일)
저장소
기입처C++[2]
플랫폼IA-32, x86-64, ARM, AArch64, MIPS, MIPS64[3] PowerPC, IBM s390
유형JavaScript 엔진
면허증.BSD[4]
웹 사이트v8.dev Edit this on Wikidata

V8구글 크롬 및 크롬[5]브라우저용 크롬 프로젝트에서 개발한 무료 오픈 소스 자바스크립트 엔진입니다.이 프로젝트의 창안자는 라스 [6]박이다.V8 엔진의 첫 번째 버전은 Chrome의 첫 번째 버전과 동시에 2008년 9월 2일에 출시되었습니다.CouchbaseNode.js 등 서버 측에서도 사용되고 있습니다.

역사

V8 어셈블러Strongtalk 어셈블러를 [7]기반으로 합니다.2010년 12월 7일, 속도가 [8]향상된 새로운 컴파일 인프라인 크랭크샤프트가 출시되었습니다.2015년 Chrome 버전 41에서는 프로젝트 TurboFan이 추가되어 m.[9]js와 같은 까다로운 워크로드에서 성능을 향상시켰습니다.V8 개발의 대부분은 Sun Microsystems가 개발Java HotSpot Virtual Machine에서 영감을 받아 개발되었으며, 새로운 실행 파이프라인은 HotSpot과 매우 유사합니다.

2016년, 소형 메모리 안드로이드 폰의 메모리 사용량을 터보팬과 크랭크샤프트에 [10]비해 줄인다는 설계 목표를 가지고 V8에 점화 인터프리터가 추가되었다.이그니션은 레지스터 기반의 기계로 HotSpot에서 사용하는 템플릿 인터프리터와 유사한(정확히 동일하지는 않지만) 설계를 공유하고 있습니다.

2017년에 V8은 Ignition(인터프리터)과 TurboFan(최적 컴파일러)으로 구성된 새로운 컴파일러 파이프라인을 출시했습니다.V8 버전 5.9부터는 풀코드젠(초기 베이스라인 컴파일러)과 크랭크샤프트는 더 이상 JavaScript 실행에 사용되지 않습니다.이는 새로운 JavaScript 언어 기능과 이러한 기능에 필요한 [11]최적화에 더 이상 보조를 맞출 수 없다고 판단했기 때문입니다.

2021년에는 V8 내의 기존 TurboFan 컴파일러를 보완하는 SparkPlug 컴파일러의 출시와 함께 HotSpot에서 사용되는 프로파일링 C1 컴파일러와 직접 병행하여 새로운 계층형 컴파일러 파이프라인이 도입되었습니다.

설계.

V8은 먼저 자체 [12]파서를 사용하여 추상 구문 트리를 생성합니다.그런 다음 점화 스위치는 내부 V8 바이트 코드 [13]형식을 사용하여 이 구문 트리에서 바이트 코드를 생성합니다.TurboFan은 이 바이트 코드를 기계 코드로 컴파일합니다.즉, V8은 ECMAScript[14]실행하기 전에 적시 컴파일을 사용하여 ECMAScript를 네이티브 머신 코드에 직접 컴파일합니다.컴파일된 코드는 코드 실행 프로파일의 휴리스틱에 따라 런타임에 동적으로 최적화(및 재최적화)됩니다.사용되는 최적화 기술에는 인라인화, 고가의 런타임 속성 제외, 인라인 캐싱 등이 있습니다.가비지 컬렉터는 세대 증분 [15]수집기입니다.

사용.

V8은 32비트 에디션과 64비트 에디션 모두에서 x86, ARM 또는 MIPS 명령어 세트 아키텍처로 컴파일할 수 있습니다.[3][19]또한 서버에서 사용하기 위해 PowerPC[16] [17][18] IBM s390으로 포팅되어 있습니다.

V8은 브라우저에서 사용하거나 독립 프로젝트에 통합할 수 있습니다.V8은 다음 소프트웨어에서 사용됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "V8 release v9.9". 31 January 2022. Retrieved 3 February 2022.
  2. ^ "V8 JavaScript Engine". Google LLC.
  3. ^ a b "Introduction - Chrome V8". Google Inc.
  4. ^ "v8/LICENSE.v8 at master". Github.
  5. ^ Lenssen, Philipp (1 September 2008). "Google on Google Chrome - comic book". Google Blogoscoped. Retrieved 17 August 2010.
  6. ^ Minto, Rob (27 March 2009). "The genius behind Google's web browser". Financial Times. Archived from the original on 1 December 2011. Retrieved 1 June 2021.(설명 필요)
  7. ^ "V8 JavaScript Engine: License". Google Code. Archived from the original on July 22, 2010. Retrieved 17 August 2010.
  8. ^ "A New Crankshaft for V8". Chromium Blog. 7 December 2010. Retrieved 22 April 2011.
  9. ^ "Revving up JavaScript performance with TurboFan". 7 July 2015. Retrieved 5 March 2016.
  10. ^ "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". 26 June 2016. Archived from the original on 2021-12-21. Retrieved 2 September 2016.
  11. ^ "Launching Ignition and TurboFan". 16 May 2017. Retrieved 13 July 2017.
  12. ^ Verwaest, Toon (25 March 2019). "Blazingly fast parsing, part 1: optimizing the scanner · V8". v8.dev. Archived from the original on 21 April 2021. Retrieved 1 June 2021.
  13. ^ Hinkelmann, Franziska (2017-12-19). "Understanding V8's Bytecode". Medium. Retrieved 2019-10-17.
  14. ^ "Firing up the Ignition interpreter · V8". v8.dev. Retrieved 2020-09-30.
  15. ^ "A game changer for interactive performance". blog.chromium.org. 2011-11-21. Retrieved 2022-02-06.
  16. ^ "GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®". April 21, 2019 – via GitHub.
  17. ^ "Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z". April 2, 2019 – via GitHub.
  18. ^ "PPC support for Google V8 goes mainstream". June 30, 2015.
  19. ^ "V8 Changelog v3.8.2". Archived from the original on 22 October 2012. Retrieved 23 October 2012.
  20. ^ "A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno". July 8, 2019 – via GitHub.
  21. ^ "Overview - NativeScript Docs". docs.nativescript.org.
  22. ^ Jolie O'Dell (March 10, 2011). "Why Everyone Is Talking About Node". Mashable.
  23. ^ "Difference between qt qml and qt quick". Stack Overflow. Retrieved 2020-09-26.

외부 링크