O autor do Node.js apresentou a plataforma JavaScript segura Deno 1.0

Após dois anos de desenvolvimento apresentado primeiro grande lançamento Dê-me 1.0, uma plataforma para execução autônoma de aplicativos em JavaScript e TypeScript, que pode ser usada para criar manipuladores que rodam no servidor. A plataforma é desenvolvida por Ryan Dahl (Ryan Dahl), criador do Node.js. Assim como o Node.js, o Deno usa um mecanismo JavaScript V8, que também é usado em navegadores baseados em Chromium. Ao mesmo tempo, Deno não é um fork do Node.js, mas um novo projeto criado do zero. Código do projeto distribuído por sob licença do MIT. Montagens preparado para Linux, Windows e macOS.

O número significativo de versões está associado à estabilização das APIs do namespace Deno, responsáveis ​​​​pela interação das aplicações com o SO. Interfaces de software que até agora não estabilizado, estão ocultos por padrão e disponíveis apenas quando executados no modo “--unstable”. À medida que novas versões são formadas, essas APIs se tornarão gradualmente estáveis. A API no namespace global, que inclui funções comuns como setTimeout() e fetch(), é o mais próximo possível da API de navegadores convencionais e é desenvolvida de acordo com os padrões da Web para navegadores. As APIs fornecidas pelo Rust, que são utilizadas diretamente no código da plataforma, bem como a interface para desenvolvimento de plugins para o runtime Deno, ainda não foram estabilizadas e continuam em desenvolvimento.

Os principais motivos para a criação de uma nova plataforma JavaScript foram o desejo de eliminar erros conceituais, admitido na arquitetura Node.js e fornece aos usuários um ambiente mais seguro. Para melhorar a segurança, o mecanismo V8 é escrito em Rust, o que evita muitas das vulnerabilidades que surgem da manipulação de memória de baixo nível, como acesso pós-liberação, desreferências de ponteiro nulo e saturação de buffer. A plataforma é usada para processar solicitações em modo sem bloqueio Tóquio, também escrito em Rust. O Tokio permite criar aplicativos de alto desempenho baseados em arquitetura orientada a eventos, suportando multi-threading e processando solicitações de rede em modo assíncrono.

O principal características Deno:

  • Configuração padrão orientada à segurança. O acesso a arquivos, rede e acesso a variáveis ​​de ambiente estão desabilitados por padrão e devem ser habilitados explicitamente. Por padrão, os aplicativos são executados em ambientes sandbox isolados e não podem acessar os recursos do sistema sem conceder permissões explícitas;
  • Suporte integrado para TypeScript além do JavaScript. O compilador TypeScript padrão é usado para verificar tipos e gerar JavaScript, o que leva a um impacto no desempenho em comparação com a análise de JavaScript na V8. No futuro, planejamos preparar nossa própria implementação do sistema de verificação de tipo TypeScript, que melhorará o desempenho do processamento TypeScript em uma ordem de magnitude;
  • O tempo de execução vem na forma de um único arquivo executável independente (“deno”). Para rodar aplicações usando Deno basta baixar para sua plataforma existe um arquivo executável, com cerca de 20 MB, que não possui dependências externas e não requer nenhuma instalação especial no sistema. Além disso, deno não é um aplicativo monolítico, mas uma coleção de pacotes de caixas em Rust (deno_core, enferrujado_v8), que pode ser usado separadamente;
  • Ao iniciar o programa, bem como para carregar módulos, você pode usar o endereçamento URL. Por exemplo, para executar o programa Welcome.js, você pode usar o comando “deno https://deno.land/std/examples/welcome.js”. O código de recursos externos é baixado e armazenado em cache no sistema local, mas nunca é atualizado automaticamente (a atualização requer a execução explícita do aplicativo com o sinalizador “--reload”);
  • Processamento eficiente de solicitações de rede via HTTP em aplicativos; a plataforma foi projetada para criar aplicativos de rede de alto desempenho;
  • A capacidade de criar aplicativos web universais que podem ser executados tanto no Deno quanto em um navegador normal;
  • disponibilidade conjunto padrão de módulos, cujo uso não requer ligação a dependências externas. Os módulos da coleção padrão passaram por auditorias adicionais e testes de compatibilidade;
  • Além do tempo de execução, a plataforma Deno também atua como gerenciador de pacotes e permite acessar módulos por URL dentro do código. Por exemplo, para carregar um módulo, você pode especificar no código “importar * como log de “https://deno.land/std/log/mod.ts”. Os arquivos baixados de servidores externos via URL são armazenados em cache. A vinculação às versões do módulo é determinada pela especificação dos números de versão dentro da URL, por exemplo, “https://unpkg.com/[email protegido]/dist/liltest.js";
  • A estrutura inclui um sistema integrado de inspeção de dependências (o comando “deno info”) e um utilitário para formatação de código (deno fmt);
  • Todos os scripts de aplicativos podem ser combinados em um arquivo JavaScript.

Diferenças do Node.js:

  • Deno não usa gerenciador de pacotes npm
    e não está vinculado a repositórios, os módulos são endereçados por meio de uma URL ou de um caminho de arquivo, e os próprios módulos podem ser colocados em qualquer site;
  • Deno não usa “package.json” para definir módulos;
  • Diferença da API, todas as ações assíncronas no Deno retornam uma promessa;
  • Deno requer definição explícita de todas as permissões necessárias para arquivos, redes e variáveis ​​de ambiente;
  • Todos os erros que não são fornecidos pelos manipuladores levam ao encerramento do aplicativo;
  • Deno usa o sistema de módulos ECMAScript e não suporta require();
  • O servidor HTTP integrado do Deno é escrito em TypeScript e executado em soquetes TCP nativos, enquanto o servidor HTTP Node.js é escrito em C e fornece ligações para JavaScript. Os desenvolvedores do Deno se concentraram em otimizar toda a camada de soquete TCP e fornecer uma interface mais geral. O Deno HTTP Server fornece menor rendimento, mas garante baixa latência previsível. Por exemplo, no teste, uma aplicação simples baseada no servidor Deno HTTP foi capaz de processar 25 mil solicitações por segundo com latência máxima de 1.3 milissegundos. No Node.js, um aplicativo semelhante processou 34 mil solicitações por segundo, mas as latências variaram de 2 a 300 milissegundos.
  • Deno não é compatível com pacotes para Node.js (NPM), mas está sendo desenvolvido separadamente intercamada para compatibilidade com a biblioteca Node.js padrão, à medida que ela se desenvolve, mais e mais aplicativos escritos para Node.js poderão ser executados no Deno.
  • Fonte: opennet.ru

Adicionar um comentário