Node.js / Deno / Bun の実装言語 調査

3 つのランタイムが何の言語で書かれているか、その割合と移り変わり

📅 作成: 2026-10-25 / 更新: 2026-10-25
浅い調査です:GitHub の言語集計を 3 件取得し、Bun の移行について Web 検索を 1 件行った範囲です。Bun の移行のマージ日と行数は報道どうしで食い違っており、Bun の公式の発表では確かめていません(Rust 版になった版は、リリースのタグで確かめました)。Deno と Node.js の経緯は、記憶にもとづく部分を「未確認」と明記しています。

要約

ランタイム中核の言語移り変わり
BunRust(JavaScriptCore は C++)2026 年に Zig から Rust へ書き換えた。作業の大半は AI のコーディングエージェント
DenoRust(標準ライブラリ・Node 互換層は TypeScript / JavaScript)大きな変化なし。ごく初期は Go だった(未確認)
Node.jsC++(V8・libuv を含む)、標準ライブラリは JavaScript全体を別の言語へ移す動きは見当たらない

GitHub の言語集計(2026-10-25 取得)

gh api repos/<owner>/<repo>/languages が返すバイト数を、割合に直した値です。上位 4 つと、その他の主なものを載せています。

リポジトリ1 位2 位3 位4 位その他
nodejs/nodeJavaScript 66.5%C++ 22.6%Python 7.6%C 1.9%HTML 0.5%・Shell 0.4%
denoland/denoRust 62.3%TypeScript 26.0%JavaScript 10.3%C 1.2%—
oven-sh/bunRust 76.0%C++ 13.7%TypeScript 7.2%C 1.6%JavaScript 1.2%・Zig は一覧に無い
この割合は実行時の比重ではない:集計はリポジトリに置かれたファイルの量で、同梱している外部のコードやビルド用のスクリプトも数えます。Node.js の C++ と Python の多くは、V8 などの依存とビルド用ツールの分とみられます(未確認)。

Bun

Bun は 2026 年に、実装言語を Zig から Rust に移しました。約 53.5 万行の Zig のコードの移植を、主に Claude Code が行い、人が書くなら 1 年かかる見積もりの作業を約 4 か月で終えたと報じられています。作者は「既存のテストの 99.8% が Linux x64 glibc で Rust 版でも通る」と発表しました。

報道どうしで食い違う点があります。

Zig の作者が批判を公表するなど、反応は割れています(経緯の解説、論考)。

Rust 版になった版(リリースのタグで確認)

GitHub のリリースのタグで、Zig と Rust のビルド定義の有無を見ました。

版リリースbuild.zigsrc/main.zigCargo.toml実装
1.3.14—ありありなしZig
1.4.02026-08-20なしなしありRust

この比較検証で測った Bun(1.4.0・1.4.3・1.4.4)は、すべて Rust 版です。結果レポートと計画書の記述もそれに合わせています。

Deno

中核(ランタイム・CLI・V8 との結合)は Rust で、標準ライブラリと Node.js 互換層は TypeScript と JavaScript で書かれています。言語の構成はいまも変わっていません。

ごく初期(2018 年ごろ)は Go で書かれていて、のちに Rust に移ったと記憶しています。今回は確かめていません。

Node.js

中核は C++ で、V8 と libuv を同梱しています。node:fs などの標準ライブラリは JavaScript です。全体を別の言語へ移す動きは見当たりませんでした。

依存の一部に Rust が入り始めているという話は聞いたことがありますが、今回は確かめていません。