メインコンテンツまでスキップ

ECMAScript仕様理解パート2の「追加内容」

· 約3分
[Marja Hölttä](https://twitter.com/marjakh), 推測的仕様の観察者

なぜo2.fooAssignmentExpressionなのか?

o2.fooAssignmentExpressionには見えません。なぜなら代入がないからです。なぜこれが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 ベータマイルストーンの直前に V8 の Git マスターからブランチ化されます。本日、最新のブランチ V8 バージョン 8.1 を発表できることを嬉しく思います。このバージョンは数週間後に Chrome 81 安定版と連携してリリースされるまで、ベータ版として公開されます。V8 v8.1 には開発者向けのさまざまな新機能が満載です。この投稿ではリリースを前にした注目ポイントのプレビューを提供します。

ECMAScript仕様の理解、第1部

· 約12分
[Marja Hölttä](https://twitter.com/marjakh)、推測的仕様の観察者

全てのエピソードはこちら

この記事では、仕様内の簡単な関数を取り上げ、その記法を理解しようとします。さあ、始めましょう!

前書き

JavaScriptを知っていても、その言語仕様であるECMAScript Language specification、略してECMAScript仕様を読むのは非常に気が重い場合があります。少なくとも初めて読んだときはそう感じました。

V8リリース v8.0

· 約7分
Leszek Swirski, V8th of his name

ついに来ました。V8のリリースごとに、我々がリリースプロセスの一環として分岐するたびに、V8がバージョン8になるときに何が起こるのかという疑問が出てきます。パーティーをするのか?新しいコンパイラーを出荷するのか?バージョン8と9をスキップして、永遠にV8バージョンXのままにするのか?10年以上の努力の後、記念すべき100番目のブログ投稿で、最新の分岐であるV8 version 8.0 V8を発表できることを嬉しく思います。そしてこの疑問にようやく答えることができます:

ウェブ外: Emscriptenを使用した単独のWebAssemblyバイナリ

· 約18分
Alon Zakai

Emscriptenは常に、ウェブやNode.jsのような他のJavaScript環境へのコンパイルを最優先にしてきました。しかし、WebAssemblyがJavaScriptなしで使用され始めると、新しいユースケースが登場し、それに合わせてEmscriptenのJSランタイムに依存しない単独のWasmファイルの生成をサポートするようになりました。この投稿では、その理由が興味深い点について説明します。

V8 リリース v7.9

· 約6分
Santiago Aboy Solanes, ポインター圧縮のエキスパート

6週間ごとに、リリースプロセスの一環として新しい V8 のブランチを作成します。各バージョンは、Chrome のベータマイルストーンの直前に V8 の Git マスターからブランチ分岐されます。本日、V8 バージョン 7.9 を発表できることを嬉しく思います。このバージョンは数週間後の Chrome 79 ステーブルと連携してリリースされるまで、ベータ版として利用可能です。V8 v7.9 には開発者向けの様々な新機能が満載されています。本投稿では、リリースを控えた注目のポイントをいくつかご紹介します。

V8正規表現の改善

· 約9分
Patrick ThierとAna Peško、正規表現に関する意見を持つ正規表現擁護者

デフォルト設定では、V8は初回実行時に正規表現をネイティブコードにコンパイルします。JITなしのV8の作業の一環として、正規表現用のインタープリターを導入しました。正規表現を解釈することにはメモリ使用量が少ないという利点がありますが、パフォーマンスの低下を伴います。このブログ投稿では、正規表現を解釈する利点を活かしつつ、欠点を軽減する方法を説明します。

V8リリースv7.8

· 約8分
Ingvar Stepanyan([@RReverser](https://twitter.com/RReverser))、怠惰なソーサラー

V8では6週間ごとに新しいブランチを作成するリリースプロセスを実施しています。各バージョンはChrome Betaマイルストーン直前のV8 Gitマスターから分岐します。本日、最新のブランチV8 version 7.8を発表できることを嬉しく思います。このブランチは数週間後にChrome 78 Stableに合わせてリリースされるまでベータ版です。V8 v7.8には、開発者向けの数々の素晴らしい機能が詰まっています。本記事では、リリースを期待していくつかのハイライトをご紹介します。

軽量化されたV8

· 約15分
Mythri Alle, Dan Elphick, および [Ross McIlroy](https://twitter.com/rossmcilroy), V8軽量化チーム

2018年末、私たちはV8のメモリ使用量を劇的に削減することを目指してV8 Liteというプロジェクトを開始しました。このプロジェクトは当初、低メモリモバイルデバイスやメモリ使用量の削減を重視したエンベッダー利用ケース向けに、V8の別のLiteモードとして構想されていました。しかし、この作業の過程で、このLiteモードのために行った多くのメモリ最適化が、通常のV8にも適用可能であり、V8のすべてのユーザーに利益をもたらせることに気付きました。

ReactにおけるV8の性能の崖についての物語

· 約23分
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) と Mathias Bynens ([@mathias](https://twitter.com/mathias))

以前に、JavaScriptエンジンがShapesとInline Cachesを使用してオブジェクトと配列のアクセスを最適化する方法や、エンジンがプロトタイプのプロパティアクセスを高速化する仕組みについて詳しく探りました。この記事では、V8がさまざまなJavaScript値に対して最適なメモリ内表現を選択する方法と、それがShapeの仕組みにどのように影響を与えるかについて説明しています。これらすべてはReactコアにおける最近のV8の性能の崖を説明する助けとなります。