5 pontos por GN⁺ 2024-02-06 | 2 comentários | Compartilhar no WhatsApp

As mudanças do Deno em 2023

  • O Deno agora entende arquivos package.json e pode importar módulos internos do Node como node:fs e node:crypto usando o especificador node:.
  • A nova API de servidor web Deno.serve foi estabilizada, e a taxa de processamento de HTTP melhorou cerca de 73% no ano.
  • deno compile passou a oferecer suporte a workers, imports dinâmicos e módulos npm.
  • O Deno passou a aproveitar melhor Web Streams (ReadableStream e WriteableStream) e AbortController em toda a API, reduzindo a distância entre a programação no navegador e no servidor.
  • O arquivo de configuração do Deno, deno.json, agora também pode ser usado como mapa de importação, simplificando o schema e adicionando suporte a glob e a útil propriedade de nível superior "exclude".
  • Jupyter, a ferramenta de notebooks open source, passou a oferecer suporte ao Deno com JavaScript e TypeScript.
  • WebGPU foi adicionado ao Deno após quase um ano de desenvolvimento.
  • O TypeScript sem configuração do Deno teve uma integração de editor melhorada por meio de avanços significativos no LSP e na integração com o VS Code.
  • Fresh, o framework web baseado em Deno, expandiu seus recursos com suporte a Tailwind, Partials, arquivos de layout e mais.
  • Deno Deploy ficou mais poderoso com blocos de construção nativos distribuídos globalmente, como Deno KV, Queues e Cron.
  • A empresa lançou o Subhosting self-service para permitir que a plataforma implante e execute JavaScript multi-tenant não confiável.

Melhor compatibilidade com Node e npm

  • O Deno ampliou a compatibilidade com o ecossistema Node ao incluir módulos internos do Node, como node:fs e node:child_process, por meio do especificador node:.
  • Para uma transição mais suave do Node para o Deno, foram introduzidos vários novos recursos:
    • A flag --unstable-byonm permite usar seu gerenciador de pacotes npm preferido dentro do Deno.
    • A flag --unstable-sloppy-imports flexibiliza o rigor dos imports de módulos para acomodar diferentes estilos e práticas de código.
    • A flag --unstable-unsafe-proto oferece suporte a Object.prototype.__proto__, do qual muitos pacotes npm dependem.
  • Com a estabilização do Node-API, agora é possível usar pacotes npm que dependem de Node-API sem a flag --unstable, ampliando a cobertura de suporte.

Um servidor web mais simples e rápido com Deno.serve()

  • A função Deno.serve() foi introduzida e estabilizada, permitindo que desenvolvedores iniciem um servidor com o mínimo de código.
  • O desempenho melhorou significativamente graças a otimizações direcionadas na biblioteca core e no mecanismo de event loop.
  • A taxa de processamento de HTTP do Deno aumentou de forma perceptível em testes de benchmark usando a configuração padrão de servidor "Hello, world".

Um deno.json mais flexível

  • O Deno segue o princípio de poder ser usado sem configurações complexas e continua aprimorando o arquivo de configuração deno.json para manter a facilidade de uso:
    • Agora é possível usar deno.json também como mapa de importação.
    • deno fmt passou a oferecer suporte a ponto e vírgula, dando mais flexibilidade ao estilo de código.
    • A integração com package.json facilita a transição entre ambientes Node e Deno.
    • A estrutura do deno.json foi simplificada para que desenvolvedores possam navegar nela de forma mais intuitiva.
    • A introdução de padrões glob permite um controle mais preciso sobre inclusão e exclusão de arquivos e diretórios.

Uma experiência de desenvolvimento mais fluida com LSP

  • A integração do protocolo Language Server Protocol (LSP) do Deno oferece recursos como ir para definição com precisão, IntelliSense abrangente e formatação de código fluida para projetos TypeScript.
  • Muito esforço foi dedicado à melhoria do LSP, tornando a programação no Deno mais fluida e intuitiva.

WebGPU

  • O WebGPU integra ao Deno uma tecnologia de ponta que permite aos desenvolvedores aproveitar diretamente o desempenho do hardware de GPU usando JavaScript.
  • O WebGPU pode ser usado por trás da flag --unstable-webgpu e representa um marco importante na expansão das capacidades das aplicações em Deno.

Notebooks Jupyter

  • Jupyter, a ferramenta de notebooks open source, passou a oferecer suporte ao Deno com JavaScript e TypeScript.
  • Isso permite realizar ciência de dados, visualização e mais usando JavaScript e TypeScript modernos e APIs padrão da web.

Crates Rust open source de destaque

  • O Deno está ligado a vários projetos open source e contribui ativamente para expandir seu conjunto de recursos e otimizar o desempenho.
  • Neste ano, o Deno lançou alguns crates Rust que também podem ser úteis de forma independente.

