Deno em 2023

Deno, um runtime de JavaScript/TypeScript criado pelo autor original do Node.js, está atraindo interesse por suas ferramentas integradas, design com foco em TypeScript, alinhamento com padrões da web e modelo de permissões seguro por padrão, com alguns desenvolvedores já rodando em produção e usando sua hospedagem gerenciada (Deno Deploy) e o KV store. Ao mesmo tempo, comentaristas questionam sua viabilidade de longo prazo e o lock-in do ecossistema, preocupam-se com problemas como grandes tamanhos de binários compilados, opções limitadas de multithreading e redução de regiões de borda, e debatem se ele pode realisticamente substituir ou complementar o Node.js dominante e o competidor emergente Bun. O lançamento de um novo registro de pacotes (JSR), do framework web Fresh e de recursos como suporte a WebGPU é visto como uma tentativa de impulsionar o ecossistema JavaScript, mas também levanta preocupações sobre fragmentação e sobre se a equipe do Deno consegue sustentar simultaneamente um runtime e uma plataforma em nuvem.

Deno Deploy, Regiões e Viabilidade do Negócio

  • Relata-se que o Deno Deploy encolheu de 35 para 12 regiões da GCP.
  • Alguns veem isso como um corte de custos sensato para uma startup; outros temem que sinalize crescimento fraco e possa afastar usuários que precisam de regiões específicas.
  • Preocupação com risco de fornecedor: se a hospedagem falhar, o runtime/ecossistema do Deno sobreviverá? Muitos presumem que sim por ser open source e permitir auto-hospedagem, mas isso não é garantido.

JSR e Ecossistema de Pacotes

  • JSR é entendido como um registro de pacotes JavaScript com foco em TypeScript e uma alternativa de fato ao npm.
  • Reações mistas: mensagens anteriores do Deno sugeriam que imports por URL evitariam a necessidade de um registro; agora parece que estão mudando de rumo, possivelmente aprendendo com a experiência.

Compatibilidade com Node/Bun e Proposta de Valor

  • O Deno se moveu em direção à compatibilidade com Node (por exemplo, package.json, integração com npm), em parte porque a não compatibilidade prejudicava a adoção.
  • Bun é visto como uma substituição mais rápida e direta do Node, enquanto o Deno busca “reimaginar o Node” com APIs padrão da web e ferramentas integradas (TS, testes, linting, formatação, bundling).
  • Alguns argumentam que, se o Node adotasse recursos integrados semelhantes, Deno/Bun perderiam grande parte do apelo.

Experiência do Desenvolvedor: Prós e Contras

  • Pontos pró-Deno:
    • Instalação em binário único; atualizações fáceis.
    • Suporte a TS pronto para uso, incluindo REPL.
    • Padrões sensatos; um arquivo de configuração em vez de muitos.
    • stdlib e ferramentas embutidas reduzem a proliferação de dependências e o risco da cadeia de suprimentos.
    • Bom para scripts pontuais e CLIs; pode compilar para um binário único.
  • Críticas:
    • Imports por URL podem ser incômodos (especialmente em repositórios privados).
    • O modelo de permissões pode parecer trabalhoso; alguns acabam usando --allow-all amplo.
    • Executar múltiplos processos de CPU / clustering é mais fraco do que a história de cluster+pm2 do Node para implantações em bare metal.

Tamanho da Compilação e Implantação

  • Binários compilados cresceram de ~50MB para ~90MB+, o que alguns consideram grande demais para implantação no estilo Go, limites de serverless ou muitas ferramentas pequenas.
  • Outros argumentam que 90–100MB é aceitável para muitos casos de servidor/CLI, especialmente por ser autocontido; críticos respondem que o tamanho importa para FaaS, CI/CD e muitas instâncias.
  • Membros da equipe do Deno relatam trabalho em andamento que já reduziu o tamanho base do binário em cerca de 40% em testes, com mais melhorias esperadas.

Frameworks, Hospedagem e Next.js/Fresh

  • O framework Fresh do Deno é visto como concorrente do Next.js; alguns temem que sua existência reduza o incentivo para fazer o Next.js funcionar bem no Deno.
  • Outros argumentam que o Next.js/Vercel também são fortemente acoplados, então é razoável que o Deno promova sua própria stack enquanto ainda melhora o suporte ao Next.js.
  • Fresh é considerado promissor, mas “ainda não pronto” para projetos grandes; o tooling de CSS (além de Tailwind/CSS puro) é visto por alguns como imaturo.
  • O Deno Deploy é elogiado pela simplicidade, mas criticado por cold starts e, agora, por ter menos regiões.

Deno KV e Dados

  • O Deno KV é comparado ao datastore do App Engine: chave-valor com indexação manual e transações.
  • Funciona bem para registros pequenos; os limites rígidos de tamanho o tornam inadequado para blobs grandes.
  • O tooling de desenvolvimento local para KV é descrito como agradável; a experiência em produção no tópico é limitada, mas cautelosamente positiva.

Segurança e Sandboxing

  • O modelo de permissões do Deno (sem acesso a FS/rede/ambiente por padrão) é visto como um diferencial central e útil para limitar módulos de terceiros (por exemplo, rede apenas para hosts específicos).
  • Críticos observam que isolamento semelhante pode ser obtido via contêineres ou sandboxing do SO; outros apontam que permissões embutidas funcionam em múltiplas plataformas sem o overhead de contêineres e agregam valor mesmo quando não há contêinerização.

Multithreading e Concorrência

  • Surge a კით de por que alternativas ao Node (incluindo o Deno) não têm “verdadeiro” multithreading além de workers.
  • Alguns argumentam que cargas de trabalho em JS são naturalmente assíncronas e podem aproveitar workers/C++ addons; outros dizem que multithreading real seria amplamente útil, mas é difícil de adaptar ao ecossistema assíncrono existente sem problemas de data races.

Novos Casos de Uso e Integrações

  • Jupyter + Deno é bem-vindo para pessoas fluentes em JS/TS que só ocasionalmente trabalham com dados, evitando o atrito de dependências do Python.
  • Os hooks de WebGPU e janela do Deno despertam interesse para construir GUIs desktop em JS/TS sem empacotar um navegador completo (Electron); porém, a criação de janelas e o input/acessibilidade ainda dependem de bibliotecas nativas extras, então a história está incompleta.

Sentimento Geral

  • Muitos expressam forte entusiasmo pelo design, pelas ferramentas e pela marca do Deno, e relatam experiências de produção tranquilas para apps pequenos e médios.
  • Céticos questionam a viabilidade de longo prazo, os tamanhos dos binários, certos recursos ausentes (clustering, ecossistema rico de GUI, tooling de CSS) e a necessidade de mais um runtime/registro de JS.