Skip to content

毎日、Bun は 100% の Node.js API 互換性に近づいています。現在、Next.js、Express などの人気のあるフレームワークや、何百万もの Node.js 向けの npm パッケージが Bun で動作します。互換性を確保するために、Bun のリリース前に Node.js のテストスイートから何千ものテストを実行しています。

パッケージが Node.js で動作するが Bun で動作しない場合、それは Bun のバグと見なします。 イシューを開いて いただければ修正します。

このページは、Bun の最新バージョンの互換性ステータスを反映するために定期的に更新されます。以下の情報は、Bun の Node.js v23 との互換性を反映しています。

組み込み Node.js モジュール ​

node:assert ​

🟢 完全実装。

node:buffer ​

🟢 完全実装。

node:console ​

🟢 完全実装。

node:dgram ​

🟢 完全実装。Node.js のテストスイートの 90% 以上がパスします。

node:diagnostics_channel ​

🟢 完全実装。

node:dns ​

🟢 完全実装。Node.js のテストスイートの 90% 以上がパスします。

node:events ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。EventEmitterAsyncResource は内部で AsyncResource を使用します。

node:fs ​

🟢 完全実装。Node.js のテストスイートの 92% がパスします。

node:http ​

🟢 完全実装。現在、送信クライアントリクエスト本文はストリーミングではなくバッファリングされています。

node:https ​

🟢 API は実装されていますが、Agent はまだ常に使用されるわけではありません。

node:os ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。

node:path ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。

node:punycode ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。Node.js によって非推奨。

node:querystring ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。

node:readline ​

🟢 完全実装。

node:stream ​

🟢 完全実装。

node:string_decoder ​

🟢 完全実装。Node.js のテストスイートの 100% がパスします。

node:timers ​

🟢 代わりにグローバルの setTimeout などの使用を推奨。

node:tty ​

🟢 完全実装。

node:url ​

🟢 完全実装。

node:zlib ​

🟢 完全実装。Node.js のテストスイートの 98% がパスします。

node:async_hooks ​

🟡 AsyncLocalStorage と AsyncResource が実装されています。v8 プロミスフックは呼び出されず、その使用は 強く非推奨 されています。

node:child_process ​

🟡 proc.gid proc.uid が不足しています。Stream クラスがエクスポートされていません。ソケットハンドルを送信できません。Node.js ↔ Bun IPC は JSON シリアライゼーションで使用できます。

node:cluster ​

🟡 ハンドルとファイルディスクリプタはワーカー間で渡せないため、プロセス間で HTTP リクエストの負荷分散を行うことは現時点では Linux でのみサポートされています(SO_REUSEPORT を介して)。それ以外の場合は実装されていますが、実戦テストはされていません。

node:crypto ​

🟡 secureHeapUsed setEngine setFips が不足しています。

node:domain ​

🟡 Domain active が不足しています。

node:http2 ​

🟡 クライアントとサーバーが実装されています(gRPC のテストスイートの 95.25% がパスします)。options.allowHTTP1、options.enableConnectProtocol、ALTSVC 拡張機能、および http2stream.pushStream が不足しています。

node:module ​

🟡 syncBuiltinESMExports、Module#load() が不足しています。require.cache のオーバーライドは ESM と CJS モジュールでサポートされています。module._extensions、module._pathCache、module._cache は no-op です。module.register は実装されておらず、代わりに Bun.plugin の使用を推奨します。

node:net ​

🟢 完全実装。

node:perf_hooks ​

🟡 API は実装されていますが、Node.js のテストスイートはまだこのモジュールに対してパスしていません。

node:process ​

🟡 process グローバルを参照。

node:sys ​

🟡 node:util を参照。

node:tls ​

🟡 tls.createSecurePair が不足しています。

node:util ​

🟡 getCallSite getCallSites getSystemErrorMap getSystemErrorMessage transferableAbortSignal transferableAbortController が不足しています。

node:v8 ​

🟡 writeHeapSnapshot と getHeapSnapshot が実装されています。serialize と deserialize は V8 の代わりに JavaScriptCore のワイヤ形式を使用します。他のメソッドは実装されていません。プロファイリングの場合は、代わりに bun:jsc を使用してください。

node:vm ​

🟡 コア機能と ES モジュールが実装されています。vm.Script、vm.createContext、vm.runInContext、vm.runInNewContext、vm.runInThisContext、vm.compileFunction、vm.isContext、vm.Module、vm.SourceTextModule、vm.SyntheticModule、および importModuleDynamically サポートを含みます。timeout や breakOnSigint などのオプションは完全にサポートされています。vm.measureMemory と一部の cachedData 機能が不足しています。

node:wasi ​

🟡 一部実装。

