O CTO do Microsoft Azure evita C e C++ • O Registro

O CTO do Microsoft Azure evita C e C++ • O Registro

Atualizada O CTO do Microsoft Azure, Mark Russinovich, está farto de C e C++, linguagens de programação testadas pelo tempo comumente usadas para aplicativos nativos que exigem alto desempenho.

Na segunda-feira, Russinovich instou a indústria de tecnologia a deixar o C/C++ para trás. “Falando em linguagens, é hora de parar de iniciar novos projetos em C/C++ e usar Rust para aqueles cenários onde um[garbage collected] linguagem é necessária”, disse ele. “Por uma questão de segurança e confiabilidade, a indústria deve declarar esses idiomas como obsoletos.”

A rejeição do C/C++ por Russinovich chega quando Linus Torvalds, o criador do Linux, supostamente confirmou que o código Rust – salvo circunstâncias imprevistas – aparecerá na versão 6.1 do kernel Linux, um marco muito esperado. O núcleo do Linux é escrito em C com algum assembly e alguns scripts de cola polvilhados.

Rust, projetado como hobby por Graydon Hoare, começou a tomar forma na Mozilla em 2006 e estreou publicamente em 2010. Começou a atrair séria atenção como uma alternativa ao C/C++ em 2015 com o lançamento do Rust 1.0.

Desde aquela época, Rust tem sido a linguagem de programação mais amada no Pesquisa de estouro de pilha sete anos consecutivos – apesar da fama de ser difícil de aprender – e foi integrado a projetos em grandes empresas de tecnologia.

Apple, Amazon, Google, Meta e Microsoft, entre muitos outros, usam Rust de alguma forma ou em produção. Cloudflare recentemente desabafou sobre Pingoraseu novo proxy HTTP construído usando Rust, que aumentou o desempenho e reduziu o uso de CPU e memória.

Rust parece menos propenso a possíveis erros de corrupção de memória e isso torna o software menos vulnerável. A Microsoft foi falando sobre despejar C/C++ e explorar Rust pelo menos desde 2019 e vem desenvolvendo sua própria linguagem de programação segura de memória orientada para a nuvem chamada Projeto Verona. Portanto, a chamada de Russinovich para descontinuar o C/C++ não é sem precedentes.

De acordo com a Microsoft, cerca de 70 por cento dos CVEs corrigidos desde 2006 são devido a problemas de segurança de memória. A eliminação desses bugs melhoraria drasticamente a segurança do software e reduziria o custo da correção de vulnerabilidades.

O registro perguntou à Microsoft se a recomendação de Russinovich está sendo adotada em toda a empresa. Redmond se recusou a comentar.

A ferrugem por si só não garante que o software seja seguro. Ele fornece uma defesa contra bugs de segurança de memória, mas não elimina outras classes de vulnerabilidades.

Como a documentação do idioma ,, “Rust contém uma linguagem de programação segura e não segura.” Os desenvolvedores podem optar por escrever Ferrugem Insegura para determinadas tarefas e podem criar código inseguro involuntariamente. E o Rust não aborda vetores de ataque que estão além do escopo do design de software sólido, como engenharia social. No entanto, tem qualidades que o recomendam.

“O Rust continua a crescer em popularidade por sua segurança, velocidade e confiabilidade, e é encorajador ver esse apoio de líderes tão proeminentes neste campo”, disse Rebecca Rumbul, diretora executiva e CEO da Rust Foundation, em um e-mail para O registro. “Esperamos que esse tipo de apoio, em última análise, impulsione o investimento na infraestrutura Rust e na talentosa comunidade Rust, para que Rust possa continuar seguro, protegido e sustentável para o futuro”.

O registro pediu a Bjarne Stroustrup, criador do C++, para comentar. Atualizaremos esta história quando tivermos uma resposta. ®

Atualizado para adicionar

Stroustrup voltou para nós, defendendo a linguagem que ele inventou.

“Não é incomum que as pessoas – especialmente os executivos – se apaixonem por coisas novas e brilhantes que prometem facilitar suas vidas”, ele nos disse.

“Além disso, apoiar algo novo é muito mais empolgante do que abordar os problemas conhecidos de ferramentas mais antigas e conhecidas. Infelizmente, geralmente leva muitos anos e grandes esforços para que novos idiomas correspondam a idiomas maduros em suas amplas áreas de aplicação. Os entusiastas raramente veem isso e tendem a ser bastante unilaterais em seus comentários.”

“A segurança é obviamente criticamente importante em muitos contextos, então tenho trabalhado para aumentar a segurança em C++ por anos”, continuou o criador da linguagem.

Agora podemos obter segurança de tipo e memória perfeita garantida em ISO C++. Ou seja, cada objeto é usado de acordo com o tipo com o qual foi definido

“Agora podemos obter segurança de memória e tipo perfeito garantido em ISO C++. Ou seja, cada objeto é usado de acordo com o tipo com o qual foi definido. Isso significa que eliminamos o uso de ponteiros pendentes, capturamos erros de intervalo e eliminamos corridas de dados. Observe que toda linguagem ‘segura’, incluindo Rust, tem brechas permitindo código inseguro.”

referindo-se a esse documentoque ele é co-autor, Stroustrup disse: “A ideia básica das Diretrizes Básicas é definir um conjunto de regras a serem seguidas para garantir a segurança e, em seguida, aplicá-las com análise estática. As regras são necessárias porque C ou O código C++ não pode ser comprovado como seguro.

“O código é o padrão ISO C++ e as pessoas que não sentem a necessidade de segurança ou ainda não podem atualizar seu código simplesmente não podem executar um analisador. Implementações parciais de tais analisadores estão disponíveis no Microsoft Visual Studio e Clang Tidy, e em outros lugares .”

“Isto é obviamente um trabalho em andamento”, acrescentou, “assim como as várias tentativas de combinar a flexibilidade e o desempenho do C++ em escala em aplicativos do mundo real. Existem bilhões de linhas de C++ implantadas hoje.

“Substituí-los – ou simplesmente torná-los seguros (para uma variedade de definições de ‘seguro’) – é uma tarefa enorme. É essencial fazer isso gradualmente, ou a vasta massa de código C inseguro e C++ de estilo antigo permanecerá ‘ para todo sempre.’ As abordagens evolucionárias geralmente são bem-sucedidas onde as revoluções falham com um grande custo.”