“10 cose che rimpiango di Node.js”
Nel giugno 2018 Ryan Dahl — creatore di Node.js (2009) — presenta a JSConf EU un talk diventato famoso: “10 Things I Regret About Node.js”. Le critiche:
- Assenza di TypeScript nativo
- Promesse arrivate tardi
- Sistema di moduli confuso (CommonJS vs ESM)
- node_modules gigantesco e ramificato
- package.json troppo descrittivo
- Binding V8 complicato
- Permessi assenti (un modulo ha pieno accesso filesystem)
- GYP e build system storici
- Librerie non-standard
- Errori di design iniziali
Dahl annuncia Deno, un nuovo runtime che risolve queste critiche. Due anni di sviluppo; Deno 1.0 è rilasciato il 13 maggio 2020. Licenza MIT.
Differenze chiave con Node.js
- TypeScript nativo — no Babel, no ts-node:
deno run script.tsfunziona - Sicuro di default — richiede flag espliciti per permessi:
--allow-net,--allow-read,--allow-write,--allow-env,--allow-run - Runtime Rust + V8 — architettura più sicura e performante
- URL imports —
import { serve } from "https://deno.land/std/http/server.ts"; no package.json né node_modules - Web Platform API —
fetch,WebSocket,Blob,crypto.subtledisponibili in runtime come nel browser - Standard library unificata in
deno.land/std - Testing e formatter e linter built-in
Eppure Node.js domina
Nonostante la qualità tecnica, Deno fatica a conquistare il mercato Node.js per l’enorme ecosistema npm esistente. Dal Deno 1.29 (2022) il runtime supporta npm: specifier (import { z } from "npm:zod") colmando il gap di compatibilità.
Deno Deploy
Deno Deploy (2022) — piattaforma edge run-at-the-edge che esegue scripts Deno in regioni globali con latency minima. Competitor a Cloudflare Workers, Vercel Edge Functions.
Adozione
Adoption ancora di nicchia ma crescente:
- Startup cloud-native
- Academia — TypeScript semplice senza config
- Edge computing via Deno Deploy
Nel contesto italiano
Presenza limitata ma crescente in team early-adopter.
Riferimenti: Deno 1.0 (13 maggio 2020). Ryan Dahl (ex Node.js), Deno Company. Licenza MIT. Runtime Rust + V8. TypeScript nativo. URL imports. Deno Deploy (2022). npm: compatibility (1.29+, 2022).
