V8 v13.8でJSON.stringifyが2倍以上高速化#

日付:2025年8月5日

V8 v13.8でJSON.stringifyが2倍以上高速化。副作用のない単純なオブジェクトのシリアライズに特化した新しい反復的アプローチを実装し、パフォーマンスを大幅に改善。

  • 新しいシリアライザ: toJSONメソッドやreplacer引数がない単純なオブジェクトを処理する「ファストパス」を導入。再帰的実装を反復的アプローチに変更し、スタックオーバーフローを防止。
  • 文字列処理の最適化: SIMD命令やSWAR技術を利用し、文字列内のエスケープ文字検索を高速化。
  • プロパティキーの最適化: 特定の条件を満たすプロパティキーを持つオブジェクトの隠しクラスにフラグを設定。次回以降のシリアライズ時にキーのチェックを省略する「エクスプレスレーン」を導入。
  • 数値変換の改善: 数値から文字列への変換アルゴリズムをDragonboxに更新。
  • メモリ管理の改善: 一時バッファをセグメント化し、メモリの再割り当てとコピーのオーバーヘッドを削減。

出展:2.5× faster JSON.stringify · V8

TypeScript 5.9 リリース#

日付:2025年8月1日

TypeScript 5.9がリリース。tsc --initコマンドの更新、import deferのサポート、DOM APIの要約説明、エディタツールチップの拡張可能なホバー表示プレビューなどが含まれる。

  • tsc --initの更新:より最小限で規範的なtsconfig.jsonファイルを生成。
  • import deferのサポート:モジュールの評価を遅延させ、パフォーマンスを向上。
  • DOM APIの要約説明:MDNドキュメントに基づいた要約説明を提供。
  • 拡張可能なホバー表示:エディタのツールチップでホバー内容を展開できるプレビュー機能。
  • --module node20のサポート。
  • ホバーの最大長の構成が可能に。
  • パフォーマンスを向上させるための様々な最適化。
  • lib.d.tsの破壊的な変更:ArrayBufferがTypedArray型(Node.jsのBufferなど)のスーパータイプではなくなった。@types/nodeの更新、Uint8Array<ArrayBuffer>bufferプロパティへのアクセスなどの対応が必要。

今後の展望として、TypeScript 6.0がバージョン7.0でのネイティブポートへの移行版として機能する予定。

出展:Announcing TypeScript 5.9

ESLint v9.33.0 リリース、one-varルールがES2026の構文をサポート#

日付:2025年8月8日

ESLint v9.33.0がリリース。

  • 変数をまとめて宣言するかどうかを制御するone-varルールが、ES2026のExplicit resource management機能であるusingおよびawait using構文で宣言された変数を処理可能に。
  • no-restricted-globalsルールが、グローバルオブジェクト(例: window.Promise)経由でアクセスされた制限付きグローバルを検出可能に。この動作は3つの新しいオプションで制御される。
    • checkGlobalObjectAccess: グローバルオブジェクト経由のアクセスを報告するブール値。
    • globalObjects: グローバルオブジェクト参照として扱う識別子のリスト。
    • globals: 制限付きグローバル名のリスト。

出展:ESLint v9.33.0 released - ESLint

Visual Studio Code v1.103 リリース、Git worktreeをサポート#

日付:2025年8月7日

Visual Studio Code v1.103がリリースされ、Git worktreeのサポート、TypeScript 5.9の搭載、エディタやノートブック機能の改善が含まれる。

  • Git worktreeのサポート: ワークツリーが自動的に検出され、Souce Controlビューに表示。コマンドパレットまたはSouce Controlビューからワークツリーを表示、作成、削除、切替が可能。
  • TypeScript 5.9搭載: import deferのサポートやDOM APIのドキュメント改善が含まれる。
  • JavaScriptとTypeScriptのホバー表示改善: 型の詳細を展開・折りたたみ可能になり、表示を調整できる。
  • エディタタブのコンテキストメニュー整理: 関連オプションがサブメニューにグループ化され整理。
  • ノートブックの改善: uvで作成された仮想環境でJupyter Notebookを実行する際に、必要な依存関係の自動インストールが可能に。

