lançamento do projeto , oferecendo uma plataforma semelhante ao Node.js para execução isolada de aplicativos em JavaScript e TypeScript, que pode ser usada para executar aplicativos sem dependência de navegador, por exemplo, para criar manipuladores que funcionam no servidor. O Deno utiliza o motor JavaScript , que também é utilizado no Node.js e em navegadores baseados no projeto Chromium. O código do projeto é licenciado sob a MIT. O projeto é desenvolvido por Ryan Dahl (), o criador da plataforma JavaScript Node.js.
Um dos principais objetivos da criação de um novo runtime para JavaScript é fornecer um ambiente mais seguro. Para aumentar a segurança, a camada de abstração em torno do motor V8 foi escrita em Rust, evitando muitas vulnerabilidades que surgem devido ao gerenciamento de memória de baixo nível, como acesso à memória após a liberação, desreferência de ponteiros nulos e estouro de buffer. Para processamento de requisições em modo não bloqueante, utiliza-se a plataforma , também escrita em Rust, é utilizada. O Tokio permite criar aplicativos de alto desempenho baseados em uma arquitetura orientada a eventos, suportando multithreading e o processamento assíncrono de solicitações de rede.
Principais Deno:
- Foco em segurança na configuração padrão. Acesso a arquivos, capacidades de rede e acesso a variáveis de ambiente são bloqueados por padrão e requerem habilitação explícita;
- Suporte embutido para TypeScript além do JavaScript;
- O runtime é fornecido na forma de um único arquivo executável autossuficiente ('deno'). Para executar aplicativos com o Deno, é suficiente para sua plataforma, um único arquivo executável, com cerca de 10 MB, sem dependências externas e que não requer instalação especial no sistema;
- Ao iniciar o programa, bem como para carregar módulos, é possível usar endereçamento via URL. Por exemplo, para executar o programa welcome.js, pode-se usar o comando 'deno https://deno.land/std/examples/welcome.js'. O código de fontes externas é baixado e armazenado em cache no sistema local, mas nunca é atualizado automaticamente (para atualização, é necessário executar explicitamente o aplicativo com a opção '--reload');
- Processamento eficiente de solicitações de rede via HTTP, a plataforma é projetada para criar aplicativos de rede de alto desempenho;
- Capacidade de criar aplicativos web universais que podem ser executados tanto no Deno quanto em navegadores web convencionais;
- Além do runtime, a plataforma Deno também atua como um gerenciador de pacotes e permite que os módulos sejam acessados via URL dentro do código. Por exemplo, para carregar um módulo, pode-se especificar no código "import * as log from 'https://deno.land/std/log/mod.ts'". Os arquivos carregados de servidores externos via URL são armazenados em cache. A vinculação a versões de módulos é feita por meio da indicação dos números de versão dentro da URL, por exemplo, 'https://unpkg.com/liltest@0.0.5/dist/liltest.js';
- Inclui um sistema de inspeção de dependências (comando "deno info") e uma ferramenta para formatação de código (deno fmt).
- Para desenvolvedores de aplicativos um conjunto de módulos padrão que passaram por auditoria adicional e verificação de compatibilidade;
- Todos os scripts da aplicação podem ser combinados em um único arquivo JavaScript.
Diferenças em relação ao Node.js:
- O Deno não utiliza o gerenciador de pacotes npm
e não está vinculado a repositórios, a endereçamento de módulos é realizado via URL ou por caminho de arquivo, e os próprios módulos podem ser hospedados em qualquer site; - No Deno, não se utiliza 'package.json' para definir módulos;
- Diferença de API, todas as operações assíncronas no Deno retornam promessas;
- O Deno requer a definição explícita de todas as permissões necessárias para arquivos, rede e variáveis de ambiente;
- Todos os erros não acompanhados por manipuladores levam à finalização da execução da aplicação;
- No Deno, utiliza-se o sistema de módulos ECMAScript, e o require() não é suportado.
Fonte: opennet.ru
