새로운 중간 단계 컴파일러 도입과 상위 단계 컴파일러, 런타임, 가비지 컬렉터의 개선을 통해 전반적인 속도 향상
자바스크립트와 WebAssembly에 대한 새로운 기능 추가 및 WebAssembly 가비지 컬렉션(WasmGC)으로 웹에 효율적으로 가비지 컬렉션 프로그래밍 언어를 가져옴
안전성 향상을 위해 샌드박싱 인프라 개선 및 V8에 제어 흐름 무결성(CFI) 도입
Maglev: 새로운 중간 단계 최적화 컴파일러
새로운 최적화 컴파일러 Maglev 도입, Sparkplug과 TurboFan 사이에서 작동
Maglev는 Sparkplug보다 약 20배 느리게 코드를 생성하지만, TurboFan보다는 10~100배 빠르게 코드를 생성
JetStream에서 8.2%, Speedometer에서 6%의 성능 향상 관찰
Maglev의 빠른 컴파일 속도와 TurboFan에 대한 의존도 감소로 인한 에너지 절감 효과
Turboshaft: 상위 단계 최적화 컴파일러의 새로운 구조
상위 단계 최적화 컴파일러 TurboFan의 새로운 내부 구조 Turboshaft 도입
새로운 최적화 추가와 더 빠른 컴파일 가능
Chrome 120부터 CPU-agnostic 백엔드 단계 모두 Turboshaft 사용, 이전보다 약 두 배 빠른 컴파일
더 빠른 HTML 파서
HTML 파싱에 소요되는 시간 감소를 위해 Blink에 더 빠른 HTML 파서 추가
Speedometer 점수에서 3.4% 증가
WebKit 프로젝트가 이 변경 사항을 즉시 통합
더 빠른 DOM 할당
DOM 측면에서의 투자와 최적화
Oilpan 할당자에 페이지 풀 추가로 커널과의 왕복 비용 감소
압축 및 비압축 포인터 지원과 Blink에서 고빈도 필드의 압축 방지
자주 할당되는 클래스의 oilpanization으로 할당 작업 3배 가속화 및 DOM 중심 벤치마크 성능 향상
새로운 자바스크립트 기능
새로 표준화된 자바스크립트 기능 배포.
resizable ArrayBuffers, ArrayBuffer transfer, String isWellFormed 및 toWellFormed, RegExp v 플래그, JSON.parse with source, Array grouping, Promise.withResolvers, Array.fromAsync 등 추가
Iterator 도우미 기능은 웹 호환성 문제로 인해 일시적으로 철회 후 재배포 예정
ES6+ 자바스크립트 코드의 성능 향상을 위한 일부 불필요한 임시 죽은 지역 검사 생략
WebAssembly 업데이트
Wasm에 대한 새로운 기능과 성능 향상
멀티 메모리, 꼬리 호출, 완화된 SIMD 지원으로 성능 향상
메모리64 구현 완료 및 제안이 4단계에 도달하면 배포 예정
예외 처리 제안의 최신 업데이트 반영 및 이전 형식 지원
JSPI 투자로 웹에서 더 큰 클래스의 애플리케이션 활성화
WebAssembly 가비지 컬렉션
WasmGC 배포로 V8의 기존 가비지 컬렉터에 의해 관리되는 객체와 배열 할당 가능
Java, Kotlin, Dart 등의 가비지 컬렉션 언어로 작성된 애플리케이션을 Wasm으로 컴파일할 때 자바스크립트로 컴파일하는 것보다 약 두 배 빠른 실행
보안
샌드박싱, 퍼징, CFI가 올해의 주요 보안 주제
샌드박싱 인프라 구축, 퍼징 인프라 투자 및 언어 커버리지 개선
CFI 아키텍처 기반 마련 및 다양한 플랫폼에서 구현 가능
the_hole 주변 인기 있는 익스플로잇 기술 완화 및 V8CTF 형태의 새로운 익스플로잇 현상금 프로그램 시작
결론
작은 성능 향상 프로젝트들의 결합된 영향으로 상당한 성과
2023년 V8의 성능 향상을 보여주는 벤치마크 점수는 JetStream에서 14%, Speedometer에서 34% 성장