본문으로 건너뛰기

"ECMAScript 사양 이해하기, 2부"의 추가 콘텐츠

· 약 2분
[Marja Hölttä](https://twitter.com/marjakh), 추측적 사양 관찰자

o2.fooAssignmentExpression인가요?

o2.foo는 할당이 없는 것처럼 보이기 때문에 AssignmentExpression처럼 느껴지지 않습니다. 왜 이것이 AssignmentExpression인가요?

사양은 실제로 AssignmentExpression이 매개변수로 사용되거나 할당의 오른쪽에 올 수 있도록 허용합니다. 예를 들어:

function simple(a) {
console.log('매개변수는 ' + a);
}
simple(x = 1);
// → “매개변수는 1”이 로깅됩니다.
x;
// → 1

…및…

x = y = 5;
x; // 5
y; // 5

o2.foo는 아무것도 할당하지 않는 AssignmentExpression입니다. 이는 다음 문법 생산에서 비롯되며 각각은 마지막 케이스까지 "가장 간단한" 케이스를 선택합니다:

AssignmentExpression은 반드시 할당을 포함할 필요가 없으며, 단순히 ConditionalExpression일 수도 있습니다:

AssignmentExpression : ConditionalExpression

(이 외의 생산도 있지만, 여기서는 관련된 것만 보여줍니다.)

ConditionalExpression은 반드시 조건부 (a == b ? c : d)를 포함할 필요가 없으며, 단순히 ShortcircuitExpression일 수도 있습니다:

ConditionalExpression : ShortCircuitExpression

그리고 계속해서:

ShortCircuitExpression : LogicalORExpression

LogicalORExpression : LogicalANDExpression

LogicalANDExpression : BitwiseORExpression

BitwiseORExpression : BitwiseXORExpression

BitwiseXORExpression : BitwiseANDExpression

BitwiseANDExpression : EqualityExpression

EqualityExpression : RelationalExpression

RelationalExpression : ShiftExpression

V8 릴리즈 v8.1

· 약 2분
Dominik Inführ, 신비로운 국제화의 주인공

매 6주마다, 우리는 릴리즈 프로세스의 일부로 V8의 새로운 브랜치를 생성합니다. 각 버전은 Chrome Beta 마일스톤 직전에 V8의 Git master에서 브랜치됩니다. 오늘 우리는 새로운 브랜치인 V8 버전 8.1을 발표하게 되어 기쁩니다. 이 버전은 몇 주 후 Chrome 81 Stable과 함께 릴리즈될 때까지 베타 상태에 있습니다. V8 v8.1은 다양한 개발자 중심 기능을 포함하고 있습니다. 이 게시물은 릴리즈를 기대하며 주요 사항에 대한 미리보기를 제공합니다.

ECMAScript 명세 이해하기, 1부

· 약 8분
[Marja Hölttä](https://twitter.com/marjakh), 사양 관찰자

모든 에피소드 보기

이 글에서는 명세에서 간단한 함수를 가져와 표기법을 이해해 봅니다. 시작해 볼까요!

서문

JavaScript를 알고 있어도 그 언어 명세인 ECMAScript Language specification, 또는 줄여서 ECMAScript 명세를 읽는 것은 상당히 어려울 수 있습니다. 적어도 제가 처음으로 읽기 시작했을 때 그렇게 느꼈습니다.

V8 릴리즈 v8.0

· 약 5분
본명 V8th Leszek Swirski

드디어 여기에 왔습니다. V8의 모든 릴리즈, 우리의 릴리즈 프로세스의 일환으로, 6주마다 브랜칭할 때마다 V8이 버전 8에 도달할 때 어떤 일이 일어날지에 대한 질문이 등장합니다. 우리가 파티를 열 건가요? 새로운 컴파일러를 출시할 건가요? 우리는 버전 8과 9를 건너뛰고 영원히 V8 버전 X에 머무를 건가요? 10년 이상의 작업 끝에 결국, 100번째 블로그 게시물에서 우리는 가장 새로운 브랜치 V8 버전 8.0 V8을 발표하게 되어 나만의 질문에 답할 수 있게 되어 기쁩니다:

웹 외부: Emscripten을 사용한 독립형 WebAssembly 바이너리

· 약 12분
알론 자카이

Emscripten은 항상 웹 및 Node.js와 같은 기타 JavaScript 환경에 컴파일하는 것을 최우선으로 고려해 왔습니다. 하지만 WebAssembly가 JavaScript 없이 사용되기 시작하면서 새로운 사용 사례가 등장하고, 우리는 Emscripten에서 독립형 Wasm 파일을 출력할 수 있는 지원을 개발해 왔습니다. 이는 Emscripten JS 런타임에 의존하지 않는 파일입니다. 이 게시물에서는 그 이유가 흥미로운 이유를 설명합니다.

V8 릴리스 v7.9

· 약 4분
Santiago Aboy Solanes, 포인터 압축 전문가

6주마다, 우리는 릴리스 프로세스의 일환으로 V8의 새로운 브랜치를 생성합니다. 각 버전은 Chrome Beta 마일스톤 직전에 V8의 Git 마스터에서 분기됩니다. 오늘 우리는 최신 브랜치 V8 버전 7.9를 발표하게 되어 기쁩니다. 이 브랜치는 몇 주 후 Chrome 79 Stable과 함께 릴리스될 때까지 베타 상태입니다. V8 v7.9는 개발자에게 유용한 다양한 기능을 제공합니다. 이 글에서는 주요 하이라이트 중 일부를 미리 살펴봅니다.

V8 정규 표현식 개선

· 약 5분
정규 표현식에 대한 의견을 자주 표현하는 Patrick Thier와 Ana Peško

기본 설정에서 V8은 정규 표현식을 처음 실행할 때 네이티브 코드로 컴파일합니다. JIT-less V8 작업의 일부로 우리는 정규 표현식을 위한 인터프리터를 도입했습니다. 정규 표현식을 해석하면 더 적은 메모리를 사용하는 장점이 있지만, 성능 상의 단점도 동반됩니다. 이 블로그 게시물에서는 정규 표현식을 해석하는 장점을 활용하고 단점을 완화하는 방법을 설명합니다.

V8 릴리즈 v7.8

· 약 6분
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), 게으른 소서러

6주마다 우리는 릴리즈 프로세스의 일환으로 V8의 새 브랜치를 생성합니다. 각 버전은 Chrome Beta 마일스톤 직전에 V8의 Git 마스터에서 브랜치됩니다. 오늘 우리는 새로운 브랜치 V8 버전 7.8을 발표하게 되어 기쁩니다. 이는 몇 주 내에 Chrome 78 Stable과의 협력 하에 릴리즈될 때까지 베타 상태에 있습니다. V8 v7.8은 개발자 대상의 다양한 기능들로 가득합니다. 이 포스트는 릴리즈를 예상하며 몇 가지 주요 내용을 미리 제공합니다.

더 가벼운 V8

· 약 9분
Mythri Alle, Dan Elphick, 그리고 [Ross McIlroy](https://twitter.com/rossmcilroy), V8 웨이트워처

2018년 말, 우리는 V8의 메모리 사용량을 대폭 줄이기 위한 V8 Lite라는 프로젝트를 시작했습니다. 처음에 이 프로젝트는 메모리 사용량 감소가 실행 속도보다 중요한 저메모리 모바일 기기나 임베디드 사용 사례에 특화된 Lite 모드라는 독립적인 형태로 구상되었습니다. 하지만 작업을 진행하면서, 이 Lite 모드를 위해 적용된 많은 메모리 최적화 방법이 일반 V8에서도 사용할 수 있어 V8의 모든 사용자에게 이점을 줄 수 있다는 것을 깨달았습니다.

React에서의 V8 성능 저하 이야기

· 약 15분
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) 및 Mathias Bynens ([@mathias](https://twitter.com/mathias))

이전에는 Shapes와 Inline Caches를 사용하여 JavaScript 엔진이 객체 및 배열 접근을 최적화하는 방식을 논의했고, 프로토타입 속성 접근 속도를 높이는 방법을 탐구했습니다. 이번 글에서는 V8이 다양한 JavaScript 값을 메모리에 최적으로 표현하는 방식을 설명하며, Shape 기계에 어떤 영향을 미치는지 — 이러한 모든 내용은 React 핵심에서 발생한 최근 V8 성능 저하를 이해하는 데 도움이 됩니다.