Backend & Fullstack Daily — 22 Oct 2026: Node patches seven CVEs, eMudhra breaks the chain of trust and ApostropheCMS ships 20+ advisories
Prisma 8.0.0-rc.19: @default es de la base, @onCreate y @onUpdate para el cliente
Cambio semántico grande: @default ahora significa default de base de datos, y los valores que genera el cliente se escriben con @onCreate(...) y @onUpdate(...). Los defaults de fecha, hora y bytes pasan a usar tags, cualquier plan se puede renderizar a SQL sin base, y aparece Raw(sql`...`) para columnas de cualquier tipo. Los schemas de Prisma 7 con Unsupported(...) ahora cargan. Si estás probando la 8, seguí las recetas de upgrade rc.18 a rc.19.
Drizzle ORM 1.0.0-rc.5: fix de parsers en postgres-js y undefined prohibido en where
Dos breaking que te pueden morder. Los parsers transparentes que drizzle() le ponía a postgres-js pisaban los serializers del driver para timestamptz, json y jsonb: si tenías un JSON.stringify manual como workaround, sacalo o vas a doble-serializar. Y en relational queries, un undefined en el where ahora tira error; para filtros opcionales usá el símbolo EmptyFilter de drizzle-orm/relations. Bien ahí: filtros que desaparecen en silencio son un bug esperando a pasar.
Aurora y RDS suman On-Demand Capacity Reservations
Ahora podés reservar capacidad de cómputo para instancias de base en una o varias AZs, así los create, restore, scale y start no fallan por falta de capacidad justo en el peor momento. Se usan al toque sin compromiso o se programan entre 5 y 120 días antes, y se cobran a tarifa On-Demand mientras están activas. Ideal para failovers planificados y eventos de alto tráfico.
BullMQ 6.4.0: mensajería realtime confiable
Minor con una sola feature, pero jugosa: soporte para mensajería realtime confiable sobre Redis/Valkey. Si estabas mezclando pub/sub crudo con colas para notificaciones en vivo, vale la pena mirar si esto te simplifica la arquitectura.
Docker Engine 29.9.2 y Compose 5.6.1: Go con las intermedias de eMudhra bloqueadas
La bajada a tierra del caso eMudhra. Docker 29.9.2 (y Compose 5.6.1 al día siguiente) se compilan con el Go que corrige CVE-2026-111943: si tu registry privado usa un certificado encadenado a EM DV TLS CA - G3B, G3C u otra de las ocho intermedias, los pull y push van a fallar la verificación TLS. Antes de actualizar los runners de CI, revisá la cadena de tu registry.
Cilium 1.20: Gateway API 1.6, datapath eBPF abierto a plugins y netkit automático
Salta de Gateway API 1.4 a 1.6 con ExternalAuth, ListenerSets, CORS, TCPRoute y UDPRoute. El datapath eBPF se abre a plugins de terceros (beta, como procesos separados) y hay un modo automático que usa netkit cuando el kernel lo soporta y cae a veth si no. Para mTLS sin sidecar, ztunnel suma opciones de CA, identidades SPIRE y métricas Prometheus; el viejo Mutual Authentication queda deprecado.
Netflix une AWS IAM y su identidad interna con workload attestation
Caso de estudio de identidad entre fronteras que vale oro. Los jobs de Spark en EMR canjean su identidad IAM por un certificado corto de Metatron, la PKI interna: un control plane firma metadata por job y el servicio de identidad solo emite si un GetCallerIdentity pre-firmado de STS coincide. El driver atesta una vez, reparte credenciales a los executors por RPC cifrado y re-atesta antes de que venza. Lección para tu arquitectura: identidad de workload verificable en lugar de secretos compartidos, y un solo punto de renovación.
Nx 24.0.0 GA: affected por defecto, continuous tasks con readiness y limpieza de deprecados
La major salió del RC el mismo día. Ahora se seleccionan las tareas affected por defecto, las tareas pueden esperar a que una dependencia continua (tipo dev server) esté lista, y dependsOn puede excluir los inputs de esa dependencia. Breaking: chau a los generators SCAM de Angular, al alias --includeDependentProjects de nx watch y al fallback legacy de cache por nombre de target; los custom hashers de executors quedan deprecados. Corré nx migrate en una rama aparte.
pnpm 12.15.0: include en pnpm-workspace.yaml y metadata de registry validada
Golazo para monorepos grandes: pnpm-workspace.yaml puede delegar settings a otros YAML o a config dependencies con el nuevo campo include, cada setting con un único dueño. Además rechaza metadata de registry que nombra otro paquete que el pedido (anti-confusión), acepta respuestas comprimidas con zstd, respeta SOURCE_DATE_EPOCH en install y deploy para builds reproducibles, y acelera installs en workspaces.
Tendencias Destacadas
La confianza en la PKI fue el tema del día: el caso eMudhra obliga a recompilar binarios Go, refrescar imágenes base y revisar trust stores embebidos, no solo el del sistema.
Los ORMs TypeScript afilan sus contratos antes del 1.0/8.0: Prisma separa defaults de base y de cliente, Drizzle deja de tragarse undefined en los filtros.
Middleware antes que auth sigue siendo un clásico: el DoS de ApostropheCMS es otro recordatorio de autenticar antes de aceptar uploads.
Prisma 8.0.0-rc.19: @default belongs to the database, @onCreate and @onUpdate for the client
Big semantic change: @default now means a database default, and client-generated values are written @onCreate(...) and @onUpdate(...). Date, time and bytes defaults use tags, any plan can render to SQL without a database, and Raw(sql`...`) declares columns of any type. Prisma 7 schemas with Unsupported(...) now load. If you are trialing v8, follow the rc.18 to rc.19 upgrade recipes.
Drizzle ORM 1.0.0-rc.5: postgres-js parser fix and undefined banned in where
Two breaking changes that can bite. The transparent parsers drizzle() installed on postgres-js overrode the driver's own serializers for timestamptz, json and jsonb: if you added a manual JSON.stringify workaround, remove it or you will double-encode. And in relational queries, an undefined in where now throws; use the EmptyFilter symbol from drizzle-orm/relations for optional filters. Silently vanishing filters were a bug waiting to happen.
Aurora and RDS add On-Demand Capacity Reservations
You can now reserve compute capacity for DB instances in one or more AZs, so create, restore, scale and start operations do not fail for lack of capacity at the worst moment. Reservations work immediately with no commitment or can be scheduled 5 to 120 days ahead, billed at On-Demand rates while active. Handy for planned failovers and peak events.
BullMQ 6.4.0: reliable realtime messaging
A minor with a single but juicy feature: support for reliable realtime messaging on top of Redis/Valkey. If you mix raw pub/sub with queues for live notifications, check whether this simplifies your architecture.
Docker Engine 29.9.2 and Compose 5.6.1: Go with the eMudhra intermediates blocked
The eMudhra case, applied. Docker 29.9.2 (and Compose 5.6.1 the next day) build with the Go release that fixes CVE-2026-111943: if your private registry uses a certificate chained to EM DV TLS CA - G3B, G3C or another of the eight intermediates, pull and push will fail TLS verification. Check your registry chain before upgrading CI runners.
Cilium 1.20: Gateway API 1.6, eBPF datapath open to plugins and automatic netkit
Jumps from Gateway API 1.4 to 1.6 with ExternalAuth, ListenerSets, CORS, TCPRoute and UDPRoute. The eBPF datapath opens to third-party plugins (beta, as separate processes) and an automatic mode uses netkit when the kernel supports it, falling back to veth. For sidecarless mTLS, ztunnel adds CA options, SPIRE identities and Prometheus metrics; the older Mutual Authentication feature is deprecated.
Netflix bridges AWS IAM and internal identity with workload attestation
A cross-boundary identity case study worth studying. Spark jobs on EMR exchange their IAM identity for a short-lived certificate from Metatron, Netflix's internal PKI: a control plane signs per-job metadata and the identity service only issues when a pre-signed STS GetCallerIdentity request matches. The driver attests once, hands credentials to executors over encrypted RPC and re-attests before expiry. The lesson: verifiable workload identity instead of shared secrets, with a single renewal point.
Nx 24.0.0 GA: affected by default, continuous tasks with readiness and deprecation cleanup
The major left RC the same day. Affected tasks are now selected by default, tasks can wait for a continuous dependency (like a dev server) to be ready, and dependsOn can opt out of that dependency's inputs. Breaking: Angular SCAM generators, the nx watch --includeDependentProjects alias and the legacy target-name cache fallback are gone; executor custom hashers are deprecated. Run nx migrate on a separate branch.
pnpm 12.15.0: include in pnpm-workspace.yaml and validated registry metadata
Great for large monorepos: pnpm-workspace.yaml can delegate settings to other YAML files or config dependencies via the new include field, each setting with a single owner. It also rejects registry metadata naming a different package than requested, accepts zstd-compressed responses, honors SOURCE_DATE_EPOCH in install and deploy for reproducible builds, and speeds up workspace installs.
Notable Trends
PKI trust was the story of the day: the eMudhra case forces Go rebuilds, fresh base images and a review of embedded trust stores, not just the system one.
TypeScript ORMs are tightening contracts ahead of 1.0/8.0: Prisma separates database and client defaults, Drizzle stops swallowing undefined in filters.
Middleware before auth is still a classic: the ApostropheCMS DoS is another reminder to authenticate before accepting uploads.
Prisma 8.0.0-rc.19 : @default appartient à la base, @onCreate et @onUpdate pour le client
Gros changement sémantique : @default désigne désormais un défaut de base de données, et les valeurs générées par le client s'écrivent @onCreate(...) et @onUpdate(...). Les défauts de date, heure et octets utilisent des tags, tout plan peut être rendu en SQL sans base, et Raw(sql`...`) déclare des colonnes de tout type. Les schémas Prisma 7 avec Unsupported(...) se chargent maintenant.
Drizzle ORM 1.0.0-rc.5 : correctif des parseurs postgres-js et undefined interdit dans where
Deux changements cassants. Les parseurs transparents que drizzle() installait sur postgres-js écrasaient les sérialiseurs du driver pour timestamptz, json et jsonb : retirez tout JSON.stringify manuel ajouté en contournement. Et dans les requêtes relationnelles, un undefined dans where lève désormais une erreur ; utilisez le symbole EmptyFilter de drizzle-orm/relations pour les filtres optionnels.
Aurora et RDS ajoutent les On-Demand Capacity Reservations
Vous pouvez désormais réserver de la capacité de calcul pour les instances de base dans une ou plusieurs AZ, afin que create, restore, scale et start n'échouent pas faute de capacité. Les réservations s'utilisent immédiatement sans engagement ou se planifient de 5 à 120 jours à l'avance, facturées au tarif On-Demand.
BullMQ 6.4.0 : messagerie temps réel fiable
Une mineure avec une seule fonctionnalité, mais intéressante : la messagerie temps réel fiable sur Redis/Valkey. Si vous mélangez pub/sub brut et files pour les notifications en direct, regardez si cela simplifie votre architecture.
Docker Engine 29.9.2 et Compose 5.6.1 : Go avec les intermédiaires eMudhra bloqués
Le cas eMudhra, en pratique. Docker 29.9.2 (et Compose 5.6.1 le lendemain) sont compilés avec le Go qui corrige CVE-2026-111943 : si votre registry privé utilise un certificat chaîné à EM DV TLS CA - G3B, G3C ou un autre des huit intermédiaires, pull et push échoueront à la vérification TLS. Vérifiez la chaîne avant de mettre à jour vos runners CI.
Cilium 1.20 : Gateway API 1.6, datapath eBPF ouvert aux plugins et netkit automatique
Passe de Gateway API 1.4 à 1.6 avec ExternalAuth, ListenerSets, CORS, TCPRoute et UDPRoute. Le datapath eBPF s'ouvre aux plugins tiers (bêta, en processus séparés) et un mode automatique utilise netkit quand le noyau le permet, sinon veth. Pour le mTLS sans sidecar, ztunnel ajoute des options de CA, les identités SPIRE et des métriques Prometheus.
Netflix relie AWS IAM et son identité interne par attestation de workload
Une étude de cas d'identité inter-frontières à lire. Les jobs Spark sur EMR échangent leur identité IAM contre un certificat court de Metatron, la PKI interne : un plan de contrôle signe des métadonnées par job et le service d'identité n'émet que si une requête STS GetCallerIdentity pré-signée correspond. Le driver s'atteste une fois, transmet les identifiants aux executors via RPC chiffré et se ré-atteste avant expiration.
Nx 24.0.0 GA : affected par défaut, tâches continues avec readiness et nettoyage des dépréciations
La majeure est sortie du RC le jour même. Les tâches affected sont sélectionnées par défaut, les tâches peuvent attendre qu'une dépendance continue (comme un serveur de dev) soit prête, et dependsOn peut ignorer ses inputs. Cassant : suppression des générateurs SCAM Angular, de l'alias nx watch --includeDependentProjects et du fallback de cache par nom de cible. Lancez nx migrate sur une branche dédiée.
pnpm 12.15.0 : include dans pnpm-workspace.yaml et métadonnées de registry validées
Idéal pour les grands monorepos : pnpm-workspace.yaml peut déléguer des réglages à d'autres YAML ou à des config dependencies via le nouveau champ include, chaque réglage ayant un seul propriétaire. Il rejette aussi les métadonnées de registry nommant un autre paquet, accepte zstd, respecte SOURCE_DATE_EPOCH dans install et deploy et accélère les installations.
Tendances Notables
La confiance PKI a dominé la journée : le cas eMudhra impose de recompiler les binaires Go, de rafraîchir les images de base et de vérifier les magasins de confiance embarqués.
Les ORM TypeScript durcissent leurs contrats avant 1.0/8.0 : Prisma sépare défauts de base et de client, Drizzle cesse d'ignorer undefined dans les filtres.
Un middleware avant l'authentification reste un classique : le DoS d'ApostropheCMS rappelle d'authentifier avant d'accepter des uploads.