Ogni giorno, Bun si avvicina al 100% di compatibilità con le API di Node.js. Oggi, framework popolari come Next.js, Express e milioni di pacchetti npm destinati a Node funzionano semplicemente con Bun. Per garantire la compatibilità, eseguiamo migliaia di test dalla suite di test di Node.js prima di ogni release di Bun.
Se un pacchetto funziona su Node.js ma non funziona su Bun, lo consideriamo un bug in Bun. Per favore apri una issue e la risolveremo.
Questa pagina viene aggiornata regolarmente per riflettere lo stato di compatibilità dell'ultima versione di Bun. Le informazioni di seguito riflettono la compatibilità di Bun con Node.js v23.
Moduli built-in di Node.js
node:assert
🟢 Completamente implementato.
node:buffer
🟢 Completamente implementato.
node:console
🟢 Completamente implementato.
node:dgram
🟢 Completamente implementato. > 90% della suite di test di Node.js passa.
node:diagnostics_channel
🟢 Completamente implementato.
node:dns
🟢 Completamente implementato. > 90% della suite di test di Node.js passa.
node:events
🟢 Completamente implementato. 100% della suite di test di Node.js passa. EventEmitterAsyncResource usa AsyncResource sotto il cofano.
node:fs
🟢 Completamente implementato. 92% della suite di test di Node.js passa.
node:http
🟢 Completamente implementato. Il body della request del client in uscita è attualmente bufferizzato invece che streammato.
node:https
🟢 Le API sono implementate, ma Agent non è sempre usato ancora.
node:os
🟢 Completamente implementato. 100% della suite di test di Node.js passa.
node:path
🟢 Completamente implementato. 100% della suite di test di Node.js passa.
node:punycode
🟢 Completamente implementato. 100% della suite di test di Node.js passa, deprecato da Node.js.
node:querystring
🟢 Completamente implementato. 100% della suite di test di Node.js passa.
node:readline
🟢 Completamente implementato.
node:stream
🟢 Completamente implementato.
node:string_decoder
🟢 Completamente implementato. 100% della suite di test di Node.js passa.
node:timers
🟢 Raccomandato usare i globali setTimeout, ecc. invece.
node:tty
🟢 Completamente implementato.
node:url
🟢 Completamente implementato.
node:zlib
🟢 Completamente implementato. 98% della suite di test di Node.js passa.
node:async_hooks
🟡 AsyncLocalStorage e AsyncResource sono implementati. Gli hook delle promise v8 non sono chiamati e il loro uso è fortemente scoraggiato.
node:child_process
🟡 Mancanti proc.gid proc.uid. La classe Stream non è esportata. IPC non può inviare handle di socket. IPC Node.js ↔ Bun può essere usato con serializzazione JSON.
node:cluster
🟡 Handle e file descriptor non possono essere passati tra worker, il che significa che il bilanciamento del carico delle request HTTP tra processi è supportato solo su Linux al momento (tramite SO_REUSEPORT). Altrimenti, implementato ma non testato in produzione.
node:crypto
🟡 Mancanti secureHeapUsed setEngine setFips
node:domain
🟡 Mancanti Domain active
node:http2
🟡 Client e server sono implementati (95.25% della suite di test di gRPC passa). Mancanti options.allowHTTP1, options.enableConnectProtocol, estensione ALTSVC e http2stream.pushStream.
node:module
🟡 Mancanti syncBuiltinESMExports, Module#load(). Sovrascrivere require.cache è supportato per moduli ESM e CJS. module._extensions, module._pathCache, module._cache sono no-op. module.register non è implementato e raccomandiamo di usare Bun.plugin nel frattempo.
node:net
🟢 Completamente implementato.
node:perf_hooks
🟡 Le API sono implementate, ma la suite di test di Node.js non passa ancora per questo modulo.
node:process
🟡 Vedi process Globale.
node:sys
🟡 Vedi node:util.
node:tls
🟡 Mancante tls.createSecurePair.
node:util
🟡 Mancanti getCallSite getCallSites getSystemErrorMap getSystemErrorMessage transferableAbortSignal transferableAbortController
node:v8
🟡 writeHeapSnapshot e getHeapSnapshot sono implementati. serialize e deserialize usano il formato wire di JavaScriptCore invece di quello di V8. Altri metodi non sono implementati. Per il profiling, usa bun:jsc invece.
node:vm
🟡 La funzionalità core e i moduli ES sono implementati, inclusi vm.Script, vm.createContext, vm.runInContext, vm.runInNewContext, vm.runInThisContext, vm.compileFunction, vm.isContext, vm.Module, vm.SourceTextModule, vm.SyntheticModule e supporto importModuleDynamically. Opzioni come timeout e breakOnSigint sono completamente supportate. Mancanti vm.measureMemory e alcune funzionalità cachedData.
node:wasi
🟡 Parzialmente implementato.
node:worker_threads
🟡 Worker non supporta le seguenti opzioni: stdin stdout stderr trackedUnmanagedFds resourceLimits. Mancanti markAsUntransferable moveMessagePortToContext.
node:inspector
🔴 Non implementato.
node:repl
🔴 Non implementato.
node:sqlite
🔴 Non implementato.
node:test
🟡 Parzialmente implementato. Mancanti mocks, snapshots, timers. Usa bun:test invece.
node:trace_events
🔴 Non implementato.
Globali di Node.js
La tabella sotto elenca tutti i globali implementati da Node.js e lo stato attuale di compatibilità di Bun.
AbortController
🟢 Completamente implementato.
AbortSignal
🟢 Completamente implementato.
Blob
🟢 Completamente implementato.
Buffer
🟢 Completamente implementato.
ByteLengthQueuingStrategy
🟢 Completamente implementato.
__dirname
🟢 Completamente implementato.
__filename
🟢 Completamente implementato.
atob()
🟢 Completamente implementato.
Atomics
🟢 Completamente implementato.
BroadcastChannel
🟢 Completamente implementato.
btoa()
🟢 Completamente implementato.
clearImmediate()
🟢 Completamente implementato.
clearInterval()
🟢 Completamente implementato.
clearTimeout()
🟢 Completamente implementato.
CompressionStream
🟢 Completamente implementato.
console
🟢 Completamente implementato.
CountQueuingStrategy
🟢 Completamente implementato.
Crypto
🟢 Completamente implementato.
SubtleCrypto (crypto)
🟢 Completamente implementato.
CryptoKey
🟢 Completamente implementato.
CustomEvent
🟢 Completamente implementato.
DecompressionStream
🟢 Completamente implementato.
Event
🟢 Completamente implementato.
EventTarget
🟢 Completamente implementato.
exports
🟢 Completamente implementato.
fetch
🟢 Completamente implementato.
FormData
🟢 Completamente implementato.
global
🟢 Implementato. Questo è un oggetto che contiene tutti gli oggetti nel namespace globale. È raramente referenziato direttamente, poiché i suoi contenuti sono disponibili senza un prefisso aggiuntivo, ad esempio __dirname invece di global.__dirname.
globalThis
🟢 Alias di global.
Headers
🟢 Completamente implementato.
MessageChannel
🟢 Completamente implementato.
MessageEvent
🟢 Completamente implementato.
MessagePort
🟢 Completamente implementato.
module
🟢 Completamente implementato.
PerformanceEntry
🟢 Completamente implementato.
PerformanceMark
🟢 Completamente implementato.
PerformanceMeasure
🟢 Completamente implementato.
PerformanceObserver
🟢 Completamente implementato.
PerformanceObserverEntryList
🟢 Completamente implementato.
PerformanceResourceTiming
🟢 Completamente implementato.
performance
🟢 Completamente implementato.
process
🟡 Quasi completamente implementato. process.binding (binding interni di Node.js su cui alcuni pacchetti fanno affidamento) è parzialmente implementato. process.title è attualmente un no-op su macOS e Linux. getActiveResourcesInfo setActiveResourcesInfo, getActiveResources e setSourceMapsEnabled sono stub. API più recenti come process.loadEnvFile e process.getBuiltinModule non sono ancora implementate.
queueMicrotask()
🟢 Completamente implementato.
ReadableByteStreamController
🟢 Completamente implementato.
ReadableStream
🟢 Completamente implementato.
ReadableStreamBYOBReader
🟢 Completamente implementato.
ReadableStreamBYOBRequest
🟢 Completamente implementato.
ReadableStreamDefaultController
🟢 Completamente implementato.
ReadableStreamDefaultReader
🟢 Completamente implementato.
require()
🟢 Completamente implementato, inclusi require.main, require.cache, require.resolve.
Response
🟢 Completamente implementato.
Request
🟢 Completamente implementato.
setImmediate()
🟢 Completamente implementato.
setInterval()
🟢 Completamente implementato.
setTimeout()
🟢 Completamente implementato.
structuredClone()
🟢 Completamente implementato.
SubtleCrypto
🟢 Completamente implementato.
DOMException
🟢 Completamente implementato.
TextDecoder
🟢 Completamente implementato.
TextDecoderStream
🟢 Completamente implementato.
TextEncoder
🟢 Completamente implementato.
TextEncoderStream
🟢 Completamente implementato.
TransformStream
🟢 Completamente implementato.
TransformStreamDefaultController
🟢 Completamente implementato.
URL
🟢 Completamente implementato.
URLSearchParams
🟢 Completamente implementato.
WebAssembly
🟢 Completamente implementato.
WritableStream
🟢 Completamente implementato.
WritableStreamDefaultController
🟢 Completamente implementato.
WritableStreamDefaultWriter
🟢 Completamente implementato.