Fresh

  • Fresh é o framework web full stack moderno do Deno, que por padrão não envia JavaScript para o cliente, e continua sendo aprimorado para ser mais fácil de usar e melhorar o desempenho.

Expansão do negócio de nuvem do Deno

  • O Deno Subhosting deixou de ser apenas uma solução interna enquanto dava suporte às edge functions da Netlify e às lojas de e-commerce dos clientes da Deco.cx, tornando-se um serviço próprio disponível gratuitamente para qualquer pessoa.
  • O lançamento de componentes de nuvem como Deno KV, Queues e Cron representa avanço na visão de simplificar radicalmente o desenvolvimento web.

Deno 2

  • O Deno 2 deverá oferecer um runtime aprimorado, incluindo anúncios interessantes sobre melhor compatibilidade com Node e npm, além de como gerenciar e otimizar as dependências dos projetos.

Opinião do GN⁺:

  • É importante que o Deno esteja melhorando bastante a compatibilidade com Node.js e focando em simplificar o desenvolvimento web. Isso pode facilitar a migração de desenvolvedores já existentes de Node.js para o Deno e acelerar sua adoção.
  • A integração de recursos avançados como WebGPU mostra que o Deno está indo além de uma simples plataforma server-side e se tornando adequado para uma gama mais ampla de desenvolvimento de aplicações. Isso pode ser especialmente atraente para desenvolvedores que precisam de computação de alto desempenho com uso de GPU.
  • A evolução do framework Fresh e do Deno Deploy sugere que o Deno pode desempenhar um papel importante no desenvolvimento web full stack, reforçando sua posição como serviço baseado em nuvem. Esses avanços aumentam a possibilidade de o Deno se consolidar como um dos principais players do desenvolvimento web moderno.

2 comentários

 
[Este comentário foi ocultado.]
 
GN⁺ 2024-02-06
Comentários do Hacker News
  • Um usuário apontou que ainda não conseguiu encontrar uma forma de obter aplicações Deno em ambientes sem conexão com a internet, e que não há absolutamente nenhuma documentação sobre isso. Esse usuário acredita que, assim, o Deno não tem como ter futuro em ambientes corporativos.
  • Outro usuário demonstrou interesse no recurso WebGPU e explicou que está criando uma GUI desktop com JavaScript/TypeScript por meio do framework Slint, sem navegador nem webview. Ele espera que, se o Deno puder abrir janelas diretamente, seria possível distribuir wasm em vez de binários nativos para todas as plataformas. No entanto, acrescentou que o recurso WebGPU não inclui uma API para abrir janelas, então ainda seria necessária uma biblioteca adicional.
  • Um usuário disse esperar melhorias na situação de compilação do Deno, apontando que o executável gerado tem mais de 90 MB e apresenta erro ao ser comprimido, o que dificulta a distribuição como acontece com a linguagem Go. Ele mencionou que o Deno acabou ficando pior que a solução pkg do Node.js em termos de tamanho.
  • Outro usuário gostaria de ver um suporte maior para que o Deno possa ser embutido em processos host em Rust. Ele disse estar escrevendo um bundler de JavaScript e precisar de um runtime Node.js para executar plugins, mas observou que a crate deno-core é muito básica e difícil de embutir. Ele espera que o Deno possa se tornar um "runtime de plugins" no mundo das ferramentas JS, e explicou que, no momento, está se comunicando com um processo filho do Node.js via stdio a partir de um processo host em Rust.
  • Um usuário disse que não gosta de JavaScript, mas relatou uma opinião positiva após experimentar o Deno, afirmando que a experiência foi muito fluida e rápida.
  • Outro usuário afirmou que, em 2023, implantou pela primeira vez um app Deno não trivial em produção e que teve dificuldades no processo de aprendizado para sincronizar arquivos lock em um repositório com vários pontos de entrada, mas que, no geral, a experiência foi boa.
  • Sobre a notícia de que o Jupyter passou a oferecer suporte a JavaScript e TypeScript usando Deno, um usuário reagiu positivamente, mas também mencionou que o Python oferece excelente suporte para números e matemática, questionando se haveria quem quisesse usar isso.
  • Um usuário observou que é possível entrar na lista de espera do JSR vinculada no fim do artigo, e ficou curioso sobre o que a equipe do Deno está construindo.
  • Houve um usuário que compartilhou um link sobre a notícia de que o Deno Deploy reduziu as regiões do GCP de 35 para 12.
  • Um usuário disse que gostaria de usar o Fresh, framework de desenvolvimento web, mas apontou que o suporte atual apenas ao Tailwind parece imaturo. Ele também estranhou o fato de, na próxima iteração, a prioridade ser transições de view em vez de empacotamento de CSS.