出展:Visual Studio Code June 2025

Chrome 139 リリース#

日付:2025年8月5日

Chrome 139がリリース。

CSS Custom Functions、Web Speech APIのオンデバイス利用、@font-facefont-feature-settingsサポートなど。

出展:

オンデバイス Web Speech API(Web Speech API)#

Web Speech API にデバイス上の音声認識のサポートが追加。ウェブサイトで音声と文字変換された音声の両方が処理のためにサードパーティのサービスに送信されないようにすることが可能。オンデバイス音声認識に必要なリソースをインストールするようにユーザーに促す。基本利用コードは従来通り。

const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new Recognition();
recognition.lang = 'ja-JP';
recognition.continuous = true;
recognition.interimResults = true;
recognition.onresult = (event) => {
const transcript = Array.from(event.results)
.map((r) => r[0].transcript)
.join('');
console.log(transcript);
};
recognition.start();

CSS の角の形状(Corner Shapes)#

corner-shape を導入。border-radius と併用して、squircle、notch、scoop 等の角表現やアニメーションが可能。

.card {
border-radius: 24px;^^
corner-shape: round; /* squircle 風の滑らかな角 */
}
.badge--notch {
border-radius: 12px;
corner-shape: notch; /* 角を切り欠く */
}
.avatar--scoop {
border-radius: 20px;
corner-shape: scoop; /* 角をえぐる */
}
/* 形状間のアニメーション */
.card:hover {
corner-shape: scoop;
transition: corner-shape 300ms ease;
}

CSS Custom Functions(@function#

CSS にユーザー定義関数を導入。引数や他のカスタムプロパティに基づいて値を生成。

@function --negate(--value) {
result: calc(var(--value) * -1);
}
.box {
--gap: 1em;
margin-top: --negate(var(--gap));
}

Web App Manifest: scope_extensions複数のサブドメインを紐づける#

複数のサブドメインや別 TLD を 1 つの Web App として扱うための拡張スコープを宣言。

{
"name": "Sample App",
"start_url": "/",
"scope": "https://example.com/",
"scope_extensions": [
{ "origin": "https://a.example.com" },
{ "origin": "https://example.org", "scope": "/subapp/" }
]
}

WHATWG mimesniff に準拠した JSON MIME の認識#

application/manifest+json など、仕様で有効な JSON MIME を JSON として認識。

const res = await fetch('/manifest.webmanifest');
// Content-Type: application/manifest+json
const data = await res.json();

@font-face ルールで font-feature-settings構文をサポート#

@font-face で OpenType feature の既定値を指定可能に。

@font-face {
font-family: "MyFont";
src: local("MyFont Regular"), url("/fonts/myfont.woff2") format("woff2");
font-display: swap;
font-feature-settings: "liga" 1, "kern" 1, "ss01" 1;
}
body {
font-family: "MyFont", system-ui, sans-serif;
}
.title {
font-feature-settings: "ss01" 0, "ss02" 1;
}

Wrangler v4.27.0、.env ファイルをサポート#

日付:2025年7月25日

Wrangler v4.27.0 がリリースされ、ローカル開発用に .env ファイルのサポートが追加。プロジェクトのルートディレクトリに .envや.env.local、.env.production、.env.development.localといったファイルを配置することで、wrangler dev 実行時に環境変数が自動的に読み込まれる。

出展:Release [email protected]

Vite開発サーバーでCloudflare Containersが利用可能に#

日付:2025年8月1日

Cloudflare Viteプラグインを使用し、ローカル開発時にCloudflare Workerと並行してContainersを実行可能に。従来、Containersとのローカル開発はWrangler使用時のみ可能だった。

wrangler.jsoncまたはwrangler.tomlファイルでコンテナのクラス名、イメージの場所、インスタンス数などを定義し、WorkerコードからgetContainerでアクセス。ターミナルでvite devコマンドを実行するだけで、ローカル開発サーバーが起動する。これにより、Cloudflare WorkersとContainersを両方利用するアプリケーションの開発ワークフローが効率化。

出展:Develop locally with Containers and the Cloudflare Vite plugin