V8 릴리즈 v8.4
C++를 위한 고성능 가비지 컬렉션
ECMAScript 명세 이해하기, 4부
웹의 다른 부분에서는
Jason Orendorff가 Mozilla에서 JS 구문적인 특성에 대한 훌륭하고 심층적인 분석을 발표했습니다. 구현 세부사항은 다르더라도, 모든 JS 엔진은 이러한 특성과 관련된 동일한 문제에 직면합니다.
웹어셈블리에서 최대 4GB 메모리
소개
크롬과 엠스크립텐에서 최근 작업 덕분에, 이제 웹어셈블리 애플리케이션에서 최대 4GB의 메모리를 사용할 수 있습니다. 이전에는 2GB로 제한되었습니다. 왜 처음부터 제한이 있었는지 의아할 수 있습니다 - 예를 들어, 512MB 또는 1GB 메모리를 사용하는 데는 아무 작업이 필요하지 않았기 때문입니다! 하지만 브라우저와 툴체인에 있어서 2GB에서 4GB로의 도약에는 특별한 일이 발생한다고 밝혀졌습니다. 이 글에서는 그 내용을 설명하겠습니다.
V8 릴리스 v8.3
그 `.wasm` 안에 무엇이 있을까? 소개: `wasm-decompile`
우리는 .wasm
파일을 생성하거나 조작하는 컴파일러 및 기타 도구의 수가 점점 늘어나고 있으며, 때로는 그 안을 살펴보고 싶을 때가 있습니다. 아마도 당신은 그런 도구의 개발자이거나, 더 직접적으로는 Wasm을 대상으로 삼는 프로그래머로서 생성된 코드가 어떤 모습인지 성능이나 기타 이유로 궁금할 수 있습니다.
ECMAScript 사양 이해하기, Part 3
이번 에피소드에서는 ECMAScript 언어와 그 문법 정의에 대해 더 깊이 들어가 보겠습니다. 만약 문맥 자유 문법(context-free grammar)에 익숙하지 않다면, 사양이 언어를 정의하기 위해 문맥 자유 문법을 사용하기 때문에 기본을 확인할 좋은 기회입니다. 더 쉬운 입문서를 원한다면 "Crafting Interpreters"의 문맥 자유 문법에 관한 챕터를 확인하거나, 더 수학적인 정의를 원한다면 위키피디아 페이지를 참고하세요.
V8에서의 포인터 압축
메모리와 성능 사이에는 항상 끊임없는 싸움이 있습니다. 사용자로서 우리는 빠르면서도 가능한 적은 메모리를 소비하기를 원합니다. 불행히도 일반적으로 성능을 향상시키면 메모리 소비가 증가하고 (그 반대도 마찬가지입니다).
ECMAScript 사양 이해하기, 파트 2
우리는 사양 읽기 기술을 더 연습해볼 것입니다. 이전 에피소드를 아직 보지 않았다면, 지금 확인해보세요!
파트 2 준비되었나요?
사양을 익히는 재미있는 방법은 우리가 알고 있는 JavaScript 기능에서 시작해 그것이 어떻게 명시되어 있는지 알아보는 것입니다.
경고! 이 에피소드에는 2020년 2월 기준 ECMAScript 사양에서 복사된 알고리즘이 포함되어 있습니다. 결국 오래되었을 것입니다.
우리는 속성이 프로토타입 체인에서 검색된다는 것을 알고 있습니다: 객체가 우리가 읽으려는 속성을 가지지 않는 경우, 우리는 프로토타입 체인 위로 올라가 그것을 찾거나 (더 이상 프로토타입을 가지지 않는 객체를 찾을 때까지) 찾습니다.
예를 들어:
const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99
프로토타입 걷기는 어디에 정의되나요?
이 행동이 어디에 정의되어 있는지 알아봅시다. 좋은 출발점은 객체 내부 메서드의 목록입니다.
[[GetOwnProperty]]
와 [[Get]]
이 모두 있지만, 우리는 자신 속성에만 제한되지 않는 버전을 찾고 있기 때문에 [[Get]]
을 선택합니다.
불행히도, 속성 설명자 사양 타입에도 [[Get]]
이라는 필드가 있으므로, 사양에서 [[Get]]
을 탐색할 때 두 개의 독립적인 사용을 신중히 구분해야 합니다.