Skip to content

Todos os dias, o Bun se aproxima de 100% de compatibilidade com a API do Node.js. Hoje, frameworks populares como Next.js, Express e milhões de pacotes npm destinados ao Node.js funcionam com o Bun. Para garantir compatibilidade, executamos milhares de testes da suíte de testes do Node.js antes de cada release do Bun.

Se um pacote funciona no Node.js mas não funciona no Bun, consideramos um bug no Bun. Por favor abra uma issue e nós a corrigiremos.

Esta página é atualizada regularmente para refletir o status de compatibilidade da versão mais recente do Bun. As informações abaixo refletem a compatibilidade do Bun com Node.js v23.

Módulos builtin do Node.js

node:assert

🟢 Totalmente implementado.

node:buffer

🟢 Totalmente implementado.

node:console

🟢 Totalmente implementado.

node:dgram

🟢 Totalmente implementado. > 90% da suíte de testes do Node.js passa.

node:diagnostics_channel

🟢 Totalmente implementado.

node:dns

🟢 Totalmente implementado. > 90% da suíte de testes do Node.js passa.

node:events

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa. EventEmitterAsyncResource usa AsyncResource por baixo.

node:fs

🟢 Totalmente implementado. 92% da suíte de testes do Node.js passa.

node:http

🟢 Totalmente implementado. O body de requisição de cliente de saída é atualmente bufferizado em vez de streamado.

node:https

🟢 APIs são implementadas, mas Agent nem sempre é usado ainda.

node:os

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa.

node:path

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa.

node:punycode

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa, depreciado pelo Node.js.

node:querystring

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa.

node:readline

🟢 Totalmente implementado.

node:stream

🟢 Totalmente implementado.

node:string_decoder

🟢 Totalmente implementado. 100% da suíte de testes do Node.js passa.

node:timers

🟢 Recomendado usar setTimeout global, et. al. em vez disso.

node:tty

🟢 Totalmente implementado.

node:url

🟢 Totalmente implementado.

node:zlib

🟢 Totalmente implementado. 98% da suíte de testes do Node.js passa.

node:async_hooks

🟡 AsyncLocalStorage e AsyncResource são implementados. hooks de promise v8 não são chamados, e seu uso é fortemente desencorajado.

node:child_process

🟡 Faltam proc.gid proc.uid. Classe Stream não é exportada. IPC não pode enviar handles de socket. IPC Node.js ↔ Bun pode ser usado com serialização JSON.

node:cluster

🟡 Handles e descritores de arquivo não podem ser passados entre workers, o que significa que balanceamento de carga de requisições HTTP entre processos é suportado apenas no Linux neste momento (via SO_REUSEPORT). Caso contrário, implementado mas não testado em produção.

node:crypto

🟡 Faltam secureHeapUsed setEngine setFips

node:domain

🟡 Faltam Domain active

node:http2

🟡 Cliente e servidor são implementados (95.25% da suíte de testes do gRPC passa). Faltam options.allowHTTP1, options.enableConnectProtocol, extensão ALTSVC, e http2stream.pushStream.

node:module

🟡 Faltam syncBuiltinESMExports, Module#load(). Substituir require.cache é suportado para módulos ESM & CJS. module._extensions, module._pathCache, module._cache são no-ops. module.register não é implementado e recomendamos usar um Bun.plugin enquanto isso.

node:net

🟢 Totalmente implementado.

node:perf_hooks

🟡 APIs são implementadas, mas a suíte de testes do Node.js ainda não passa para este módulo.

node:process

🟡 Veja global process.

node:sys

🟡 Veja node:util.

node:tls

🟡 Falta tls.createSecurePair.

node:util

🟡 Faltam getCallSite getCallSites getSystemErrorMap getSystemErrorMessage transferableAbortSignal transferableAbortController

node:v8

🟡 writeHeapSnapshot e getHeapSnapshot são implementados. serialize e deserialize usam o formato wire do JavaScriptCore em vez do V8. Outros métodos não são implementados. Para profiling, use bun:jsc em vez disso.

node:vm

🟡 Funcionalidade principal e módulos ES são implementados, incluindo vm.Script, vm.createContext, vm.runInContext, vm.runInNewContext, vm.runInThisContext, vm.compileFunction, vm.isContext, vm.Module, vm.SourceTextModule, vm.SyntheticModule, e suporte a importModuleDynamically. Opções como timeout e breakOnSigint são totalmente suportadas. Faltam vm.measureMemory e alguma funcionalidade cachedData.

node:wasi

🟡 Parcialmente implementado.

node:worker_threads

🟡 Worker não suporta as seguintes opções: stdin stdout stderr trackedUnmanagedFds resourceLimits. Faltam markAsUntransferable moveMessagePortToContext.

node:inspector

