ランタイムBunをRustで書き直す
月間2,200万ダウンロードを誇るJavaScriptランタイムBunが、535,496行のZigコードベースを11日間でRustに書き直しました。64個のClaudeエージェントが動的ワークフローを並列実行する手法が採用され、背景にはZigの手動メモリ管理では根本的に防ぎにくいuse-after-free・double-free・メモリリークの問題がありました。Rustのborrow checkerとDropトレイトが自動クリーンアップを保証し、v1.3.14に存在した128個のバグを修正しています。Bun.build()呼び出しごとに3 MBずつ漏れていたメモリは、2,000回実行後も約609 MBで安定するようになりました。バイナリサイズはLinuxとWindowsで約20%削減、HTTPスループットは2〜5%向上しました。APIトークンコストは約16万5千ドルで、エンジニア3名が1年かける代替案と比べて大幅に低コストです。Bun v1.4.0がRustポートを搭載し、v1.3.14が最後のZigリリースとなります。
Read Articlearrow_forward Video · TypeScript
Reactで使うTypeScript — Full Tutorial
freeCodeCampのRachel Johnson講師によるこのチュートリアルは、'Assembly Endgame'という実際のハングマン風ゲームプロジェクトを通じてReactでのTypeScript実践的な活用方法を解説します。Vite + TypeScriptプロジェクトのスキャフォールディング、useStateジェネリクスの型付け(例:useState<string[]>)、インポートしたJSX.Element型で関数コンポーネントの戻り値を型付け、ComponentName + Propsの命名規則でカスタムprop型を定義する流れを順に学習します。アロー関数構文を使った関数propの型付け、TypeScriptのOmitユーティリティ型で既存型のサブセットを導出、モジュール化のためのファイル間型インポートなどの応用パターンも含まれます。GameStatus・LanguageChips・WordLetters・Keyboardなど実際のコンポーネントへのハンズオンチャレンジで各概念を定着させ、非推奨のReact.FCパターンを避け明示的なJSX.Elementアノテーションを採用しています。
AI_INFOGRAPHICWATCH_VIDEOarrow_forwardArticle · ReactREAD TIME: 16m
React Compilerを解説
2025年10月7日にv1.0に達したReact Compilerは、ビルド時にコンポーネントを自動でメモ化するBabelプラグインで、ソースコードにuseMemo・useCallback・React.memoを手書きする必要をなくします。コンパイラはuseMemo呼び出しの代わりに内部の_cフックを使ったスロットベースのキャッシュを生成し、レンダーごとにクロージャと依存配列を確保するより低コストです。JSX要素オブジェクト自体をキャッシュすることで、親のコンパイル済み出力が同一の要素参照をReactに渡せば、memoラッパーなしでサブツリー全体の再レンダリングをスキップします。Meta Quest Storeは最大12%の高速化、Sanityは1,411コンポーネント中1,231個でレンダー時間を20〜30%削減、WakeletはLCPを2.6s→2.4s、INPを275ms→240msに改善したと報告しています。Next.js 16+では設定1行、Expo SDK 54+ではデフォルトで有効です。
READ_FULL_LOGarrow_forwardArticle · ECMAScriptREAD TIME: 5m
ECMAScript 2026の新機能
Ecma Internationalは2026年6月30日にECMAScript 2026仕様を正式承認し、7つの機能が追加されました。Array.fromAsyncは非同期イテレータを配列に変換する静的メソッドで、Array.fromの非同期版です。Error.isErrorはinstanceof Errorより安全な型チェック手段を提供します。Math.sumPreciseはArray.reduceの浮動小数点誤差問題を解消します。Uint8ArrayにはtoBase64、toHex、fromBase64、fromHexメソッドがネイティブ追加され、サードパーティのエンコードライブラリが不要になります。Iterator.concatはカスタムジェネレータなしで複数のイテレータを結合します。JSON.parseのリバイバ関数が第3引数で元のソーステキストを受け取れるようになり、BigIntのロスレスシリアライズが可能です。最後に、MapとWeakMapにgetOrInsertメソッドが追加され、has-then-setパターンを置き換えます。
READ_FULL_LOGarrow_forwardArticle · TypeScriptREAD TIME: 8m
TypeScript 7はTypeScriptで書かれていない
TypeScript 7はTypeScriptコンパイラをGoにネイティブポートしたもので、型システムや言語のセマンティクスを変えずに約10倍のスループット向上を実現しています。RustではなくGoを選んだ理由は、TypeScriptの内部データ構造であるAST・シンボルテーブル・型関係が循環参照を多用しており、Rustの所有権モデルと相性が悪いためです。GoのGCとゴルーチンにより、全面再設計なしの忠実なポートが可能でした。Anders HejlsbergはGoをネイティブ出力・データレイアウト制御・循環データ構造のすべてを備えた最もローレベルな言語と表現しています。VS Codeの型チェックは17.5秒から1.3秒に、SlackのCI型チェックは7.5分から2分以下に短縮され、言語サーバーの失敗コマンド数は80%減少しました。移行にはTypeScript 6.0を経由する必要があり、@typescript/typescript6互換パッケージでモノレポの段階的移行が可能です。Vue・Svelte・Astro・AngularのプログラマティックコンパイラAPIはTypeScript 7.1で提供予定です。
READ_FULL_LOGarrow_forwardArticle · ツールREAD TIME: 4m
Tales from the Void:2026年6月振り返り
VoidZeroの2026年6月月次レポートでは、Vite+のベータ版リリースが最大のトピックです。Vite+はVite・Vitest・Rolldown・tsdown・Oxlint・OxfmtをvpDev・vp test・vp buildなど単一CLIに統合したWebツールチェーンで、アルファ版以降12以上のバージョンをリリースし、500以上のPRをマージ、1,300以上の公開リポジトリが依存しています。Vite 8.1は開発サーバー起動を高速化する実験的バンドル開発モードを導入しました。Rolldownは診断レンダリングのパフォーマンスを改善し、.vueと.svelteファイルでのtsconfig.pathエイリアス解決をサポートします。Oxcトランスフォーマーは約2.5%高速化し、OxlintはRustベースのReact Compilerのlintルールを実験的にサポートしました。コミュニティからはAstro 7.0がVite 8を搭載、Next.js互換のViteフレームワークVinextの初ベータ、ViteConf 2026が10月15日のオンライン開催に決定したことが報告されています。
READ_FULL_LOGarrow_forwardArticle · ツールREAD TIME: 9m
KnipでUnused・Ghost Dependencyを見つける
未使用依存関係はコードがインポートしなくなってもpackage.jsonに残り続けるパッケージで、ゴースト(ファントム)依存関係はソースコードでインポートしているが宣言していないパッケージです。後者は別パッケージの推移的インストールがnode_modulesにホイストするため偶然動作します。どちらも依存関係グラフを汚染し、サプライチェーン攻撃面を拡大し、ビルドを不安定にします。Knipはエントリポイント・インポート・エクスポート・マニフェスト・ワークスペース境界など、リポジトリ全体を解析してESLintのようなファイル単位ツールが見落とす両問題を検出するプロジェクトレベルのリンターです。npx knip --include unlistedでゴースト依存関係を、--include dependenciesで未使用依存関係を確認し、--fixでフィーチャーブランチ上で削除を適用します。CIではゴースト依存関係をブロッキング、未使用依存関係をアドバイザリ(--no-exit-code)として扱うと段階的な導入が可能です。--productionモードはテスト・開発専用のノイズを除外し、プロダクション向け解析を強化します。
READ_FULL_LOGarrow_forwardArticle · Node.jsREAD TIME: 8m
Node.js 26.5.0(Current)
Node.js 26.5.0は新しいリリース担当者Stewart X Addisonとともに、SEMVER-MINORの追加を5件搭載しています。bufferモジュールにはBlobからテキストをストリーミングするblob.textStream()が追加され、ESMローダーにはテキストファイルをESモジュールとしてインポートする--experimental-import-textフラグが導入されました。perf_hooksモジュールはイベントループの反復ごとの遅延をサンプリングする新APIをサポートし、ReadableStreamTeeがstreamモジュールに公開され、tlsモジュールはハンドシェイク後にネゴシエートされたTLSグループを報告できます。主な修正としては、検証時に小さな位数のEdDSAポイントを拒否するcryptoパッチ、リテラルIPアドレスでdns.lookupをスキップするdgramの最適化、WHATWGストリームのチャンクオーバーヘッド削減、複数のVFSバグ修正があります。undici 8.7.0・sqlite 3.53.3・nghttp3 1.17.0に依存関係も更新されました。
READ_FULL_LOGarrow_forwardsummarizeDigest_Summary
第28週は2つのランタイム分野の重要な発表で幕を開けました。Bun v1.4.0は535,496行のZigコードをRustに完全書き直した成果物を搭載してリリースされました。64個のClaudeエージェントを同時活用して11日間で完了したこの作業はv1.3.14の128個のバグを修正し、呼び出しごとに3 MBずつ漏れていたBun.build()の問題を解消し、バイナリサイズを約20%削減、HTTPスループットを2〜5%向上させました。APIトークンコストは約16万5千ドルで、エンジニア3名が1年かける代替案と比べて大幅に低コストです。別途、TypeScript 7がコンパイラをGoにネイティブポートした成果物としてリリースされ、約10倍のスループット向上を達成しました。VS Codeの型チェックは17.5秒から1.3秒に、Slack CIは7.5分から2分以下に短縮され、言語サーバーのエラーは80%減少しました。RustではなくGoを選んだ理由は、TypeScriptのASTとシンボルテーブルが循環参照に満ちており、Rustの所有権モデルと相性が悪いためです。
言語とツール面では、Ecma Internationalが6月30日にECMAScript 2026を正式承認し、7つの機能(Array.fromAsync、Error.isError、Math.sumPrecise、Uint8Array base64/hexメソッド、Iterator.concat、JSON.parse raw-source reviver、Map/WeakMap.getOrInsert)が追加されました。React Compiler v1.0はuseMemoラッパーではなくスロットベースの_cフックを使用し、プロダクションで実績を上げました。Meta Quest Storeは最大12%のページロード高速化、Sanityはレンダー時間を20〜30%削減、WakeletはLCPを2.6秒から2.4秒に改善しました。VoidZeroのVite+ツールチェーンはベータに移行し、Vite・Vitest・Rolldown・Oxlint・Oxfmtを単一CLIに統合しました。Node.js 26.5.0はblob.textStream()、--experimental-import-text ESMフラグ、小さな位数のEdDSAポイントを拒否するcryptoパッチを追加しました。
依存関係の衛生管理もテーマとして浮上しました。KnipリンターはESLintのようなファイル単位ツールが見落とす未使用依存関係とゴースト(ファントム)依存関係をプロジェクトレベルで両方検出できるツールとして注目されました。--productionモードとCI向けの--no-exit-codeフラグは段階的な適用経路を提供します。
Key Takeaways- Bun v1.4.0はZigからRustへの全面書き直しで128個のバグを修正しバイナリサイズを約20%削減しました。Claudeエージェントへの支払いは約16万5千ドルで、エンジニア3名の1年分の作業を代替しました。
- TypeScript 7のGoポートはコンパイル速度を約10倍向上させ、VS Codeの型チェックを17.5秒から1.3秒に短縮します。移行にはTypeScript 6.0を経由する必要があり、Vue/Svelte/Astro/AngularのプログラマティックAPIは7.1で提供予定です。
- ECMAScript 2026が正式承認されました。Math.sumPrecise、Uint8ArrayのネイティブなBase64/hexエンコード、Map.getOrInsertなど7つの機能が追加され、一般的なサードパーティユーティリティパターンを標準で置き換えます。