Chrome 137 リリース
Chrome 137 が安定版としてリリース。CSS if()関数による条件値表現の簡素化、CSS reading-flow・reading-orderプロパティでのタブ順序制御、WebAssembly JavaScript Promise Integration(JSPI)が主要な新機能。その他、Selection API 拡張、SVG transform属性対応、システムアクセントカラー対応、Ed25519 暗号化アルゴリズム追加など多数の機能改善。
出展:
CSS if()関数
条件値を簡潔に表現する新機能。セミコロンで区切られた条件ー値ペアを順次評価し、最初に真となる条件の値を返す。
div {
color: var(--color);
background-color: if(style(--color: white): black; else: white);
}
.dark {
--color: black;
}
.light {
--color: white;
}CSS reading-flow/reading-order
Flex や Grid レイアウトでのタブ順序とアクセシビリティツールのフォーカス順序を制御。DOM 順序と視覚的順序の不整合を解決。
.grid-container {
reading-flow: grid-rows;
}
.item {
reading-order: 2;
}WebAssembly JavaScript Promise Integration (JSPI)
WebAssembly アプリケーションが JavaScript Promise と統合。WebAssembly コードが非同期 API 呼び出し時に中断され、完了時に Promise が履行される。同期的な C/C++コードから非同期 Web API への透過的なアクセスを実現。
// C言語でのFibonacci計算(Promise経由で加算)
long promiseFib(long x) {
if (x == 0) return 0;
if (x == 1) return 1;
return promiseAdd(promiseFib(x - 1), promiseFib(x - 2));
}
// JavaScriptのPromiseを呼び出し
EM_ASYNC_JS(long, promiseAdd, (long x, long y), {
return Promise.resolve(x + y);
});出展:WebAssembly JavaScript Promise Integration (JSPI) enters origin trial
Blob URL Partitioning
Storage Partitioning の継続で Blob URL アクセスを Storage Key(トップレベルサイト、フレーム origin)で分割。プライバシー保護を強化。
次のようにサイト A で生成された Blob URL に、別のサイトの iframe 内からアクセスできなくなった。 このような利用をしている場合、Storage Access API などを利用する検討が必要。
// サイトA (a.com) がBlob URLを作成
const blob = new Blob(["データ"], { type: "text/plain" });
const blobUrl = URL.createObjectURL(blob);
// サイトB (b.com) のiframeでは同じBlob URLにアクセス不可