Deno 2.9 stabilizes Node compat, major tooling updates — Dev Signal
Dev Signal/Archive/Deno 2.9 stabilizes Node compat, major tooling updates
June 29, 2026
Deno 2.9 stabilizes Node compat, major tooling updates
Share:
Tool of the Week
Deno 2.9 stabilizes Node compat, adds test sharding
Task input-based caching, parameterized tests via Deno.test.each, and cross-lock-file migration (yarn/pnpm/bun to deno.lock) cut boilerplate and shrink CI runtime for polyglot projects.
Node.js compatibility reaches production-grade (Node-API v10, bare built-in resolution stable, process.version v26.3.0), reducing friction for teams migrating from npm. Test sharding and retry options enable scale—critical for monorepos.
Replaces manual task caching logic and npm lock-file conversions. Requires no breaking changes to existing deno.json. Worth adopting now: task caching is immediate wins; test sharding unblocks CI parallelization; Node compat surfaces zero-cost interop with npm packages.
“feat(install): seed deno.lock from bun.lock (#35394)”
“feat(install): seed deno.lock from yarn.lock (#35350)”
“feat(task): input-based caching with files/output/env (#34509)”
“feat(test): add --shard flag to split a test run across machines (#35057)”
“feat(test): add Deno.test.each for parameterized tests (#34938)”
“feat(napi): implement Node-API version 10 (#35270)”
“feat: stabilize bare node built-in resolution (#33316)”
“feat(node): bump reported process.version to v26.3.0 (#34747)”
Get issues like this in your inbox — free, every weekday.
Quick Signals
SDK 6.45.0 ships streaming parser and tool hooks
afterCompletion hook for tool runs and structured output streaming fixes let you intercept async operations and reliably parse partial responses without stalling.
Tool pipelines now have explicit lifecycle control, and the streaming parser fixes for whitespace and incomplete structured outputs eliminate silent failures in production agentic workflows.
Drop-in upgrade. afterCompletion hook replaces manual promise-wrapping patterns; streaming parser fixes are transparent. Requires zero config changes. Upgrade immediately if you stream structured outputs or chain tools.
“add afterCompletion hook to runTools (#1064)”
“realtime: support sideband call_id connections (#1795)”
Cloudflare Workflows ships saga rollbacks for distributed transactions
Define compensation logic inline with step.do() via a rollback option, executing in reverse step-start order if the workflow fails, eliminating manual try-catch compensation tracking.
Reduces boilerplate for handling partial failures in multi-step distributed workflows (fund transfers, payments, inventory ops). Each step owns its undo logic instead of scattered catch blocks, cutting complexity and replay bugs.
Replaces manual compensation logic tracking outside step definitions. Requires idempotent rollback handlers and idempotency keys on external calls. Ship it now if you're building Workflows with external system calls; this is stable, not experimental.
Enjoying Dev Signal? Get every issue in your inbox.
Free forever · 3 issues a week · One-click unsubscribe
F-string expression formatting, implicit string concatenation merging, and assert-message wrapping reduce manual formatting decisions—upgrade for immediate compatibility gains with Black.
Formatter behavior changes break CI pipelines if not absorbed into your config immediately; merging single-line concatenated strings and normalizing f-string spacing cuts visual noise in diffs and code review.
Replaces Black + isort + Flake8 plugins with single Rust binary. Requires updating ruff config for style-guide: 2025; existing projects may see formatting diffs on upgrade. Worth upgrading now—breaking changes are one-time, benefits are per-commit.
“Ruff is an extremely fast Python linter and formatter, written in Rust”
“executing tens or hundreds of times faster than any individual tool”
“Ruff now formats expressions interpolated inside f-string curly braces”
“Ruff merges the implicitly concatenated strings if they all fit on a single line”
“This release brings with it a new style guide for the Ruff formatter, seven lint rule stabilizations, and two stabilized lint rule autofixes”
python-toolingcode-formattingruffruststyle-guide
Biome forks Rome, fixes governance and ownership
Rome's core team restarted the project as Biome to escape legal ambiguity, missing npm/Discord access, and trademark baggage after Rome Tools Inc. shut down.
Developers using rome package get no further releases; switching to @biomejs/biome is now the only path to active maintenance and new features. Migration is straightforward but requires config and CLI updates.
Replaces rome package entirely (last rome version 12.1.3 unmaintained). Requires: npm install @biomejs/biome, update rome.json schema URL, swap CLI commands in scripts, update VSCode extension settings. rome.json stays compatible for now but plan to migrate to biome.json. Ready to adopt now—backward compatibility eases transition.
“the rome package won't be maintained anymore by the core team, so you won't get any more releases”
“Biome is the official fork of Rome and it will continue to be Rome's legacy”
“Biome still accepts the rome.json file as a configuration, so you don't need to do anything yet”
Codex (GPT-5.4 mini with medium reasoning) now ships as the default agent in JetBrains AI after offline benchmarking on 353 real tasks across Java, C#, and Python — you can still switch agents anytime.
Eliminates agent selection friction for new users while maintaining choice. The benchmark data (solve rate, cost, latency across ecosystems) is reproducible and published, so you can validate whether this default matches your workflow.
Replaces the prior Chat-first UX where users manually selected agents. Requires JetBrains AI subscription; no code changes needed. Worth trying now if you use JetBrains IDEs—default is sane and you retain full agent switching. For Java it solves 43.9% of real tasks at $0.13/task; C# at 62.6%; Python at 20.2%.
“Codex is the recommended starting point in JetBrains AI”
“benchmark dataset built from real software engineering tasks across three ecosystems: Java (225 tasks), C# (38 tasks), and Python (90 tasks)”
“GPT-5.4 mini with default medium reasoning had the best solve rate within reasonable cost range across all three ecosystems”
“Cost per successful solve USD 0.4941 for Codex vs USD 0.4337 for Junie weighted average”
“Setups that would push more than 2% of users over $20/month were ruled out”