Deno 2.7.6 : 59 bugs corrigés

Par:
francoistonic

mer, 18/03/2026 - 14:24

Deno annonce la disponibilité de la version 2.7.6. Cette version corrige 59 bugs et quelques améliorations notamment sur les performances V8, fs.cpSync est implémenté en Rust, optimisation node:buffer pour encodage et décodage base64. 

Liste complète des modifications :

  • feat(core): add cloneable resource registry for structured clone (#32672)
  • feat(core): update v8 to 146.8.0 with foreground task ownership (#32771)
  • feat(eval): auto-detect CJS vs ESM in deno eval (#32472)
  • feat(ext/node): add MIMEType, convertProcessSignalToExitCode, Symbol.dispose
    for ChildProcess (#32793)
  • feat(ext/signals): support additional signals on Windows (#32689)
  • feat(ext/telemetry): support array values in OTEL attributes (#32748)
  • feat: add --cpu-prof-flamegraph to generate interactive SVG flamegraphs
    (#32572)
  • fix(cli): update typescript-go to 2026-03-09 (#32656)
  • fix(core): don't panic in to_v8_error when JS error builder callback fails
    (#32749)
  • fix(core): prevent panic when multiple lazy-loaded ESM modules are loaded
    during TLA (#32769)
  • fix(coverage): don't mark lines uncovered when zero-count range only partially
    overlaps (#32601)
  • fix(ext/console): make timer and counter state per-instance to fix OTEL
    console wrapping (#32719)
  • fix(ext/crypto): support structuredClone for CryptoKey (#32674)
  • fix(ext/fetch): retry on stale pooled HTTP/1.1 connections (#32566)
  • fix(ext/ffi): retain backing store references in nonblocking calls (#32775)
  • fix(ext/napi): call wrap/ref finalizers at shutdown (#32592)
  • fix(ext/napi): keep event loop alive while uv_async_t handle is active
    (#32702)
  • fix(ext/napi): prevent spurious TypeError from napi_coerce_to_object on
    null/undefined (#32695)
  • fix(ext/node): accept all TypedArrays in spawnSync input option (#32712)
  • fix(ext/node): allow IPv6 multicast addresses in UDP
    addMembership/dropMembership (#32739)
  • fix(ext/node): allow passing FileHandle as fd argument for WriteStream
    and ReadStream (#32770)
  • fix(ext/node): emit "connect" event on http.Server for CONNECT requests
    (#32599)
  • fix(ext/node): enable 8 already-passing child_process compat tests (#32710)
  • fix(ext/node): fix 8 Node.js compat test failures (#32755)
  • fix(ext/node): fix AbortController signal handling in child_process s…
    (#32713)
  • fix(ext/node): fix Buffer.concat, expose internal/buffer, implement
    markAsUntransferable (#32760)
  • fix(ext/node): fix IPC message prototype for child_process JSON (#32731)
  • fix(ext/node): fix TLA stall with native TTY handles and make stdio
    indestructible (#32792)
  • fix(ext/node): fix TLS JSStreamSocket resource leak causing process hang
    (#32325)
  • fix(ext/node): fix multiple deepEqual comparison issues (#32763)
  • fix(ext/node): fix perm checks in TCPWrap (#32721)
  • fix(ext/node): fix send() validation in child_process IPC (#32779)
  • fix(ext/node): handle cargo features during publish (#32636)
  • fix(ext/node): handle signal 0 in child_process.kill() (#32294)
  • fix(ext/node): implement safe, add, rem options for crypto.generatePrime
    (#32618)
  • fix(ext/node): improve Node.js crypto compatibility (#32690)
  • fix(ext/node): improve X509Certificate Node.js compatibility (#32671)
  • fix(ext/node): improve crypto.generateKeyPair validation (#32620)
  • fix(ext/node): improve worker_threads path validation and error handling
    (#32791)
  • fix(ext/node): include prototype env vars in child_process spawn (#32699)
  • fix(ext/node): remove extra properties from node:fs exports (#32670)
  • fix(ext/node): require --allow-net for udp.send (#32774)
  • fix(ext/node): rewrite node:tty on top of uv compat (#32777)
  • fix(ext/node): set up stdio streams on failed child_process spawn (#32698)
  • fix(ext/node): signal listeners added via process.once can now be removed
    (#32606)
  • fix(ext/node): support encrypted PEM export and deprecated hash option in
    crypto keygen (#32703)
  • fix(ext/node): use non-blocking write in fs.writev (#32673)
  • fix(ext/node): validate handle type in child_process send() (#32711)
  • fix(ext/node): wrap non-Error unhandled rejections in ERR_UNHANDLED_REJECTION
    (#32535)
  • fix(ext/otel): don't mark server spans as error for 4xx responses (#32722)
  • fix(ext/signals): prevent panic on FreeBSD (#32518)
  • fix(ext/telemetry): add log.iostream attribute to console logs (#32723)
  • fix(ext/telemetry): add exception.* attributes to OTEL log records (#32726)
  • fix(ext/web): support %j JSON format specifier in console.log (#32684)
  • fix(ext/web): upgrade QuotaExceededError to DOMException derived interface
    (#32244)
  • fix(lsp): align organize imports output with tsgo (#32677)
  • fix(npm): handle read-only bin files when setting up node_modules/.bin
    (#32632)
  • fix(npm): resolve bundled npm deps in packages properly when not using a
    node_modules directory (#32679)
  • fix(npm): retain authorization header on http->https redirect (#29878)
  • fix(npm): support npmrc certfile + keyfile (#32655)
  • fix(process): allow unref'd child processes to outlive parent (#32563)
  • fix(repl): fix panic when pressing Tab at beginning of line (#32750)
  • fix(runtime): apply source maps to CPU profiler output (#32634)
  • fix(runtime): display proper error when throwing in event handlers (#32663)
  • fix(runtime): reduce memory retention after web worker termination (#32617)
  • fix(runtime): use XML-valid entity in flamegraph SVG (#32716)
  • fix(test): allow test functions to override reported location (#32732)
  • fix(tsc): move more node resolution errors to typescript diagnostics (#32697)
  • fix(watch): dispatch unload and process exit events on restart (#32664)
  • fix(web): support structuredClone for DOMException (#32675)
  • fix: restore --env-file parent directory traversal and do not error in
    deno compile for not found env file (#32686)
  • fix: wake event loop when V8 posts foreground tasks from background threads
    (#32450)
  • perf(core): optimize V8-to-Rust string conversion with ValueView (#32688)
  • perf(ext/napi): use threadpool for async work instead of spawning threads
    (#32776)
  • perf(ext/node): move fs.cpSync implementation to rust (#32687)
  • perf(ext/web): add write buffering for FsFile.writable streams (#32676)
  • perf(ext/web): optimize TextEncoder/TextDecoder hot paths (#32735)
  • perf(ext/web): optimize URLPattern ops to reduce serde overhead and GC
    pressure (#32766)
  • perf(ext/web): optimize node:buffer base64 encode/decode (#32647)
  • perf(ext/web): reduce promise allocations in streams (#32652)
  • perf(fmt): speed up file diffing (#30644)
  • perf(install): avoid unnecessary package info fetches when running lifecycle
    scripts (#32653)
  • perf(linux): trim glibc malloc arena after module loading (#32662)
  • perf(lsp): replace dissimilar with imara-diff (#32700)
  • perf(npm): run lifecycle scripts in parallel (#32666)