![O novo portal de desenvolvimento do Slack oferece recursos de CI/CD, Python e JavaScript](https://optimuscloud.com.br/wp-content/uploads/2024/03/1709750645_O-novo-portal-de-desenvolvimento-do-Slack-oferece-recursos-de-150x150.jpg)
O novo portal de desenvolvimento do Slack oferece recursos de CI/CD, Python e JavaScript
6 de março de 2024![IA em todos os lugares: superando barreiras à adoção](https://optimuscloud.com.br/wp-content/uploads/2024/03/IA-em-todos-os-lugares-superando-barreiras-a-adocao-150x150.jpg)
IA em todos os lugares: superando barreiras à adoção
7 de março de 2024O subgrupo WebAssembly System Interface (WASI) alcançou recentemente um marco significativo ao votar pelo lançamento do WASI 0.2, também conhecido como WASI Preview 2. Este novo padrão WASI é baseado no modelo de componente Wasm, permitindo que desenvolvedores de aplicativos construam software como peças de LEGO, onde diferentes componentes podem ser facilmente conectados para criar aplicações maiores e mais complexas. Esta abordagem torna mais simples escrever, reutilizar e manter código, garantindo ao mesmo tempo que o produto final é seguro, rápido e compatível entre diferentes dispositivos e sistemas.
Olhando para trás: a evolução do WebAssembly e do WASI
O WebAssembly foi originalmente desenvolvido com o navegador em mente para que as pessoas pudessem executar códigos de desempenho crítico ou cargas de trabalho pesadas, como programas de edição de imagens e videogames no navegador. Ao mesmo tempo, houve considerável discussão sobre seu potencial fora de navegadores. O Node.js teve sucesso ao fazer isso com JavaScript, e a comunidade de desenvolvedores tinha aspirações semelhantes para o WebAssembly.
Mas esse desejo estava repleto de complexidade. O WebAssembly dependia muito da execução em navegadores da web e não tinha acesso direto aos recursos do sistema e APIs fora do ambiente do navegador. Também havia preocupações em torno do sandbox e da segurança, que eram considerações cruciais no contexto da execução do navegador, com o sandbox garantindo que o código executado no navegador não pudesse acessar recursos confidenciais do sistema ou interferir em outros processos do navegador.
Entretanto, apesar dessas limitações iniciais, prevaleceu a visão de estender o WebAssembly além do ambiente do navegador. À medida que os desenvolvedores e as partes interessadas começaram a reconhecer seu potencial para o desenvolvimento seguro de aplicativos multiplataforma, eles trabalharam para ampliar seu escopo. Isto levou ao desenvolvimento do WASI, que visava fornecer uma interface padronizada para execução de código WebAssembly em ambientes não-navegador, como servidores, ferramentas de linha de comando e sistemas embarcados.
A introdução do WASI Preview 1 em 2019 incluiu recursos destinados a ajudar o WebAssembly a interagir com o mundo externo, como o sistema de arquivos e a interface de linha de comando. WASI Preview 1 se assemelha a um subconjunto superportátil do POSIX, a Portable Operating System Interface, que deixou em aberto a questão de seguir o resto do caminho em direção ao POSIX, seguindo um caminho bem trilhado que sabíamos que levaria a contêineres, ou se a WASI deveria abrir um novo caminho em direção a algo que poderia ser fundamentalmente mais leve, mais rápido para iniciar, mais seguro e mais resistente a ataques à cadeia de abastecimento.
Depois de passar algum tempo trabalhando na direção POSIX com o Preview 1 e desenvolvendo uma visão compartilhada do futuro, decidimos embarcar no segundo caminho, abrindo um novo caminho, mas também criando um monte de novas questões.
O modelo de componente entra na história
Depois que decidimos nos aventurar fora do caminho POSIX já trilhado, precisávamos encontrar algo novo para substituir os executáveis e objetos compartilhados no estilo POSIX, que são as principais unidades de código em um sistema POSIX tradicional sobre o qual os aplicativos são construídos. Depois de destilar um conjunto motivador de objetivos e casos de uso, decidimos por um design de alto nível para uma nova unidade de código chamada “componente” que seria construída sobre e conteria módulos WebAssembly.
Então, qual é a diferença entre um módulo e um componente? Os módulos, que já são totalmente padronizados e suportados em navegadores, contêm código de baixíssimo nível que tenta estar o mais próximo possível da CPU (garantindo segurança e portabilidade).
Os componentes trazem a magia agindo como um invólucro em torno do módulo e sabendo como interagir com outros componentes, independentemente da linguagem em que estejam escritos. Os componentes também ajudam a resolver vários problemas de segurança, fornecendo uma maneira estruturada para os módulos se comunicarem e interagirem entre si sem compartilhar memória de baixo nível, como os processos POSIX tradicionais. Isto ajuda a reduzir o risco de acesso não autorizado ou comportamento malicioso, bem como ajuda a mitigar o risco de vulnerabilidades se espalharem pelo sistema.
WASI 0.2: Um passo significativo na direção certa
A comunidade de desenvolvedores está comemorando o lançamento do WASI 0.2, pois marca um ponto oficial de estabilização tanto para o Modelo de Componente quanto para uma coleção de APIs WASI, e estabelece uma base robusta e versátil para WebAssembly fora do navegador. O lançamento é apenas o começo e ainda há muito trabalho pela frente, mas fornece uma visão para aplicativos completamente modulares e novas possibilidades de composição e compatibilidade.
WASI 0.2 também introduz dois “mundos” distintos que descrevem diferentes tipos de hosts nos quais o WebAssembly pode ser executado. O primeiro desses mundos é o mundo do “comando”, semelhante a um aplicativo tradicional de linha de comando POSIX com acesso ao sistema de arquivos, soquete e terminal.
O segundo desses mundos é o “proxy HTTP”, que caracteriza plataformas, como Fastly, que podem enviar e receber solicitações e respostas HTTP de streaming, servindo como proxies diretos ou reversos. Esses mundos representam o início de um ecossistema mais amplo, oferecendo aos desenvolvedores vários caminhos para explorar e inovar, e mais mundos serão adicionados ao WASI no futuro.
Olhando para o Futuro: O Futuro do WASI
À medida que o WASI continua a evoluir, existem perspectivas animadoras no horizonte. O roteiro para versões futuras inclui planos para atualizações incrementais, melhorias de recursos e suporte para simultaneidade combinável. O objetivo é criar um ecossistema robusto que possa acomodar diversos casos de uso e linguagens de programação, incluindo Rust, C#, JavaScript, Python, C++, Kotlin e Go.
Os princípios de composição e compatibilidade guiarão a transição do WASI 0.2 para versões futuras. Com a flexibilidade do modelo de componente, o WASI visa facilitar atualizações contínuas e interoperabilidade entre diferentes versões. Esta abordagem iterativa garante que o WASI permaneça adaptável às tecnologias emergentes e às necessidades em evolução dos desenvolvedores.
Comemorando um marco na jornada do WebAssembly
WASI 0.2 simboliza o culminar de anos de esforço colaborativo e inovação, abrindo caminho para uma nova era de desenvolvimento e implantação de plataforma cruzada.
Ao olharmos para o futuro, a jornada da WASI continua, impulsionada pela visão coletiva de uma comunidade de desenvolvedores vibrante e diversificada. A cada lançamento, WASI nos aproxima de um mundo onde portabilidade de código, segurança e interoperabilidade não são apenas ideais, mas princípios fundamentais de desenvolvimento de software.
Para saber mais sobre o Kubernetes e o ecossistema nativo da nuvem, junte-se a nós na KubeCon + CloudNativeCon Europe em Paris, de 19 a 22 de março.
A postagem WASI 0.2: Desbloqueando a promessa do WebAssembly fora do navegador apareceu pela primeira vez em The New Stack.