node:worker_threads ​

🟡 Worker は以下のオプションをサポートしていません:stdin stdout stderr trackedUnmanagedFds resourceLimits。markAsUntransferable moveMessagePortToContext が不足しています。

node:inspector ​

🔴 未実装。

node:repl ​

🔴 未実装。

node:sqlite ​

🔴 未実装。

node:test ​

🟡 一部実装。モック、スナップショット、タイマーが不足しています。代わりに bun:test を使用してください。

node:trace_events ​

🔴 未実装。

Node.js グローバル ​

以下の表は、Node.js によって実装されているすべてのグローバルと、Bun の現在の互換性ステータスをリストしています。

AbortController ​

🟢 完全実装。

AbortSignal ​

🟢 完全実装。

Blob ​

🟢 完全実装。

Buffer ​

🟢 完全実装。

ByteLengthQueuingStrategy ​

🟢 完全実装。

__dirname ​

🟢 完全実装。

__filename ​

🟢 完全実装。

atob() ​

🟢 完全実装。

Atomics ​

🟢 完全実装。

BroadcastChannel ​

🟢 完全実装。

btoa() ​

🟢 完全実装。

clearImmediate() ​

🟢 完全実装。

clearInterval() ​

🟢 完全実装。

clearTimeout() ​

🟢 完全実装。

CompressionStream ​

🟢 完全実装。

console ​

🟢 完全実装。

CountQueuingStrategy ​

🟢 完全実装。

Crypto ​

🟢 完全実装。

SubtleCrypto (crypto) ​

🟢 完全実装。

CryptoKey ​

🟢 完全実装。

CustomEvent ​

🟢 完全実装。

DecompressionStream ​

🟢 完全実装。

Event ​

🟢 完全実装。

EventTarget ​

🟢 完全実装。

exports ​

🟢 完全実装。

fetch ​

🟢 完全実装。

FormData ​

🟢 完全実装。

global ​

🟢 実装済み。これはグローバルネームスペース内のすべてのオブジェクトを含むオブジェクトです。その内容は追加のプレフィックスなしで利用可能なため、global.__dirname ではなく __dirname のように、直接参照されることはめったにありません。

globalThis ​

🟢 global へのエイリアス。

Headers ​

🟢 完全実装。

MessageChannel ​

🟢 完全実装。

MessageEvent ​

🟢 完全実装。

MessagePort ​

🟢 完全実装。

module ​

🟢 完全実装。

PerformanceEntry ​

🟢 完全実装。

PerformanceMark ​

🟢 完全実装。

PerformanceMeasure ​

🟢 完全実装。

PerformanceObserver ​

🟢 完全実装。

PerformanceObserverEntryList ​

🟢 完全実装。

PerformanceResourceTiming ​

🟢 完全実装。

performance ​

🟢 完全実装。

process ​

🟡 ほぼ実装済み。process.binding(一部のパッケージが依存する内部 Node.js バインディング)は一部実装されています。process.title は現在 macOS と Linux で no-op です。getActiveResourcesInfo setActiveResourcesInfo、getActiveResources、setSourceMapsEnabled はスタブです。process.loadEnvFile や process.getBuiltinModule などの新しい API はまだ実装されていません。

queueMicrotask() ​

🟢 完全実装。

ReadableByteStreamController ​

🟢 完全実装。

ReadableStream ​

🟢 完全実装。

ReadableStreamBYOBReader ​

🟢 完全実装。

ReadableStreamBYOBRequest ​

🟢 完全実装。

ReadableStreamDefaultController ​

🟢 完全実装。

ReadableStreamDefaultReader ​

🟢 完全実装。

require() ​

🟢 完全実装。require.main、require.cache、require.resolve を含みます。

Response ​

🟢 完全実装。

Request ​

🟢 完全実装。

setImmediate() ​

🟢 完全実装。

setInterval() ​

🟢 完全実装。

setTimeout() ​

🟢 完全実装。

structuredClone() ​

🟢 完全実装。

SubtleCrypto ​

🟢 完全実装。

DOMException ​

🟢 完全実装。

TextDecoder ​

🟢 完全実装。

TextDecoderStream ​

🟢 完全実装。

TextEncoder ​

🟢 完全実装。

TextEncoderStream ​

🟢 完全実装。

TransformStream ​

🟢 完全実装。

TransformStreamDefaultController ​

🟢 完全実装。

URL ​

🟢 完全実装。

URLSearchParams ​

🟢 完全実装。

WebAssembly ​

🟢 完全実装。

WritableStream ​

🟢 完全実装。

WritableStreamDefaultController ​

🟢 完全実装。

WritableStreamDefaultWriter ​

🟢 完全実装。

Bun by www.bunjs.com.cn 編集