github denoland/deno v2.7.14

7 hours ago

2.7.14 / 2026.04.28

  • feat(ext/node): add fs.Utf8Stream
  • feat(upgrade): delta updates via bsdiff patches (#33274)
  • fix(bundle): treat CSS same-document fragment URLs as external (#33492)
  • fix(cache): add missing CacheStorage.keys() and Cache.keys() methods (#33275)
  • fix(config): don't exclude workspace members from deploy file patterns
    (#33562)
  • fix(coverage): exclude transformer-injected helpers from coverage (#33481)
  • fix(doc): remove background from operators in dark mode code blocks (#33267)
  • fix(ext/bundle): clearer error when Deno.bundle is called in compiled binary
    (#33503)
  • fix(ext/crypto): throw TypeMismatchError for non-TypedArray in getRand
    (#33470)
  • fix(ext/fetch): don't mutate caller's options in Deno.createHttpClient
    (#33497)
  • fix(ext/fetch): use byte ReadableStream for Node Readable request bodies
    (#33432)
  • fix(ext/fs): normalize Deno.watchFs paths so events drop ./ segments (#33490)
  • fix(ext/napi): implement napi_async_init and napi_async_destroy (#33282)
  • fix(ext/net): default Deno.listenDatagram hostname to 0.0.0.0 (#33496)
  • fix(ext/node): accept X.509v1 server certs in tls.createServer (#33505)
  • fix(ext/node): accept string mode in fs.mkdir and fs.mkdirSync (#33409)
  • fix(ext/node): add Server BlockList, asyncDispose, and misc net improvements
    (#33417)
  • fix(ext/node): add _idleStart and _idleTimeout to Timeout (#33604)
  • fix(ext/node): align crypto random* validation with Node (#33456)
  • fix(ext/node): align fs.truncate / ftruncate argument validation with Node
    (#33418)
  • fix(ext/node): align module.builtinModules / getBuiltinModule with Node
    (#33404)
  • fix(ext/node): align node:module behavior with Node (#33482)
  • fix(ext/node): align node:test it/describe with Node, enable passing
    compat tests (#33593)
  • fix(ext/node): align util.styleText with Node (#33547)
  • fix(ext/node): allow https.Agent() without new, enable passing compat
    tests (#33601)
  • fix(ext/node): async fs.stat/lstat throwIfNoEntry + deprecate fs.Stats
    (#33436)
  • fix(ext/node): attach input URL to ERR_INVALID_FILE_URL_PATH (#33398)
  • fix(ext/node): attach path/syscall to fs.lstat / realpath / link errors
    (#33446)
  • fix(ext/node): brand-check SecureContext._external accessor (#33569)
  • fix(ext/node): cache hash digest so it survives stream.pipeline (#33440)
  • fix(ext/node): cancelling Readable.toWeb(req) no longer destroys the socket
    (#33570)
  • fix(ext/node): close fd on error in http2 stream respondWithFile (#33614)
  • fix(ext/node): correct buffer-length check in Readable._fromList decoder
    branch (#33624)
  • fix(ext/node): defer drain in http2 shutdownWritable so pushStream after end()
    works (#33619)
  • fix(ext/node): drain pending TLS cleartext in enc_write_cb (#33378)
  • fix(ext/node): emit Buffer for http2 'goaway' opaqueData (#33502)
  • fix(ext/node): emit DEP0031 deprecation warning for ecdh.setPublicKey(
    (#33468)
  • fix(ext/node): emit DEP0182 deprecation for short AES-GCM auth tag (#33469)
  • fix(ext/node): emit HPE_INVALID_TRANSFER_ENCODING for CL+chunked respo
    (#33488)
  • fix(ext/node): emit StatWatcher 'stop' event asynchronously (#33448)
  • fix(ext/node): emit TimeoutNaNWarning for invalid timer durations (#33472)
  • fix(ext/node): emit http2 frameError on send failure with translated HTTP/2
    error code (#33631)
  • fix(ext/node): emit stream-level PROTOCOL_ERROR in node:http2
  • fix(ext/node): emit tlsClientError instead of crashing on TLS init failure
    (#33429)
  • fix(ext/node): enable test-als-defaultvalue-original (AsyncLocalStorage
    default value) (#33464)
  • fix(ext/node): encode http2 headers as Latin-1 to fix response splitting
    (#33531)
  • fix(ext/node): encode more chars in url.pathToFileURL() (#33397)
  • fix(ext/node): enforce HTTP/2 server header list size limits (#33494)
  • fix(ext/node): enforce http2 maxSessionInvalidFrames limit (#33515)
  • fix(ext/node): expose http2 sensitive headers received with NV_FLAG_NO_INDEX
    flag (#33626)
  • fix(ext/node): fix EEXIST error and data loss in writeFileSync on Windows
    (#33413)
  • fix(ext/node): fix ERR_INVALID_CHAR message & OutgoingMessage.prototype.write
    (#33430)
  • fix(ext/node): fix TLS client certificate authentication verification (#33576)
  • fix(ext/node): fix TLS socket error ordering and app data leak before identity
    verification (#33585)
  • fix(ext/node): fix TLS socket lifecycle and readStop backpressure (#33524)
  • fix(ext/node): fix closeIdleConnections destroying active connections (#33596)
  • fix(ext/node): fix fs.glob skipping siblings with */../ patterns (#33372)
  • fix(ext/node): fix spawnSync internal API for monkey-patching and killSignal
    (#33545)
  • fix(ext/node): flush GOAWAY before destroying http2 socket and expose
    internal/http2/core (#33566)
  • fix(ext/node): flush HTTP/2 client preface after settings submission (#33387)
  • fix(ext/node): forward enableConnectProtocol setting to peer in HTTP/2
    SETTINGS frame (#33616)
  • fix(ext/node): handle undefined http2 ping payload and cancel pending pings on
    destroy (#33561)
  • fix(ext/node): hide aggregateTwoErrors frame in AggregateError stack (#33402)
  • fix(ext/node): honor http2 strictFieldWhitespaceValidation option (#33506)
  • fix(ext/node): honor requestCert/ca on node:tls server, populate
    getPeerCertificate() (#33439)
  • fix(ext/node): honor weight option in http2 client.request and emit DEP0194
    (#33622)
  • fix(ext/node): http2 createConnection support and per-frame socket writes
    (#33520)
  • fix(ext/node): implement BlockList.rules / isBlockList / toJSON / fromJSON
    (#33445)
  • fix(ext/node): implement Socket.resetAndDestroy with TCP RST in node:net
    (#33415)
  • fix(ext/node): implement StatWatcher.ref() / unref() (#33408)
  • fix(ext/node): implement dns Resolver cancel() and timeout support (#33580)
  • fix(ext/node): implement dns.reverse() and fix dns.lookup() family parameter
    (#33579)
  • fix(ext/node): implement fs.mkdtempDisposableSync /
    fsPromises.mkdtempDisposable (#33533)
  • fix(ext/node): implement node:cluster fork/Worker and worker-side detection
    (#33493)
  • fix(ext/node): implement process.debugPort with ToInt32 coercion (#33403)
  • fix(ext/node): import kIncomingMessage/kServerResponse in http2 allowHTTP1
    fallback (#33435)
  • fix(ext/node): improve Node.js timer compatibility (#33479)
  • fix(ext/node): improve perf_hooks timerify and add missing exports (#33581)
  • fix(ext/node): include accepted values in Console colorMode error (#33424)
  • fix(ext/node): isolate parentPort from globalThis in worker_threads (#32596)
  • fix(ext/node): make Buffer.prototype methods generic-callable (#33466)
  • fix(ext/node): make http2 session.origin() round-trip origins and respect TLS
    servername (#33629)
  • fix(ext/node): make process.constructor a proper instanceof check (#33447)
  • fix(ext/node): name custom-promisified functions after their originals
    (#33407)
  • fix(ext/node): null-proto child_process options to block prototype pollution
    (#33555)
  • fix(ext/node): pass reusePort flags in Server.listen() without host (#33530)
  • fix(ext/node): pass signal name to process signal handlers (#33425)
  • fix(ext/node): pass stream fd to child process stdio instead of inheriting
    (#33525)
  • fix(ext/node): plumb llhttp error code, reason, and bytes parsed through
    HTTPParser (#33591)
  • fix(ext/node): prevent duplicate close emit when http2 client socket i
    (#33538)
  • fix(ext/node): re-arm Windows named pipe server after accept (#33369)
  • fix(ext/node): rebind http2 state buffers post-snapshot, enforce
    maxHeaderListPairs (#33495)
  • fix(ext/node): reject non-ArrayBufferView data in fs.writeFileSync (#33406)
  • fix(ext/node): rename _destroySsl to _destroySSL to match Node.js API (#33599)
  • fix(ext/node): replace unwrap with error propagation in parallel cp (#33396)
  • fix(ext/node): return relative path from fs.watch with recursive option
    (#33428)
  • fix(ext/node): strip trailing dot from SRV target in dns.resolveSrv() (#33578)
  • fix(ext/node): submit http2 RST_STREAM before flushing END_STREAM DATA frame
    on respondWithFD read (#33633)
  • fix(ext/node): support ALPNCallback in http2.createSecureServer (#33521)
  • fix(ext/node): support BlockList, AbortSignal, and constructor options in
    node:net Socket (#33414)
  • fix(ext/node): support ignore option in fs.watch and fs.promises.watch
    (#33610)
  • fix(ext/node): support encoding option in fs.readdir; don't double-call glob
    callback (#33501)
  • fix(ext/node): support http2 pushStream and client push events (#33516)
  • fix(ext/node): support reusePort option and fix bind/pipe handling in node:net
    (#33416)
  • fix(ext/node): support util.promisify on http2.connect (#33489)
  • fix(ext/node): support v1 X.509 certs and http2 ALPN fallback (#33510)
  • fix(ext/node): throw ERR_INVALID_ARG_VALUE when rmdir gets options.recursive
    (#33565)
  • fix(ext/node): throw ERR_INVALID_URL from http/https request string URL
    (#33427)
  • fix(ext/node): throw TypeError for Symbol keys/values in process.env (#33399)
  • fix(ext/node): timer _destroyed flag, Symbol.dispose, and setInterval abort
    (#33528)
  • fix(ext/node): track http2 custom settings and SETTINGS ACK callbacks (#33518)
  • fix(ext/node): treat unsolicited HTTP/2 PING ACK as connection-level protocol
    error (#33625)
  • fix(ext/node): use AbortSignal.addEventListener in addAbortListener (#33557)
  • fix(ext/node): use ERR_INVALID_ARG_TYPE for tls.createServer non-object
    options (#33589)
  • fix(ext/node): use ERR_INVALID_ARG_VALUE in module.createRequire (#33449)
  • fix(ext/node): use Node's address-type check in dgram Socket.send (#33420)
  • fix(ext/node): use node:timers for http server connection checks, expo
    (#33483)
  • fix(ext/node): use proper error codes for require() invalid arguments (#33609)
  • fix(ext/node): validate fs.watch boolean options (#33627)
  • fix(ext/node): validate boolean arg in process.setSourceMapsEnabled (#33473)
  • fix(ext/node): validate ciphers option in tls.createSecureContext() (#33597)
  • fix(ext/node): validate dgram options.recvBufferSize / sendBufferSize (#33444)
  • fix(ext/node): validate oaepHash in publicEncrypt/privateDecrypt (#33388)
  • fix(ext/node): validate options.type in Readable.toWeb (#33560)
  • fix(ext/node): validate process.chdir argument is a string (#33401)
  • fix(ext/node): walk sandbox prototype chain in vm property_query (#33463)
  • fix(ext/node): wire JSStreamSocket handle write/shutdown for http2 (#33526)
  • fix(ext/node): wire up captureRejection handler for http2 servers (#33542)
  • fix(ext/node): yield to I/O in http2 write path so stream pipeline finishes
    (#33541)
  • fix(ext/web): align AbortSignal.timeout error message with Node (#33460)
  • fix(ext/web): allow transferring non-serializable types in structuredClone
    (#33491)
  • fix(ext/web): handle late write racing with TransformStream cancel (#33478)
  • fix(ext/web): narrow ReadableStreamBYOBRequest.view to Uint8Array (#33477)
  • fix(ext/web): retain source from MessageEventInit (#33500)
  • fix(ext/web): route console.dirxml through the log printer (#33443)
  • fix(ext/web): set ERR_MISSING_ARGS code on URL.revokeObjectURL no-arg (#33471)
  • fix(ext/web): structuredClone of non-serializable Web types throws
    DataCloneError (#33465)
  • fix(ext/webidl): set ERR_ILLEGAL_CONSTRUCTOR code on illegal constructor calls
    (#33535)
  • fix(ext/webidl): set ERR_INVALID_THIS code on brand-check TypeError (#33467)
  • fix(node/buffer): fix panic in transcode with odd-length UTF-16LE input
    (#33390)
  • fix(node/compat): disable flaky test-child-process-exec-kill-throws on Windows
    (#33426)
  • fix(node/compat): disable flaky test-fs-read-stream-pos on Windows (#33421)
  • fix(node/compat): fix shard report merging and fetching in CI reporting
    (#33431)
  • fix(permissions): normalize paths for macOS filesystem comparison (#33451)
  • fix(task): match workspace directory name in --filter (#33499)
  • fix(task): use explicit workspace root check in directory-name fallback
    (#33540)
  • fix(x): forward --unstable-* flags to JSR and URL targets (#33450)
  • fix: bound fs.readFile on non-terminating sources (#33262)
  • fix: drop config-only unstable features from unstable_args() (#33452)
  • fix: match single-char wildcard segments in npm package imports (#33513)
  • perf(ext/node): pool 64KB read buffers to reduce allocation pressure (#33395)
  • perf: optimize worker and MessagePort message passing (#32657)
  • perf: upgrade rusty_v8 to 147.4.0 (#33422)

Don't miss a new deno release

NewReleases is sending notifications on new releases.