V8은 Chromium Project에서 Chromium 및 Google Chrome 웹 브라우저를 위해 개발한 무료 오픈 소스 JavaScript 및 WebAssembly 엔진이다. 이 프로젝트의 개발자는 Lars Bak이며, V8 엔진의 첫 번째 버전은 2008년 9월 2일 크롬의 첫 번째 버전과 동시에 출시되었다. 또한 Couchbase, Deno, Node.js 등 서버 측에서도 사용되고 있다.
V8 어셈블러는 Strongtalk 어셈블러를 기반으로 2010년 12월 7일 Crankshaft라는 새로운 컴파일 기반이 출시되어 속도가 향상되었고, 2015년 크롬 버전 41에서는 프로젝트 TurboFan이 추가되었고 V8 개발의 대부분은 Sun Microsystems가 개발한 Java HotSpot 가상 머신에서 많은 영감을 얻었으며, 새로운 실행 파이프라인은 HotSpot의 파이프라인과 매우 유사하다. 있다.
2016년에 V8에 추가된 Ignition 인터프리터는 TurboFan과 Crankshaft에 비해 메모리가 적은 안드로이드 폰의 메모리 사용량을 줄이기 위한 설계 목표로 V8에 추가됐다. 핫스팟에서 사용되는 템플릿 인터프리터와 유사한(완전히 동일하지는 않지만) 디자인을 공유한다.
2017년 V8은 Ignition(인터프리터)과 TurboFan(최적화 컴파일러)으로 구성된 완전히 새로운 컴파일러 파이프라인을 출시했으며, V8 버전 5.9부터 자바스크립트 실행을 위한 Full-codegen(초기 기준선 컴파일러) 와 Crankshaft는 더 이상 자바스크립트의 새로운 언어 기능과 그 기능에 필요한 최적화를 따라잡을 수 없다고 판단해 V8에서 더 이상 사용되지 않는다.
2021년에는 V8의 기존 TurboFan 컴파일러를 보완하는 SparkPlug 컴파일러가 출시되어 HotSpot에서 사용되는 프로파일링 C1 컴파일러와 함께 새로운 계층형 컴파일 파이프라인이 도입되었다.
V8은 먼저 자체 파서로 추상 구문 트리를 생성한다. 그런 다음 Ignition은 V8 내부의 바이트코드 형식을 사용하여 이 구문 트리에서 바이트코드를 생성하고, TurboFan은 이 바이트코드를 기계어로 컴파일한다. 즉, V8은 ECMAScript를 실행하기 전에 Just In Time 컴파일을 사용하여 네이티브 기계어 코드로 직접 컴파일한다. 컴파일된 코드는 코드 실행 프로파일의 휴리스틱에 따라 실행 중에 동적으로 최적화(및 재최적화)된다. 사용되는 최적화 기술에는 인라인화, 비싼 런타임 속성 생략, 인라인 캐시 등이 있다. 가비지 컬렉터는 세대 증분 컬렉터이다.