본문으로 건너뛰기

V8 추가 기능

· 약 5분
도메닉 데니콜라 ([@domenic](https://twitter.com/domenic)), Streams 마법사

V8은 JavaScript 언어의 기본 객체와 함수의 큰 부분을 JavaScript 자체로 구현합니다. 예를 들어, 우리의 프라미스 구현은 JavaScript로 작성된 것을 볼 수 있습니다. 이러한 내장 요소들은 자체 호스팅 이라고 불립니다. 이러한 구현들은 시작 스냅샷에 포함되어 있어 새로운 컨텍스트를 실행 중에 자체 호스팅 내장 요소를 준비하고 초기화할 필요 없이 빠르게 생성할 수 있습니다.

V8 릴리스 v4.9

· 약 5분
V8 팀

약 6주마다 우리는 릴리스 프로세스의 일환으로 V8의 새로운 브랜치를 만듭니다. 각 버전은 Chrome Beta 마일스톤을 위해 Chrome이 분리되기 직전에 V8의 Git 마스터로부터 분기됩니다. 오늘 우리는 최신 브랜치인 V8 버전 4.9를 발표하게 되어 기쁩니다. 이 브랜치는 Chrome 49 Stable과의 협업을 통해 출시될 때까지 베타 버전으로 제공됩니다. V8 4.9는 개발자들이 직면하는 다양한 유용한 기능들로 가득 차 있으므로 몇 주 후 출시에 앞서 주요 내용을 미리 보여드리고자 합니다.

`Math.random()`이 있고, 또 다른 `Math.random()`도 있다

· 약 4분
Yang Guo ([@hashseed](https://twitter.com/hashseed)), 소프트웨어 엔지니어 겸 주사위 디자이너

Math.random()은 0 이상 1 미만의 양수 Number 값을 무작위 또는 유사 무작위로 선택하여 대략적으로 균등하게 분포시키는, 구현 의존적 알고리즘 또는 전략을 사용해 반환합니다. 이 함수는 인수를 받지 않습니다.

V8 릴리즈 v4.8

· 약 2분
V8 팀

대략 6주마다, 우리는 V8의 릴리즈 프로세스의 일환으로 새로운 브랜치를 만듭니다. 각 버전은 크롬 베타 마일스톤을 위해 크롬이 브랜치되기 직전에 V8의 Git 마스터에서 브랜치됩니다. 오늘 우리는 최신 브랜치인 V8 버전 4.8을 발표하게 되어 기쁩니다. 이 버전은 Chrome 48 안정 버전과 협조하여 출시되기 전까지 베타 상태에 있을 것입니다. V8 4.8은 개발자들이 사용할 수 있는 여러 가지 기능을 포함하고 있으므로, 몇 주 후 출시를 앞두고 몇 가지 주요 사항을 미리 보여드리고자 합니다.

Jank Busters Part One

· 약 4분
the jank busters: Jochen Eisinger, Michael Lippautz, and Hannes Payer

지연(jank), 즉 눈에 띄는 끊김은 Chrome이 16.66ms(60프레임/초) 내에 프레임을 렌더링하지 못할 때 발생합니다. 현재로서는 V8의 대부분의 가비지 수집 작업이 메인 렌더링 스레드에서 수행되며, 이는 종종 너무 많은 객체를 유지관리해야 할 때 지연을 유발합니다. 지연을 제거하는 것은 항상 V8 팀(1, 2, 3)의 최우선 과제였습니다. 이 글은 Chrome 41에서 Chrome 46 사이에 구현되어 가비지 수집 지연을 크게 줄임으로써 사용자 경험을 개선한 몇 가지 최적화에 대해 논의합니다.

V8 릴리스 v4.7

· 약 2분
V8 팀

약 6주마다 릴리스 프로세스의 일환으로 V8의 새로운 브랜치를 생성합니다. 각 버전은 Chrome의 Chrome Beta 마일스톤 브랜치가 이루어지기 직전에 V8의 Git 마스터에서 분기됩니다. 오늘 우리는 최신 브랜치를 발표하게 되어 기쁩니다. V8 버전 4.7은 Chrome 47 안정 버전과 조정하여 출시될 때까지 베타 단계에 있을 것입니다. V8 v4.7은 개발자 중심의 다양한 기능으로 가득 차 있으며, 몇 주 후에 있을 릴리스를 기대하며 주요 내용의 미리보기를 제공하고자 합니다.

커스텀 시작 스냅샷

· 약 2분
Yang Guo ([@hashseed](https://twitter.com/hashseed)), 소프트웨어 엔지니어 겸 엔진 사전 예열 공급자

JavaScript 명세에는 수학 함수에서부터 정규 표현식 엔진에 이르기까지 많은 내장 기능이 포함되어 있습니다. 새로 생성된 V8 컨텍스트는 시작 시 이러한 기능들을 사용할 수 있습니다. 이를 위해, 전역 객체(브라우저의 경우 window 객체 등)와 모든 내장 기능이 V8 힙에 설정되고 초기화되어야 합니다. 이 작업을 처음부터 수행하려면 시간이 꽤 걸립니다.

V8 릴리스 v4.6

· 약 4분
V8 팀

대략 여섯 주마다, 우리는 릴리스 프로세스의 일환으로 V8의 새 브랜치를 만듭니다. 각 버전은 Chrome이 Chrome Beta 마일스톤을 위해 분기하기 직전에 V8의 Git master에서 분기됩니다. 오늘 우리는 최신 브랜치인 V8 버전 4.6을 발표하게 되어 기쁘며, 이 버전은 Chrome 46 Stable과 조정되어 릴리스될 때까지 베타 상태로 유지됩니다. V8 4.6은 개발자 중심의 다양한 혜택으로 가득 차 있으며, 몇 주 후 릴리스를 기대하며 주요 내용을 미리 소개하고자 합니다.

무료로 가비지 컬렉션을 얻다

· 약 7분
Hannes Payer and Ross McIlroy, Idle Garbage Collectors

JavaScript 성능은 Chrome의 핵심 가치 중 하나로, 특히 부드러운 사용자 경험을 제공하는 데 중요한 요소입니다. Chrome 41부터 V8은 웹 애플리케이션의 반응성을 높이기 위해 고비용의 메모리 관리 작업을 사용되지 않는 작은 유휴 시간 조각 안에서 숨기는 새로운 기술을 활용합니다. 그 결과, 가비지 컬렉션으로 인한 끊김 현상이 크게 줄어들면서 웹 개발자는 더 부드러운 스크롤링과 버터 같은 애니메이션을 기대할 수 있습니다.

코드 캐싱

· 약 2분
양궈 ([@hashseed](https://twitter.com/hashseed)), 소프트웨어 엔지니어

V8는 즉시 컴파일(JIT)을 사용하여 JavaScript 코드를 실행합니다. 이는 스크립트를 실행하기 직전에 파싱 및 컴파일이 필요하다는 것을 의미하며, 이는 상당한 오버헤드를 초래할 수 있습니다. 우리가 최근 발표한 것처럼, 코드 캐싱은 이러한 오버헤드를 줄이는 기술입니다. 스크립트가 처음으로 컴파일될 때, 캐시 데이터가 생성되어 저장됩니다. V8가 동일한 스크립트를 다시 컴파일해야 할 때, 심지어 다른 V8 인스턴스에서도, 캐시 데이터를 사용하여 컴파일 결과를 처음부터 다시 컴파일하지 않고 재구성할 수 있습니다. 결과적으로 스크립트는 훨씬 더 빠르게 실행됩니다.