Emscripten과 LLVM WebAssembly 백엔드
WebAssembly는 일반적으로 소스 언어에서 컴파일되며, 이는 개발자가 WebAssembly를 사용하기 위해 도구가 필요함을 의미합니다. 그렇기 때문에 V8 팀은 LLVM, Emscripten, Binaryen, WABT와 같은 관련 오픈 소스 프로젝트에서 작업하고 있습니다. 이 게시물은 Emscripten과 LLVM에서 우리가 수행해 온 작업을 설명하며, 곧 Emscripten이 기본적으로 LLVM WebAssembly 백엔드로 전환할 수 있게 될 것입니다. 많은 테스트를 거쳐 문제를 보고해주세요!
2019년 JavaScript 비용
참고: 기사를 읽는 것보다 프레젠테이션을 보는 것을 선호한다면, 아래 영상을 즐겨보세요! 그렇지 않다면, 영상을 건너뛰고 읽어주세요.
V8 릴리즈 v7.6
WebAssembly 개발자를 위한 코드 캐싱
개발자들 사이에는 가장 빠른 코드는 실행되지 않는 코드라는 말이 있습니다. 마찬가지로, 가장 빠른 컴파일 코드도 컴파일되지 않아야 합니다. WebAssembly 코드 캐싱은 Chrome과 V8에 새롭게 도입된 최적화 기술로, 컴파일러가 생성한 네이티브 코드를 캐싱하여 코드 컴파일을 피하려고 합니다. 우리는 JavaScript 코드 캐싱에 관해 이미 글을 작성했으며, 이 최적화를 활용하기 위한 모범 사례에 대해 논의한 바 있습니다. 이번 블로그 글에서는 Chrome의 WebAssembly 코드 캐싱 운영 방식과 이를 통해 대형 WebAssembly 모듈을 사용하는 애플리케이션의 로딩 속도를 높이는 방법에 대해 설명합니다.
V8 릴리스 v7.5
더 빠르고 기능이 풍부한 국제화 API
ECMAScript 국제화 API 명세 (ECMA-402, 또는 Intl
)는 날짜 형식 지정, 숫자 형식 지정, 복수형 선택 및 정렬과 같은 주요 지역별 기능을 제공합니다. Chrome V8과 Google 국제화 팀은 V8의 ECMA-402 구현에 기능을 추가하고 기술적 부채를 정리하며 성능과 다른 브라우저와의 상호 운용성을 개선하기 위해 협력하고 있습니다.
스펙터의 1년: V8 관점
2018년 1월 3일, 구글 프로젝트 제로와 다른 연구 팀은 스펙터 및 멜트다운으로 불리는 새로운 종류의 취약성을 처음 공개했습니다. 이는 추론 실행(speculative execution)을 수행하는 CPU에 영향을 미칩니다. CPU의 추론 실행 메커니즘을 사용하여 공격자는 메모리에서 승인되지 않은 데이터를 읽는 것을 방지하는 코드의 암묵적 및 명시적 안전 검사들을 임시적으로 우회할 수 있습니다. 프로세서 추론은 구조적 레벨에서 보이지 않는 미세 구조적 세부사항으로 설계되었지만, 정교하게 만들어진 프로그램은 추론 중에 승인되지 않은 정보를 읽고 프로그램 분절의 실행 시간을 포함한 부작용 채널을 통해 이를 공개할 수 있습니다.
번개처럼 빠른 파싱, 2부: 지연 파싱
이 시리즈는 V8이 자바스크립트를 가능하게 가장 빠르게 파싱하는 방법을 설명합니다. 첫 번째 글에서는 V8의 스캐너가 빠르게 작동하도록 만든 방법을 설명했습니다.
파싱은 소스 코드를 중간 표현으로 변환하여 컴파일러(V8의 경우는 바이트코드 컴파일러 Ignition)가 사용할 수 있도록 만드는 단계입니다. 파싱과 컴파일링은 웹 페이지 시작의 중요한 경로에서 발생하며, 브라우저에 전달된 모든 함수가 시작 시 즉시 필요한 것은 아닙니다. 개발자는 비동기 및 지연 스크립트를 사용하여 그러한 코드를 지연시킬 수 있지만, 항상 그것이 가능한 것은 아닙니다. 또한 많은 웹 페이지는 특정 기능에서만 사용되는 코드를 전달하며, 사용자가 페이지를 한 번 실행하는 동안 전혀 접근하지 않을 수 있습니다.