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

V8 リリース v8.5

· 約5分
Zeynep Cankara、いくつかのマップを追跡中

V8 のリリースプロセスの一環として、私たちは6週間ごとに新しいブランチを作成します。各バージョンは、Chrome ベータマイルストーン直前に V8 の Git マスターからブランチされています。本日、私たちは最新のブランチ V8 バージョン 8.5 を発表できることを嬉しく思っています。このバージョンは数週間で Chrome 85 安定版と連動してリリースされるまでベータ版となります。V8 v8.5 は、開発者向けの様々な特典が詰まっています。この投稿ではリリースを見越していくつかのハイライトを事前に紹介します。

V8リリース v8.4

· 約6分
Camillo Bruni、新鮮なブール値を楽しんでいます

6週間ごとに、新しいV8のブランチをリリースプロセスの一環として作成します。各バージョンはChrome Betaのマイルストーン直前にV8のGitマスターからブランチ分けされます。本日、私たちは最新のブランチV8バージョン8.4をご紹介します。このブランチは数週間後にChrome 84 Stableと連携してリリースされるまでベータ版にあります。V8 v8.4は開発者向けのさまざまな便利な機能で満たされています。この記事では、リリースを前にハイライトのいくつかをプレビューします。

C++用の高性能ガベージコレクション

· 約14分
Anton Bikineev、Omer Katz([@omerktz](https://twitter.com/omerktz))、およびMichael Lippautz([@mlippautz](https://twitter.com/mlippautz))、C++メモリウィスパラー

これまでに、JavaScript用ガベージコレクション、ドキュメントオブジェクトモデル(DOM)、およびこれらすべてがV8でどのように実装および最適化されているかについて何度か 記述して きました。しかし、ChromiumのすべてがJavaScriptというわけではありません。というのも、V8が組み込まれているブラウザおよびそのBlinkレンダリングエンジンのほとんどがC++で記述されているからです。JavaScriptはレンダリングパイプラインによって処理されるDOMとのインタラクションに使用できます。

WebAssemblyで最大4GBのメモリ使用を実現

· 約10分
Andreas Haas、Jakob Kummerow、Alon Zakai

はじめに

ChromeとEmscriptenによる最近の作業により、WebAssemblyアプリケーションで最大4GBのメモリを使用できるようになりました。以前の制限は2GBでした。そもそも制限があるのは奇妙に思えるかもしれませんが(結局512MBや1GBのメモリ使用を許可するために特別な作業は必要ありませんでした)、実際には2GBから4GBにジャンプする際にはブラウザでもツールチェーンでも特別なことが発生します。この投稿ではそれについて説明します。

V8リリース v8.3

· 約5分
[Victor Gomes](https://twitter.com/VictorBFG), 在宅勤務を安全に実施中

6週間ごとに、新しいV8のブランチをV8のリリースプロセスの一環として作成します。各バージョンはChrome Betaのマイルストーン直前にV8のGitのマスターから分岐されます。本日、新しいブランチであるV8バージョン8.3を発表できることを嬉しく思います。このバージョンは、数週間後にChrome 83 Stableと連携してリリースされるまでベータ版です。V8 v8.3は開発者向けの便利な機能でいっぱいです。この投稿では、公開に先立ち、いくつかの注目ポイントを紹介します。

その `.wasm` に何が入っているのか?新機能: `wasm-decompile` を紹介

· 約9分
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

現在、.wasm ファイルを生成または操作するためのコンパイラやその他のツールが増えてきています。時には内部を調べたいと思うこともあるでしょう。ツールの開発者である場合や、Wasm を直接対象とするプログラマーであり、生成されたコードが性能やその他の理由でどのように見えるか気になる場合です。

ECMAScript仕様を理解する, 第3部

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

すべてのエピソード

このエピソードでは、ECMAScript言語の定義とその構文についてさらに深掘りします。文脈自由文法に馴染みのない方は、今が基礎を確認する良いタイミングです。仕様では言語を定義するために文脈自由文法を使用しています。親しみやすい紹介として"Crafting Interpreters"の文脈自由文法に関する章を参照するか、より数学的な定義についてはWikipediaのページをご覧ください。

V8におけるポインタ圧縮

· 約27分
Igor SheludkoとSantiago Aboy Solanes、*ポインタ圧縮の達人*

メモリとパフォーマンスの間には常に戦いがあります。ユーザーとしては、速度が速いことを望むと同時に、できるだけ少ないメモリ消費で済ませたいと思います。しかし、通常、パフォーマンスを向上させるにはメモリ消費の代償が伴い(その逆も然り)、ジレンマを抱えることになります。

ECMAScript仕様を理解する、パート2

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

仕様を読むスキルをさらに練習しましょう。まだ前回のエピソードを見ていない場合は、今がそれを確認する良いタイミングです!

すべてのエピソード

パート2の準備はいいですか?

仕様を知る楽しみな方法として、まずJavaScriptの機能を選び、それがどのように仕様化されているかを調べます。

警告!このエピソードには、2020年2月時点のECMAScript仕様からコピーされたアルゴリズムが含まれています。これらはいずれ古くなります。

プロパティがプロトタイプチェーンで検索されることは知っています: オブジェクトが読もうとしているプロパティを持っていない場合、プロトタイプチェーンを検索し続け、プロパティが見つかるか、それ以上プロトタイプを持たないオブジェクトに達するまで探索します。

例えば:

const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99

プロトタイプの検索はどこで定義されていますか?

この動作がどこで定義されているかを見つけてみましょう。始めるのに良い場所はオブジェクト内部メソッドのリストです。

[[GetOwnProperty]][[Get]]の両方がありますが、自身のプロパティに制限されないバージョンを探しているので、[[Get]]を選びます。

残念ながら、プロパティ記述子仕様型にも[[Get]]というフィールドがあります。そのため、仕様を[[Get]]のために閲覧する際には、この二つの独立した使用法を慎重に区別する必要があります。