A Mixed-Methods Study on the Implications of Unsafe Rust for Interoperation, Encapsulation, and Tooling

Este estudo de métodos mistos revela que, embora os desenvolvedores de Rust evitem o código inseguro e o utilizem apenas quando necessário, a falta de suporte nas ferramentas para chamadas de funções externas e padrões de encapsulamento gera incertezas, destacando a necessidade de ferramentas de verificação que garantam a correção em aplicações multilíngues.

Ian McCormack, Tomas Dougan, Sam Estep, Hanan Hibshi, Jonathan Aldrich, Joshua Sunshine

Publicado 2026-03-09
📖 5 min de leitura🧠 Leitura aprofundada

Each language version is independently generated for its own context, not a direct translation.

Imagine que o Rust é como um carro de corrida de última geração, projetado com freios automáticos, airbags inteligentes e um sistema que impede que você dirija em velocidade perigosa. O objetivo é garantir que você nunca tenha um acidente (um erro de segurança ou falha no sistema).

No entanto, às vezes, você precisa fazer algo que o carro não permite por padrão: talvez você precise conectar um motor de outro carro antigo (um sistema legado em C ou C++) ou fazer uma modificação manual no motor para ganhar um pouco mais de velocidade. É aqui que entra o "Unsafe" (Inseguro).

Este estudo é como uma investigação feita por pesquisadores que conversaram com 19 mecânicos experientes e depois perguntaram a 160 outros sobre como eles lidam com essas modificações manuais. Eles queriam saber: Como os programadores usam essas "ferramentas perigosas" sem quebrar o carro? E por que as ferramentas de ajuda (o manual do proprietário e os scanners de diagnóstico) não estão funcionando tão bem quanto deveriam?

Aqui está o resumo da história, dividido em partes simples:

1. O Dilema do "Inseguro"

O Rust é famoso por ser seguro. Ele impede que duas pessoas tentem mexer no mesmo pedaço de memória ao mesmo tempo (o que causaria um acidente). Mas, para falar com programas antigos ou usar hardware específico, os programadores precisam usar o modo "Inseguro". É como tirar o cinto de segurança e os airbags para consertar o motor com as próprias mãos. Se você fizer isso errado, o carro pode explodir.

2. O Problema da Tradução (Interoperabilidade)

A maioria dos programadores usa o modo "Inseguro" para conectar o Rust a linguagens antigas (como C e C++).

  • A Analogia: Imagine que o Rust fala uma língua muito lógica e estrita, enquanto o C fala uma língua cheia de gírias e regras não escritas.
  • O Desafio: Quando você tenta conectar os dois, às vezes o Rust não entende o que o C está fazendo. Por exemplo, o C pode permitir que você aponte para um lugar na memória que o Rust acha que já foi fechado. Os programadores relataram que é muito difícil criar "pontes" seguras entre essas duas línguas porque as regras de quem pode tocar no quê são diferentes.

3. As Ferramentas de Diagnóstico (Tooling)

Os programadores têm uma ferramenta chamada Miri. Pense no Miri como um scanner de diagnóstico super avançado que diz: "Ei, você está prestes a causar um acidente!"

  • O Problema: O Miri é ótimo, mas é lento (como um scanner que demora 10 horas para escanear um carro) e não consegue ler os códigos das peças antigas (funções externas).
  • A Consequência: Muitos programadores desistem de usar o Miri porque é muito trabalhoso. Eles ficam no escuro, tentando adivinhar se o código deles vai funcionar ou se vai causar um desastre.

4. Por que eles usam o "Inseguro"? (Motivações)

Os pesquisadores perguntaram: "Por que vocês tiram o cinto de segurança?"

  • Necessidade (77%): "Não tenho escolha. Para fazer isso funcionar, tenho que mexer no motor manualmente." (Ex: conectar a um sistema operacional antigo).
  • Velocidade (47%): "Se eu tirar o cinto, o carro vai 10% mais rápido." (Ex: remover verificações de segurança que acham desnecessárias).
  • Facilidade (18%): "É mais fácil fazer do jeito manual do que tentar seguir as regras estritas."

5. O Manto de Proteção (Encapsulamento)

A regra de ouro no Rust é: Use o "Inseguro" o mínimo possível e esconda-o atrás de uma porta segura.

  • A Analogia: Imagine que você tem um compartimento perigoso no carro (o código inseguro). Você coloca uma porta blindada em volta dele e diz: "Aqui dentro é perigoso, mas a porta de fora é segura. Você só precisa apertar este botão."
  • O Problema: Os programadores tentam fazer isso, mas muitas vezes não têm certeza se a porta está realmente trancada. Eles confiam muito na intuição ("acho que está tudo bem") e pouco em verificações automáticas. Eles também sentem que a documentação (o manual) não explica bem como lidar com os casos mais estranhos.

6. O Que Eles Precisam? (Conclusão)

Os programadores estão pedindo ajuda. Eles não querem parar de usar o Rust, mas precisam de melhores ferramentas para navegar entre o mundo seguro e o mundo perigoso.

  • O Pedido: Eles precisam de um novo scanner de diagnóstico que seja rápido, que consiga ler as peças antigas (códigos externos) e que avise se a "porta blindada" está trancada corretamente.
  • O Futuro: Enquanto isso, eles dependem muito de experiência própria e de tentar adivinhar, o que é arriscado.

Em resumo: O Rust é um carro incrível, mas para usá-lo em corridas mistas (com carros antigos), os motoristas precisam fazer ajustes manuais perigosos. Atualmente, eles não têm um manual completo nem um scanner rápido o suficiente para garantir que esses ajustes não vão fazer o carro explodir. O estudo pede mais ferramentas inteligentes para ajudar os motoristas a fazerem isso com segurança.