workerd 1.20260915.1: IP del cliente en el handler de connect() TCP
El runtime de Cloudflare Workers ahora expone IP y puerto del cliente como remoteAddress en el handler de connect() TCP — útil si estás armando proxies o servicios TCP sobre Workers y necesitás rate limiting o logging por origen. Además, el isolate pasa a ser el namespace de puertos para los servidores node:http y node:net, lo que ordena bastante la compatibilidad con Node en edge. Los Python Workers también reemplazaron los parches de Pyodide basados en strings por parches AST.
NestJS 11.2.4 tapa un bypass de middleware en platform-fastify
Parche en la línea 11.x: platform-fastify tenía un bypass de middleware vía absolute-form request target (una request con URL absoluta tipo GET http://host/path en vez de GET /path no matcheaba las rutas registradas del middleware). Si usás Nest con adapter Fastify y metés guards o auth en middleware, esto es un agujero de autorización, no un bug cosmético. También cayó un fix para patterns no serializables en microservices que tiraban la app abajo.
NestJS 12.0.2: microservices y websockets más resilientes
La línea 12 sigue puliendo detalles que en producción se sienten: el stream de mensajes de platform-socket.io ya no se muere cuando un handler tira una excepción, los microservices ahora desenganchan sus signal listeners al desconectarse (adiós leaks en shutdown), y las requests cuya reply subscription es rechazada fallan explícitamente en vez de quedar colgadas esperando para siempre. Ese último es el clásico timeout fantasma que te come una tarde entera de debugging.
better-auth 1.7.5 agrega database.schemaName para PostgreSQL
Novedad chica pero muy pedida: database.schemaName para conexiones directas a PostgreSQL, así podés aislar las tablas de auth en su propio schema en lugar de ensuciar public. También arreglaron migraciones que confundían tablas con views entre schemas, validación de índices MySQL sobre columnas string existentes, y sacaron el peer dependency opcional de better-sqlite3 que rompía instalaciones.
BullMQ 6.3.6 arregla duplicate() anidado en el adapter lazy de Bun
Si estás corriendo colas BullMQ sobre Bun, este parche te interesa: el adapter lazy de Bun rompía cuando llamabas duplicate() de forma anidada sobre la conexión Redis — patrón habitual cuando creás workers y QueueEvents a partir de una conexión compartida. Chiquito, pero el tipo de bug que te deja workers zombies sin explicación aparente.
CPython da marcha atrás: Rust será opcional, no obligatorio
La propuesta original (noviembre 2025) era meter Rust como dependencia obligatoria de CPython. En mayo de 2026 la enmendaron a opcional, y ahora el plan apunta a Python 3.16 (octubre 2027) con la nueva API de Rust usando zlib como caso de prueba. Guido resumió el razonamiento: un rewrite completo en Rust no funciona, pero empezar por componentes menos esenciales y expandirse de a poco sí. Quedan pendientes soporte GCC en plataformas raras, verificación de memory safety cross-language y ajustes al trait Drop. Si mantenés imágenes de CI o build pipelines con Python, mirá esto de reojo — toca toda la cadena de build.
Turborepo 2.10.13 entiende workspaces de uv y virtualenvs de Python
Turborepo deja de ser estrictamente un orquestador JS/TS: esta release lee metadata de workspaces de uv, soporta virtualenvs de Python y scopea el lockfile de uv correctamente. Si tenés un monorepo mixto con servicios Node y workers Python (muy común en stacks con ML o data pipelines), esto es un golazo para la DX — ya no necesitás dos orquestadores peleando por el mismo grafo de tareas. También arreglaron selecciones del TUI copiadas localmente sobre SSH.
Jotai 3.0 es ESM-only y se saca de encima CommonJS, UMD y SystemJS
Sin APIs nuevas y sin cambios de comportamiento: Jotai 3.0 es puro trabajo de limpieza. Se van los builds CommonJS, UMD y SystemJS, se van atomFamily (migró al paquete jotai-family con la misma API), loadable, el argumento setSelf y el plugin jotai/babel. El target pasa a ES2020 y sube el piso de Node, React y TypeScript. Si tu SSR todavía hace require() de Jotai en algún lado, este upgrade te va a doler — revisá el bundler antes de tocar el package.json.
Tendencias Destacadas
Semana de auth rota: ZITADEL escalando privilegios por Token Exchange y NestJS tapando un bypass de middleware en Fastify. Moraleja repetida: la autorización no se valida una sola vez en el borde, se valida en cada salto — y el absolute-form request target sigue siendo el clásico que rompe routers y middlewares por igual.
El monorepo dejó de ser monolingüe. Turborepo leyendo workspaces de uv y virtualenvs de Python confirma la tendencia: los stacks reales mezclan servicios Node con workers Python, y la herramienta de build tiene que entender el grafo completo, no solo la mitad que le gusta.
Migrar de SQL sharded a un cache in-memory no es magia, es método: Agoda validó con dual-read hasta >99,9% de paridad antes de cortar. Los números de DragonflyDB impresionan (~300k req/s a 8 ms P99), pero lo que hay que copiar es el proceso de validación, no el datastore.
workerd 1.20260915.1: client IP exposed in the TCP connect() handler
Cloudflare's Workers runtime now exposes client IP and port as remoteAddress in the TCP connect() handler — handy if you're building proxies or TCP services on Workers and need per-origin rate limiting or logging. The isolate also becomes the port namespace for node:http and node:net servers, which tidies up Node compatibility at the edge. Python Workers swapped string-based Pyodide patches for AST patches.
NestJS 11.2.4 patches a middleware bypass in platform-fastify
Patch on the 11.x line: platform-fastify had an absolute-form request target middleware bypass (a request with an absolute URL such as GET http://host/path instead of GET /path failed to match registered middleware routes). If you run Nest on the Fastify adapter and put guards or auth logic in middleware, that's an authorization hole, not a cosmetic bug. It also fixes unserializable microservice patterns that crashed the app.
NestJS 12.0.2: sturdier microservices and websockets
The 12.x line keeps polishing things you actually feel in production: the platform-socket.io message stream no longer dies when a handler throws, microservices now detach their signal listeners on disconnect (no more shutdown leaks), and requests whose reply subscription is rejected fail explicitly instead of hanging forever. That last one is the classic phantom timeout that eats an entire afternoon of debugging.
better-auth 1.7.5 adds database.schemaName for PostgreSQL
Small but long-requested: database.schemaName for direct PostgreSQL connections, so you can isolate auth tables in their own schema instead of polluting public. It also fixes migrations that confused tables with views across schemas, MySQL index validation on existing string columns, and drops the unused optional better-sqlite3 peer dependency that was breaking installs.
BullMQ 6.3.6 fixes nested duplicate() on the lazy Bun adapter
If you run BullMQ queues on Bun, this one matters: the lazy Bun adapter broke on nested duplicate() calls against the Redis connection — a common pattern when you spin up workers and QueueEvents from a shared connection. Tiny patch, but exactly the kind of bug that leaves you with zombie workers and no obvious explanation.
CPython backs off: Rust will be optional, not mandatory
The original November 2025 proposal made Rust a mandatory CPython dependency. It was amended to optional in May 2026, and the plan now targets Python 3.16 (October 2027) shipping the new Rust API with zlib as the test case. Guido summed up the reasoning: a full Rust rewrite won't work, but starting with less-essential components and expanding gradually will. Open problems: GCC support on obscure platforms, cross-language memory-safety verification, and changes to Rust's Drop trait. If you maintain CI images or Python build pipelines, keep an eye on this — it touches the whole build chain.
Turborepo 2.10.13 understands uv workspaces and Python virtual environments
Turborepo is no longer strictly a JS/TS orchestrator: this release reads uv workspace metadata, supports Python virtual environments, and scopes the uv lockfile correctly. If you run a mixed monorepo with Node services and Python workers (very common in ML or data-pipeline stacks), this is a serious DX win — you no longer need two orchestrators fighting over the same task graph. It also fixes TUI selections copying locally over SSH.
Jotai 3.0 goes ESM-only, dropping CommonJS, UMD and SystemJS
No new APIs and no behavior changes: Jotai 3.0 is pure cleanup. CommonJS, UMD and SystemJS builds are gone, along with atomFamily (moved to the jotai-family package with an identical API), loadable, the setSelf argument and the jotai/babel plugin. The target moves to ES2020 and the Node, React and TypeScript floors go up. If your SSR layer still require()s Jotai anywhere, this upgrade will hurt — check your bundler before touching package.json.
Notable Trends
A broken-auth week: ZITADEL escalating privileges through Token Exchange and NestJS patching a middleware bypass on Fastify. Same lesson twice: authorization isn't validated once at the edge, it's validated at every hop — and the absolute-form request target remains the classic that breaks routers and middleware alike.
The monorepo stopped being monolingual. Turborepo reading uv workspaces and Python virtual environments confirms the trend: real stacks mix Node services with Python workers, and the build tool has to understand the whole graph, not just the half it likes.
Migrating from sharded SQL to an in-memory cache isn't magic, it's method: Agoda ran dual-read validation to >99.9% parity before cutting over. DragonflyDB's numbers are impressive (~300k req/s at 8 ms P99), but the thing worth copying is the validation process, not the datastore.
workerd 1.20260915.1 : IP client exposée dans le handler connect() TCP
Le runtime Cloudflare Workers expose désormais l'IP et le port du client via remoteAddress dans le handler connect() TCP — pratique pour les proxies ou services TCP sur Workers nécessitant rate limiting ou logging par origine. L'isolate devient aussi le namespace de ports pour les serveurs node:http et node:net, ce qui clarifie la compatibilité Node en edge. Les Python Workers passent de patches Pyodide textuels à des patches AST.
NestJS 11.2.4 corrige un contournement de middleware dans platform-fastify
Correctif sur la ligne 11.x : platform-fastify présentait un contournement de middleware via absolute-form request target (une requête avec URL absolue comme GET http://host/path au lieu de GET /path ne correspondait pas aux routes de middleware enregistrées). Si vous utilisez Nest avec l'adapter Fastify et des guards ou de l'auth en middleware, c'est une faille d'autorisation. Corrige aussi les patterns non sérialisables en microservices qui faisaient planter l'app.
NestJS 12.0.2 : microservices et websockets plus robustes
La ligne 12.x continue de peaufiner ce qui compte en production : le flux de messages platform-socket.io ne meurt plus quand un handler lève une exception, les microservices détachent leurs signal listeners à la déconnexion (fini les fuites au shutdown), et les requêtes dont la reply subscription est rejetée échouent explicitement au lieu d'attendre indéfiniment. Ce dernier point, c'est le timeout fantôme classique.
better-auth 1.7.5 ajoute database.schemaName pour PostgreSQL
Petit mais très demandé : database.schemaName pour les connexions PostgreSQL directes, afin d'isoler les tables d'auth dans leur propre schema plutôt que de polluer public. Corrige aussi les migrations confondant tables et views entre schemas, la validation d'index MySQL sur colonnes string existantes, et supprime la peer dependency optionnelle better-sqlite3 qui cassait les installations.
BullMQ 6.3.6 corrige duplicate() imbriqué sur l'adapter lazy de Bun
Si vous exécutez des queues BullMQ sur Bun, ce correctif compte : l'adapter lazy de Bun échouait sur les appels duplicate() imbriqués sur la connexion Redis — un pattern courant quand on crée workers et QueueEvents depuis une connexion partagée. Petit patch, mais typiquement le bug qui laisse des workers zombies sans explication.
CPython fait marche arrière : Rust sera optionnel, pas obligatoire
La proposition initiale (novembre 2025) faisait de Rust une dépendance obligatoire de CPython. Amendée en mai 2026 pour devenir optionnelle, elle vise désormais Python 3.16 (octobre 2027) avec la nouvelle API Rust et zlib comme cas de test. Guido résume : une réécriture complète en Rust ne marchera pas, mais commencer par des composants moins essentiels et étendre progressivement, si. Restent en suspens : le support GCC sur plateformes obscures, la vérification cross-langage de la memory safety et des ajustements au trait Drop.
Turborepo 2.10.13 comprend les workspaces uv et les virtualenvs Python
Turborepo n'est plus strictement un orchestrateur JS/TS : cette version lit les métadonnées de workspace uv, supporte les virtualenvs Python et scope correctement le lockfile uv. Pour un monorepo mixte avec services Node et workers Python (courant dans les stacks ML ou data pipelines), c'est un vrai gain de DX — plus besoin de deux orchestrateurs se disputant le même graphe de tâches. Corrige aussi la copie locale des sélections TUI via SSH.
Jotai 3.0 passe en ESM-only et abandonne CommonJS, UMD et SystemJS
Aucune nouvelle API, aucun changement de comportement : Jotai 3.0 est un pur travail de nettoyage. Exit les builds CommonJS, UMD et SystemJS, ainsi que atomFamily (déplacé vers le paquet jotai-family avec une API identique), loadable, l'argument setSelf et le plugin jotai/babel. La cible passe à ES2020 et les versions minimales de Node, React et TypeScript augmentent. Si votre SSR fait encore un require() de Jotai, la mise à jour sera douloureuse.
Tendances Notables
Semaine d'auth cassée : ZITADEL avec une élévation de privilèges via Token Exchange et NestJS corrigeant un contournement de middleware sur Fastify. Même leçon deux fois : l'autorisation ne se valide pas une seule fois en périphérie, mais à chaque saut — et l'absolute-form request target reste le classique qui casse routers et middlewares.
Le monorepo n'est plus monolingue. Turborepo lisant les workspaces uv et les virtualenvs Python confirme la tendance : les stacks réelles mêlent services Node et workers Python, et l'outil de build doit comprendre le graphe entier, pas seulement la moitié qui l'arrange.
Migrer d'un SQL shardé vers un cache in-memory n'est pas magique, c'est méthodique : Agoda a validé en dual-read jusqu'à >99,9% de parité avant de basculer. Les chiffres de DragonflyDB impressionnent (~300k req/s à 8 ms P99), mais ce qu'il faut copier, c'est le processus de validation, pas le datastore.