![Ingress: exemplo do Kubernetes com ngrok](https://optimuscloud.com.br/wp-content/uploads/2024/04/1712871845_Ingress-exemplo-do-Kubernetes-com-ngrok-150x150.jpg)
Ingress: exemplo do Kubernetes com ngrok
11 de abril de 2024![Fragmentação de ferramentas – existe uma solução?](https://optimuscloud.com.br/wp-content/uploads/2024/04/1712948404_Fragmentacao-de-ferramentas-–-existe-uma-solucao-150x150.jpg)
Fragmentação de ferramentas – existe uma solução?
12 de abril de 2024À medida que a adoção da linguagem de programação Rust continua a aumentar, também surgiram novos desafios e avanços, incluindo questões de segurança, uso com WebAssembly (WASM) e benefícios de produtividade.
Esta semana, a equipe Rust lançou o Rust 1.77.2 para solucionar uma vulnerabilidade crítica, identificada como CVE-2024-24576. A vulnerabilidade afeta a biblioteca padrão Rust no Windows ao invocar arquivos em lote usando a API Command com argumentos não confiáveis. Um invasor poderia executar comandos shell arbitrários ignorando o argumento de escape.
A vulnerabilidade é considerada crítica para desenvolvedores que usam arquivos em lote no Windows com argumentos não confiáveis. Nenhuma outra plataforma ou caso de uso será afetado. No entanto, todas as versões do Rust anteriores a 1.77.2 no Windows serão afetadas se o código ou suas dependências executarem arquivos em lote com argumentos não confiáveis.
O problema decorre da complexa lógica de divisão de argumentos do cmd.exe no Windows, que exigia que a biblioteca padrão implementasse escape personalizado para argumentos passados para arquivos em lote. No entanto, a lógica de escape foi considerada insuficiente, escreveu o Rust Security Response Working Group em uma postagem de blog de consultoria de segurança.
Como atenuação, a equipe Rust melhorou a robustez do código de escape e modificou a API de comando para retornar um erro InvalidInput quando não puder escapar de um argumento com segurança. A correção está incluída no Rust 1.77.2.
Ferrugem para WebAssembly
Enquanto isso, a equipe do Rust começou a implementar suporte de primeira classe para WebAssembly System Interface (WASI) 0.2 na forma de um novo alvo dedicado, escreveu Yosh Wuyts, defensor do desenvolvedor Rust na Microsoft, em uma postagem no Rust Blog.
Isso é importante porque Rust continua a ser uma das melhores linguagens de programação para construir aplicativos WebAssembly e infraestrutura de suporte.
Rust 1.78, que estará disponível em 2 de maio, apresentará novos wasm32-wasip1
(nível 2) e wasm32-wasip2
(nível 3) metas. wasm32-wasip1
é uma renomeação efetiva do destino wasm32-wasi existente, liberando o nome do destino para uma eventual versão WASI 1.0.
“A partir do Rust 1.78, os usuários do WASI 0.1 são incentivados a começar a migrar para o novo wasm32-wasip1
meta antes da existente wasm32-wasi
o alvo foi removido no Rust 1.84 (5 de janeiro de 2025)”, escreveu Wuyts.
Além disso, “após quase cinco anos de trabalho, a especificação WASI 0.2 foi recentemente estabilizada”, observou Wuyts. Este trabalho se baseia em componentes WebAssembly (pense: ABI fortemente tipado para Wasm), fornecendo interfaces padrão para coisas como E/S assíncrona, rede e HTTP. Isto finalmente tornará possível escrever serviços de rede assíncronos sobre WASI, algo que não era possível usando WASI 0.1.”
Rust fornece duas vezes mais produtividade do que C++
Enquanto isso, em uma palestra recente, Lars Bergstrom, diretor de engenharia do Google, disse que os desenvolvedores do Google foram duas vezes mais produtivos usando Rust do que escrevendo código C++.
Falando na conferência Rust Nation UK no final de março, Bergstrom disse que o Google estava “comparando nossas reescritas de código C++ em Rust. E em todos os casos, vimos uma diminuição de mais de 2x na quantidade de esforço necessário para construir os serviços em Rust, bem como manter e atualizar os serviços escritos em Rust. E isso é algo realmente importante para nós porque o código C++ é muito caro…”
Em fevereiro, o Google prometeu US$ 1 milhão à Rust Foundation para melhorar a interoperabilidade entre as linguagens de programação C++ e Rust. O objetivo do esforço é fazer com que as organizações migrem lentamente o código C++ para Rust, de acordo com a The Rust Foundation.
“Embora Rust possa não ser adequado para todas as aplicações de produtos, priorizar a interoperabilidade perfeita com C++ acelerará a adoção mais ampla pela comunidade, alinhando-se assim com os objetivos da indústria de melhorar a segurança da memória”, escreveu Bergstrom em um blog. Além de diretor de engenharia do Google, Bergstrom é diretor do Google para ferramentas e bibliotecas da plataforma Android, bem como presidente do Conselho da Rust Foundation.
Ferrugem e segurança da memória
Bergstrom disse que a indústria se conscientizou dos desafios do uso de linguagens que não são seguras para a memória, incluindo avisos da Casa Branca.
“Agora, quero admitir que o código é inseguro, precisamos fazer mais a respeito”, disse ele. “Mas eu me preocupo com códigos inseguros da mesma forma que minhas equipes Java se preocupam com código JNI (Java Native Interface), da mesma forma que minhas equipes que estão escrevendo serviços web se preocupam com a máquina virtual e o tempo de execução – sempre precisamos estar melhorando a qualidade de toda a pilha de software…”
Em fevereiro, o Escritório do Diretor Cibernético Nacional (ONCD) da Casa Branca emitiu uma recomendação para que as organizações de desenvolvimento de software começassem a usar linguagens seguras de memória, como Rust, para desenvolvimento de aplicativos e sistemas, citando Rust como “um exemplo de um linguagem de programação segura para memória.”
Acabando com os mitos da ferrugem
No ano passado, Bergstrom eKathy Brennan, um Sr. de Sistemas Operacionais de baixo nível. O pesquisador de experiência do usuário escreveu uma postagem no blog desmascarando e confirmando muitos dos mitos comuns sobre o Rust com base em pesquisas com os desenvolvedores do Rust do Google – que se alinham aproximadamente com sua palestra no evento Rust Nation UK.
Uma coisa que a postagem confirmou é que Rust permite que os desenvolvedores forneçam código de alta qualidade.
A experiência do Android com Rust tem sido excelente. Minha equipe construiu o primeiro keystore de componentes principais, que é um componente de tamanho médio com simultaneidade significativa”, disse Bergstrom em sua palestra. “Já completamos três anos e tem sido basicamente perfeito. Para aqueles de vocês que não trabalharam na produção de software comercial, as palavras ‘basicamente impecável’ e código de sistemas geralmente não aparecem na mesma frase.”
Ele acrescentou que mais da metade dos desenvolvedores pesquisados acharam o código Rust mais fácil de revisar em comparação com o código em outras linguagens, e 85% se sentiram mais confiantes na correção do código Rust de sua equipe em comparação com o código em outras linguagens.
Bergstrom também observou que Rust não é difícil de aprender – ao contrário de sua reputação de ser difícil.
Ele disse que pesquisas com desenvolvedores do Google mostram que leva cerca de dois meses para que eles se tornem suficientemente produtivos em Rust, semelhante ao tempo que leva para desenvolvedores Java se tornarem produtivos em Kotlin – que é outro esforço que o Google está realizando.
“Temos uma migração semelhante acontecendo no ecossistema Java, onde estamos transferindo pessoas de Java para Kotlin”, disse Bergstrom. “E o número que usamos no Google para refletir sobre quanto tempo levamos para contratar um desenvolvedor Java e fazer com que ele contribua para o Kotlin é de oito semanas.”
Além disso, Bergstrom observou que os desenvolvedores normalmente se sentem tão produtivos em Rust quanto em suas linguagens anteriores – C++, Java, Python, Go – dentro de quatro meses.
A postagem Rust obtém segurança, suporte WASI 0.2, aumento de produtividade apareceu pela primeira vez em The New Stack.