🔴 Não implementado.

node:repl

🔴 Não implementado.

node:sqlite

🔴 Não implementado.

node:test

🟡 Parcialmente implementado. Faltam mocks, snapshots, timers. Use bun:test em vez disso.

node:trace_events

🔴 Não implementado.

Globais do Node.js

A tabela abaixo lista todos os globais implementados pelo Node.js e o status de compatibilidade atual do Bun.

AbortController

🟢 Totalmente implementado.

AbortSignal

🟢 Totalmente implementado.

Blob

🟢 Totalmente implementado.

Buffer

🟢 Totalmente implementado.

ByteLengthQueuingStrategy

🟢 Totalmente implementado.

__dirname

🟢 Totalmente implementado.

__filename

🟢 Totalmente implementado.

atob()

🟢 Totalmente implementado.

Atomics

🟢 Totalmente implementado.

BroadcastChannel

🟢 Totalmente implementado.

btoa()

🟢 Totalmente implementado.

clearImmediate()

🟢 Totalmente implementado.

clearInterval()

🟢 Totalmente implementado.

clearTimeout()

🟢 Totalmente implementado.

CompressionStream

🟢 Totalmente implementado.

console

🟢 Totalmente implementado.

CountQueuingStrategy

🟢 Totalmente implementado.

Crypto

🟢 Totalmente implementado.

SubtleCrypto (crypto)

🟢 Totalmente implementado.

CryptoKey

🟢 Totalmente implementado.

CustomEvent

🟢 Totalmente implementado.

DecompressionStream

🟢 Totalmente implementado.

Event

🟢 Totalmente implementado.

EventTarget

🟢 Totalmente implementado.

exports

🟢 Totalmente implementado.

fetch

🟢 Totalmente implementado.

FormData

🟢 Totalmente implementado.

global

🟢 Implementado. Este é um objeto contendo todos os objetos no namespace global. Raramente é referenciado diretamente, já que seu conteúdo está disponível sem um prefixo adicional, e.g. __dirname em vez de global.__dirname.

globalThis

🟢 Alias para global.

Headers

🟢 Totalmente implementado.

MessageChannel

🟢 Totalmente implementado.

MessageEvent

🟢 Totalmente implementado.

MessagePort

🟢 Totalmente implementado.

module

🟢 Totalmente implementado.

PerformanceEntry

🟢 Totalmente implementado.

PerformanceMark

🟢 Totalmente implementado.

PerformanceMeasure

🟢 Totalmente implementado.

PerformanceObserver

🟢 Totalmente implementado.

PerformanceObserverEntryList

🟢 Totalmente implementado.

PerformanceResourceTiming

🟢 Totalmente implementado.

performance

🟢 Totalmente implementado.

process

🟡 Majoritariamente implementado. process.binding (bindings internos do Node.js que alguns pacotes dependem) é parcialmente implementado. process.title é atualmente um no-op no macOS & Linux. getActiveResourcesInfo setActiveResourcesInfo, getActiveResources e setSourceMapsEnabled são stubs. APIs mais novas como process.loadEnvFile e process.getBuiltinModule ainda não são implementadas.

queueMicrotask()

🟢 Totalmente implementado.

ReadableByteStreamController

🟢 Totalmente implementado.

ReadableStream

🟢 Totalmente implementado.

ReadableStreamBYOBReader

🟢 Totalmente implementado.

ReadableStreamBYOBRequest

🟢 Totalmente implementado.

ReadableStreamDefaultController

🟢 Totalmente implementado.

ReadableStreamDefaultReader

🟢 Totalmente implementado.

require()

🟢 Totalmente implementado, incluindo require.main, require.cache, require.resolve.

Response

🟢 Totalmente implementado.

Request

🟢 Totalmente implementado.

setImmediate()

🟢 Totalmente implementado.

setInterval()

🟢 Totalmente implementado.

setTimeout()

🟢 Totalmente implementado.

structuredClone()

🟢 Totalmente implementado.

SubtleCrypto

🟢 Totalmente implementado.

DOMException

🟢 Totalmente implementado.

TextDecoder

🟢 Totalmente implementado.

TextDecoderStream

🟢 Totalmente implementado.

TextEncoder

🟢 Totalmente implementado.

TextEncoderStream

🟢 Totalmente implementado.

TransformStream

🟢 Totalmente implementado.

TransformStreamDefaultController

🟢 Totalmente implementado.

URL

🟢 Totalmente implementado.

URLSearchParams

🟢 Totalmente implementado.

WebAssembly

🟢 Totalmente implementado.

WritableStream

🟢 Totalmente implementado.

WritableStreamDefaultController

🟢 Totalmente implementado.

WritableStreamDefaultWriter

🟢 Totalmente implementado.

Bun by www.bunjs.com.cn edit