3 pontos por GN⁺ 2024-07-31 | 1 comentários | Compartilhar no WhatsApp
  • Traduzindo C para Rust (TRACTOR)

    • Dr. Dan Wallach
    • Após mais de 20 anos de esforços para resolver os problemas de segurança de memória em C e C++, a comunidade de engenharia de software chegou a uma conclusão
    • Confiar apenas em ferramentas de detecção de bugs não é suficiente
    • É preferível usar linguagens de programação "seguras" que possam rejeitar programas inseguros em tempo de compilação
    • O programa TRACTOR tem como objetivo traduzir automaticamente código C existente para Rust
    • O objetivo é alcançar a mesma qualidade e estilo de algo escrito por um desenvolvedor Rust experiente, eliminando vulnerabilidades de segurança de memória presentes em programas C
    • Este programa pode incluir uma nova combinação de análise estática, análise dinâmica e técnicas de aprendizado de máquina, como grandes modelos de linguagem
    • Mais informações estão disponíveis no aviso especial do TRACTOR no SAM.Gov
  • Principais conquistas da DARPA

    • Revolução stealth

      • No início das pesquisas da DARPA sobre tecnologia stealth, o Have Blue, protótipo do F-117A, voou com sucesso pela primeira vez em 1977
      • O sucesso do programa F-117A marcou o início da revolução stealth, trazendo enormes benefícios para a segurança nacional
    • Navegação na palma da mão

      • Os primeiros receptores GPS eram dispositivos grandes e pesados
      • Em 1983, a DARPA trabalhou para miniaturizá-los, levando a uma adoção muito mais ampla da funcionalidade de GPS
    • Abrindo caminho para a internet moderna

      • As pesquisas da ARPA tiveram papel crucial no início da revolução da informação
      • Desenvolveram a base conceitual da ARPANET e inventaram protocolos digitais, levando ao nascimento da internet
  • Resumo do GN⁺

    • O programa TRACTOR é uma tentativa importante de resolver problemas de segurança de memória ao traduzir automaticamente código C existente para Rust
    • As pesquisas da DARPA contribuíram fortemente para o avanço da tecnologia moderna, incluindo tecnologia stealth, miniaturização do GPS e o nascimento da internet
    • Este artigo pode ser útil para engenheiros de software e pessoas interessadas na história da tecnologia
    • Projetos com funcionalidades semelhantes incluem o Checked C da Microsoft e a linguagem Carbon do Google

1 comentários

 
GN⁺ 2024-07-31
Opiniões no Hacker News
  • Rust escrito por programadores experientes é muito diferente de C, e a maior parte do código interessante é escrita em C++

    • Determinar estaticamente o tempo de vida de todas as alocações de um programa em C é um problema muito difícil
    • Programas em C/C++ podem vincular o tempo de vida das alocações a eventos como cliques do usuário
    • Se o programa a ser analisado tiver bugs, o conceito de tempo de vida pode não fazer sentido
    • Pesquisas anteriores assumem que o código analisado está correto
  • É interessante que esta proposta tenha sido tornada pública

    • Estão tentando moderar as expectativas sobre a viabilidade da tradução automática
    • O código-fonte em C contém menos informação do que o código-fonte em Rust
    • É impossível gerar a informação que está faltando
    • Inferir corretamente exige julgamento, e isso pode falhar
    • O projeto pode ter algum grau de sucesso, mas deve ser abordado com cautela
    • Espera-se que um projeto do governo não seja interpretado nem como uma condenação total de C nem como um elogio total a Rust
  • Não gosto da mentalidade de “reescrever o mundo em Rust”

    • Tradução mecânica não é uma boa forma de portar um projeto para uma nova linguagem ou plataforma
    • É preciso investir tempo em planejar uma arquitetura melhor e projetar o sistema de software
    • Se decidir usar Rust, então deve escrever em Rust
    • É melhor atualizar C para um C moderno e usar model checkers para verificar a segurança de memória, de recursos e da aritmética inteira
  • Muitas pessoas estão lendo este projeto como uma exigência para traduzir código C e C++ para Rust

    • C e C++ são inerentemente inseguros
    • Deve-se traduzir ou escrever o máximo possível de código em linguagens seguras
    • Há apoio a software que traduza código C existente para Rust
    • O objetivo não é um consenso de “reescrever o mundo em Rust”, mas sim migrar para linguagens seguras
  • Há problemas para manter uma base de código traduzida

    • É necessária uma base de código escrita em C e uma equipe de engenheiros de C capaz de mantê-la
    • Uma base de código Rust traduzida automaticamente pode ser mais difícil de ler e entender do que a original
    • É necessária uma equipe de engenheiros de Rust
    • Se já há engenheiros de Rust, é melhor reescrever o código manualmente
  • Um programa que faça port automático precisaria incluir todos os recursos necessários para tornar código C seguro

    • Se Rust não tem bugs de memória e fosse possível traduzir C automaticamente, então seria possível corrigir automaticamente todos os bugs de memória
    • Isso geralmente é impossível
  • Seria melhor primeiro contratar os engenheiros talentosos demitidos da Mozilla para que continuem trabalhando na própria linguagem

    • O processamento assíncrono ainda não está totalmente concluído
    • Há vários problemas
  • É bom que a DARPA esteja impulsionando esse problema

    • Traduzir para Rust seguro é muito difícil
    • Hoje já existem ferramentas para traduzir de C para Rust, mas os resultados são difíceis de manter
    • Para fazer isso corretamente, é preciso resolver os problemas de tamanho de arrays e do uso não linear de ponteiros